Channels

The abstract channels a model is defined by (number, name, alias, alias scope, role, type, engineering unit, color and chart group) and the source, alias and live value each unit binds behind them.

View as Markdown

A channel is an abstract point of the model. Datalogs, recipes, evaluations, occurrences, panels, dashboards and reports reference channels only, never tags, which is what keeps every unit of the model compatible by construction. The Channels screen (Process > model > Definition > Channels) carries both halves of the subject: on top the channels the model is defined by, under it the units, and beside them the settings of whichever row is picked, a channel's declaration or a unit's binding table. The header reads "What this model measures and commands, and where each unit reads it from." and counts the channels and the units.

Reading needs Look at models; every edit needs Manage process and an unlocked station. The screen wears the shape every Definition screen shares (see Definition).

Model definition: the channel table

The head reads "It holds for every unit: a channel added or removed here changes every unit's table." and carries Channel, which appends a row.

Command What it does Greyed when Not drawn when
Channel Adds a channel named after the first free "Channel N" and numbered with the lowest free number, at the end of the list. The station is locked. The role lacks Manage process (the whole screen is then read-only).
Move channel up / Move channel down (row) Moves the row one place; every channel keeps its number. The row is already first or last.
Remove (row, danger ink) Removes the channel from the model and from every unit (below).

Every row carries the whole declaration. The same fields open in full in the settings column when the row is picked, each over the line saying what it decides; both places edit the one channel, so a change on either shows on the other.

Field What it is Values / default Effect
Ch# The fixed, user-assigned channel number: the stable human reference that survives renames and reorders, shown as Ch<n> wherever channels list ("Ch1 · Setpoint"). An integer of 1 or more, unique on the model; the lowest free number at creation. Recorded runs keep it, and moving the row never changes it. A number another channel holds is refused at the field and said under the table: "Ch3 already belongs to 'Flow'. One number names one channel, so 'Setpoint' stays on Ch1."; a number below 1 answers "A channel number starts at 1, so 'Setpoint' stays on Ch1."
Name The fixed reference every artifact of the model uses: "Datalogs, recipes, evaluations and every recorded run name it by this." Also each unit's address point Process.<Model>.<Unit>.Channels.<Name> and the Channels.<name> property an occurrence condition reads. Free text; "Channel N" at creation. A safe rename: the line under the field previews the references, and the commit rewrites addresses, the datalog columns, recipe values, criteria and alias entries that point at the channel, and that channel's Channels.* references in the model's occurrence conditions. Two names that sanitize to the same identifier (letters and digits kept, anything else _, a leading digit prefixed with _) are refused: "Process channel name 'X' maps to occurrence reference 'Channels.Y', already used by 'Z'." Disabled without Manage process and while locked.
Alias "The name the operator reads. Blank shows the channel name. Nothing references the alias, so changing it rewrites nothing." The model-wide display name. Free text; blank (the placeholder shows the name). The column adds "Shown to the operator as X." Every live surface, replay and report reads the alias in force; addresses never do.
Alias scope Whether a unit may name this channel its own way. The cell offers Whole model or Each unit; the column writes both answers out: "One for the whole model" and "Each unit can set its own". The two answers; "One for the whole model". "A unit that may name it does so beside its bindings or through an alias set." With the whole-model answer the unit's Alias cell refuses the edit, an alias set neither offers nor writes an entry for the channel, and nothing is read under a per-unit name even where a binding still holds one; switching back restores what was there.
Role "What the model may do with this channel: read it, write it, or both." Read only ("Sampled, charted and evaluated. No recipe writes it."), Write only ("A recipe target. Nothing samples it back."), Read and write ("Written by recipes and sampled back: the usual setpoint."); Read only. The role decides which sources a unit may bind (a sampled channel needs a readable source, a command-only one a writable source), whether recipes may target the channel, and whether charts draw it.
Type The coarse value category: "A unit may only bind a tag whose value fits this category." Boolean, Integer, Decimal, Text, Date and time; Decimal. Boolean takes a Boolean tag, Integer any integer family, Decimal any number, Date and time a DateTime, Text any source. A bound source that does not fit, tag or variable, is flagged on the unit's row. The column shows a sample reading ("Reads as 24.53 bar").
Engineering unit "What every reading of this channel is written in. Left empty, it is written bare." Free text; blank (placeholder "none"). Printed after every reading, on the chart rulers and in exports.
Color The ink every chart of the model draws this channel in: a swatch to pick with and the hex to read, type, paste or clear. A hex color such as #D62728, or blank (placeholder "palette"). Blank hands the line to the palette, which deals a stable color from the channel's place among the drawn channels; the swatch always shows the ink in force and is framed differently while it is dealt ("No color declared: the palette deals this one. Pick to make it the channel's own." against "The color this channel declares. Clear the hex to hand the line back to the palette."). The resolved ink is frozen into every run, so a recorded curve keeps it after the model is repainted or deleted. A chart you composed yourself keeps its own color.
Group The band of the stacked chart this channel is read in; the field offers the groups the model already names and takes a new one. Free text; blank (placeholder "ungrouped"). Channels naming the same group share one band and one value axis, every band along the single time axis, and the band's ruler carries the group name and the engineering unit its channels agree on. Blank joins the band the ungrouped channels share.

Row order is display order only: a channel carries its number wherever it lands, so the number column may honestly read 1, 5, 2. Every list of the model that shows channels follows this order, and writes that number into the channel's label as Ch1, Ch5, Ch2 in front of the name.

The settings column for a channel

Under the fields the column draws the chart every unit of this model will put on screen: every readable channel at full strength over a sample trace, from the same builder a panel's Channels card is drawn with. Under it, "Color and group decide how this channel is drawn on every chart of the model." and where the picked channel lands: "Read in the Pressure band, on a scale of its own.", "Read on the top band, with the channels that name no group.", "Read with every other channel, on one scale.", or "A recipe target is not sampled, so no chart draws it." for a Write only channel.

Removing a channel

Remove confirms with the reach counted before anything moves: "Remove channel 'Flow' (Ch3) from every unit of this model? This also removes 2 datalog columns, 1 recipe setpoint and 3 unit bindings. This cannot be undone." (or "Nothing else references it. This cannot be undone."). The buttons read Remove and Keep the channel. The removal sweeps datalog columns, recipe setpoints, segment targets, unit bindings, evaluation criteria (a criterion that referenced the channel as its reference channel loses that reference) and alias entries. A refused save puts everything back.

Per unit: the units list

The bottom area lists the model's units in their order, with Manage units at the far end of its head (it opens the model's page, where units are added, named and removed).

Column What it shows
Unit The unit's name.
Bindings Coverage read off the model: "No channels yet", "6 bound, none missing", or "4 bound, 2 missing" in the caution ink.

Only the picked unit builds rows and samples values; the other rows cost nothing.

The binding table of the picked unit

Picking a unit opens its binding table in the settings column ("Units · Unit 1"): one row per channel of the model, in channel order.

Column What it is Effect
Channel Ch<n> · Name. Read-only.
Role, Type The channel's role and category. Here the category is written by its internal name: Bool, Integer, Real, String, DateTime. Read-only.
Source The one value source the channel reads or writes on this unit: a Connector tag or a Logic variable, never both. The list offers (none), then every enabled tag of an enabled device as "Driver · Device · Tag", then every variable as "Variable · Name", reduced to what the role can use: a sampled channel is offered readable sources, a Write only channel writable ones; a variable and (none) suit either. Picking commits at once. An unbound channel samples as a gap, never an error.
Alias "The name this unit reads the channel under. Blank falls back to the channel's own name." Editable only where the channel's scope is "Each unit can set its own"; otherwise the cell is disabled and its tooltip reads "This channel keeps one name for every unit. Change that on the channel table above." Setting an alias on an unbound channel creates the binding row; the name in force is snapshotted into every run.
(warning icon) Shown when the bound source cannot feed the channel's type: a tag whose node type does not fit it, or a variable whose declared output category does not. A source the station cannot resolve carries no type to disagree with and is left unmarked. Tooltip: "Tag type 'String' is not compatible with channel type 'Decimal'." or "Variable type 'Text' is not compatible with channel type 'Decimal'."
Write shared For a writable channel, the other units whose binding for a writable channel resolves to the same source: unit names on this model, "Model · Unit" across models. Two units sharing a write source cannot run together: the second Start is refused by name. Reads never share.
Value The live reading of the bound source, sampled every 500 ms while this table is open. Read-only.
Clear binding (row, danger ink) Clears both sources of the row. The alias stays.

A source the station no longer offers (a removed tag or variable, or a tag whose key another tag now contests) stays on the row as "Unavailable Tag · key" or "Unavailable Variable · key", disabled, with the reason "This source is no longer available; clear or replace it." A source the channel's role stopped offering (a Write only channel bound to a read-only point, say) stays named the same way, with "This channel only commands, and this source cannot be written. Clear or replace it." or its readable counterpart. Such a row can only be cleared or replaced.

Every binding edit autosaves through the model. While the station is locked the write is refused ("Configuration is locked while a Unit is running.") and the cell goes back, so a running unit's bindings cannot change under it; a run that is already recording keeps the sources it resolved at Start. An edit that reaches the station after the model was reloaded underneath it is refused with "The unit configuration changed. Review the binding and try again."

Applying an alias set

When the model holds alias sets (Setup > Aliases), a picker and Apply stand under the table: "Apply a named set of channel names to the aliases above. Manual edits win until you re-apply." Applying is a full, visible overwrite of the unit's aliases: a channel the set names takes that name (creating the binding row when the channel is unbound), a channel the set leaves out has its alias cleared, and a channel whose scope is "One for the whole model" is left entirely alone. A procedure may also pin a set, which applies it when the procedure is staged on the unit; see Alias sets.

What this screen does not do

  • It declares no unit: adding, naming and removing a unit is the Units table on the model's page (Units).
  • It records nothing: which channels a run records, and how often, is a datalog; a recipe's targets are on the recipe.
  • It shows the live value of the picked unit only, and never writes a value: a writable channel is written by a recipe, a dashboard component or a command point.
  • Color and Group are the model's defaults for every chart of the model; a dashboard you composed keeps the ink you chose on it.
  • It does not change a running unit: every write refuses while the station is locked.