MODBUS通讯
基于RS485通讯的基础,简化版
1. 单主站的主从通讯
2. 从站地址0-247
3. MODBUS本身带有指定的通讯地址
00001至0xxxx-开关量输出 10001至1xxxx-开关量输入 30001至3xxxx-模拟量输入 40001至4xxxx-保持寄存器
Xxxx:用户定义
MODBUS支持PLC于PLC 还有PLC与变频器 PLC与伺服通讯等
使用S7-200编写
打开S7-200库
MODBUS MASTER PORT 0 主站通讯库端口0
将上面的库展开
MBUS_CTRL初始化MODBUS主站通讯
MBUS_MSG设置MODBUS控制请求(设置发送和接受)
MODBUS SLAVE PORT 0从站通讯库 (在于PLC与PLC之间才会用从站通讯库,从站通讯库写在从站当中。)
MODBUS_INIT 从站通讯地址设置
MODBUS_slave 从站接受请求
主站初始化MODBUS通讯指令
EN EN使能:必须保证每一扫描周期都被使能(使用SM0.0)
Mode 模式:常为1,使能 Modbus 协议功能;为0 时恢复为系统 PPI 协议
Baud 波特率:设为9600,要与从站波特率对应
Parity 校验:0:无 1:奇 2:偶 是一种校验代码传输正确性的方法,根据被传输的一组二进制数据中的1的个数为奇数还是偶数。
Timeout 超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000毫秒(1秒),
允许设置的范围为1-32767。
注意:这个值必须设置足够大以保证从站有时间响应。
Done 完成位:初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作
Error 初始化错误代码(只有在 Done 位为1时有效):0= 无错误 1= 校验选择非法 2= 波特率选择非法 3= 模式选择非法
2设置通讯的读写
EN使能:同一时刻只能有一个读写功能(即 MBUS_MSG)使能
注意:建议每一个读写功能(即MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行(见程序)。
First读写请求位:每一个新的读写请求必须使用脉冲触发
Slave从站地址:可选择的范围 1-247
RW读写操作:0=读, 1=写
注意:1. 开关量输出和保持寄存器支持读和写功能
2. 开关量输入和模拟量输入只支持读功能
Addr读写从站的数据地址:选择读写的数据类型
00001至0xxxx-开关量输出 10001至1xxxx-开关量输入 30001至3xxxx-模拟量输入 40001至4xxxx-保持寄存器
Count 通讯的数据个数(位或字的个数)
注意:Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令)
DataPtr数据指针:1. 如果是读指令,读回的数据放到这个数据区中
2. 如果是写指令,要写出的数据放到这个数据区中
格式为(&vb0指针格式)
Done读写功能完成位
Error错误代码 只有在 Done 位为1时,错误代码才有效
错误代码:0=无错误
1=响应校验错误
2=未用
3=接收超时(从站无响应)
4=请求参数错误
5=Modbus/自由口未使能
6=Modbus正在忙于其它请求
7=响应错误(响应不是请求的操作)
8=响应CRC校验和错误
101= 从站不支持请求的功能
102= 从站不支持数据地址
103= 从站不支持此种数据类型
104= 从站设备故障
105= 从站接受了信息,但是响应被延迟
106= 从站忙,拒绝了该信息
107= 从站拒绝了信息
108= 从站存储器奇偶错误
常见的错误及其错误代码:
1. 如果多个 MBUS_MSG 指令同时使能会造成6号错误
2. 从站 delay 参数设的时间过长会造成3号错误
3. 从站掉电或不运行,网络故障都会造成3号错误
在从站S7-200PLC中编写
从站初始化请求
初始化Modbus从站协议
Mode: 模式选择,启动/停止MODBUS,1=启动;0=停止
Address: 从站地址,MODBUS从站地址,取值1~247
Baud: 波特率,可选1200,2400,4800,9600,19200,38400,57600,115200
Parity: 奇偶校验,0=无校验;1=奇校验;2=偶校验
Delay: 延时,附加字符间延时,缺省值为0
MaxIQ: 最大I/Q位,参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128
MaxAI: 最大AI字数,参与通信的最大AI通道数,可为16或32
MaxHold: 最大保持寄存器区,参与通信的V存储区字(VW)
HoldStart: 保持寄存器区起始地址,以&VBx指定(间接寻址方式)
Done: 初始化完成标志,成功初始化后置1
Error: 初始化错误代码
在本例子中,设置从站地址为12
Port0 通讯波特率为9600
无校验
可以使用的S7-200最大数字量输入输出点数为128
可以使用的S7-200最大模拟量输入寄存器字数为32
可以使用的V区寄存器地址字数为100, 起始地址为VB1000
智通教育是东莞市专业的PLC编程培训机构,平时会不定期的在网站发布一些PLC电气自动化课程相关的知识点,有兴趣的同学欢迎大家关注本网站!