Skip to main content

Tag Registration

A [tag] is a name given to one memory cell in a PLC. Since each PLC uses a different memory address notation, refer to the page for your specific PLC model.

  • Mitsubishi: formats like D100, M50
  • Siemens: formats like %DB1.DBW0
  • LS: formats like D00309
  • OPC-UA: formats like ns=2;s=Channel1.Device1.Tag1

For detailed notation, see the [PLC Address] section on each PLC page → PLC Type Guide


Input Fields​

Enter the following information for each tag line:

FieldWhat to enter
Tag NameName displayed on screen. Korean characters allowed (e.g., 펌프1 회전수)
PLC AddressAddress notation from the PLC manual (e.g., D100)
Data TypeOne of Float, Integer, Boolean, String, Long, Double
Format Helper (format)DW for 32-bit, REAL for floating-point, etc. (optional)
FormulaPost-processing expression such as unit conversion (optional). See Apply Formula for details
DescriptionNotes. Displayed alongside the tag on screen

Data Type Guide​

Data TypeWidth/SignWhen to useExample
Boolean1 bitOn/off, ON/OFFPump running / Alarm ON
Integer16-bit signedInteger (including negatives) — most commonCounter, rotation speed
Long64-bit signedLarge integers (exceeding 32-bit)Cumulative production count
Float32-bit floatValues with decimal pointsTemperature, pressure, speed
Double64-bit floatHigh-precision decimal valuesPrecision measurement data
StringVariableStringBatch name, recipe name

Precision types that specify sign/width in the name (same meaning as Kepware):

Data TypeWidth/SignWhen to use
Short16-bit signedSame as Integer (explicit name)
Word16-bit unsigned0–65535 counter (no negatives)
DInt32-bit signed32-bit integer (replaces old Integer+DW combination)
DWord32-bit unsignedCumulative counters exceeding 2.1 billion (2^31) — values that used to fail with Integer
QWord64-bit unsignedLarge unsigned counters
Byte8-bit unsignedStatus byte
Existing Tag Migration (behavior change effective 2026.07)
  • S7 Integer: Corrected from misreading as unsigned (u16) to signed (s16) — resolves the issue where negatives appeared as values like 65531. Use Word if unsigned is needed.
  • S7 / MELSEC Long: Unified from 32-bit reading to 64-bit standard. Tags previously reading 32-bit via Long should be changed to DInt (signed) or DWord (unsigned).

Array Tags (Base[N])​

Registering in the format elementType[count] as in DInt[10] reads a contiguous region as a single tag and stores it as a JSON array string ("[1,2,3]"). Supported drivers (expanded as of 2026.07): EIP + MELSEC / S7 / Modbus / LS. Only numeric element types are actually collected. (String arrays cannot be registered; Boolean/Byte arrays are unsupported by drivers — values will be empty.) Per-driver limits: Modbus total 125 words · LS total 64 words · MELSEC by series (Q/L·iQ-R 960 / QnA 480 / A 32 words) S7 negotiated PDU − 19 bytes — if exceeded, values are empty, so reduce N or split the tag. Array tags are read-only (write not supported).


Format Helper (format) Guide​

Even with the same PLC address, the value can differ depending on how it's interpreted. This includes cases like combining two 16-bit memory cells to read as 32-bit, or combining four cells to read as a 64-bit float.

Your value type데이터 형식형식 보조
16-bit integer (most common)Integer(leave empty)
16-bit unsigned integerIntegerUI
32-bit integer (two memory cells)IntegerDW
32-bit float (most common float type)FloatREAL
64-bit float (high precision)DoubleLREAL
1 bit (on/off)Boolean(leave empty)
Specific bit within a wordBooleanBIN[3] (bit 3)
String of N charactersStringSTR[N] (e.g., STR[10])
When values look wrong

If you have a 32-bit / 64-bit value but leave the format helper empty, it will be misread as 16-bit, making the value abnormally small or large. In that case, fill the format field with values like DW, REAL, LREAL.


Advanced Tag Settings (Kepware Reference)​

Tags can also store the following optional settings (if all unset, existing behavior remains). Currently specified via backup/restore JSON (/connect/restore) or REST; values are stored alongside the tag row.

SettingValueMeaning
byte_orderAB_CD BA_DC CD_AB DC_BA32/64-bit byte/word order (unset = protocol default)
scaling_typelinear sqrtRaw value → engineering unit conversion
raw_low/raw_highnumberScaling input (raw) range
scaled_low/scaled_highnumberScaling output (engineering) range
clamptrue/falseClamp output to scaled range
negatetrue/falseSign inversion
unitsstringUnit label (e.g., degC)
client_accessR / RWWhen R, write API is rejected (read-only)
deadbandnumberSkip publishing if change from previous value is below this threshold
scan_divisorintegerRead once every n cycles (multiple of collection interval)

Example — linear conversion of raw 0..4095 from 4–20mA to 0..100%, with minor fluctuation suppression:

{"tags":[{ "opc_id":"OPC_X", "tag_id":"TAG_PCT", "tag_name":"압력%",
"data_type":"Float", "plc_address":"D100",
"scaling_type":"linear", "raw_low":0, "raw_high":4095,
"scaled_low":0, "scaled_high":100, "clamp":true, "deadband":0.5 }]}

Can be used together with formulas (fomula) — the formula is applied on top of the scaling result.

The same settings can be specified in CSV batch registration (/ui/connect/csv) — optional columns after the default 9 columns: RAW_TYPE, BYTE_ORDER, SCALING_TYPE, RAW_LOW, RAW_HIGH, SCALED_LOW, SCALED_HIGH, CLAMP, NEGATE, UNITS, CLIENT_ACCESS, DEADBAND, SCAN_DIVISOR, TAG_GROUP. Existing 9-column CSVs work unchanged. JSON backup/restore always includes these settings (items unset are omitted from the file).


How to Register​

Method 1 — Add Together in the PLC Registration Form​

The [Add Connection] or [Edit] screen includes a tag input table. Press the [+ Add Tag] button to add a row, enter each tag line by line, then press [Save].

Method 2 — Add Tags to an Already Registered PLC​

  1. [Connections] menu → click the PLC on the left
  2. Click the [Add Tag] button above the [Tag List] on the right
  3. Add tags one by one. Values start coming in at the next collection interval immediately.

Method 3 — CSV Batch Upload​

If you have dozens or more tags, the [CSV Batch Upload] button at the top right of [Connections] is faster. The CSV template can be downloaded from the upload screen.


Verifying Registration​

Click on the PLC to see registered tags in the [Tag List] on the right.

ColumnMeaning
Tag Name / Address / TypeAs registered
Current ValueMost recently collected value (auto-refreshes every 5 seconds)
Collection TimeWhen that value was received
Status정상 / 오류

If an error appears, it's likely a typo in the PLC address notation or a data type mismatch. Refer to Troubleshooting — Values look wrong.


Modifying / Deleting Tags​

  • Click a row in the tag list to open the edit form.
  • Use the [Delete] button at the end of each row to delete one at a time.

Changes apply at the next collection interval.


FAQ​

Q. How do I find out the PLC address?​

  • PLC programmer / equipment manufacturer manuals often include a "data mapping table."
  • You can check addresses in use via the "Watch table / monitor screen" in PLC programming tools (GX Works, TIA Portal, XG5000, etc.).
  • For OPC-UA, using a free client like UA Expert to click/copy addresses is the most accurate method.

Q. How is the tag ID assigned?​

The gateway automatically assigns IDs in the <connection-id>_TAG_<number> format. You can specify them manually, but only use English letters, numbers, and underscores.

Q. Can I register the same address as two tags?​

Yes. This is often used when applying different formulas to the same raw value to send it in two units (e.g., temperature raw + temperature_F Fahrenheit conversion).

Q. How many tags can I register per PLC?​

Several hundred is no problem. However, since all must be read within the collection interval, consider how much time the PLC needs to respond. If tags for one PLC exceed 1000, it's advisable to monitor PLC load / network latency as well.