Units

The stations a model is realized on: the units table on the model's page, adding and removing a unit, the unit picked across the Definition screens, the unit under Operate, and Start all and Stop all.

View as Markdown

A unit is one station a model is realized on. Every unit runs the model's whole definition, wired to sources of its own: its channels bind to tags or variables, it stamps the model's metadata with a code of its own, and it follows or overrides the model's interlock, productivity and printer defaults. Adding a station to the bench is adding one unit.

A unit is met in two places, on purpose. On the model's own page it is a row of the Units table: what the unit is, declared beside its siblings (Manage process). Under the model's Operate group it is the unit in use: whether a run owns it, and the panels and dashboards it is run through (Look at models to open it; Run procedures to start anything).

The units table on the model's page

The Units card stands between Identity and Structure on the model's page, under the line "The stations this model is realized on. Each of them runs the model's whole definition, wired to sources of its own." It is drawn only for Manage process: a role that may not edit the structure is not shown it, exactly as it is not shown Definition.

The card is a list with the picked unit's own panel beside it (the divider between them drags). The list:

Column What it shows
Name The unit's name, editable in place (a safe rename, below).
Code The stable short code, editable in place; the placeholder reads "none".
Channels How far the unit is wired, read off the model: "No channels yet", "5 bound, none missing" or "4 bound, 1 missing" (the last in the caution ink).
(row action) Remove unit, in the danger ink.

Clicking a row opens it in the Unit column on the right. With nothing picked the column reads "Select a unit, and who it is opens here.", or "This model has no units yet. Add one, and it opens here." while the model has none.

Field What it is Values / default Effect
Name "The name every address of this unit answers to.": the unit's segment of Process.<Model>.<Unit>. Free text; "Unit 1", "Unit 2", … at creation. Letters and digits survive into the address, anything else becomes _, and a leading digit is prefixed with _. Committing (Enter, or leaving the field) is a coordinated rename: the preview line says how many locations read the address, and the commit rewrites them. A name whose segment another unit of the model already maps to is refused: "Unit name 'X' maps to address segment 'Y', already used by 'Z'." Disabled without Manage process and while the station is locked.
Code "A stable short code the sequential metadata that includes it stamps with. Renaming the unit never changes it." Free text, trimmed; blank means none. Every Sequential field whose composition carries a Unit code part prints it, and a Start that prompts such a field refuses while the unit's code is blank. The same field is editable on the Metadata screen, beside the counters that stamp with it.
Notes "Whatever anyone working on this bench should know about it. Nothing reads it but a person." Any text; blank. None.

Units are listed in the order they were added; there is no control to reorder them.

Adding a unit

Unit, at the head of the Units card, adds one; so does Add unit in the model row's right-click menu. Both need Manage process and grey out while the station is locked. The unit is born as "Unit N" (N is the count plus one), picked in the list with its panel open, so naming it is the first thing you do.

A new unit binds nothing yet (its coverage reads "0 bound, 6 missing" on a model of six channels), has no automation, and follows the model for its interlock signal, its productivity period and quantities, and its printer queues. Its bindings are made on Channels; its code and counters are read on Metadata.

Removing a unit

Remove unit rides the row it ends, so what goes is the row under the pointer, never whatever the table happened to have picked. It confirms first: "Delete 'X'? This removes the unit and everything configured on it. This cannot be undone."

The station refuses, in the action feed, "Cannot delete a unit while it is busy with a run operation." and "Cannot delete a unit while its interlock is latched."; the save itself refuses the same as "Cannot remove Unit 'X' while it is busy or has a latched interlock." A removed unit takes its bindings, automation, own quantities and own printer slots with it. Its recorded runs stay in Histories, and their files are not touched. Only the picked row leaves the column empty, and only once it is really gone.

A unit cannot be removed from Operate: ending a station is structure, and lives where the station is declared.

One picked unit across the model

Which unit is picked is one answer for the whole model: the units table on the model's page and the units list of each of the five Definition screens read and write the same pick. Moving from Channels to Printers stays on the bench in hand. Picking a row of a screen's definition half (a channel, a field, the External stop row, a quantity, a printer slot) clears the picked unit, because each screen marks exactly one row. Nothing is picked until you click a row, and a Validation finding that sends you to Channels or Automation arrives with the faulty unit already picked. The pick is per window and is not saved.

The unit under Operate

Selecting the model's Operate group opens the units as the operator meets them, under "The stations this model runs on. Open one to stage a procedure, start it and watch a recorded, evaluated run.": one card per unit with its live status, in this precedence:

Status line Meaning
Stop tripped / Awaiting reset / Stop signal unavailable The unit's stop interlock, read only while the model's External stop is enabled (see Automation).
Recording / Held / Saving / Preparing / Finalizing A run operation owns the unit.
Idle · Soak test / Idle · no procedure staged Nothing owns it; the line names the staged procedure when one is staged.

With no unit the wall reads "No units yet. Add one on the model's own page, in the Units table."

Selecting a unit opens its own page: the header "One station this model runs on. Open a surface to stage a procedure, start it and watch the run.", a pill with the run state while a run owns the unit (Recording, Held, Saving, Preparing, Finalizing), and a Surfaces card, "What this unit is operated through: the panels and dashboards its model defines, drawn for this unit. Click one to open it.", with one tile per panel and per dashboard of the model. Nothing configured is edited here and the page carries no bar: staging, starting and watching a run happen on the surfaces, described under Operate.

Start all and Stop all

The Operate group's bar carries the model's two batch triggers. They are drawn only for Run procedures.

Command What it does Greyed when
Start all "Start every unit that has a procedure staged and can run now. The others are skipped." A unit can start when nothing owns it, the runtime accepts operations, its interlock does not block it and a procedure is staged on it. No unit of the model can start right now; a batch is already running; the runtime is stopped.
Stop all "Stop every unit that is running now. Units already stopped stay stopped." No unit is running; a batch is already running; the runtime is stopped.

Eligibility is re-read unit by unit as the batch runs, so a unit an earlier start in the same batch made ineligible (a shared write source, for example) is skipped. There is no synchronism, no shared staging and no rollback: one unit's refusal is journaled and never stops or reverts another. The feed reports "3 units started.", "1 unit stopped." or "No unit could be started." Every run the batch starts records the same responsible: the user signed in on this window, or the station when nobody is.

What follows the model, per unit

Three subjects a unit answers are configured on the model and inherited unless the unit differs. On each screen the picked unit shows a two-way choice, "Follows the model default" or "Has its own …", and the configuration in force beside it: the model's own values, read-only, while it follows; the unit's own once it has detached.

Subject Screen What detaching seeds
The stop interlock signal and polarity Automation The model's signal and polarity, when the unit never named one of its own.
The rolling period and the named quantities Productivity The model's period and a copy of its quantities, when the unit holds no quantity of its own.
The four printer queues Printers The model's four queues, when the unit's own four are all empty.

Following the model again erases nothing the unit had, so detaching a second time gives it back.

What this page does not do

  • A unit has no channels, panels or dashboards of its own: they are the model's, drawn for the unit.
  • A unit is not copied; copy the model instead.
  • A unit is not moved between models, and its name is not edited from the tree.
  • Start all and Stop all are triggers, not a coordinated run: nothing waits for anything else.