Modbus通讯协议在原油输送系统中的应用

发布时间:2010-7-27 09:28    发布者:lavida
关键词: MODBUS , 通讯协议 , 原油输送
1、 引言

原油输送站控系统是原油输送中不可缺少的环节,其主要是实现原油的汇集与转输,同时要对来油进行加热、加压和含水分析等,其站内主要分为加热炉系统、加压泵系统、罐区系统、流量计系统等。为了实现生产数据的集中管理、保存和打印,就需要将各个系统中的数据进行集中采集和保存,而多个系统都是采用专用的和不同厂家的控制系统,如加热炉系统、流量计系统等。因此,对中心站控系统就必须解决各个系统之间的通讯问题。

作者在对中国石油长庆油田XX管道沿河湾SCADA系统的设计中,就遇到此类问题,即加热炉系统采用的是北京亚控自动化公司的组态王软件进行监控,而中心SCADA系统则采用Siemens公司的S7 400 PLC和Wincc软件进行监控,并且在通讯电缆的设计中采用的是两芯屏蔽电缆,因此就无法采用工业以太网和OPC协议实现互相之间的通讯,最后双方决定采用Modbus RTU通讯协议进行通讯。

2、通讯系统组成

中国石油长庆油田XX管道沿河湾站控系统采用的是Siemens S7 400和ET200M系列PLC,其监控系统原理图如下所示:



为了实现站控计算机可以同加热炉系统通过Modbus RTU协议进行通讯,采集必要的数据,在ET200M子站中配置了Siemens公司S7 300系列PLC中的CP341通讯模块。CP341通讯模块是通过点到点连接,用于高速,强大的串行数据交换,以减轻CPU的负担。该模块提供了三种不同类型的传输接口:

(1)、RS232C(V.24) (2)、20mA(TTY) (3)、Rs422/Rs485(X.27)

同时,该模块内置有ASCII、3964(R)和RK512通讯协议,此外,该模块也可以装载其他的通讯协议,如Modbus Master协议、Modbus Slave协议和Data Highway协议。

在本设计中,CP341作为Modbus RTU Master,组态王作为Modbus RTU Slave,CP341通过单独定购的Modbus RTU Master软件来实现双方的主从通讯,其可以实现的功能代码为:01,02,03,04,05,06,07,08,11,12,15,16,传输速率最高可以达到76.8Kbit/s。CP341与组态王运行的工业控制计算机之间的通讯为Rs485方式,其连接方式如下所示:




3、软件实现方法

要通过CP341通讯模块同组态王之间的通讯,软件的设计也是一个比较重要的环节,对于CP341主要包括Modbus Master的下装和对应的发送、接收模块程序的设计,对于组态王侧则需要安装Modbus Slave的驱动程序。在CP341中下载Modbus Master驱动,可以进入Step7中的Hardware Configuration中选中模块双击,在弹出的窗口中选择Parameter按钮,在出现的Assigning Parameters to Point-To-Point Connections窗口中进行对应的驱动下载。CP341接收、发送程序的设计主要包括DB块的设计和FC功能块的调用。

(1)、CP341发送模块的设计

对于通过CP341的Modbus Master驱动通讯的发送模块需要设计DB块和FC块,其DB块的结构如下:



而发送程序主要是通过调用功能块FB8来实现,其程序可以设计为如下:



(2)、CP341接收程序的设计

由于CP341可以处理接收程序的细节部分,因此对于设计者来说只需要进行简单的设计就可以实现数据的接收。接收程序同样也需要设计Db块和FC程序块,其DB块和FC块的结构可以定义成如下的结构:



(3)、组态王程序设计方法

组态王是作为Modbus Slave端的,其通过安装ModbusRTUServer驱动程序和定义“智能模块――北京亚控――ModRTUServer――串口”通讯设备来实现的。组态王提供2种寄存器,其说明如下:

名字 编号范围 数据类型 含义
B 1 " 30000 BIT 开关寄存器
R 1 " 30000 INT/UINT/LONG/FLOAT 数据寄存器
外部设备通过标准Modbus与组态王驱动进行通讯,使用的功能码对应如下:
寄存器 读功能码 写功能码
B 1,2 5
R 3,4 6,16

由此,仅需要定义对应的变量名称,并且通过周期执行的命令语言,将数据赋给对应的外部通讯设备需要读取的变量中就可以完成通讯功能。组态王是通过不断的监听串口的通讯数据,一旦有外部读取数据命令,组态王就将对应的数据传送到对方。

在调试双方的通讯程序时,需要注意以下几点:第一、在PLC程序中调用发送模块FB8时,其R_TYP参数数值为字符型并且必须为大写字母X,否则通讯不能成功;第二、为了使PLC接收程序比较简单,建议将组态王侧的数据均定义成寄存器(R),而不区分是位还是寄存器;第三、在组态王中定义Modbus Slave地址时,采用1:20的结构,其1代表组态王作为Modbus Slave的从站地址,20代表通讯的时间间隔,单位毫秒。

4、结束语

通过使用CP341点对点通讯模块和组态王ModbusRTUServer驱动程序,解决了不同的应用系统之间通过Modbus标准通讯进行互相通讯的方法,同时也为将不同系统的数据集成到一个系统中提供了可能的实现方法。
本文地址:https://www.eechina.com/thread-17171-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表