摘 要:為實(shí)現(xiàn)以PLC為控制中心的架車式稱重調(diào)簧系統(tǒng),提出以PLC作為Modbus通信主站、配合多數(shù)量、多種類的通信從站的網(wǎng)絡(luò)建立的方法,并采用S7-200 PLC、計(jì)算機(jī)和兩種智能傳感器,構(gòu)建一個以PLC為通信主站的Modbus控制網(wǎng)絡(luò),對主站、從站的配置和程序設(shè)計(jì)進(jìn)行了詳細(xì)的說明。實(shí)踐結(jié)果表明,此網(wǎng)絡(luò)系統(tǒng)數(shù)據(jù)傳輸可靠準(zhǔn)確,系統(tǒng)實(shí)時性與穩(wěn)定性均能滿足機(jī)車稱重調(diào)簧系統(tǒng)應(yīng)用的要求。
關(guān)鍵詞:Modbus協(xié)議;PLC;通信主站;控制網(wǎng)絡(luò)
中圖分類號:TP368文獻(xiàn)標(biāo)識碼: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 TrafficTransportation 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 引 言
隨著微電子及控制技術(shù)的不斷發(fā)展,PLC功能不斷完善,已經(jīng)逐漸成為一種智能型、綜合型的控制器,以PLC為控制器構(gòu)成的數(shù)據(jù)采集和控制系統(tǒng),廣泛應(yīng)用到了工業(yè)自動化系統(tǒng)中。同時,由于Modbus協(xié)議具有開放性好、診錯能力強(qiáng)、數(shù)據(jù)傳輸速率高、成本低、易實(shí)現(xiàn)等優(yōu)點(diǎn),被越來越多的設(shè)備廠家的產(chǎn)品所支持。采用這些控制設(shè)備、傳感器、智能儀表,可快速構(gòu)建基于Modbus工業(yè)控制網(wǎng)絡(luò)系統(tǒng),成本低、性能高、簡單實(shí)用。
文獻(xiàn)[1]介紹了一種采用工控機(jī)作為Modbus通信主站,PLC作為通信從站的通訊網(wǎng)絡(luò)的構(gòu)建方法,并應(yīng)用到了實(shí)際的工業(yè)自動化系統(tǒng)中,效果良好。文獻(xiàn)[2]則采用PLC作為Modbus通信的主站來控制變頻器從站,同樣充分利用了PLC控制的諸多優(yōu)點(diǎn)。本文綜合兩種方法,設(shè)計(jì)并實(shí)現(xiàn)了以PLC作為Modbus通信主站、計(jì)算機(jī)和多種傳感器作為通訊從站的控制網(wǎng)絡(luò)。
1 系統(tǒng)構(gòu)成
架車式稱重調(diào)簧系統(tǒng)具有機(jī)車架車、稱重、調(diào)簧三個主要功能,其中,前兩項(xiàng)可由PLC控制中心獨(dú)立完成,在有計(jì)算機(jī)參與控制的情況下,可以實(shí)現(xiàn)調(diào)簧的功能。鑒于Modbus的諸多優(yōu)點(diǎn),本系統(tǒng)采用基于Modbus的通信網(wǎng)絡(luò),網(wǎng)絡(luò)組成硬件主要包括:1臺西門子S7-200 PLC,1臺計(jì)算機(jī),4臺智能位移傳感器,4臺智能壓力傳感器。其中,S7-200 PLC作為Modbus通信主站,主要完成數(shù)據(jù)提取、從站管理及控制輸出等功能;計(jì)算機(jī)作為通信從站,只有在需要時才接入網(wǎng)絡(luò),完成對本網(wǎng)絡(luò)的監(jiān)控、維護(hù)及調(diào)整和設(shè)置參數(shù)的功能;傳感器作為通信從站,完成對信息采集的功能。網(wǎng)絡(luò)采用RS 485總線連接,所采用的傳感器是智能數(shù)字式傳感器,均支持RS 485總線協(xié)議。計(jì)算機(jī)通過擴(kuò)展RS 485通訊卡連接到網(wǎng)絡(luò)中。系統(tǒng)組成框圖如圖1所示。
西門子S7-200 PLC作為Modbus通信主站[3],應(yīng)用了Modbus公開通信協(xié)議中串行通信部分,其CUP采用自由端口進(jìn)行通訊,實(shí)現(xiàn)的是RS 485協(xié)議半雙工通信。S7-200所支持的從站地址范圍為0~247,其中0為廣播地址。本系統(tǒng)考慮的實(shí)際應(yīng)用的要求,只采用了32個從站地址進(jìn)行設(shè)計(jì)。
圖1 通訊網(wǎng)絡(luò)的硬件構(gòu)成
由于從站的類型多樣,為便于管理和編程,可以對各個從站進(jìn)行分類。本系統(tǒng)可以把從站分為三類,其分類和地址編號如下:
第一類:計(jì)算機(jī)通信從站。由于計(jì)算機(jī)從站需要與主站進(jìn)行數(shù)據(jù)交換,所以主站對其既有讀取數(shù)據(jù)請求,也有發(fā)送數(shù)據(jù)請求,其地址號范圍為31~32。
第二類:位移傳感器從站。主站對其只有讀取數(shù)據(jù)請求,其地址號范圍為1~15。
第三類:壓力傳感器從站。主站對其只有讀取數(shù)據(jù)請求,其地址號范圍為16~30。
在應(yīng)用RS 485網(wǎng)絡(luò)時,考慮到本網(wǎng)絡(luò)各站點(diǎn)之間的距離不是很長,連接線在100 m以內(nèi),為提高系統(tǒng)的抗干擾性,在網(wǎng)絡(luò)的最后一臺設(shè)備之后接入一個1 kΩ的終端電阻[2]。
2 S7-200 PLC作為通信主站的配置和程序設(shè)計(jì)
S7-200的編程軟件STEP7-Micro/WIN,帶有西門子開發(fā)的Modbus RTU主站/從站指令,能夠非常方便地實(shí)現(xiàn)Modbus通信主站的配置。該指令庫主要有兩個功能塊:Modbus RTU 主站初始化功能塊和讀寫功能塊,關(guān)于其具體參數(shù)設(shè)計(jì)可參考文獻(xiàn)[3,4]。
作為Modbus通信主站,S7-200需要完成對各個從站,包括傳感器、計(jì)算機(jī)、儀表的讀寫功能。由于從站有多種類型,對不同的站地址的讀寫格式也不同。本文按照從站的通信要求進(jìn)行對其分類,并采用輪詢各從站的方法:即一次對一個地址啟動一條讀取或者寫入命令。
通信主站的程序設(shè)計(jì)內(nèi)容包括:
(1) 變量初始化以及自由通信端口的Modbus主站初始化。這主要是對Modbus RTU主站初始化功能塊進(jìn)行配置。
(2) 搜索并儲存有效的從站地址。在不同的工況下,從站的數(shù)量以及種類都有可能不同,為了保證系統(tǒng)的擴(kuò)展性和兼容性,通信之前必須對各個從站地址的有效性進(jìn)行檢查,保存有效的從站地址號。
(3) 輪流對各從站發(fā)送讀取/寫入數(shù)據(jù)申請。
其中關(guān)鍵的部分是檢查各地址的有效性以及輪詢各從站地址。具體程序流程如圖2所示。
圖2 主站輪詢從站的程序流程圖
3 計(jì)算機(jī)作為Modbus從站的設(shè)置及編程
計(jì)算機(jī)作為Modbus從站,主要完成對各個傳感器以及PLC的設(shè)置、監(jiān)控和數(shù)據(jù)處理等功能。這要求:計(jì)算機(jī)能隨時作為從站接入Modbus系統(tǒng)進(jìn)行通訊;在計(jì)算機(jī)進(jìn)入通信網(wǎng)路以后,必須能與通信主站進(jìn)行數(shù)據(jù)交換,且能接收其他從站返回的數(shù)據(jù)。
考慮到系統(tǒng)中主站的讀取/寫入數(shù)據(jù)申請命令和各個從站的數(shù)據(jù)響應(yīng)的長度、內(nèi)容以及時間間隔不同,計(jì)算機(jī)從站對串口數(shù)據(jù)的操作不能單獨(dú)采用中斷方式或者查詢方式[5]:如果只采用前者,則無法定義數(shù)據(jù)中斷的長度;如果采用后者,則無法及時回復(fù)主站對本從站的數(shù)據(jù)讀取/寫入命令。所以,本系統(tǒng)把兩種方式相結(jié)合起來,采用先中斷后查詢的方法對串口數(shù)據(jù)進(jìn)行操作。
S7-200 Modbus主站通信指令具有如下特點(diǎn):
(1) 可自由設(shè)置從站響應(yīng)超時的時間閾值;
(2) 如果從站數(shù)據(jù)超時,S7-200將重新發(fā)送數(shù)據(jù)申請,共嘗試三次。
根據(jù)S7-200這一特點(diǎn),對串口數(shù)據(jù)可以進(jìn)行如下處理:當(dāng)串口接收到數(shù)據(jù)而發(fā)生中斷時,等待此幀數(shù)據(jù)全部到達(dá),等待時間的設(shè)置可以參照PLC主站的超時閾值設(shè)置。一幀數(shù)據(jù)接收完之后,采用CRC校驗(yàn)來驗(yàn)證數(shù)據(jù)的有效性,然后根據(jù)數(shù)據(jù)內(nèi)容的特點(diǎn),分析數(shù)據(jù)來源和數(shù)據(jù)命令內(nèi)容,并做出相應(yīng)的數(shù)據(jù)處理。其軟件設(shè)計(jì)框圖如圖3所示。
計(jì)算機(jī)從站采用Visual Basic語言編程,部分程序及代碼如下。
串口初始化程序如下:
MSComm1.CommPort=PortOfModbus
MSComm1.Settings=″19200,e,8,1″
MSComm1.InputLen=0
MSComm1.RThreshold=1
MSComm1.InputMode=comInputModeBinary
串口數(shù)據(jù)處理程序如下:
Private Declare Sub Sleep Lib ″kernel32″ (ByVal dwMilliseconds As Long)
′為使用Sleep函數(shù),需在程序中引入系統(tǒng)API函數(shù)
Private Sub MSComm1_OnComm() ′收到一個字節(jié)觸發(fā)一次中斷
Sleep TimeDelay ′延時一段時間,等待此幀數(shù)據(jù)讀完,配合主站的超時時間
ReceiveData.Buffer= MSComm1.Input ′提取串口數(shù)據(jù)
Select case ReceiveData.Buffer(0)′通過判斷從站地址,來判斷主站的通信請求
Case 0′主站的廣播數(shù)據(jù),無從站響應(yīng)數(shù)據(jù)
Call CheckCRC16(ReceiveData.Buffer) ′CRC校驗(yàn)
Case 1 ′對從站1的數(shù)據(jù)讀取/寫入數(shù)據(jù)請求
Call CheckAnswer(ReceiveData.Buffe)
′檢查從站是否有回復(fù),并分離主站讀取/寫入命令和傳感器回應(yīng)命令
Call CheckCRC16(ReceiveData.Request)′對主站申請命令進(jìn)行CRC校驗(yàn)
Call CheckCRC16(ReceiveData.Answer)′對從站響應(yīng)命令進(jìn)行CRC校驗(yàn)
Case 2
……
Case IDofComputer ′PLC對計(jì)算機(jī)的數(shù)據(jù)請求命令
Call CheckCRC16(ReceiveData.Buffer) ′CRC校驗(yàn)
If ReceiveData.Buffer(0)=ReadSym then Call SentData(Read)′判斷為讀取命令,回應(yīng)PLC的請求
If ReceiveData.Buffer(0)=WriteSym then Call SentData(Write)′判斷為寫入命令,回應(yīng)PLC的請求
……
End select
End Sub
圖3 串口數(shù)據(jù)處理程序流程圖
4 傳感器的選擇及配置
傳感器選型時,在考慮傳感器的精度、線性度等性能指針的同時,還需考慮以下幾個方面:傳感器作為Modbus從站,其功能碼能否與PLC作主站的功能碼兼容;傳感器是否兼容RS 485通信協(xié)議。
選用的位移傳感器和壓力傳感器的通信配置參數(shù)如表1所示。
表1 傳感器的參數(shù)配置
參數(shù)名稱參數(shù)值
波特率19 200 b/s
校驗(yàn)位偶校驗(yàn)
數(shù)據(jù)位8位
停止位1位
5 結(jié) 語
設(shè)計(jì)了以PLC為Modbus通信主站的控制系統(tǒng),并在軟硬件上實(shí)現(xiàn)了該系統(tǒng),結(jié)果表明:采用PLC做通信主站,通訊穩(wěn)定可靠;在從站數(shù)目有9個情況下,通訊周期較短,完全能夠滿足控制系統(tǒng)采集數(shù)據(jù)的實(shí)時性要求;采用計(jì)算機(jī)作為通信從站,既能正常獲取各智能傳感器的數(shù)據(jù),又能和PLC進(jìn)行數(shù)據(jù)交換,從而能實(shí)現(xiàn)監(jiān)控和維護(hù)控制系統(tǒng)的功能;采用先掃描從站地址的有效性,然后再輪詢的方法能夠使系統(tǒng)具有良好的擴(kuò)展性能。
參考文獻(xiàn)
[1]車?yán)^勇.Modbus通信協(xié)議PLC主站軟件設(shè)計(jì)[J].自動化技術(shù)與應(yīng)用,2008,27(4):24-26.
[2]王念春.基于Modbus 協(xié)議的PC與下位機(jī)PLC間的通信程序[J].自動化儀表,2001,22(8):44-46.
[3]SIEMENS.SIMATIC S7-200可編程控制器系統(tǒng)手冊.2003.
[4]龔仲華.S7-200/300/400 PLC應(yīng)用技術(shù)[M].北京:人民郵電出版社,2007.
[5]張新華.自動監(jiān)測系統(tǒng)中的PLC控制[J].機(jī)床與液壓,1999(3):48-49,56.
[6]雷汝海,王軍,趙振明.基于S7-300 PLC的制動器閘瓦間隙監(jiān)測裝置的設(shè)計(jì)[J].工礦自動化,2007(4):86-88.
[7]汪曉光,王艷丹,孫曉英.可編程控制器及原理(下冊)[M].北京:機(jī)械工業(yè)出版社,1995.
[8]朱正禮,周以齊.基于VC++的PLC與上位機(jī)的通訊[J].電氣傳動,2002(2):10-14.
[9]殷華文.可編程序控制器及工業(yè)控制網(wǎng)絡(luò)[M].西安:西安地圖出版社,2001.
[10]許毅,熊文龍,雷靜.基于PC與S7-200實(shí)現(xiàn)自由通信協(xié)議的研究[J].武漢理工大學(xué)學(xué)報(bào):交通科學(xué)與工程版,2002,26(4):513-515.