一、Modbus通信协议
Modbus协议只有一个主站,可以有1~247个从站。此协议支持传统的RS-232、RS-422、RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通信标准。
当控制器设为在Modbus网络上以RTU模式通信,在消息中的每个8Bitbyte按照原值传送,不做处理,如63H,RTU将直接send01100011,这种方式的主要优点是data帧传送之间没有间隔,相同Baud rate下传输data的密度要比ASCII高,传输速度更快。
二、ModbusRTU主站指令
1、Modbus库指令如图1所示,Master为主站0口,Master2为主站1口,Slave为从站,且从站只有0口。

图1
2.西门子Modbus库主站MBUS_CTRL的主站定义参数,如图2所示。

图2
图2中符号说明如下:
EN:一直使能
MODE:允许Modbus通信
Baud:通信速率,Baud rate(主从一致),默认9600
Parity:奇even parity,0无校验,1odd parity,2even parity(主从一致),默认even parity
Port:通信端口,0口自带,1口扩展(CM01信号板)
Timeout:最大等待time单位:ms
Done:Complete位
Error:Error代码(当出现Error可以View软件帮助相对应的Error代码)
西门子Modbus库主站MBUS_MSG的主站信息读写参数,如图3所示

图3
图3中符号说明如下:
En:使能
First:首次扫描用沿触发
Slave:slave address(1-247主站默认2号站,slave address除2以外)
RW:读写Operation,0读,1写
Addr:读写addressfunction code

Count:quantity
Dataptr:data指针 (默认指主站而且是以byte的形式显示)
Done:Complete位
Error:Errorbyte(当出现Error可以View软件帮助相对应的Error代码)
STEP7_Micro/WIN Smart和S7_200SmartCPU支持两种Modbus RTU主站,对于单个Modbus RTU主站,使用指令MBUS_CTRL和MBUS_MSG,在进行0口通信时应用。对于第二个Modbus RTU主站,使用指令MBUS_CTRL2和 MBUS_MSG2,在进行1口通信时应用。如果您在项目中使用两个 Modbus 主站,则要确保 MBUS_CTRL 和 MB_CTRL2 使用不同的端口号。
MBUS_CTRL写在主站里,不管有多少从站,只写一次。MBUS_MSG 写在主站里,比如有一个从站,主从互相控制,需要2条指令,一个读一个写,有多个从站,就写多个读写指令。
三、ModbusRTU从站指令
- 西门子Modbus库从站MBUS_CTRL的从站定义参数,如图4所示。

图4
图4中符号说明如下:
En 使能用沿触发
Mode 允许Modbus通信
Addr slave address(1-147)
Baud 通信速率Baud rate(主从一致)默认9600
Parity 奇even parity0无校验,1odd parity,2even parity(主从一致)默认even parity
Port 通信端口0口自带
Delay 延时
MaxIQ 最大输入输出点数256
MaxAI 最大模拟量输入56
Maxhold 最大缓存区
Holdstart 最大缓存区starting address
Done Complete位
Error Errorbyte
Done Complete位
Error Errorbyte
2.西门子Modbus库从站MBUS_SLAVE的从站应答参数,如图5所示。

图5
四、通信程序编写
ModbusRTU两台PLC互相控制通信示例
ModbusRTU 两台PLC分别用I点相互控制Q点,主站程序如图6所示,从站程序如图7所示。写从站程序需要注意,从站定义需要用沿触发,在system块记得更改从站PLC站address。



图6


图7
ModbusRTU两台PLC星三角通信示例
两台PLC,主站控制从站的星三角启动停止,主站IW0控制从站VW0(I0.0-V0.0启动,I0.1-V0.1停止),主站程序如图1-1图1-2所示,从站程序如图1-3图1-4图1-5图1-6图1-7图1-8所示。

图1-1

图1-2

图1-3

图1-4

图1-5

图1-6

图1-7

图1-8
ModbusRTU三台PLC星三角通信示例
- 三台PLC通信主站、3号从站和4从站,3号和4号之间互相控制两台电机的启停如图2-1所示,控制程序如图2-2图2-3图2-4图2-5图2-6图2-7所示。

图2-1

图2-2

图2-3

图2-4

图2-5

图2-6

图2-7
2.三台PLC通信主站、3号从站和4从站,3号和4号之间互相控制两台电机的启停,3号从站控制程序如图2-8图2-9图2-10所示。

图2-8

图2-9

图2-10
3.三台PLC通信主站、3号从站和4从站,3号和4号之间互相控制两台电机的启停,4号从站控制程序如图2-11图2-12图2-13所示。

图2-11

图2-12

图2-13
值得注意的是,要记得更改三号站和四号站在system块内的address,从站定义用沿来触发。最后记得在程序块中设置库存储区的分配如图2-14。

图2-14
发表回复