以PLC为通信主站的Modbus控制网络的设计与实现
作者:潘迪夫 习 可
来源:《现代电子技术》2010年第05期
摘 要:为实现以PLC为控制中心的架车式称重调簧系统,提出以PLC作为Modbus通信主站、配合多数量、多种类的通信从站的网络建立的方法,并采用S7-200 PLC、计算机和两种智能传感器,构建一个以PLC为通信主站的Modbus控制网络,对主站、从站的配置和程序设计进行了详细的说明。实践结果表明,此网络系统数据传输可靠准确,系统实时性与稳定性均能满足机车称重调簧系统应用的要求。
关键词:Modbus协议;PLC;通信主站;控制网络 中图分类号:TP368文献标识码:A 文章编号:1004-373X(2010)05-142-03
Design and Implementation of Modbus Control System Based on PLC as Master Station PAN Difu,XI Ke
(School of Traffic&Transportation Engineering,Central South University,Changsha,410075,China)
Abstract:To realize the PLC control system of locomotive body test-rig for weighting and spring adjusting,it puts forward the method of constructing communication,which is composed of PLC
Modbus master station and multiple various Modbus slave stations.At the same time,with one S7-200 PLC,one computer and two kinds of intelligent sensors,it is built that a typical control system taking PLC as Modbus master station,and then illuminated in detail the configuration and software design master station and slavers.The practice indicates that the Modbus communication,where PLC is used as the master station,can transmit data accurately and reliably,its real-time performance and stability reaches the requirement of industrial automation.
Keywords:Modbus protocol;PLC;master station;control system 0 引 言
龙源期刊网 http://www.qikan.com.cn
随着微电子及控制技术的不断发展,PLC功能不断完善,已经逐渐成为一种智能型、综合型的控制器,以PLC为控制器构成的数据采集和控制系统,广泛应用到了工业自动化系统中。同时,由于Modbus协议具有开放性好、诊错能力强、数据传输速率高、成本低、易实现等优点,被越来越多的设备厂家的产品所支持。采用这些控制设备、传感器、智能仪表,可快速构建基于Modbus工业控制网络系统,成本低、性能高、简单实用。
文献[1]介绍了一种采用工控机作为Modbus通信主站,PLC作为通信从站的通讯网络的构建方法,并应用到了实际的工业自动化系统中,效果良好。文献[2]则采用PLC作为Modbus通信的主站来控制变频器从站,同样充分利用了PLC控制的诸多优点。本文综合两种方法,设计并实现了以PLC作为Modbus通信主站、计算机和多种传感器作为通讯从站的控制网络。
1 系统构成
架车式称重调簧系统具有机车架车、称重、调簧
三个主要功能,其中,前两项可由PLC控
制中心独立完成,在有计算机参与控制的情况下,可以实现调簧的功能。鉴于Modbus的诸多优点,本系统采用基于Modbus的通信网络,网络组成硬件主要包括:1台西门子S7-200 PLC,1台计算机,4台智能位移传感器,4台智能压力传感器。其中,S7-200 PLC作为Modbus通信主站,主要完成数据提取、从站管理及控制输出等功能;计算机作为通信从站,只有在需要时才接入网络,完成对本网络的监控、维护及调整和设置参数的功能;传感器作为通信从站,完成对信息采集的功能。网络采用
总线连接,所采用的传感器是智能数字式传感器,均支持RS 485总线协
议。计算机通过扩展RS 485通讯卡连接到网络中。系统组成框图如图1所示。
西门子S7-200 PLC作为Modbus通信主站[3],应用了Modbus公开通信协议中串行通信部分,其CUP采用自由端口进行通讯,实现的是RS 485协议半双工通信。S7-200所支持的从站地址范围为0~247,其中0为广播地址。本系统考虑的实际应用的要求,只采用了32个从站地址进行设计。
图1 通讯网络的硬件构成
由于从站的类型多样,为便于管理和编程,可以对各个从站进行分类。本系统可以把从站分为三类,其分类和地址编号如下:
第一类:计算机通信从站。由于计算机从站需要与主站进行数据交换,所以主站对其既有读取数据请求,也有发送数据请求,其地址号范围为31~32。
龙源期刊网 http://www.qikan.com.cn
第二类:位移传感器从站。主站对其只有读取数据请求,其地址号范围为1~15。 第三类:压力传感器从站。主站对其只有读取数据请求,其地址号范围为16~30。 在应用RS 485网络时,考虑到本网络各站点之间的距离不是很长,连接线在100 m以内,为提高系统的抗干扰性,在网络的最后一台设备之后接入一个1 kΩ的终端电阻[2]。
2 S7-200 PLC作为通信主站的配置和程序设计
S7-200的编程软件STEP7-Micro/WIN,带有西门子开发的Modbus RTU主站/从站指令,能够非常方便地实现Modbus通信主站的配置。该指令库主要有两个功能块:Modbus RTU 主站初始化功能块和读写功能块,关于其具体参数设计可参考文献[3,4]。
作为Modbus通信主站,S7-200需要完成对各个从站,包括传感器、计算机、仪表的读写功能。由于从站有多种类型,对不同的站地址的读写格式也不同。本文按照从站的通信要求进行对其分类,并采用轮询各从站的方法:即一次对一个地址启动一条读取或者写入命令。 通信主站的程序设计内容包括:
(1) 变量初始化以及自由通信端口的Modbus主站初始化。这主要是对Modbus RTU主站初始化功能块进行配置。
(2) 搜索并储存有效的从站地址。在不同的工况下,从站的数量以及种类都有可能不同,为了保证系统的扩展性和兼容性,通信之前必须对各个从站地址的有效性进行检查,保存有效的从站地址号。
(3) 轮流对各从站发送读取/写入数据申请。
其中关键的部分是检查各地址的有效性以及轮询各从站地址。具体程序流程如图2所示。
图2 主站轮询从站的程序流程图
3 计算机作为Modbus从站的设置及编程
龙源期刊网 http://www.qikan.com.cn
计算机作为Modbus从站,主要完成对各个传感器以及PLC的设置、监控和数据处理等功能。这要求:计算机能随时作为从站接入Modbus系统进行通讯;在计算机进入通信网路以后,必须能与通信主站进行数据交换,且能接收其他从站返回的数据。
考虑到系统中主站的读取/写入数据申请命令和各个从站的数据响应的长度、内容以及时间间隔不同,计算机从站对串口数据的操作不能单独采用中断方式或者查询方式[5]:如果只采用前者,则无法定义数据中断的长度;如果采用后者,则无法及时回复主站对本从站的数据读取/写入命令。所以,本系统把两种方式相结合起来,采用先中断后查询的方法对串口数据进行操作。 S7-200 Modbus主站通信指令具有如下特点: (1) 可自由设置从站响应超时的时间阈值;
(2) 如果从站数据超时,S7-200将重新发送数据申请,共尝试三次。
根据S7-200这一特点,对串口数据可以进行如下处理:当串口接收到数据而发生中断时,等待此帧数据全部到达,等待时间的设置可以参照PLC主站的超时阈值设置。一帧数据接收完之后,采用CRC校验来验证数据的有效性,然后根据数据内容的特点,分析数据来源和数据命令内容,并做出相应的数据处理。其软件设计框图如图3所示。
计算机从站采用Visual Basic语言编程,部分程序及代码如下。 串口初始化程序如下:
MSComm1.CommPort=PortOfModbus MSComm1.Settings=″19200,e,8,1″ MSComm1.InputLen=0 MSComm1.RThreshold=1
MSComm1.InputMode=comInputModeBinary 串口数据处理程序如下:
Private Declare Sub Sleep Lib ″kernel32″ (ByVal dwMilliseconds As Long) ′为使用Sleep函数,需在程序中引入系统API函数
Private Sub MSComm1_OnComm() ′收到一个字节触发一次中断
龙源期刊网 http://www.qikan.com.cn
Sleep TimeDelay ′延时一段时间,等待此帧数据读完,配合主站的超时时间 ReceiveData.Buffer= MSComm1.Input ′提取串口数据
Select case ReceiveData.Buffer(0)′通过判断从站地址,来判断主站的通信请求 Case 0′主站的广播数据,无从站响应数据 Call CheckCRC16(ReceiveData.Buffer) ′CRC校验 Case 1 ′对从站1的数据读取/写入数据请求 Call CheckAnswer(ReceiveData.Buffe)
′检查从站是否有回复,并分离主站读取/写入命令和传感器回应命令 Call CheckCRC16(ReceiveData.Request)′对主站申请命令进行CRC校验 Call CheckCRC16(ReceiveData.Answer)′对从站响应命令进行CRC校验 Case 2 ……
Case IDofComputer ′PLC对计算机的数据请求命令 Call CheckCRC16(ReceiveData.Buffer) ′CRC校验
If ReceiveData.Buffer(0)=ReadSym then Call SentData(Read)′判断为读取命令,回应PLC的请求
If ReceiveData.Buffer(0)=WriteSym then Call SentData(Write)′判断为写入命令,回应PLC的请求 …… End select End Sub
图3 串口数据处理程序流程图
龙源期刊网 http://www.qikan.com.cn
4 传感器的选择及配置
传感器选型时,在考虑传感器的精度、线性度等性能指针的同时,还需考虑以下几个方面:传感器作为Modbus从站,其功能码能否与PLC作主站的功能码兼容;传感器是否兼容RS 485通信协议。
选用的位移传感器和压力传感器的通信配置参数如表1所示。 表1 传感器的参数配置 参数名称参数值 波特率19 200 b/s 校验位偶校验 数据位8位 停止位1位 5 结 语
设计了以PLC为Modbus通信主站的控制系统,并在软硬件上实现了该系统,结果表明:采用PLC做通信主站,通讯稳定可靠;在从站数目有9个情况下,通讯周期较短,完全能够满足控制系统采集数据的实时性要求;采用计算机作为通信从站,既能正常获取各智能传感器的数据,又能和PLC进行数据交换,从而能实现监控和维护控制系统的功能;采用先扫描从站地址的有效性,然后再轮询的方法能够使系统具有良好的扩展性能。 参考文献
[1]车继勇.Modbus通信协议PLC主站软件设计[J].自动化技术与应用,2008,27(4):24-26. [2]王念春.基于Modbus 协议的PC与下位机PLC间的通信程序[J].自动化仪表,2001,22(8):44-46.
[3]SIEMENS.SIMATIC S7-200可编程控制器系统手册.2003.
[4]龚仲华.S7-200/300/400 PLC应用技术[M].北京:人民邮电出版社,2007.
龙源期刊网 http://www.qikan.com.cn
[5]张新华.自动监测系统中的PLC控制[J].机床与液压,1999(3):48-49,56.
[6]雷汝海,王军,赵振明.基于S7-300 PLC的制动器闸瓦间隙监测装置的设计[J].工矿自动化,2007(4):86-88.
[7]汪晓光,王艳丹,孙晓英.可编程控制器及原理(下册)[M].北京:机械工业出版社,1995. [8]朱正礼,周以齐.基于VC++的PLC与上位机的通讯[J].电气传动,2002(2):10-14. [9]殷华文.可编程序控制器及工业控制网络[M].西安:西安地图出版社,2001.
[10]许毅,熊文龙,雷静.基于PC与S7-200实现自由通信协议的研究[J].武汉理工大学学报:交通科学与工程版,2002,26(4):513-515.
因篇幅问题不能全部显示,请点此查看更多更全内容