主题
汇川 PLC Modbus 协议
平台支持通过 Modbus TCP 协议,与汇川 PLC 进行通讯。
NOTE
需要升级到 TopStack V5.6.8 及以上版本
通道设置
通道参数设置与通用 Modbus 协议相同,请参考 《Modbus 接入手册》。
寻址方式
设备地址
点表中的【设备地址】对应的是 Modbus 子站地址(1-247)。
点位寻址
汇川 PLC 将数据单元映射到 Modbus 地址空间,以通过 Modbus TCP 协议进行访问。 我们将 PLC 数据单元名称指定为 点位地址,用户不需要关心地址映射的细节。
完整的点位地址格式如下:
- 布尔型:
<数据区><地址>
,示例 M0 - 布尔型:
<数据区><地址>.<位号>
,示例 D0.0 - 整数型、浮点型:
<数据区><地址>[字节顺序]
,示例 D10 - 文本型:
<数据区><地址>.<字符长度>[字符顺序]
,示例 D10.5L
小型 PLC:EASY 系列、H5U 等
PLC地址 | Modbus 地址 | 数量 | 属性 | 寄存器大小 | 功能码 | 数值类型 |
---|---|---|---|---|---|---|
M0-M7999(线圈) | 0x0000-0x1F3F (0-7999) | 8000 | 读/写 | 1Bit | 0x01,0x05,0x0f | bool |
B0-B32767(线圈) | 0x3000-0xAFFF (12288-45055) | 32768 | 读/写 | 1Bit | 0x01,0x05,0x0f | bool |
S0-S4095(线圈) | 0xE000-0xEFFF (57344-61439) | 4096 | 读/写 | 1Bit | 0x01,0x05,0x0f | bool |
X0-X1777(8 进制)(线圈) | 0xF800-0xFBFF (63488-64511) | 1024 | 读/写 | 1Bit | 0x01,0x05,0x0f | bool |
Y0-X1777(8 进制)(线圈) | 0xFC00-0xFFFF (64512-65535) | 1024 | 读/写 | 1Bit | 0x01,0x05,0x0f | bool |
D0-D7999(保持寄存器) | 0x0000-0x1F3F (0-7999) | 8000 | 读/写 | 16Bit,2Byte | 0x03,0x06,0x10 | 全部 |
R0-R32767(保持寄存器) | 0x3000-0xAFFF (12288-45055) | 32768 | 读/写 | 16Bit,2Byte | 0x03,0x06,0x10 | 全部 |
NOTE
X 和 Y 区域的地址以八进制表示。
中型 PLC:AM 系列,AC 系列等
PLC 地址 | Modbus 地址 | 数量 | 属性 | 寄存器大小 | 功能码 | 数据类型 |
---|---|---|---|---|---|---|
QX0.0-QX8191.7(线圈) | 0x0000-0xFFFF (0-65536) | 65536 | 读/写 | 1Bit | 0x01,0x05,0x0f | bool |
IX0.0-IX8191.7(离散量输入) | 0x0000-0xFFFF (0-65536) | 65536 | 读 | 1Bit | 0x01,0x05,0x0f | bool |
MW0-MW65535(保持寄存器) | 0x0000-0xFFFF (0-65536) | 65536 | 读/写 | 16Bit,2Byte | 0x03,0x06,0x10 | 全部 |
位支持
保持寄存器和输入寄存器的数据区,可以在地址中增加位号。
地址格式示例:D10.0
表示读取 IW10 的第 0 位。
CAUTION
每个寄存器地址包含 16 个位。
字符串类型
读取字符串类型的数据, 需要在地址后增加字符长度和字节顺序的配置。
格式:<地址><.字符长度>L 或 <地址><.字符长度>H
。
示例:
- D32.10H 表示起始地址为 32 的寄存器连续 10 个字符(高地址在前)。
- D32.10L 表示起始地址为 32 的寄存器连续 10 个字符(低地址在前,默认顺序)。
字节顺序支持
Modubs 中每个寄存器占用一个“字”( 2 个字节)的空间。我们可以通过在点位地址
上增加后缀
来调整字节顺序。
- 如果需要每个“字”交换高低字节位置,可以增加地址后缀“X” ,如
D10X
。 - 如果一个测点占用了多个“字”,默认的读取顺序是低字在前,高字在后,如果读取数据时,需要高字在前,低字在后,可以增加地址后缀“Z”,如
D10Z
。 - 如果需要高字在前,低字在后,且每个“字”交换高低字节位置,可以增加地址后缀“XZ” ,如
D10XZ
假设,某测点为单浮点数(float32),起始地址为 D10,占用两个“字”(4个字节),数据存放顺序为 ABCD,数采驱动在读取数据时,不同的字节顺对应的地址格式如下:
ABCD -> D10
BADC -> D10X
CDAB -> D10Z
DCBA -> D10XZ