Modbus 主机设置
Modbus 从机站的 Modbus 主机通信设置和请求表可使用 WindLDR“功能设置”进行设置。 进行从机站通信与用户程序执行同步,并且按照请求表中指定的请求编号顺序在END处理中处理通信数据。 当指定了请求执行内部继电器时,只有当相应的请求执行内部继电器打开时才执行请求。 当没有指定请求执行内部继电器时,连续执行所有请求。
使用 WindLDR 设置 Modbus 主机通信用于 Modbus ASCII 或 Modbus RTU。 由于这些设置与用户程序相关,所以必须在更改设置后将用户程序下载到MicroSmart。
1. 在 WindLDR 菜单栏中选择设置>功能设置>通信端口。此时出现通信端口的“功能设置”对话。
2. 在“端口 2”的“通信模式”下拉列表中,选择 Modbus ASCII 主机或 ModbusRTU 主机。
3. 单击端口 2 的设置按钮。显示“Modbus ASCII/RTU 主机请求表”对话框。
4. 单击通信设置按钮。出现“通信参数”对话框。若有必要,请更改设置。
注释 1: 仅当端口 3 至端口 7 上使用 Modbus 主机时才可使用 115200bps 的速度。
注释 2: 当端口 3 至端口 7 上使用 Modbus 主机时可指定传输等待时间。
5. 单击确定按钮返回 Modbus ASCII 或 RTU 主机请求表。 在“功能代码”下指定请求。 一个请求表中最多可输入 255 个或 2040 个(在系统程序版本 110 或更高的 CPU 模块上时)请求。
“功能代码”为进行 Modbus 通信时,主机对从机进行的读取或写入的操作代码。FC5A 支持如下功能代码:
当使用“请求执行内部继电器”和“错误状态”数据寄存器时,输入设备的第一个编号。
请求执行内部继电器和错误状态数据寄存器按照请求编号顺序分配。 当删除一个请求或更改请求的顺序时,更改了请求与请求执行内部继电器和错误状态数据寄存器的关系。 如果在用户程序中使用了内部继电器或数据寄存器,必须相应地更改设备编号。在完成更改后,重新下载用户程序。
6. 当完成编辑“主机请求表”时,单击确认按钮保存更改。
7. 在关闭“主机请求表”后,编辑一个用于特殊数据寄存器 D8054 (传输等待时间)和错误检测的用户程序。
8. 将用户程序下载到 CPU 模块。现在,设置 Modbus 主机完成。
Modbus 从机设置
在 WindLDR 功能域设置中为端口 1 至端口 7 选择 Modbus ASCII 从机或Modbus RTU(远程终端设备)从机,则可使用 Modbus 从机通信。 当 Modbus从机从 Modbus 主机接收请求时,Modbus 从机根据请求读取或写入数据。 在用户程序的 END 处理时处理请求。
使用 WindLDR 设置 Modbus 从机通信用于 Modbus ASCII 或 Modbus RTU。 由于这些设置与用户程序相关,所以必须在更改设置后将用户程序下载到MicroSmart。
1. 在 WindLDR 菜单栏中选择设置>功能设置>通信端口。此时出现通信端口的“功能设置”对话框。
2. 在“端口 2”的“通信模式”下拉列表中,选择 Modbus ASCII 从机或 ModbusRTU 从机。
3. 单击设置按钮。出现“通信参数”对话框。若有必要,请更改设置。
4. 单击确定按钮保存更改。
5. 在关闭“功能设置”屏幕后,编辑一个用于特殊数据寄存器 D8054(传输等待时间)和错误检测的用户程序。
6. 将用户程序下载到 CPU 模块。
现在,设置 Modbus 从机完成。
Modbus 地址
*b: 这些 4 位数地址用于通信帧。要计算通信帧中使用的地址,提取 Modbus 地址的低 5 位数,从该值中减去 1,并将结果转换为十六进制。一般 MicroSmart 从机支持十进制的地址通信。但若需要使用十六进制进行通信的话,勾选 Modbus 主机设置页中的:,即可采用对从机地址表示为十六进制。
*c: 这些设备编号表示超薄型 CPU 模块。
图中,D0200~D0202 是上图设置的错误状态寄存器。当出现通信错误时,在其中保存从机号(高字节)和错误代码(低字节)。
错误代码表,如下所示:
00h:正常完成
01h:功能错误
02h:访问目标错误(地址超出范围,地址+设备量超出范围)
03h:设备量错误,1 位写入数据错误
11h:ASCII 代码错误(仅 ASCII 模式)
12h:帧长度错误
13h:BCC 错误
14h:从机编号错误
16h:超时错误
DTDV(W)将错误状态 S1 分割为高低字节存放在 D1,D1+1。例如,上图程序中第一行表示为 D0200 的高字节被存放在 D0210,低字节被存放在 D0211 中。之后,分别读取分割存放后的寄存器的值就可知道是哪个从机出现了什么错误。