一、引 言
現(xiàn)代工業(yè)的迅速發(fā)展,不斷促進著自控技術(shù)及設(shè)備創(chuàng)新的日新月異。當(dāng)前,dcs、ipc、plc及智能儀表已廣泛應(yīng)用到工廠現(xiàn)場生產(chǎn)控制系統(tǒng)當(dāng)中,并發(fā)展到由上述設(shè)備相互協(xié)同、共同面向整個生產(chǎn)過程的分布式工業(yè)自動控制系統(tǒng)。在此系統(tǒng)中,現(xiàn)場通信技術(shù)堪稱關(guān)鍵。但由于開始沒有統(tǒng)一的通信協(xié)議標(biāo)準,各廠商自控產(chǎn)品通信協(xié)議各自為政,通信網(wǎng)絡(luò)各成體系,造成不同廠家的自控設(shè)備網(wǎng)絡(luò)連接困難甚至不能連接,給分布式控制系統(tǒng)的靈活應(yīng)用造成了不便。一些公司為適應(yīng)市場,紛紛將各自的協(xié)議標(biāo)準公開化,可無償使用。經(jīng)過多年發(fā)展,一些通信協(xié)議如modicon公司的modbus通信協(xié)議因其兼容性、易用性的優(yōu)勢,在工業(yè)領(lǐng)域得到了廣泛應(yīng)用,已成為一種通用的工業(yè)通信標(biāo)準。本文就某化纖項目分布式控制系統(tǒng)的設(shè)計,介紹基于modbus協(xié)議的通信網(wǎng)絡(luò)在其中的應(yīng)用。
二、系統(tǒng)組成
1、系統(tǒng)結(jié)構(gòu)
本系統(tǒng)構(gòu)成如圖1,其中略去了現(xiàn)場儀表信號的采集、控制部分。系統(tǒng)上位機采用橫河cs3000型dcs集散控制系統(tǒng),對整個生產(chǎn)過程進行集中監(jiān)控;下位機采用omron的cs1h系列plc,分布在3個電氣控制室,負責(zé)現(xiàn)場電機、ocv閥、流量開關(guān)、變頻器等執(zhí)行、檢測機構(gòu)的啟??刂?、反饋信號采集、故障判斷等操作。
基于通信實時性的考慮,將dcs與3個plc控制站分為兩個相對獨立的通信網(wǎng)絡(luò):plc1和plc2與dcs一端口組成網(wǎng)絡(luò)一,plc3與dcs二端口組成網(wǎng)絡(luò)二。由于上下位機均無面向同一協(xié)議的通信設(shè)備,給設(shè)計造成了困難。經(jīng)考慮,決定采用modbus通信協(xié)議,由其構(gòu)成本分布式控制系統(tǒng)的通信網(wǎng)絡(luò)。
2、通信網(wǎng)絡(luò)組成
2.1通信協(xié)議
modbus協(xié)議是一種適用于工業(yè)控制領(lǐng)域的主從式串口通訊協(xié)議,它采用查詢通訊方式進行主從設(shè)備的信息傳輸,可尋址1-247個設(shè)備地址范圍。協(xié)議包括廣播查詢和單獨設(shè)備查詢兩種方式,二者區(qū)別就是廣播查詢不需要從設(shè)備回應(yīng)信息,主從設(shè)備查詢通訊過程見圖二。
modbus協(xié)議有兩種傳輸模式:ascii模式和rtu模式。同波特率下,rtu模式較ascii模式能傳輸更多的數(shù)據(jù),所以工業(yè)網(wǎng)絡(luò)大都采用rtu模式。rtu模式下的信息傳輸報文格式如圖三
它沒有起始位和停止位,而是由至少3.5個字符間隔時間作為信息的起始、結(jié)束標(biāo)志。信息幀所有字符位由16進制字符0-9、a-f組成。本設(shè)計采用單獨設(shè)備查詢的rtu模式通信方式,根據(jù)系統(tǒng)構(gòu)成,將dcs一端口設(shè)01h、02h兩個plc從站地址,二端口設(shè)01h一個plc從站地址,并使用modbus協(xié)議中的讀字存儲區(qū)03h和寫字存儲區(qū)06h兩個功能碼。
2.2 網(wǎng)絡(luò)構(gòu)成及硬件介紹
網(wǎng)絡(luò)采用rs485串行接口,通信媒體由4芯屏蔽電纜連接主從設(shè)備,傳輸距離最大達1.5km,全雙工,串口設(shè)定波特率19200,8位數(shù)據(jù)位、偶校驗、1位停止位。dcs通信部分采用橫河型號為alr121的通信模塊,并配套橫河提供的modbus通信軟件包,該通信模塊最大通信數(shù)據(jù)容量4000字。plc通信部分則采用omron的c200h-ascii 21可編程特殊單元模塊(以下簡稱ascii模塊),該模塊支持basic語言編程,內(nèi)有200k字節(jié)的程序存儲區(qū),配備rs232、rs485通信串口各一個。通過對該模塊的編程,可實現(xiàn)與外圍設(shè)備的各種通信。本系統(tǒng)通過ascii模塊與dcs基于modbus協(xié)議的通信,將dcs的讀、寫指令及數(shù)據(jù)做相應(yīng)轉(zhuǎn)換,并與plc的cpu單元進行數(shù)據(jù)存取交換,以實現(xiàn)上下位機控制信息的實時傳輸。如圖四所示。
三、軟件實現(xiàn)
1、 建立地址分配、對應(yīng)表
dcs人機監(jiān)控界面(hmi)上面向現(xiàn)場儀表的圖形符號對象的監(jiān)控,需通過dcs i/o物理地址對現(xiàn)場儀表信號的采集來實現(xiàn)。dcs對現(xiàn)場電氣執(zhí)行、檢測機構(gòu)的監(jiān)控,則是由dcs通信i/o地址與plc i/o物理地址一一對應(yīng)完成的。為此,在編程前,需建立一張dcs通信i/o地址與plc i/o地址的分配、對應(yīng)表。由于plc邏輯控制編程需要,不便直接將plc i/o物理地址與dcs通信i/o地址對應(yīng),故采取了間接地址的方式。具體設(shè)計采用plc的數(shù)據(jù)存儲區(qū)dm區(qū)作為間接地址區(qū),與dcs通信i/o區(qū)建立聯(lián)系,再將dm區(qū)與plc i/o區(qū)相對應(yīng)。如將dcs的%wb000101位通信i/o地址與d0000.00位地址對應(yīng),d0000.00再對照plc的i0000.00位物理輸入點,就能將現(xiàn)場電氣執(zhí)行機構(gòu)的運行狀態(tài)反饋到hmi上。按照這種方法就建立了一張上下位機地址分配、對應(yīng)表,因篇幅所限,該表略。
2、程序設(shè)計
ascii模塊支持basic語言編程,此外,又附加了多條系統(tǒng)及函數(shù)指令,如接收、發(fā)送緩沖區(qū)操作指令、信息傳輸差錯控制crc、lrc校驗函數(shù)指令和與cpu單元數(shù)據(jù)交換的讀寫指令等。編程使用windows操作系統(tǒng)上附帶的hyperterminal(超級終端)軟件,通過此軟件,pc機可與連接在網(wǎng)絡(luò)上的其它pc機或串口終端設(shè)備進行文本文件的傳輸及顯示。編程時,將pc機串口與ascii模塊的rs232串口連接,運行該軟件,就能在其界面上對ascii模塊進行程序編寫、上傳、下載和調(diào)試等工作。也可先通過windows系統(tǒng)的寫字板編寫程序,并保存為文本格式,然后再通過hyperterminal將程序下載到ascii模塊。通信程序的主工作流程見圖五。
部分程序代碼如下:
option base 0 //定義數(shù)組
dim r(128),fc(128)
r(48)=0:r(49)=1:r(50)=2:r(51)=3:r(52)=4:r(53)=5:r(54)=6:r(55)=7:r(56)=8
r(57)=9:r(65)=&h0a:r(66)=&h0b:r(67)=&h0c:r(68)=&h0d:r(69)=&h0e:r(70)=&h0f
r(97)=&h0a:r(98)=&h0b:r(99)=&h0c:r(100)=&h0d:r(101)=&h0e:r(102)=&h0f
open #2,comu:19200,8,e,1 //設(shè)定串口參數(shù)
a%=loc(2) //判斷接收緩沖區(qū)字符
if a%=8 then
rex$=input$(a%,#2)
……….
endif
gosub *zfcl //對信息進行分解處理
if st=1 then *jaoy else *back //判斷是否本站信息
*jaoy
gosub *crc //crc循環(huán)冗余校驗子程序
if r=crc then *work else *back //信息校驗正確判斷
*work
if (fu=3) then goto *djs //讀功能碼判斷,調(diào)寫操作子程序
if (fu=6) then goto *xjs else goto *back //寫功能碼判斷,調(diào)讀操作子程序
*djs //讀子程序
………
*xjs //寫子程序
………
*crc //crc 校驗子程序
……….
*zfcl //字符處理子程序
………
由于ascii模塊支持ascii碼,而rtu則是基于二進制碼的16進制字符通信方式,所以在程序編程中增加了碼制轉(zhuǎn)換程序。
ch5$=mid$(rex$,5,1) :ch6$=mid$(rex$,6,1) //提取字符段
vol=asc(ch5$)×256+asc(ch6$) //將ascii碼字符轉(zhuǎn)換十進制數(shù)
vol$=hex$(vol) //將十進制數(shù)轉(zhuǎn)換成十六進制字符
3、程序優(yōu)化及安全措施
在ascii模塊與cpu單元數(shù)據(jù)交換程序部分,采取由ascii模塊向cpu 單元主動發(fā)送讀寫請求信號,cpu單元在收到請求時才執(zhí)行數(shù)據(jù)交換程序的方法。這樣,就縮短了plc的掃描周期,提高了通信實時性。
在信息差錯控制部分,采用了crc-16循環(huán)冗余校驗算法,該算法能使信息的差錯率低于10-14以下。如果信息校驗錯誤,程序?qū)⑶宄彌_區(qū),等待dcs信息重發(fā)。
根據(jù)生產(chǎn)需要,可在hmi上將現(xiàn)場按鈕等手控設(shè)備設(shè)為無效狀態(tài),所有手、自動操作均在dcs上進行??紤]到如通信網(wǎng)絡(luò)遭到癱瘓等嚴重故障時,需保證現(xiàn)場電氣設(shè)備正常啟停,又增加了通信狀態(tài)定時偵測程序,在規(guī)定時間(10秒)內(nèi)網(wǎng)絡(luò)上如無信號,plc自動將現(xiàn)場按鈕等手控設(shè)備設(shè)為有效,同時dcs故障報警,直到網(wǎng)絡(luò)恢復(fù)正常為止。
四、結(jié)束語
當(dāng)前分布式控制系統(tǒng)通信網(wǎng)絡(luò)的設(shè)備、軟件及整體架構(gòu),大部分是由專業(yè)廠商生產(chǎn)提供的,其總體性能較好。但如前所述,它們也有系統(tǒng)配置可選性小、網(wǎng)絡(luò)架構(gòu)適應(yīng)面窄、價格較高等缺點。筆者采用modbus協(xié)議這一成熟通信技術(shù),選用plc的可編程模塊,進行基于modbus通信協(xié)議的自主程序設(shè)計,架構(gòu)起本自控系統(tǒng)的通信網(wǎng)絡(luò)。該網(wǎng)絡(luò)易擴展、易維護,具有結(jié)構(gòu)簡單、應(yīng)用靈活、編程方便、造價低廉等特點。這套系統(tǒng)在某化纖生產(chǎn)線一次投運成功,實際運行狀態(tài)良好,證明其穩(wěn)定可靠,能完全滿足系統(tǒng)設(shè)計要求。到目前為止,該系統(tǒng)已在多個工程項目上投入使用,全部運行正常,取得了良好的經(jīng)濟效益。
本文創(chuàng)新點:采用工業(yè)領(lǐng)域通用的modbus通信協(xié)議標(biāo)準,利用可編程的plc特殊功能模塊,并進行通信程序設(shè)計,低成本的解決了本系統(tǒng)的通信架構(gòu)問題,可為分布式控制系統(tǒng)通信網(wǎng)絡(luò)兼容性設(shè)計的一個思路。