# FOCAS deployment guide Per-driver runbook for deploying the FANUC FOCAS driver. See [`docs/drivers/FOCAS.md`](../drivers/FOCAS.md) for the per-feature reference and [`focas-version-matrix.md`](./focas-version-matrix.md) for the per-CNC-series capability surface. ## Operator config-knob cheat sheet | Knob | Where | Default | Notes | | --- | --- | --- | --- | | `Devices[].HostAddress` | `FocasDriverOptions.Devices` | — | `focas://{ip}[:{port}]` | | `Devices[].Series` | `FocasDriverOptions.Devices` | `Unknown` | Drives per-series range validation in `FocasCapabilityMatrix`. | | `Devices[].OverrideParameters` | `FocasDriverOptions.Devices` | `null` | MTB-specific parameter numbers for Feed/Rapid/Spindle/Jog overrides. `null` suppresses the `Override/` subtree. | | `Probe.Enabled` | `FocasDriverOptions.Probe` | `true` | Background reachability probe. | | `Probe.Interval` | `FocasDriverOptions.Probe` | `00:00:05` | Probe cadence. | | `FixedTree.ApplyFigureScaling` | `FocasDriverOptions.FixedTree` | `true` | Divide position values by 10^decimal-places (issue #262). | | **`AlarmProjection.Mode`** | **`FocasDriverOptions.AlarmProjection`** | **`ActiveOnly`** | **`ActiveOnly` keeps today's behaviour. `ActivePlusHistory` polls `cnc_rdalmhistry` on connect + on `HistoryPollInterval` ticks (issue #267, plan PR F3-a).** | | **`AlarmProjection.HistoryPollInterval`** | **`FocasDriverOptions.AlarmProjection`** | **`00:05:00`** | **Cadence of the history poll. Operator dashboards run the default; high-frequency rigs can drop to 30 s.** | | **`AlarmProjection.HistoryDepth`** | **`FocasDriverOptions.AlarmProjection`** | **`100`** | **Most-recent-N ring-buffer entries pulled per poll. Hard-capped at `250` so misconfigured values can't blast the wire session.** | ## Sample `appsettings.json` snippet for `ActivePlusHistory` ```jsonc { "Drivers": { "FOCAS": { "Devices": [ { "HostAddress": "focas://10.0.0.5:8193", "Series": "Series30i" } ], "AlarmProjection": { "Mode": "ActivePlusHistory", "HistoryPollInterval": "00:05:00", "HistoryDepth": 100 } } } } ``` The history projection emits each unseen entry through `IAlarmSource.OnAlarmEvent` with `SourceTimestampUtc` set from the CNC's reported wall-clock — keep CNC clocks on UTC so the dedup key `(OccurrenceTime, AlarmNumber, AlarmType)` stays stable across DST transitions.