用西门子CP341实现Modbus RTU通讯 使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。在相同的网络波特率下采用多个的字符时间,这是最容易实现的。传输的第一个域是设备地址,可以使用的传输字符是十六进制的0...9,A...F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到后,每个设备都进行解码以判断是否发往自己的,在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束.一个新的消息可在此停顿后开始。整个消息帧必须作为一连续的流转输,如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续,这将导致一个错误,因为在最后的CRC域的值不可能是正确的。一典型的消息帧如下所示:
起始位:T1-T2-T3-T4
设备地址:8 Bit
功能代码:8 Bit
数据:N个8 Bit
CRC校验:16 Bit
结束符:T1-T2-T3-T4
3 RS422/485网络工作过程
基于Modbus主从式工作的主站以广播式的向所有从站发送请求数据的数据包.其数据包中包含从站地址、功能代码(即读取的寄存器类型)、要读取 字串2
的寄存器的起始地址、该次要读取的寄存器个数。并等待从站的响应;挂在同一条RS485总线上的所有从站被动的接收到主站的广播包.然后解开这个广播包把这个包中的从站地址与自己的地址对照.如果地址相同.该从站马上把自己相应寄存器中的数据发送到总线上去:主站中的接收程序始终处于待命状态.等待总线上从站发送来的响应数据包,并把响应包中的数据序列化到自己的接收数据块中。从站检测到包中的从站地址与自己的地址不符时,则直接销毁该包.就不做任何响应。到此完成一个发送接收数据的过程。
4 CP341驱动配置
在您的计算机上首先安装STEP7 5.x软件和CP34x模板所带的软件驱动程序.模板驱动程序包括了对CP341进行参数化的窗口(在STEP7的硬件
组态界面下可以打开)、用于串行通讯的FB程序块。当系统上电,CP34x模板初始化完成后,CP34x上的sF灯点亮:
在硬件组态窗口中双击CP341模板,打开CP341模板的属性窗口,选择通讯协议modbus,网络工作方式设置为半双工,请记录下模板的硬件地址
以便在编程序时用到。双击CP341模板属性窗口中的protocol 协议图标进行协议参数设置,这里我们使用默认值:96oo bit,s, 8 data bits, 1 stop bit,even parity。对的硬件组态存盘编译,下载硬件组态.如果此时sF灯亮.请将通讯电缆与另一个通讯伙伴进行连接后.SF灯熄灭,说明硬件组态正确。
5 程序编写
(1)CP341发送模块的设计而发送程序主要是通过调用功能块FB8来实现,FB8是基于上升沿触发工作的.来一个上升沿FB8工作一次向总线上发
送一个请求数据包,所以在程序中一定要设计一个触发代码段,来不断的使REQ:=M50.0循环往复的置“1”置“0”,这样FB8就可以正常运行了。
在设计程序时一定要注意FB8的参数SF:=‘S’及R_TYP:=‘X’的值都是大写否则程序调试不成功。FB8需要一个背景数据块.这一背景数据块一般由系统自动生成.以上程序中为DB3;对于通过CP34 1的Modbus Master驱动通讯的发送模块需要设计发送数据块DB块.用来对主站发送参数进行设置和初始化。
Modbus能够实现的功能代码共有10个.分别针对不同的寄存器读写功能设置.功能代码Initial value:B#16#4的功能是读从站的输出数据寄存器
整数型、状态字或浮点型数据:寄存器的起始地址Initial value:W#16#0是功能代码规定的寄存器的起始地址;读取寄存器的数目Initial value:4的意义是从起始地址开始总共读取4个寄存器。
(2)CP341接收程序的设计
接收程序是调用FB7来实现的,由于CP341可以处理接收程序的细节部分.因此对于设计者来说只需要进行简单的设计就可以实现数据的接收。接
收程序同样也需要设计背景数据块本例中为Db44块和接收数据块本例中为DB5块。
(3)装载设计好的发送接收程序FC 1与FC2。
6 参数化远程从站RTU .
以上介绍的是Modbus主站的应用与程序设计,没有对远程终端RTU从站进行介绍.其实在进行程序调试时必须对从站进行一些参数设置使其参
数与主站要求的一致,包括协议类型、从站地址、寄偶校验、传输超时等,否则通讯很难成功。
上一篇: OPC技术应用简析概括 下一篇: 常用的热继电器种类
苏州瑞帕电子科技有限公司:www.isch.com.cn