FC5A的MODBUS通信设置

发布时间:2014-10-31 15:32   类型:案例分享   人浏览

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中。

之后,分别读取分割存放后的寄存器的值就可知。

 

本文地址:http://ca800.com/apply/d_1nss83isqfvg1_1.html

拷贝地址

版权声明:版权归中国自动化网所有,转载请注明出处!

留言反馈
  • 评价:

  • 关于:

  • 联系人:

  • 联系电话:

  • 联系邮箱:

  • 需求意向:

  • 验证码:

    看不清楚?

  • 在线咨询
X
下载企业APP

成为企业会员免费生成APP!