标签注册(指定读取哪个值)
[标签] 就是为 PLC 的一个内存单元取一个名字。由于每种 PLC 的内存地址表示法不同,请一并参考自己所用 PLC 类型的页面。
- 三菱:
D100、M50这类格式 - 西门子:
%DB1.DBW0这类格式 - LS:
D00309这类格式 - OPC-UA:
ns=2;s=Channel1.Device1.Tag1这类格式
详细表示法见各 PLC 页面的 [PLC 地址] 一节 → 各类 PLC 指南
输入项
一行标签需要输入以下信息。
| 栏位 | 填写内容 |
|---|---|
| 标签名称 | 界面上显示的名称。可用中文(例:펌프1 회전수) |
| PLC 地址 | PLC 手册中给出的地址表示(例:D100) |
| 数据格式 | Float、Integer、Boolean、String、Long、Double 之一 |
格式辅助(format) | 32-bit 时填 DW,浮点时填 REAL 等(可选) |
| 计算公式 | 单位换算等后处理公式(可选)。详见 应用计算公式 |
| 说明 | 备注。会一并显示在界面上 |
数据格式指南
| 数据格式 | 位宽·符号 | 何时使用 | 示例 |
|---|---|---|---|
Boolean | 1 位 | 开/关、ON/OFF | 泵运行 / 报警 ON |
Integer | 16-bit 有符号 | 整数(含负数)—— 最常见 | 计数器、转速 |
Long | 64-bit 有符号 | 大整数(超过 32-bit) | 累计产量 |
Float | 32-bit 浮点 | 带小数的值 | 温度、压力、速度 |
Double | 64-bit 浮点 | 高精度小数 | 精密测量数据 |
String | 可变 | 字符串 | 批次名、配方名称 |
通过名称明确标注符号与位宽的精确类型(与 Kepware 含义一致):
| 数据格式 | 位宽·符号 | 何时使用 |
|---|---|---|
Short | 16-bit 有符号 | 与 Integer 相同(显式命名) |
Word | 16-bit 无符号 | 0~65535 计数器(无负数) |
DInt | 32-bit 有符号 | 32-bit 整数(替代旧的 Integer+DW 组合) |
DWord | 32-bit 无符号 | 超过 21 亿(2^31) 的累计计数器 —— 用 Integer 采集会失败的值 |
QWord | 64-bit 无符号 | 无符号大型计数器 |
Byte | 8-bit 无符号 | 状态字节 |
- S7
Integer:原先被误读为无符号(u16),现更正为**有符号(s16)**基准 —— 解决负数显示为 65531 之类的问题。若需要无符号,请改用Word。 - S7 / MELSEC
Long:原按 32-bit 读取,现统一为基准的 64-bit。以往用Long读取 32-bit 的标签,请改为DInt(有符号)或DWord(无符号)。
数组标签(Base[N])
按 DInt[10] 这样以元素类型[个数]注册后,会将连续区域作为一个标签采集,并以 JSON 数组字符串("[1,2,3]")保存。
支持的驱动(2026.07 扩展):EIP + MELSEC / S7 / Modbus / LS。元素仅数值类型可实际采集
(String 数组无法注册,Boolean/Byte 数组驱动不支持 —— 值会为空)。
各驱动限制:Modbus 合计 125 字 · LS 合计 64 字 · MELSEC 按系列(Q/L·iQ-R 960 / QnA 480 / A 32 字) ·
S7 协商 PDU − 19 字节 —— 超出时值会为空,请减小 N 或拆分标签。数组标签仅支持 read(不支持 write)。
格式辅助(format)指南
即使是 PLC 的同一地址,解释方式不同得到的值也不同。例如把两个 16-bit 内存单元合并按 32-bit 读取,或把 4 个单元合并按 64-bit 浮点读取。
| 您的值 | 데이터 형식 | 형식 보조 |
|---|---|---|
| 16-bit 整数(最常见) | Integer | (留空) |
| 16-bit 无符号整数 | Integer | UI |
| 32-bit 整数(两个内存单元) | Integer | DW |
| 32-bit 浮点(最常见的浮点类型) | Float | REAL |
| 64-bit 浮点(高精度) | Double | LREAL |
| 单个位(开/关) | Boolean | (留空) |
| 字中的特定位 | Boolean | BIN[3](第 3 位) |
| N 个字符的字符串 | String | STR[N](例:STR[10]) |
若实际是 32-bit / 64-bit 却把格式辅助留空,会被误按 16-bit 读取,导致数值异常偏小或偏大。此时请在 format 栏填入 DW、REAL、LREAL 之类的值。
高级标签设置(参考 Kepware)
标签可一并保存以下可选设置(全部未指定时保持原有行为)。
目前通过备份/恢复 JSON(/connect/restore)或 REST 指定,值与标签行一起保存。
| 设置 | 值 | 含义 |
|---|---|---|
byte_order | AB_CD BA_DC CD_AB DC_BA | 32/64-bit 字节·字序(未指定=协议默认) |
scaling_type | linear sqrt | 原始值 → 工程单位换算 |
raw_low/raw_high | 数值 | 缩放输入(原始)范围 |
scaled_low/scaled_high | 数值 | 缩放输出(工程)范围 |
clamp | true/false | 将输出裁剪到 scaled 范围内 |
negate | true/false | 符号取反 |
units | 字符串 | 单位标签(例:degC) |
client_access | R / RW | 为 R 时写入 API 将被拒绝(只读) |
deadband | 数值 | 相对上次值的变化量小于该值时不发布 |
scan_divisor | 整数 | 每 n 个周期只读取 1 次(采集周期的倍数) |
示例 —— 将 4~20mA 原始值 0..4095 线性换算为 0..100%,并抑制小幅波动:
{"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 }]}
可与计算公式(fomula)并用 —— 计算公式作用于缩放结果之上。
在 CSV 批量注册(/ui/connect/csv)中也可指定相同设置 —— 基本 9 列之后的可选列:
RAW_TYPE, BYTE_ORDER, SCALING_TYPE, RAW_LOW, RAW_HIGH, SCALED_LOW, SCALED_HIGH, CLAMP, NEGATE, UNITS, CLIENT_ACCESS, DEADBAND, SCAN_DIVISOR, TAG_GROUP。
原有的 9 列 CSV 仍可正常使用。JSON 备份/恢复始终包含这些设置(未设置的项在文件中省略)。
注册方法
方法 1 —— 在 PLC 注册表单中一并添加
[添加连接] 或 [修改] 界面中有标签输入表。点击 [+ 添加标签] 按钮增加行,逐行输入后点击 [保存]。
方法 2 —— 为已注册的 PLC 仅添加标签
- [连接] 菜单 → 在左侧点击 PLC
- 点击右侧 [标签列表] 上方的 [添加标签] 按钮
- 逐个添加。添加后从下一个采集周期起即开始进入数值。
方法 3 —— CSV 批量上传
标签达到数十个以上时,使用 [连接] 右上角的 [CSV 批量上传] 更快。CSV 模板可在上传界面下载。
确认是否注册成功
点击 PLC 后,右侧 [标签列表] 中会显示已注册的标签。
| 列 | 含义 |
|---|---|
| 标签名称 / 地址 / 格式 | 与注册内容一致 |
| 当前值 | 最近一次采集到的值(每 5 秒自动刷新) |
| 采集时刻 | 该值进入的时间 |
| 状态 | 정상 / 오류 |
出现错误时,多半是 PLC 地址表示有拼写错误或数据格式不匹配。参见 问题排查 —— 数值异常。
标签修改 / 删除
- 点击标签列表中的行即可打开修改表单。
- 通过行末的 [删除] 按钮逐行删除。
修改后从下一个采集周期起即按新设置生效。
常见问题
Q. 如何查到 PLC 地址?
- PLC 编程人员 / 设备制造商的手册中通常有“数据映射表”。
- 可在 PLC 编程工具(GX Works、TIA Portal、XG5000 等)的“Watch table / 监视画面”中确认正在使用的地址。
- 若是 OPC-UA,用 UA Expert 之类的免费客户端点击/复制地址最为准确。
Q. 标签 ID 如何命名?
网关会自动以 <connection-id>_TAG_<number> 格式赋予。也可以自行指定,但请只使用英文、数字和下划线。
Q. 同一地址可以注册为两个标签吗?
可以。当希望对同一 raw 值应用不同计算公式、仅改变单位后以两种形式发送时经常这样用(例:temperature raw + temperature_F 华氏换算)。
Q. 一个 PLC 最多能注册多少个标签?
数百个不成问题。但必须能在采集周期内全部读完,因此要考虑 PLC 的响应时间。若一个 PLC 的标签超过 1000 个,建议同时监控 PLC 负载与网络延迟。