[西门子] smart 200 modbus RTU通信实例

[复制链接]
查看20393 | 回复0 | 2024-5-11 07:24:05 | 显示全部楼层 |阅读模式
modbusRTU报文含义如下:



   某激光测距传感器与smart 200通过modbusRTU通信。配置如下:
波特率:9600
校验位:NONE
数据位:8 位
停止位:1 位
地址:16#16  通信格式如下:


  其中需要访问缓冲距离值和连续测量距离值。

  smart 200 modbus通信含义如下:

a.        EN        使能:        同一时刻只能有一个读写功能(即 MBUS_MSG)使能

         注意:建议每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行(见例程)。

b.        First        读写请求位:        每一个新的读写请求必须使用脉冲触发

c.        Slave        从站地址:        可选择的范围   1 - 247

d.        RW        从站地址:        0 = 读, 1 = 写

         注意:

1. 开关量输出和保持寄存器支持读和写功能

2. 开关量输入和模拟量输入只支持读功能

e.        Addr        读写从站的数据地址:

        选择读写的数据类型

        00001 至 0xxxx - 开关量输出

        10001 至 1xxxx - 开关量输入

  30001 至 3xxxx - 模拟量输入

  40001 至 4xxxx - 保持寄存器

f.        Count        数据个数        通讯的数据个数(位或字的个数)

         注意:Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令)

g.        DataPtr        数据指针:以此数据地址开始以此读取count个数。

  1. 如果是读指令,读回的数据放到这个数据区中,count表示放的个数。

        2. 如果是写指令,要写出的数据放到这个数据区中

h.        Done        完成位        读写功能完成位

i.        Error        错误代码:        只有在 Done 位为1时,错误代码才有效

        0 = 无错误

  1 = 响应校验错误

  2 = 未用

  3 = 接收超时(从站无响应)

  4 = 请求参数错误(slave address, Modbus address, count, RW)

  5 = Modbus/自由口未使能

  6 = Modbus正在忙于其它请求

  7 = 响应错误(响应不是请求的操作)

  8 = 响应CRC校验和错误

-

  101 = 从站不支持请求的功能

  102 = 从站不支持数据地址

  103 = 从站不支持此种数据类型

  104 = 从站设备故障

  105 = 从站接受了信息,但是响应被延迟

  106 = 从站忙,拒绝了该信息

  107 = 从站拒绝了信息

  108 = 从站存储器奇偶错误

首先我们要外接485模块进行通信。需要进行组态。



编写程序

1、根据配置初始化主站。配置如下,波特率:9600   校验位:NONE    数据位:8 位   停止位:1 位   地址:16#16



2、根据报文格式进行主站编程,将读取数据放入VB200 VB204。

报文格式如下:



程序如下:



3、最后要对所有辅助继电器进行复位,形成循环闪烁电路。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则