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

[复制链接]
查看112 | 回复0 | 2025-4-13 20:39:29 | 显示全部楼层 |阅读模式

      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
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则