摘 要:本文就一種DCS與PLC作為上下位機的分布式控制系統,介紹基于Modbus協議的通信網絡在其中的應用,以及該網絡的硬件構成及程序設計。
關鍵詞:Modbus協議 分布式控制系統 通信網絡 串口通訊 可編程控制器
一、引 言
現代工業的迅速發展,不斷促進著自控技術及設備創新的日新月異。當前,DCS、IPC、PLC及智能儀表已廣泛應用到工廠現場生產控制系統當中,并發展到由上述設備相互協同、共同面向整個生產過程的分布式工業自動控制系統。在此系統中,現場通信技術堪稱關鍵。但由于開始沒有統一的通信協議標準,各廠商自控產品通信協議各自為政,通信網絡各成體系,造成不同廠家的自控設備網絡連接困難甚至不能連接,給分布式控制系統的靈活應用造成了不便。一些公司為適應市場,紛紛將各自的協議標準公開化,可無償使用。經過多年發展,一些通信協議如Modicon公司的Modbus通信協議因其兼容性、易用性的優勢,在工業領域得到了廣泛應用,已成為一種通用的工業通信標準。本文就某化纖項目分布式控制系統的設計,介紹基于Modbus協議的通信網絡在其中的應用。
二、系統組成
1、系統結構
本系統構成如圖1,其中略去了現場儀表信號的采集、控制部分。系統上位機采用橫河CS3000型DCS集散控制系統,對整個生產過程進行集中監控;下位機采用Omron的CS1H系列PLC,分布在3個電氣控制室,負責現場電機、OCV閥、流量開關、變頻器等執行、檢測機構的啟停控制、反饋信號采集、故障判斷等操作。
基于通信實時性的考慮,將DCS與3個PLC控制站分為兩個相對獨立的通信網絡:PLC1和PLC2與DCS一端口組成網絡一,PLC3與DCS二端口組成網絡二。由于上下位機均無面向同一協議的通信設備,給設計造成了困難。經考慮,決定采用Modbus通信協議,由其構成本分布式控制系統的通信網絡。
2、通信網絡組成
2.1通信協議
Modbus協議是一種適用于工業控制領域的主從式串口通訊協議,它采用查詢通訊方式進行主從設備的信息傳輸,可尋址1-247個設備地址范圍。協議包括廣播查詢和單獨設備查詢兩種方式,二者區別就是廣播查詢不需要從設備回應信息,主從設備查詢通訊過程見圖二。
Modbus協議有兩種傳輸模式:ASCII模式和RTU模式。同波特率下,RTU模式較ASCII模式能傳輸更多的數據,所以工業網絡大都采用RTU模式。RTU模式下的信息傳輸報文格式如圖三
它沒有起始位和停止位,而是由至少3.5個字符間隔時間作為信息的起始、結束標志。信息幀所有字符位由16進制字符0-9、A-F組成。本設計采用單獨設備查詢的RTU模式通信方式,根據系統構成,將DCS一端口設01H、02H兩個PLC從站地址,二端口設01H一個PLC從站地址,并使用Modbus協議中的讀字存儲區03H和寫字存儲區06H兩個功能碼。
2.2 網絡構成及硬件介紹
網絡采用RS485串行接口,通信媒體由4芯屏蔽電纜連接主從設備,傳輸距離最大達1.5Km,全雙工,串口設定波特率19200,8位數據位、偶校驗、1位停止位。DCS通信部分采用橫河型號為ALR121的通信模塊,并配套橫河提供的Modbus通信軟件包,該通信模塊最大通信數據容量4000字。PLC通信部分則采用Omron的C200H-ASCII 21可編程特殊單元模塊(以下簡稱ASCII模塊),該模塊支持BASIC語言編程,內有200K字節的程序存儲區,配備RS232、RS485通信串口各一個。通過對該模塊的編程,可實現與外圍設備的各種通信。本系統通過ASCII模塊與DCS基于Modbus協議的通信,將DCS的讀、寫指令及數據做相應轉換,并與PLC的CPU單元進行數據存取交換,以實現上下位機控制信息的實時傳輸。如圖四所示。
三、軟件實現
1、 建立地址分配、對應表
DCS人機監控界面(HMI)上面向現場儀表的圖形符號對象的監控,需通過DCS I/O物理地址對現場儀表信號的采集來實現。DCS對現場電氣執行、檢測機構的監控,則是由DCS通信I/O地址與PLC I/O物理地址一一對應完成的。為此,在編程前,需建立一張DCS通信I/O地址與PLC I/O地址的分配、對應表。由于PLC邏輯控制編程需要,不便直接將PLC I/O物理地址與DCS通信I/O地址對應,故采取了間接地址的方式。具體設計采用PLC的數據存儲區DM區作為間接地址區,與DCS通信I/O區建立聯系,再將DM區與PLC I/O區相對應。如將DCS的%WB000101位通信I/O地址與D0000.00位地址對應,D0000.00再對照PLC的I0000.00位物理輸入點,就能將現場電氣執行機構的運行狀態反饋到HMI上。按照這種方法就建立了一張上下位機地址分配、對應表,因篇幅所限,該表略。
2、程序設計
ASCII模塊支持BASIC語言編程,此外,又附加了多條系統及函數指令,如接收、發送緩沖區操作指令、信息傳輸差錯控制CRC、LRC校驗函數指令和與CPU單元數據交換的讀寫指令等。編程使用WINDOWS操作系統上附帶的Hyperterminal(超級終端)軟件,通過此軟件,PC機可與連接在網絡上的其它PC機或串口終端設備進行文本文件的傳輸及顯示。編程時,將PC機串口與ASCII模塊的RS232串口連接,運行該軟件,就能在其界面上對ASCII模塊進行程序編寫、上傳、下載和調試等工作。也可先通過WINDOWS系統的寫字板編寫程序,并保存為文本格式,然后再通過Hyperterminal將程序下載到ASCII模塊。通信程序的主工作流程見圖五。
部分程序代碼如下:
OPTION BASE 0 //定義數組
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" //設定串口參數
A%=LOC(2) //判斷接收緩沖區字符
IF A%=8 THEN
REX$=INPUT$(A%,#2)
……….
ENDIF
GOSUB *ZFCL //對信息進行分解處理
IF ST=1 THEN *JAOY ELSE *BACK //判斷是否本站信息
*JAOY
GOSUB *CRC //CRC循環冗余校驗子程序
IF R=CRC THEN *WORK ELSE *BACK //信息校驗正確判斷
*WORK
IF (FU=3) THEN GOTO *DJS //讀功能碼判斷,調寫操作子程序
IF (FU=6) THEN GOTO *XJS ELSE GOTO *BACK //寫功能碼判斷,調讀操作子程序
*DJS //讀子程序
………
*XJS //寫子程序
………
*CRC //CRC 校驗子程序
……….
*ZFCL //字符處理子程序
………
由于ASCII模塊支持ASCII碼,而RTU則是基于二進制碼的16進制字符通信方式,所以在程序編程中增加了碼制轉換程序。
CH5$=MID$(REX$,5,1) :CH6$=MID$(REX$,6,1) //提取字符段
VOL=ASC(CH5$)×256+ASC(CH6$) //將ASCII碼字符轉換十進制數
VOL$=HEX$(VOL) //將十進制數轉換成十六進制字符
3、程序優化及安全措施
在ASCII模塊與CPU單元數據交換程序部分,采取由ASCII模塊向CPU 單元主動發送讀寫請求信號,CPU單元在收到請求時才執行數據交換程序的方法。這樣,就縮短了PLC的掃描周期,提高了通信實時性。
在信息差錯控制部分,采用了CRC-16循環冗余校驗算法,該算法能使信息的差錯率低于10-14以下。如果信息校驗錯誤,程序將清除緩沖區,等待DCS信息重發。
根據生產需要,可在HMI上將現場按鈕等手控設備設為無效狀態,所有手、自動操作均在DCS上進行。考慮到如通信網絡遭到癱瘓等嚴重故障時,需保證現場電氣設備正常啟停,又增加了通信狀態定時偵測程序,在規定時間(10秒)內網絡上如無信號,PLC自動將現場按鈕等手控設備設為有效,同時DCS故障報警,直到網絡恢復正常為止。
四、結束語
當前分布式控制系統通信網絡的設備、軟件及整體架構,大部分是由專業廠商生產提供的,其總體性能較好。但如前所述,它們也有系統配置可選性小、網絡架構適應面窄、價格較高等缺點。筆者采用Modbus協議這一成熟通信技術,選用PLC的可編程模塊,進行基于Modbus通信協議的自主程序設計,架構起本自控系統的通信網絡。該網絡易擴展、易維護,具有結構簡單、應用靈活、編程方便、造價低廉等特點。這套系統在某化纖生產線一次投運成功,實際運行狀態良好,證明其穩定可靠,能完全滿足系統設計要求。到目前為止,該系統已在多個工程項目上投入使用,全部運行正常,取得了良好的經濟效益。
本文創新點:采用工業領域通用的Modbus通信協議標準,利用可編程的PLC特殊功能模塊,并進行通信程序設計,低成本的解決了本系統的通信架構問題,可為分布式控制系統通信網絡兼容性設計的一個思路。
參考文獻:
1. Modicon. Modbus Protocol Reference Guide. 1996
2. Omron. C200H-ASCII UNITS Operation Manual. 1998
3. Omron. SYSMAC CS1 Series Programmable Controllers Operation Manual. 1999
4. 橫河CS3000 Reference Manual. 2001
5. 其其格 利用VC實現Modbus的兩種檢測方法 《微計算機信息》 2004.1
6. 劉東 循環冗余校驗CRC算法分析及程序實現. 《計算機與信息技術》2002.9