Skip to main content

Tag Registration (Specifying Which Values to Read)

A [Tag] is a name assigned to a single memory location in a PLC. Address notation differs by PLC, so refer to the page for your PLC type as well.

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

Detailed notation is in the [PLC Address] section of each PLC page → Guide by PLC Type


Input Fields

Enter the following information on each tag row.

FieldWhat to enter
Tag NameThe name shown on screen. Korean is allowed (e.g., 펌프1 회전수)
PLC AddressThe address notation given in the PLC manual (e.g., D100)
Data TypeOne of Float, Integer, Boolean, String, Long, Double
Type Modifier (format)DW for 32-bit, REAL for floating point, etc. (optional)
FormulaPost-processing expression such as unit conversion (optional). For details, see Applying Formulas
DescriptionA memo. Displayed alongside on screen

Data Type Guide

Data TypeWidth / SignWhen to useExample
Boolean1 bitOn/off, ON/OFFPump running / alarm ON
Integer16-bit signedIntegers (including negatives) — most commonCounters, RPM
Long64-bit signedLarge integers (exceeding 32-bit)Cumulative production
Float32-bit floatValues with decimalsTemperature, pressure, speed
Double64-bit floatHigh-precision decimalsPrecision measurement data
StringVariableStringsBatch name, recipe name

Precision types that state width and sign explicitly in the name (same meaning as Kepware):

Data TypeWidth / SignWhen to use
Short16-bit signedSame as Integer (explicit name)
Word16-bit unsigned0–65535 counters (no negatives)
DInt32-bit signed32-bit integers (replaces the old Integer+DW combination)
DWord32-bit unsignedCumulative counters exceeding 2.1 billion (2^31) — values that failed when collected as Integer
QWord64-bit unsignedLarge unsigned counters
Byte8-bit unsignedStatus bytes
Migrating Existing Tags (Behavior Change in 2026.07)
  • S7 Integer: Corrected from being incorrectly read as unsigned (u16) to the canonical signed (s16) — resolves the issue where negative values appeared as 65531. If unsigned is required, use Word.
  • S7 / MELSEC Long: Unified from 32-bit reads to the canonical 64-bit. Change existing tags that read 32-bit values via Long to DInt (signed) or DWord (unsigned).

Array Tags (Base[N])

Registering as element type[count], e.g. DInt[10], collects a contiguous area as a single tag and stores it as a JSON array string ("[1,2,3]"). Supported drivers (expanded in 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 the drivers — their values will be empty). Per-driver limits: Modbus 125 words total · LS 64 words total · MELSEC by series (Q/L·iQ-R 960 / QnA 480 / A 32 words) · S7 negotiated PDU − 19 bytes — exceeding these leaves values empty, so reduce N or split the tag. Array tags are read-only (write is not supported).


Type Modifier (format) Guide

The same PLC address yields different values depending on how it is interpreted. Differences include reading two 16-bit memory locations together as 32-bit, or four locations as a 64-bit float.

The value you have데이터 형식형식 보조
16-bit integer (most common)Integer(leave empty)
16-bit unsigned integerIntegerUI
32-bit integer (two memory locations)IntegerDW
32-bit float (most common float type)FloatREAL
64-bit float (precision)DoubleLREAL
A single bit (on/off)Boolean(leave empty)
A specific bit within a wordBooleanBIN[3] (bit 3)
String of N charactersStringSTR[N] (e.g., STR[10])
When Values Look Wrong

If a value is 32-bit or 64-bit but the type modifier is left empty, it is misread as 16-bit and the value comes out abnormally small or large. In that case, fill the format field with a value such as DW, REAL, or LREAL.


Advanced Tag Settings (Kepware Reference)

The following optional settings can be saved with a tag (if all are unspecified, behavior is unchanged). They are currently specified via backup/restore JSON (/connect/restore) or REST, and the values are stored together with the tag row.

SettingValueMeaning
byte_orderAB_CD BA_DC CD_AB DC_BAByte/word order for 32/64-bit (unspecified = 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 the scaled range
negatetrue/falseInvert sign
unitsStringUnit label (e.g., degC)
client_accessR / RWIf R, the write API rejects requests (read-only)
deadbandNumberSkip publishing if the change from the previous value is below this amount
scan_divisorIntegerRead only once every n cycles (multiple of the collection interval)

Example — linearly convert a 4–20 mA raw range of 0..4095 to 0..100% and suppress minor fluctuations:

{"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 }]}

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

The same settings can also be specified in CSV bulk registration (/ui/connect/csv) — optional columns after the base 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 CSV files continue to work as-is. JSON backup/restore always includes these settings (unspecified items are omitted from the file).


How to Register

Method 1 — Add along with the PLC registration form

The [Add Connection] or [Edit] screen contains a tag entry table. Click the [+ Add Tag] button to add rows, fill in each row, then click [Save].

Method 2 — Add tags only to an already registered PLC

  1. [Connection] menu → click the PLC on the left
  2. Click the [Add Tag] button above the [Tag List] on the right
  3. Add them one at a time. Values begin arriving on the next collection cycle immediately after adding.

Method 3 — CSV bulk upload

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


Verifying Registration

Click a PLC and the registered tags appear in the [Tag List] on the right.

ColumnMeaning
Tag Name / Address / TypeExactly as registered
Current ValueThe most recently collected value (auto-refreshed every 5 seconds)
Collection TimeThe time that value arrived
Status정상 / 오류

If an error appears, the most likely causes are a typo in the PLC address notation or a data type mismatch. See Troubleshooting — Values Look Wrong.


Editing / Deleting Tags

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

Changes take effect on the next collection cycle immediately after editing.


Frequently Asked Questions

Q. How do I find out the PLC address?

  • The PLC programmer or the equipment manufacturer's manual often contains a "data mapping table."
  • You can check the addresses in use from the "Watch table / monitor screen" of the PLC programming tool (GX Works, TIA Portal, XG5000, etc.).
  • For OPC-UA, the most accurate approach is to click and copy the address using a free client such as UA Expert.

Q. How should I name tag IDs?

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

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

Yes. This is commonly used when you want to apply different formulas to the same raw value and send it in two forms with different units (e.g., temperature raw + temperature_F Fahrenheit conversion).

Q. How many tags can I register on one PLC?

Several hundred pose no problem. However, all of them must be readable within the collection interval, so consider the response time the PLC can sustain. If a single PLC has more than 1000 tags, it is advisable to monitor PLC load and network latency as well.