Modbus主机设置
Modbus从机站的Modbus主机通信设置和请求表可使用WindLDR“功能设置”进行设置。 进行从机站通信与用户程序执行同步,并且按照请求表中指定的请求编号顺序在END处理中处理通信数据。 当指定了请求执行内部继电器时,只有当相应的请求执行内部继电器打开时才执行请求。 当没有指定请求执行内部继电器时,连续执行所有请求。
使用WindLDR设置Modbus主机通信用于Modbus ASCII或Modbus RTU。 由于这些设置与用户程序相关,所以必须在更改设置后将用户程序下载到MicroSmart。
1. 在WindLDR菜单栏中选择设置>功能设置>通信端口。此时出现通信端口的“功能设置”对话。
2. 在“端口2”的“通信模式”下拉列表中,选择Modbus ASCII主机或Modbus RTU主机。
3. 单击端口2的设置按钮。显示“Modbus ASCII/RTU主机请求表”对话框。
4. 单击通信设置按钮。出现“通信参数”对话框。若有必要,请更改设置。
注释 1: 仅当端口 3 至端口7 上使用 Modbus 主机时才可使用115200 bps的速度。
注释 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从机或Modbus RTU从机
3. 单击设置按钮。出现“通信参数”对话框。若有必要,请更改设置。
4. 单击确定按钮保存更改。
5. 在关闭“功能设置”屏幕后,编辑一个用于特殊数据寄存器D8054(传输等待时间)和错误检测的用户程序。
6. 将用户程序下载到CPU模块。
现在,设置Modbus从机完成。
*a:地址通常用于Modbus通信。 MicroSmart设备的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中。
之后,分别读取分割存放后的寄存器的值就可知。