Tags

The tag page card by card: the header and verbs, General, Source with the fields of every driver, Conversion, Live value with the write field, and Used by with Replace all.

View as Markdown

A tag is one addressable point on a device: an address on the wire, a data type, and the conversion that turns the raw reading into the engineering value. Select a tag row under a device, or press Open on a row of the device's Tags grid, to open its page. View connector reads it; Configure connector edits it; Calibrate tags edits the Calibration stage alone.

The header

A live dot (green while the tag has a value, amber when the value is a stand-in, the Limits stage raised a fault or the reading went silent, grey otherwise, and grey whatever it last showed on a tag the station does not read: one that is disabled, or whose device is disabled, sits under a disabled line or has no host entered yet), the tag's name, and under it the tag's address, Connector.<Driver>.<Folders…>.<Device>.<Tag>, which is what Logic and dashboards type. Below, when they apply: a caution note with the validation hint (a blank name, a missing address, a factor of 0) and the last error in red. While the tag's device is not connected, a neutral notice points to the device instead of repeating the connection failure: "This tag goes through device Furnace, which is not connected. The device's page says why."

The command bar

Command What it does Greyed when (situation) Not drawn when (role)
Copy value Copies the engineering value as displayed to the clipboard ("Copied value of 'Temperature' to the clipboard."). Never. Never.
Enable Puts the tag back into acquisition and the live address space. Already enabled, or the station refuses mutations. Without Configure connector.
Disable Withdraws the tag from acquisition and the live address space; the device keeps polling its other tags. Already disabled, or the station refuses mutations. Without Configure connector.
Delete tag (danger ink, on the right) Asks "Delete 'Temperature'? This removes it from 'Furnace'. This cannot be undone.", deletes, and selects the device. The station refuses mutations. Without Configure connector.

Every card autosaves as described on Connector. The General and Source cards are held inert for a role without Configure connector, with the note "Changing the Connector requires the “Configure connector” permission." on top.

The General card

Field What it is Values / default Effect
Tag name The point's name; the last segment of both the wire key and the address. Required. Typing previews how many references the rename carries; committing rewrites them: "Tag renamed and 2 references updated." Blank is refused: "Tag name is required." OCPP tags must end in Meter, Status or Transaction: "OCPP tag names must end in 'Meter', 'Status' or 'Transaction' (e.g. Connector1Meter)."
Data type The OPC UA scalar type the embedded server exposes. Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Float, Double, String, DateTime, Guid, ByteString, narrowed to what the driver marshals; Float by default where the driver has it, else the first type it offers. Changing it snaps what depends on it: a NaN limit action becomes Null on a type that cannot hold NaN, the NaN policy resets to pass-through on a non-numeric type, a simulated signal kind incompatible with the type is replaced by the type's default, and a Modbus register class crosses the bit/register boundary with the type. The Conversion card changes shape with it.
Access Whether the station reads, writes, or both. Read only, Write only, Read and write; Read only. OCPP and LoRaWAN offer Read only alone. A Matter tag offers writing only for a value the driver can change, and otherwise says why under the field (A tag made by hand). An NI-DAQmx tag offers the accesses its measurement allows (Measurements). An SNMP tag on a standard object its MIB declares read only offers Read only alone, and says why under the field (Data types and access). A File tag offers Read only alone until its device allows writing, and a fact of the file stays read only (What a tag reads). A Database tag shows what a write does only once its access writes (Writing). Read and write and Write only draw the write field on the Live value card; a Write only tag is not polled, does not count toward device health, and has no policy for a failed read, since the station never reads it.
Unit The engineering unit, free text. Empty. Shown beside every stage result and the engineering value, and wherever the value is displayed.
Poll interval (ms) A per-tag override of the device's poll interval. 0 (use the device default); a negative value is saved as 0. Hidden for Mitsubishi MC, BACnet, OCPP, LoRaWAN and MQTT, which ignore it.

The Source card

"Where this tag's value comes from, and the latest raw reading." The fields depend on the driver; the driver pages explain the semantics, this is the inventory as the panel draws it.

Free-text address

Drivers addressed by a token you type show one field, labelled per driver: Node id (OPC UA), Symbol (Beckhoff ADS), Device address (Mitsubishi MC), Controller tag (Rockwell), Resource path (Redfish), PI path (AVEVA PI), Path (HTTP), Topic or Metric (MQTT, as the device's protocol is Plain MQTT or Sparkplug B), Memory address or Variable name (Omron, as the device's protocol is FINS or NJ/NX tags by name), Query (SCPI instruments), Physical channel (NI-DAQmx), OID (SNMP), with the driver's hint under it. The field is required for these drivers: "Node id is required for this driver."

Typed fields per driver

Driver Fields
Modbus TCP, Modbus RTU Register class (Coil (0xxxx), Discrete input (1xxxx), Input register (3xxxx), Holding register (4xxxx): each named with the first digit a device manual's address carries for it; the default follows type and access: a read-only Boolean is a discrete input, a writable one a coil, a read-only number an input register, a writable one a holding register) and Register number (0-based).
Siemens S7 Area (DataBlock, Merker, ProcessInput, ProcessOutput, Timer, Counter), DB number (DataBlock only), Start byte, Bit (0-7) (Boolean tags), Max length (blank = 254) (String tags).
Rockwell Offset in tag (bytes, bits for BOOL), after the Controller tag field; 0 is the start of the tag.
BACnet Object type (AnalogInput, AnalogOutput, AnalogValue, BinaryInput, BinaryOutput, BinaryValue, MultiStateInput, MultiStateOutput, MultiStateValue) and Instance. The present value is what is read.
OCPP Connector (the connector number, 1 by default), with the note "Name the tag …Meter (energy reading), …Status (connector state) or …Transaction (number of the running transaction)."
Redfish JSON pointer (blank = whole document), "e.g. /Temperatures/0/ReadingCelsius", after the Resource path.
Matter Output (endpoint), Matter cluster and Attribute, on one row; the cluster is picked from the Matter catalog by its name. A Matter device's tags usually come from the device itself, ticked after pairing or on Discover (see Matter); these fields serve the rare tag made by hand.
MQTT On a Plain MQTT device, Value path (where the value sits inside a JSON payload; empty reads the whole payload), Command topic (where a write is published; empty keeps the tag read only) and Payload template (the JSON a write publishes, with {value} where the value goes), after the Topic field. A Sparkplug B metric has none: see MQTT.
Generic serial and TCP No address to type: Read mode (Request and response or Listen), Request, Message filter, Value is with the fields of the extraction it names, The device writes a comma for the decimal point (Float and Double), and on a tag that is written Write message and Expected reply. See Generic serial and TCP.
SCPI instruments Beside the Query, Value in the answer (which value of a comma-separated answer is the tag's, counted from 1; empty reads the whole answer) on a tag that is read, and Write command (what a write sends, with {value} where the value goes) on a tag that is written. See SCPI instruments.
NI-DAQmx Beside the Physical channel, Measurement and the fields of the measurement: the range in its unit (Minimum and Maximum), Terminal configuration, Shunt resistor and Shunt resistance (Ω), Thermocouple type, Cold-junction compensation (CJC) and CJC temperature (°C), Edge counted, Count direction, Initial count and Input terminal, each drawn only where the measurement reads it. See NI-DAQmx.
SNMP Under the OID, read only: MIB name, the object's standard name with what its MIB says of it (or "No standard name"), and Numeric OID, the number every request carries. See SNMP.
File No address to type: Reads (a value, the whole file or a fact of the file) and, for a value, the fields of the device's format: Column and Row to read (CSV), Line to read and Value is (free text), JSON path or XML path; on a device that allows writing, A write and Line template. See File.
Database No address to type: Reads (Table and column or Own query) and its fields: Table, Value column and Row to read, with Key column and Key value or Date column, or Query text; on a tag that writes, A write and Write command. See Database.
LoRaWAN Address by Cayenne LPP channel/type (checkbox), Channel / payload offset, LPP type code (with LPP on), Bitmask (hex, blank = none), Multiplier (blank = none).

Wire length and byte order

Field Shown for What it is
Quantity (registers, blank = auto) Modbus, String tags only How many 16-bit registers to read; blank reads 4. Other Modbus types take a fixed width (one register for Boolean, Int16 and UInt16, two for Int32 and Float), so the field is not drawn for them.
Read length (bytes, blank = auto) Beckhoff, Mitsubishi, LoRaWAN The byte count; blank derives it from the type: 1 for Boolean, Byte and SByte; 2 for Int16 and UInt16; 4 for Int32, UInt32 and Float; 8 for Int64, UInt64 and Double; 16 for String; 4 otherwise.
Length (characters, blank = 16) Omron (FINS, String tags only) How many characters the text spans, two to a word, 1 to 1998; blank reads 16. Every other FINS type spans the words its type says, so the field is not drawn for it.
Most significant byte first (MSB first, big-endian) Modbus (numeric tags, and Boolean tags kept in a register), LoRaWAN Which end of the value comes first on the wire; the words in brackets are the ones manuals print for it. On by default for Modbus, off for LoRaWAN. Modbus defines no byte order for text, so a Modbus String tag is not offered it. A Modbus Boolean in a coil or a discrete input is a single bit with no byte to order, so it is not offered it either.
Most significant word first (high word first) Modbus (Int32 and Float tags) Which 16-bit half leads in a two-register value. On by default. Under the two boxes, Byte order of the value names the layout they make in the letters a manual prints: ABCD with both on, CDAB with the word box off, BADC with the byte box off, DCBA with both off. A one-register type (Boolean, Int16, UInt16) has no second half, so the box is not drawn there; nor for LoRaWAN, whose payload has no word to put first.

Source address (wire)

A Modbus tag ends the field group with Address in the manual instead: where the tag sits in the notation a device manual prints, the class's first digit and then the register counted from 1. Input register 0 reads 30001, a Float there reads 30001 to 30002, and a register past 9998 takes six digits (holding register 9999 reads 410000). The number typed in Register number (0-based) stays the one the request carries; see Modbus TCP.

Every other non-simulated tag ends the field group with a read-only preview of the address the driver actually receives, assembled from the fields above and the device's connection fields: DB1?0 for an S7 byte, Program:Main.Counter?0 for a Rockwell tag, MAIN.fValue?4 for an ADS symbol, 0,3 for a BACnet object, ocpp://<charge point>/<connector>, <resource>#/Temperatures/0/ReadingCelsius for Redfish, <DevEUI>/<channel>/<lpp>?quantity=<n> for LoRaWAN, <endpoint>/<cluster>/<attribute> for Matter, <topic>?path=<value path>&command=<command topic> for a Plain MQTT tag and the metric name for a Sparkplug B one, listen?extract=position&start=5&length=6 for a listening tag of the generic serial and TCP driver, D100 (or D200?16 for a text) for an Omron FINS tag and Motor.Speed?0 for an NJ/NX one, ask=READ?&field=3 for a SCPI tag that reads the third value of its answer, cDAQ1Mod1/ai0?measurement=voltageInput&terminal=diff&min=0&max=10 for an NI-DAQmx voltage input, 1.3.6.1.2.1.33.1.2.1.0 for an SNMP tag written upsBatteryStatus.0, column?name=Force for a File tag reading the Force column of a CSV file, row?table=dbo.Orders&column=Quantity&key=OrderNo&equals=4711 for a Database tag reading the quantity of order 4711, and the token itself for OPC UA, AVEVA PI and HTTP (prefixed with the device's resource path).

Simulated signal parameters

A Simulated tag has no address field: its name is the point. Instead: Signal kind, a list narrowed to the shapes the data type can drive, each with a small picture of the shape beside its name (Sine, Ramp, Random walk and Counter for numbers; Toggling boolean for Boolean; Enumerated text for String; Clock for DateTime; Random GUID for Guid; Random bytes for ByteString; Setpoint hold and Pulse for any type). Default value appears for Random walk, Counter and Setpoint hold, as a text field, a "Default is on (true)" checkbox for Boolean, or a date field for DateTime. States (semicolon-separated) appears for Enumerated text: "e.g. Run;Stop;Pause (cycles one step every 3 s)." Shape parameters the panel does not edit (a sine's band and period, a pulse's hold) travel with the tag unchanged. The Simulated page lists every parameter.

Raw value

The card closes with the latest raw reading as the driver delivered it, before any conversion and in the station's number format; a dash when there is none.

The Conversion card

"How the raw value is turned into the engineering value." The card is drawn for numeric, Boolean and String types, which each have transforms of their own. DateTime, Guid and ByteString pass through unchanged, so their card holds the Invalid reading stage alone.

For a numeric tag the card is the staged pipeline, top to bottom: Raw value, then Scale (Angular (×), Linear (+), a Two-point button), Calibration (the same three), Invalid reading (two policies), Limits (Min, Max, Action), Decimals (Decimals) and Engineering value with the unit. Scale, Calibration, Limits and Decimals each carry a checkbox in their head that turns the stage on or off, and a result on the right: = value when the stage applies, → value when it is bypassed. Invalid reading has no checkbox, because switching it off is already one of its policies (Pass it through for a NaN, Show the error for a device that did not answer): its head holds the title and the result, always = value. A limit fault turns the Limits stage red and prints "Value 130 is outside the limits (0 to 100)." under the card. The math, the defaults and the policies are on The value pipeline; the two-point assistant and the permission split between Scale and Calibration are on Calibration.

Every number on the card is written the way the live value is, in the station's number format (Localization): a stage shows the places its result has, up to six, and the Decimals stage, when on, the places it declares; a Float tag's stages read as the float holds them (239.05, not 239.050003). Engineering value is what the tag delivers, the same value the Live value card, the recorder and every expression read. An integer tag whose Scale or Calibration changes the value delivers a real number: an Int16 tag scaled by 0.1 reads 62.40 at Decimals and 62.40 as its engineering value (The value pipeline). An integer tag that Scale and Calibration leave as it is delivers a whole number, so where Limits clamps to a bound with decimals and Decimals does not already round to none, a note under the value says "Int16 holds whole numbers, so the tag delivers the engineering value rounded to the nearest whole number. To keep the decimals the conversion produces, choose Float or Double as the data type." On an Int64 or UInt64 tag, a raw or engineering value too large for a real number to hold exactly (a count of nanoseconds, for one) is written with all its digits and without the grouping mark.

A Boolean tag shows Invert (report the negation of the raw value), the Result, and the Invalid reading policies. A String tag shows Substring start and Length (blank = to end), the Result, and the Invalid reading policies. A DateTime, Guid or ByteString tag shows that stage and nothing else: the row The device did not answer, offering Show the error and Hold the last good value. A Write only tag is never read, so the stage leaves out the row for a device that did not answer: a numeric one keeps the NaN policy alone, a Boolean or String one shows no Invalid reading stage at all, and a DateTime, Guid or ByteString one shows no Conversion card.

Past Scale and Calibration, the numeric stages and the Boolean and String transforms are ordinary configuration: Configure connector edits them, everyone else reads them.

The Live value card

Item What it shows
Current value The engineering value with its unit, in the station's number format (Localization): as many places as the Decimals stage declares (none on an integer type that Scale and Calibration leave as it is), or, with the stage off, the places the reading has, up to six; a dash when there is none.
Stand-in note When the value is not a measurement: "Replacing a missing measurement.", "Last good value, held while the device is not answering." or "Replacing a failed read.", per the Invalid reading policies.
Silence note When the reading went silent, meaning no new one has arrived for the tag's poll interval plus 10 seconds: "No new reading has arrived since the application timestamp. The tag counts this as a failed read." The value above is what the tag presents when the device did not answer, a dash by default, beside the stand-in note when the tag holds its last good value or replaces it; the dot turns amber, and the device's health counts the tag as not answering.
Source timestamp When the equipment took the reading. For an OPC UA device it is the source timestamp the server sent with the value, which a server may keep until the value or its quality changes, so a steady value can show an earlier stamp than the application timestamp. For the other drivers it is the instant the Connector received the reading, the same as the application timestamp. While a read is failing the label turns to Last attempt and the stamp is the attempt's; while the last good value is held, or while the reading has gone silent, the label stays Source timestamp and the stamp stays that reading's.
Application timestamp When the Connector received it.
Write value For a Read and write or Write only tag, and Configure connector only: a text field (a checkbox "On (true)" for Boolean, a date field for DateTime) and Write. "Enter the engineering value; scaling and invert are reversed before writing." The status line reads "Enter a value to write." or "Value could not be converted." before anything leaves, "Writing…" while the value is on its way, and then the outcome.

Write is greyed with its reason while a run holds the station or the runtime is stopped. The panel is the one that waits for the equipment, not the Logic, so the status line reports what actually happened to the value and not merely that the request left; a second value for the same tag is refused while the first is still travelling. The outcomes it tells apart:

Status line What happened
"Value written." The equipment took the value.
"Write refused: the source is in use by an operation." A run or an interlock holds the tag. Where the funnel named the holder, that sentence is written in the refusal's place instead ("Write refused: <reason>.").
"Write refused: this tag is read-only.", "Write refused: this tag is no longer running.", "Write refused: the value does not match the tag type.", "Write refused: the station is not taking writes right now." The station settled it before anything was sent.
"'Flow' was replaced by a newer value before it was sent." A newer value for the same tag overtook this one in the device's queue and left instead. Not a failure: the newer value is the one the equipment is told.
"Write cancelled before it reached the equipment." The request was withdrawn while it was still waiting its turn.
"Write refused by the equipment.", "Write refused by the equipment: <reason>." The device or its driver refused the value. The reason is the one they gave, when they gave one: a Matter device's status, for example (CONSTRAINT_ERROR, 0x87). In another language the station says that reason in its own words ("the address is read-only", "the device is not connected") or as the equipment's own code, which reads the same in every language (ADS 0x704); a reason it cannot say in that language reads without one, and the driver's own words stay in the journal. A failure the station knows the kind of (a Modbus unit's exception response, a connection that broke, an HTTP status) is said instead in the sentence the tag's red line gives it, in every language, as on Last error.
"Write not confirmed: the equipment did not answer in time." No answer came in time, so whether the equipment took the value is not known.
"Write failed: the equipment could not be reached." Everything else the wire answered, first of all a device that is not connected.

What is reversed before the raw value leaves is on The value pipeline.

The Used by card

"Everything in the station that reads or writes this tag." The table lists every reference with Kind (Channel, Stop interlock, Automation, Variable, Action, Alarm, Dashboard, Modbus server, OPC UA server, MQTT publication), Location (the model or dashboard that holds it; empty for the top-level Logic kinds and for a row of the Modbus server register map) and Name (for a map row, its register class and its address in the manual, such as Holding register (4xxxx) 40101). With none, "Not referenced by any channel or property." The lookup is advisory: a failure leaves the grid empty. A map row holds its tag by identity, so it follows a rename; once the tag is deleted it keeps naming the tag it lost and a client reading it receives exception 04, which is why it is listed here, where the tag is deleted. A row of the OPC UA server's list is listed the same way, its access as its name, and replacing the tag moves the row to the new one. So is a row of a broker's Publish card, with the broker as its location and its topic as its name; replacing the tag keeps the topic.

For Configure connector the card adds the replace apparatus: a picker listing every other tag in the live address space by address, a Replace all button, and a per-row replace action. Replace all rewrites every listed reference to the picked tag in one all-or-nothing batch ("4 references now use Connector.Simulated.Air.Pump.Flow."; "No references to replace."); the row action rewrites that one ("'Furnace temperature' now references Connector.Simulated.Air.Pump.Flow.", or "The reference changed in the meantime. Refresh and retry." when it moved under you). A Stop interlock or Automation reference is Process structure, so replacing it needs Manage process on top: "Replacing a Unit interlock source requires the “Manage process” permission." and "Replace all includes a Unit interlock source and requires the “Manage process” permission." While no tag is picked, Replace all and the row action stand greyed with the tooltip "Pick the tag that takes these references first."; while a reference needs Manage process that the role lacks, they stand greyed with the sentence above as their tooltip. A row of the Modbus server register map moves to the picked tag by the server's own rules: a row a client may write refuses a tag that takes no writes, and then nothing is replaced.

What the tag page does not do

The tag's device and driver are fixed; move a point by creating it on the other device and using Replace all. Only one tag's stages are edited at a time here; multi-row edits are the device grid's mass edit, described on Devices. There is no history or trend on the page: the live dot, value and timestamps are the current sample, refreshed once a second.