何凌霄,林凡強
(成都理工大學 信息科學與技術(shù)學院,四川 成都610059)
傳統(tǒng)的火災報警系統(tǒng)由于測控能力有限,控制距離較短等缺點,已無法滿足實際發(fā)展的測控要求。為此,提出基于MODBUS協(xié)議的測控網(wǎng)絡,用以太網(wǎng)將各MODBUS網(wǎng)絡連接起來,組建大型測控系統(tǒng),在各處連接相應的可編程邏輯控制器以及檢測系統(tǒng),通過網(wǎng)絡對各點處的環(huán)境狀況進行檢測,控制相應的動作,實現(xiàn)對各種生產(chǎn)中的安全問題進行預警。
本設計在提出組建大型網(wǎng)絡理論的同時,由于實際需要,設計制作了基于MODBUS協(xié)議的多點火災測控系統(tǒng),驗證了建立大型網(wǎng)絡測控系統(tǒng)的可行性與優(yōu)越性。
MODBUS協(xié)議是應用于電子控制器上的一種通用語言。通過此協(xié)議,控制器及相互之間經(jīng)由網(wǎng)絡和其他設備之間可以通信。其通信使用主從式技術(shù),即僅一個設備(主設備)能初始化傳輸(查詢)。其他設備(從設備)根據(jù)主設備查詢提供的數(shù)據(jù)做出相應反應。
MODBUS協(xié)議中,消息的傳輸方式可以選擇ASCII和RTU消息幀格式中的一種進行網(wǎng)絡通信。在協(xié)議的消息幀中可以進行各種校驗,如奇偶校驗、LRC校驗和CRC校驗,網(wǎng)絡中還可以設定超時檢測功能。
系統(tǒng)采用了RTU消息幀模式,消息發(fā)送至少要以3.5個字符時間的停頓間隔開始。傳輸?shù)牡谝粋€域是設備地址。網(wǎng)絡設備不斷偵測網(wǎng)絡總線,包括停頓間隔時間內(nèi)。當?shù)谝粋€域接收到,每個設備都對其進行解碼以判斷是否發(fā)給自己的。在最后一個傳輸字符之后,至少3.5個字符時間的停頓標定了消息的結(jié)束。RTU格式如表1所示。
表1 RTU消息幀格式
計算機與計算機或計算機與終端之間的數(shù)據(jù)傳送可以采用串行通訊和并行通訊兩種方式。由于串行通訊方式具有使用線路少、成本低,特別是在遠程傳輸時,避免了多條線路的特性不一致而被廣泛采用。常用的接口如:RS-232、RS-485。因為RS485標準采用平衡式發(fā)送、差分式接收的數(shù)據(jù)收發(fā)器來驅(qū)動總線,傳輸距離可達千米以上,因此本系統(tǒng)采用該總線建立設備網(wǎng)絡。
由終端(可以是可編程的邏輯控制器、單片機控制器等)、RS-485總線等物理硬件組成,通過MODBUS協(xié)議通信,由主機初始化整個網(wǎng)絡,按地址發(fā)送消息幀,符合地址的終端接收消息幀,并按消息幀消息的要求處理,回復給主機相應的數(shù)據(jù)。
系統(tǒng)具有基于MODBUS協(xié)議的接口處理能力,初步測控功能,MODBUS系統(tǒng)的網(wǎng)絡結(jié)構(gòu)如圖1所示。
圖1 MODBUS系統(tǒng)網(wǎng)絡結(jié)構(gòu)
主機硬件可以采用通用個人計算機或?qū)S锰幚砥?標配9針D形串口,支持串口通信,具有將串口RS232轉(zhuǎn)RS485的接口芯片。
下位機主要是基于單片機的微控制器,其具有可靠性高、編程方便、體積小、功耗低等特點,目前主要的自動控制設備多采用此種形式。采用單片機方案,編寫基于MODBUS協(xié)議的通信接口程序,用于執(zhí)行簡單的控制指令或檢測命令。系統(tǒng)采用C8051[1]系列控制器,該控制器與傳統(tǒng)的MCS-51單片機兼容,但該類控制器采用流水線結(jié)構(gòu),性能方面比傳統(tǒng)的MCS-51有所提高,且其外設資源豐富、系統(tǒng)集成度高。
不同PC機之間通過以太網(wǎng)連接,將MODBUS協(xié)議消息幀封裝成以太網(wǎng)上傳輸?shù)臄?shù)據(jù)包傳輸,并用Microsoft Visual C++6.0編程[2]開發(fā)以太網(wǎng)連接相應的控制接口與界面。
MAX483是適用于RS-422和RS-485通信線路的低功率收發(fā)器,其內(nèi)部集成了一個驅(qū)動器和一個接收器[3-4]。
由C8051F340構(gòu)成下位機,構(gòu)成MODBUS網(wǎng)絡I/O接口模塊[6-8],提供串行通信能力,連接各種外圍控制檢測電路,提供外圍電路主時序及控制信號。由于具體測控裝置的不同,這里選擇了溫度傳感器、火焰探測器、自動或手動開關、聲光報警器、并預留多余的I/O端口,便于擴展。
檢測模塊由于具體環(huán)境和硬件設施的不同而多種多樣,主要包括火焰探測器、溫度傳感器、水流指示器等。因C8051F340單片機內(nèi)置10位A/D轉(zhuǎn)換器和溫度傳感器,故這一模塊可通過輸入輸出口外接傳感器,直接通過編程獲得。
當檢測到有火災可能發(fā)生時,給單片機輸出口一個高電平,使發(fā)光二極管發(fā)光,并使蜂鳴器發(fā)聲,以表示可能有異常情況發(fā)生。
單片機程序設計采用KEIL集成開發(fā)環(huán)境,通過仿真器在C8051F340單片機上調(diào)試運行。
單片機系統(tǒng)啟動后,經(jīng)過初始化,立即開始進行現(xiàn)場的參數(shù)測量,流程如圖2所示。
圖2 單片機測試流程圖
通電后,首先配置I/O口,設置計時器初值、工作方式,設置串口工作方式,開系統(tǒng)中斷等;然后調(diào)用測量函數(shù);再調(diào)用接收判斷函數(shù),判斷是否接收到正確的消息幀;如果判斷接收的消息幀錯誤或消息幀沒接收完全,則直接跳出接收函數(shù),調(diào)用測量函數(shù),進行測量,并不斷循環(huán)測量函數(shù)與接收判斷函數(shù)。
初始化函數(shù)主要是開總中斷;設置定時器0為16位計時模式,檢測信息//幀開始與幀內(nèi)字節(jié);定時器1設為8位自動重裝模式2,用于串口數(shù)據(jù)通信波特率發(fā)生。
串口中斷發(fā)生時,先開始計時定時器,檢測信息間隔機字符間隔,計時0.5個字符周期。然后判斷是接收中斷還是發(fā)送中斷,根據(jù)判斷結(jié)果分別做相應的處理,接收數(shù)據(jù)至接收數(shù)據(jù)緩沖區(qū)還是將發(fā)送緩沖區(qū)的數(shù)據(jù)發(fā)送。根據(jù)MODBUS協(xié)議中RTU傳輸模式,當兩個字符間隔>3.5個字符周期時,認為接收完一個消息幀,開始接收下一個消息幀,當<1.5個字符周期時,則認為這是上一消息幀的字符。接收或發(fā)送的消息幀保存在接收緩沖區(qū)或發(fā)送緩沖區(qū)中,為后續(xù)接收判斷做準備。串口的處理流程圖圖如3所示。
圖3 串口中斷處理流程圖
產(chǎn)生CRC校驗碼過程如下:(1)預置一個16位寄存器為0FFFFH(全1),稱為CRC寄存器;(2)把數(shù)據(jù)幀中的第1個Byte的8位與CRC寄存器中的低字節(jié)進行異或運算,結(jié)果存回CRC寄存器;(3)將CRC寄存器向右移一位,最高位填以0,最低位移出并檢測;(4)如果最低位為0:重復第(3)步;(5)如果最低位為1:則將CRC寄存器與一個預設的固定值(0A001H)進行異或運算;(6)重復第(3)步和第(4)步直到8次移位。這樣則處理完了一個完整的8位。重復第(2)步~第(5)步來處理下一個8位,直到所有的字節(jié)處理結(jié)束,最終CRC寄存器的值即為CRC的值。
上位機軟件采用Microsoft Visual C++6.0設計多點火災監(jiān)控系統(tǒng)界面,它提供完善的可視化開發(fā)環(huán)境,集方便、快捷、靈活高效于一體,界面如圖4所示。
圖4 多點火災監(jiān)控系統(tǒng)界面
目前設計實現(xiàn)了MODBUS的基本功能,實現(xiàn)多點火災的監(jiān)控和預警。但MODBUS網(wǎng)絡連接采用RS-485總線連接,在實際火災中可能會產(chǎn)生火災破壞通信線路,造成通信系統(tǒng)癱瘓,可靠性降低,但可以通過硬件或軟件方法改進而提高。MODBUS協(xié)議本身沒規(guī)定具體的硬件連接方式,它定義了通信雙方能認識使用的消息結(jié)構(gòu),而不管是經(jīng)過何種網(wǎng)絡進行通信的??梢钥紤]采用無線通信的方式,這樣就沒有實際的連接線,可靠性可以得到改進。
系統(tǒng)的主控界面是人工發(fā)送消息給下位機,下位機接收執(zhí)行后,返回消息。使用主從技術(shù),如遇突發(fā)情況,在無人控制時,電腦會自動按一定時間間隔查詢下位機狀況,這樣就不能及時實施控制,且系統(tǒng)資源占用較多??梢钥紤]采用申請—控制機制,即下位機檢測異常時,向主機發(fā)送紅請求,主機通過中斷收到請求后,自動判斷并發(fā)出控制消息給下位機實行控制。這樣可以節(jié)約系統(tǒng)資源和增強實時處理能力,提高檢測控制效率。
系統(tǒng)開發(fā)設計了建立基于MODBUS協(xié)議的自動多點火災測控系統(tǒng),并提出以太網(wǎng)連接,組建大型測控網(wǎng)絡的方案。在實際火災測控應用、設計火災測控網(wǎng)絡、繪制具體電路、進行實際制板測試和編寫通信程序等方面,為以后火災預警測控提供了參考。
[1] 楊金巖,鄭應強.8051單片機數(shù)據(jù)傳輸接口擴展技術(shù)與應用實例[M].北京:人民郵電出版社,2004.
[2] 周曉云.程序設計基礎—可視化及VC++實現(xiàn)[M].北京:高等教育出版社,2004.
[3] 張毅坤,陳善久.單片微型計算機原理及應用[M].西安:西安電子科技大學出版社,1998.
[4] 宋寶華.深入淺出VC++串口編程之基于Win32 API[EB/OL].(2006-02-21)[2012-09-12]http://wen ku.baidu.com.
[5] 鄧元生.基于單片機的MODBUS總線協(xié)議實現(xiàn)技術(shù)研究[D].長沙:中南大學,2009.
[6]陳銘.基于MODBUS協(xié)議的設備和PLC實現(xiàn)通信的研究[J].湖南科技學院學報,2009,30(4):60-62.
[7] 夏勇.Modbus通訊協(xié)議的S7-200可編程控制器[J].自動化與儀器儀表,2009(1):48-49.
[8] 王小鵬,張九強.MODBUS在智能保護裝置上的應用[J].煤礦機械,2011(1):190-192.