电工学习网

 找回密码
 立即注册
查看: 10552|回复: 2
打印 上一主题 下一主题

modbus协议中ctrl和init的区别

[复制链接]
跳转到指定楼层
楼主
发表于 2017-11-14 11:34:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
简单了理解上一个作为modbus主站通讯的库指令,而下一个只能作为从站通讯的库指令。
主站作为通讯数据的请求方,而从站是通讯数据的应答方。 modbus协议中ctrl和init的区别
请求方发送数据给从站,从站接收到数据先校验数据的正确性,如果正确,则根据主站通讯数据的内容作相应的数据应答给主站;当主站接收到来自从站的应答数据后,先校验数据的正确性,如果正确,则进行下一个通讯工作内容,如果错误,则重新发送通讯数据的请求,让从站重新发送一次,当然,如果从站接收到的数据出现错误,也可以让主站重新发送一次请求。



回复

使用道具 举报

沙发
 楼主| 发表于 2017-11-14 11:35:43 | 只看该作者
MODBUS通讯是单一主站/多个从站之间的通讯,主站指令和从之指令是通过库文件方式固化的子程序,直接在编程时调用即可。
1、主站指令
  一,主站初始化使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,各个管脚的解释如下:
     各参数意义如下:
a. EN 使能: 必须保证每一扫描周期都被使能(使用 SM0.0)
b. Mode 模式: 为 1 时,使能 Modbus 协议功能;为 0 时恢复为系统 PPI 协议
c. Baud 波特率: 支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
d. Parity 校验: 校验方式选择
0=无校验
1=奇较验
2=偶较验   
e. Port 端口号: 0 = CPU 集成的 RS 485 通讯口 ; 1 = 可选 CM 01 信号板 。  
f. Timeout 超时: 主站等待从站响应的时间,以毫秒为单位,典型的设置值为 1000 毫秒(1 秒),允许设置的范围为 1 - 32767。
   注意: 这个值必须设置足够大以保证从站有时间响应。
g. Done 完成位: 初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作(见例程)
h. Error  初始化错误代码(只有在 Done 位为1时有效):
  0= 无错误
1= 校验选择非法
2= 波特率选择非法
3= 超时无效  
4= 模式选择非法
9= 端口无效
10= 信号板端口 1 缺失或未组态
二. 调用 Modbus RTU 主站读写子程序MBUS_MSG,发送一个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 数据指针: 1. 如果是读指令,读回的数据放到这个数据区中
  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 = 从站存储器奇偶错误
2,从站指令
一,使用SM0.1调用子程序MBUS_INIT进行初始化,参见附图中参数说明
二,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
modbus协议中ctrl和init的区别

回复 支持 反对

使用道具 举报

板凳
发表于 2017-11-14 12:58:24 | 只看该作者
难得的好资料感谢楼主分享

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-8-28 04:19

Powered by © 2011-2022 www.shop-samurai.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表