FINS 读
x/finsRead组件:v0.37.0+ 通过欧姆龙 FINS 协议(UDP/TCP)批量读取 CS/CJ/CP/NJ/NX 系列 PLC 内存区,结果以统一契约 iot_points.Data 列表写回 msg.Data,成功走 Success 链、失败走 Failure 链。
需要额外引入扩展库: rulego-components-iot (opens new window)
# 页面导航
- 写入:x/finsWrite
- 统一采集入口:x/iotRead(driver=fins)
- 统一写入入口:x/iotWrite(driver=fins)
- 转时序点落盘:x/tsdbWrite(配置 measurement)
# 配置
| 字段 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| server | string | PLC 地址 IP[:port],FINS 默认端口 9600 | 127.0.0.1:9600 |
| transport | string | 传输方式:udp / tcp(FINS/TCP 含节点握手) | udp |
| network | int | FINS 网络号(DA1/SA1) | 0 |
| dstNode | int | 目标节点号(DA2,PLC 的 FINS 节点号) | 0 |
| srcNode | int | 源节点号(SA2,本客户端节点号) | 0 |
| unit | int | 单元地址(DA3,CPU 单元号) | 0 |
| timeout | int | 请求超时(秒) | 5 |
| points | array | 默认点位表。若 msg.Data 带点位列表则优先使用 | - |
# 点位表字段
| 字段 | 说明 |
|---|---|
| name | 点位名称 |
| addr | FINS 内存地址(见下表) |
| type | 数据类型 |
| scale / offset | 工程量转换 |
| endian | 多寄存器字节序:ABCD/CDAB/BADC/DCBA |
工程量公式:eng = raw * scale + offset。仅平移请显式设 scale=1;scale=0 时结果为 offset。
各字段支持 ${msg.xx} / ${metadata.xx} 模板。
# 地址格式
| 区 | 字地址 | 位地址 | 说明 |
|---|---|---|---|
| DM | DM100 | DM100.3 | 数据存储区(也可简写 D100) |
| CIO | CIO100 | CIO10.0 | CPU I/O 区 |
| WR | WR200 | WR200.5 | 内部辅助区(也可简写 W) |
| HR | HR50 | HR50.2 | 保持继电器(也可简写 H) |
| AR | AR10 | AR10.7 | 特殊辅助(也可简写 A) |
# 支持的数据类型
BOOL、INT16、UINT16、INT32、UINT32、FLOAT32(支持点位级 Endian:ABCD/CDAB/BADC/DCBA)
# 输入/输出
- 输入:可使用配置中的
points,也可由msg.Data传入点位列表覆盖 - 输出:
[{"name","value","timestamp","error"}]
# 示例
{
"id": "fins_read",
"type": "x/finsRead",
"configuration": {
"server": "192.168.1.20:9600",
"transport": "udp",
"points": [
{"name": "温度", "addr": "DM100", "type": "INT16", "scale": 0.1},
{"name": "电机", "addr": "CIO10.0", "type": "BOOL"}
]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 关联组件
- 写入:x/finsWrite
- 统一采集入口:x/iotRead(driver=fins)
- 统一写入入口:x/iotWrite(driver=fins)
- 转时序点落盘:x/tsdbWrite(配置 measurement)
在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/08/01, 05:05:14