基于Modbus在CP341上的应用
   来源:中国科技博览     2021年03月16日 12:49

张一飞

[摘 要]Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网和其它设备之间可以通信)。它已经成为一通用工业标准,有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

[关键词]Modbus 西门子CP341通讯

中图分类号:T841 文献标识码:A 文章编号:1009-914X(2014)22-0001-01

前言

Modbus协议是应用于电子控制器上的一种通用语言。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访其它设备的过程。如回应来自其它设备的请求,以及怎样侦测错误并记录等。它制定了消息域格式和内容的公共格式。MODBUS为单主站网络协议,所以系统中只能够有一个Modbus主站,所有通信都由它发出并且只能够实现主站和从站的数据交换,从站之间不能进行数据交换。

当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。

Modbus特点:

(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。

(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。

(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。在Modbus网络上传输

标准的Modbus口是使用RS-232-C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。

2 西门子PLC CP341部分

2.1 CP341模块

CP341模块是西门子S7-300/400系列PLC中的串行通讯模块。该模块具有1个串行通讯口(RS232C或TTY或RS485/422),RS422/485的通讯最大距离位1200m。

2.2 CP341模块介绍

CP341模块可以同时与多台串行通讯设备进行通讯。如同时连接多个变频器、连接多个智能仪表等。如果采用RS422/485 modbus RTU通讯方式,需要在发送的数据包中包括站号、数据区、读写指令等信息。

2.3 CP341基本概念

基于Modbus主从式工作的主站以广播式的向所有从站发送请求数据的数据包.其数据包中包含从站地址、功能代码 (即读取的寄存器类型)、要读取的寄存器的起始地址、该次要读取的寄存器个数。并等待从站的响应;挂在同一条RS485总线上的所有从站被动的接收到主站的广播包.然后解开这个广播包把这个包中的从站地址与自己的地址对照。如果地址相同。该从站马上把自己相应寄存器中的数据发送到总线上去:主站中的接收程序始终处于待命状态.等待总线上从站发送来的响应数据包,并把响应包中的数据序列化到自己的接收数据块中。从站检测到包中的从站地址与自己的地址不符时,则直接销毁该包.就不做任何响应。到此完成一个发送接收数据的过程。

2.4 CP341系统方案

2.4.1 CP341的MODBUS Slave协议通信

应用CP341进行 MODBUS协议通信时需要有Dongle的支持。在使用之前先将Dongle安装在CP341模块的背面的Dongle插槽中。

2.4.2 组态和配置

1、打开上面创建的项目ptp,用鼠标右键点击项目名称,选择Insert New Object-> SIMATIC 300 Station,更改站的名称为CP341 Modbus-S。

2、双击Hardware进入硬件配置画面,插入RACK、CPU315-2DP、CP341。

3、双击CP341模板,点击Parameter...,配置CP341参数。在Protocol选项中选择MODBUS Slave。

4、双击Protocol下的信封图标,配置MODBUS Slave参数,点击MODBUS-Slave按钮。

设置MODBUS从站地址。从站波特率,停止位,校验位等参数,配置功能代码所表示的参数。

5、FC01,05,15:读取、强制输出位的状态

6、FC02读取输入数据位的状态

7、FC03,06,16组态输出寄存器数据区,对应西门子数据区为DB块。FC04组态输入寄存器数据区,对应西门子数据区同样是DB块。

9、设置写参数的限制值。

10、如果选用的是RS422/485接口的CP341时,还需要设置接口类型,

2.4.3 编写通信程序

1、将FB7,FB8添加到程序Blocks中,方法为双击OB1,打开OB1编程画面,从库Libraries->CP PtP->CP341中调用发送程序块FB8和接收程序块FB7,然后再从OB1中删除。因为MODBUS从站通讯要用到这两个功能块。

2、调用MODBUS从站功能块FB80,位置在Libraries->Modbus->Modbus->FB80。分配背景数据块DB80,将参数LADDR设为硬件组态中的起始逻辑地址256。

3、编写DB1块中的FC03,06,16,编写DB2块中的FC04

2.4.4 设备连接

使用标准的RS232C电缆连接CP341和计算机的串口。

2.4.5 通信测试

1、首先将硬件配置和程序下载到CPU315-2DP中。在计算机上打开MODBUS主站仿真软件Modscan32。

2、点击Modscan32选择计算机和CP341相连的COM口,设好波特率,数据位,停止位,校验方式,

3、其它数据的读取,只需更改访问的数据类型,此处不再介绍。

4、但要说明一下对于浮点数的显示,PLC中浮点数的高16位和低16位与Modscan32显示的相反,即PLC中浮点数的高16位对应Modscan32显示浮点数的低16位,PLC中浮点数的低16位对应Modscan32显示浮点数的高16位,可在程序中做一下处理

设置完成后 开始仿真:

模拟量输入监控 监控个数不能超过实际点数 PIW传入DB2时所表现的状态

3.总结

本文就用于西门子PLC软件通过CP341模块实现Modbus通信协议、及硬件接线、配置、编程和调试等做一小结。

参考文献

[1] 韩兵、于飞.现场总线控制系统应用实例[M].北京:化学工业出版社,2006.

文章 数据 协议