Interlocks
The durable history of each unit's stop-interlock latch: trips, the source returning safe, and the manual rearms with who performed them.
The Interlocks tab of Events (/events?view=interlocks) is the durable timeline of the
stop interlock: the Boolean signal a model watches per unit to end a run when the machine has
been stopped from outside. Seeing it takes View events; exporting takes
Export/import histories. The interlock is configured under
Process > Definition > Automation and rearmed from the Interlock component on
a dashboard or the unit's view; this tab records and changes nothing.
It follows the shared conduct of the three timelines on Events.
The three transitions
The interlock monitor polls the configured source every 100 ms, reading only the value and quality Connector or Logic already publish, with no expression and no debounce. A unit's latch moves through Unavailable (no valid reading yet), Normal, Tripped and AwaitingReset; three of its moves are journaled:
| Transition | When it is recorded | Message |
|---|---|---|
| Tripped | The source, once armed by a first good reading, reports the configured trip polarity, or loses quality. The latch is persisted, every new execution on the unit is refused, its writable sources are blocked, and a run in progress ends as Aborted / NOK with the reason StopInterlock. A unit that was waiting for a rearm and trips again records a new Tripped. | "The source reports the configured active value (True)." (or "(False)"), or "The source is unavailable or has bad quality after the interlock armed." |
| Source safe | While latched, the source returns to a good reading of the safe value. The unit stays blocked until someone rearms it. | "The source is safe again; manual rearm is required." |
| Rearmed | A person clears the latch while the source is good and safe and the unit is not busy finishing its run. Recorded with the person's name. | "The interlock latch was manually rearmed." |
A transition observed while the monitor is starting or resuming (when it polls without publishing) is kept and written on the next publishing poll, or at the moment of the rearm that follows it, so a rearm is never recorded before the safe edge it answers. Within one unit every recorded instant is strictly later than the previous one, by at least a millisecond, so the order of the rows is never ambiguous.
Search and filter
| Control | Values | What it does |
|---|---|---|
| Search | Placeholder "Search model, unit, source, author or message" | Contains-match on the model name, the unit name, the source's key and name, the author of a rearm and the message. |
| Transition | All transitions (default), Tripped, Source safe, Rearmed | Keeps one transition kind. |
| Refresh | Re-reads the journal; tooltip "Refresh interlock events". | |
| Export | Export as CSV…, Export as JSON… | Writes the rows currently listed. Drawn only with Export/import histories; greyed while the list is empty. |
The rows
| Part of the row | Content |
|---|---|
| Time | Date and time of the transition. |
| Dot | Critical for Tripped, caution for Source safe, neutral for Rearmed. |
| Name | The unit's name at the time. |
| Summary | "Transition · Model / Unit · Source = value · quality Good", for example "Tripped · Press 40 / Cell A · EmergencyStop = True · quality Good". The value reads True, False or Unavailable; the quality reads Good or Unavailable. |
| Level | The transition word: Tripped, Source safe or Rearmed. |
The detail panel
Selecting a row opens the panel with the transition badge and the unit's name, the full timestamp, the summary line, the message, and three cards:
| Card | Field | Content |
|---|---|---|
| EVENT | Level | The transition. |
| EVENT | Event ID | The journal's identity of this transition. |
| INTERLOCK SNAPSHOT | Transition | Tripped, Source safe or Rearmed. |
| INTERLOCK SNAPSHOT | Journal sequence | The row's insertion number in the journal. |
| INTERLOCK SNAPSHOT | Model, Model ID | The model's name at the time and its stable id. |
| INTERLOCK SNAPSHOT | Unit, Unit ID | The unit's name at the time and its stable id. |
| FROZEN SOURCE | Source | The watched tag's or variable's name at the time ("Unavailable source" when it could not be read; "Removed Variable" when the variable no longer existed). |
| FROZEN SOURCE | Source key | The name-independent identity of the source, tag:<id> or var:<id>, so a renamed source still matches its history; unit:<id> when the unit had no source configured. |
| FROZEN SOURCE | Trip polarity | "Trip when True" or "Trip when False": which reading of the Boolean ends the run. |
| FROZEN SOURCE | Observed value | True, False or Unavailable (the source could not be read or converted to a Boolean). |
| FROZEN SOURCE | Quality | Good, or Unavailable. |
| FROZEN SOURCE | Author | For Rearmed, the display name of the user signed in on the screen that rearmed ("Not signed in" when nobody was; "Unknown operator" when no name came through). "Automatic" for Tripped and Source safe. |
Copy event copies one line: "timestamp | Interlock | transition | unit | summary | message | EventId=… | ModelId=… | UnitId=… | SourceKey=… | SourceName=… | TripWhenTrue=… | QualityGood=… | ObservedValue=… | Author=…".
Export columns
CSV and JSON carry the same fields, in this order: Timestamp (the CSV header adds the time
reference, "Timestamp (UTC-03:00)"), JournalSequence, Transition (written with the raw name
SourceSafe), Model, ModelId, Unit, UnitId, SourceKey, SourceName, TripWhenTrue,
QualityGood, ObservedValue (empty when unavailable), Author (empty for an automatic
transition), Message and EventId. The JSON is an envelope with TimeZone and Events. File
names are interlock-history-<yyyyMMdd-HHmmss>.csv and .json. The CSV follows the station's
decimal-separator preference like every other export: with point decimals the list separator is
,, with comma decimals it is ;. A cell beginning with =, +, - or @ is prefixed with an
apostrophe so a spreadsheet reads it as text.
Where else a transition is recorded
Every transition also leaves a Console line under the Process area: "Interlock tripped: …" as a warning, "Interlock source returned safe: …" and "Interlock rearmed: …" as information, each with the model, unit, source, polarity, quality and value. The run that a trip ended keeps its own record in Histories with the reason StopInterlock. The persisted latch itself is a separate row the monitor keeps until the rearm; it is not shown on this tab.
Empty states and the status line
- "No interlock events yet" with "Interlock trips, safe-source edges and manual rearms will appear here."
- "No interlock events match these filters" with "Adjust the transition or search terms to widen this history."
- The status line reads "N shown · page 1", then " · filtered" when a search, a transition or a date range is in force; on the right, "1 selected" and "Updated hh:mm:ss".
What the Interlocks tab does not do
- It does not enable the interlock, choose its source or polarity, or detach a unit from the model's default (Process > Definition > Automation).
- It does not rearm: the Rearm command lives on the Interlock component and the unit's view, and needs a good and safe source and a unit that is not still finishing its run.
- It does not show the live state of a latch (Unavailable, Normal, Tripped, AwaitingReset); that is the unit's panel and the Interlock component. A unit still waiting for a rearm is recognised here only by a Source safe row without a later Rearmed.
- The Unavailable state before the first good reading is not a transition and leaves no row.
- It has no unit or date filter; search by the unit or model name.