文獻標識碼: A
文章編號: 0258-7998(2011)12-0022-03
隨著我國高速公路隧道里程的日益增長,高速公路隧道的高效,、安全運行面臨著嚴峻的挑戰(zhàn)[1],。快速,、安全,、可靠的高速公路隧道監(jiān)控系統(tǒng),是指揮車輛有序通行,、實時掌控交通流參數(shù)值,、車輛運行環(huán)境指標和現(xiàn)場設備運行狀況、減少和及時處理交通事故的主要保障措施[2],。
在高速公路隧道監(jiān)控系統(tǒng)開發(fā)方面,,國內(nèi)有許多案例采用Windows下通用的軟件開發(fā)平臺(如VC++、VB,、DELPHI)進行開發(fā),。由于高速公路隧道監(jiān)控系統(tǒng)是一個典型的系統(tǒng)集成工程,現(xiàn)場設備的接口形式和數(shù)據(jù)類型多樣,,數(shù)據(jù)量和集成難度大[3],,尤其在使用大量PLC的場合,實現(xiàn)監(jiān)控系統(tǒng)與PLC的通信比較困難,。因此,,使用通用軟件開發(fā)平臺,其開發(fā)難度大,、周期長,、調(diào)試困難。由于所開發(fā)的監(jiān)控系統(tǒng)是非開放的軟件,,后期的維護難度更大,。
而目前廣泛使用的組態(tài)軟件,能夠更好地解決這個問題[4],。組態(tài)軟件作為專業(yè)的工控軟件,,在系統(tǒng)界面設計、數(shù)據(jù)接口,、功能組合等方面的開發(fā)非常方便和穩(wěn)定,,可以很容易地實現(xiàn)和完成監(jiān)控層的各項功能[5]。此外,,由于組態(tài)軟件的開放性,,系統(tǒng)管理人員可以輕松維護系統(tǒng)。因此最近幾年,,組態(tài)軟件開始被系統(tǒng)設計人員應用到高速公路隧道監(jiān)控系統(tǒng)的開發(fā)中,。
由于組態(tài)軟件采用腳本語言,提供給用戶的編程開發(fā)的功能相對較弱,。在缺少I/O驅(qū)動的情況下,,如在使用組態(tài)王的案例中,,還需使用通用開發(fā)平臺編寫通信程序,并為組態(tài)軟件提供OPC服務器功能,;在與情報板這類可變長度數(shù)據(jù),、非實時刷新的設備交換數(shù)據(jù)時,組態(tài)軟件同樣存在困難,。針對以上問題,,本文的設計思路是利用組態(tài)軟件及其腳本語言,實現(xiàn)與所有設備的通信時無需再借用OPC技術開發(fā)通信程序,,以減少數(shù)據(jù)的交換次數(shù),,提高系統(tǒng)的運行效率,同時提高系統(tǒng)的完整性和開放性,。
本文介紹了高速公路隧道監(jiān)控系統(tǒng)的結構及實現(xiàn)方法,,針對現(xiàn)場數(shù)據(jù)采集和執(zhí)行設備的接口形式多樣、數(shù)據(jù)集成難度大等問題,,既有針對PLC使用的穩(wěn)定可靠的I/O驅(qū)動,,也有大量使用API函數(shù)設計的通信程序,并使用腳本語言直接完成實時數(shù)據(jù)與情報板的通信,。通過系統(tǒng)實際調(diào)試運行驗證了該設計方案的可行性,。
1 監(jiān)控系統(tǒng)的構成
某高速公路的一個機電標段中包含多條隧道,每個隧道采用了7~8套OMRON公司CS1D-S系列的PLC,,并配有以太網(wǎng)模塊,。這些PLC負責車道指示器、汽通門,、風機,、照明燈、水泵等開關量的輸入/輸出,,照度,、一氧化碳(CO)、能見度(VI),、風速(TW)等模擬量的輸入,。該機電標段,還包含了雷達車輛檢測儀28臺,,各種規(guī)格的情報信息標志35套,,還有3套能見度檢測儀和3套氣象數(shù)據(jù)檢測儀。所有這些設備分布在大約200 km高速公路沿線收費站和服務區(qū)的附近路段,,并且通過RS-232接口,,先用光纖傳輸?shù)骄徒母鱾€收費站或者服務區(qū)的機房內(nèi),再接入串口服務器,然后進入由光纖構成的以太網(wǎng),。其網(wǎng)絡結構框圖如圖1所示,。
這些現(xiàn)場設備通常不采用標準的MODBUS協(xié)議,無法通過組態(tài)軟件的I/O驅(qū)動獲取數(shù)據(jù),,只能通過用戶編寫通信程序與其進行數(shù)據(jù)交換,。
2 監(jiān)控系統(tǒng)軟件設計
本文采用iFIX2.6的浙大中控OEM版Sview2.6,該軟件的腳本語言是Microsoft VBA6.0,,與VB6.0相比,Sview2.6除了不能編譯成獨立的可執(zhí)行程序外,,其他的編程語法,、語句及調(diào)試方法等功能兩者基本相同。
2.1 實時數(shù)據(jù)庫的建立
運行iFIX軟件,,打開Sview數(shù)據(jù)庫管理器,。從菜單欄選擇“驅(qū)動器”,打開“OMF”,,對驅(qū)動程序進行設置和添加PLC站點,,并為每個站點定義數(shù)據(jù)塊。驅(qū)動程序以數(shù)據(jù)塊的形式與PLC交換數(shù)據(jù),,這是一種高效的通信方式,;同時,在PLC編程時,,對于要組態(tài)的數(shù)據(jù),,盡量集中存放,避免過多的數(shù)據(jù)塊,。在數(shù)據(jù)庫中添加標簽,,要注意“I/O地址”的輸入格式,如圖2所示,。
2.2 建立控制系統(tǒng)主畫面
在iFIX工作臺中,,建立所需要的各個畫面,并鏈接動畫,。如果需要報警,,則在建立實時數(shù)據(jù)庫時,設置好報警條件,,然后在畫面中增加報警控件,;如果需要曲線,則啟動歷史定義程序,,定義好要儲存的歷史數(shù)據(jù),,并在后臺啟動歷史儲存程序,然后在畫面中增加曲線顯示控件[6]。到此,,作為一般性的組態(tài)任務基本完成,。
考慮到通信程序必須和監(jiān)控軟件始終同時運行,而且腳本程序通常是畫面文件的一部分,,因此在畫面設計時,,做成了上(占12%)、下(占88%)兩部分,。其中上部是始終運行,,下部則可以通過上部的切換按鈕,進行畫面切換,。上部畫面稱之為“主菜單”,,并在此畫面的代碼中編寫通信程序,如圖3所示,。
2.3 實時通信的實現(xiàn)
微波車輛檢測器設置為每分鐘自動發(fā)送一幀數(shù)據(jù),;氣象和能見度檢測則先發(fā)送命令,然后讀取數(shù)據(jù),。所有的串口服務器,,在監(jiān)控計算機上映射為虛擬的串口。微軟的MSComm控件是被廣泛應用于串口通信的控件,,但由于MSComm控件只能支持最多16個串口,,故不適合在本系統(tǒng)的環(huán)境中使用。為此,,本系統(tǒng)嘗試使用API函數(shù)實現(xiàn)串口通信,。API函數(shù)的聲明是:可以使用VB的API文本瀏覽器,復制到iFIX項目中,。使用API初始化串口步驟如下:
(1)調(diào)用CreateFile創(chuàng)建句柄,,如果結果大于0,可以進入下一步,,否則中止,。
(2)調(diào)用GetCommState取得設備參數(shù),根據(jù)實際需要修改其中部分參數(shù)(如波特率,、校驗,、數(shù)據(jù)位和停止位等)。
(3)調(diào)用SetCommState設置修改后的設備參數(shù),。
(4)調(diào)用SetCommTimeouts設置超時參數(shù),,其中ReadIntervalTimeout須設置為-1(即為16進制FFFFFFFF)。
(5)調(diào)用SetupComm設置輸入/輸出緩沖區(qū)大小,。
至此,,串口的初始化完成,,然后可以定時接收(ReadFile)和發(fā)送(WriteFile)數(shù)據(jù)了。CloseHandle則用于關閉串口,。串口初始化和能見度,、氣象儀程序流程圖如圖4所示。
能見度和氣象儀共6套,,利用一個500 ms定時器,,輪流進行數(shù)據(jù)收發(fā),數(shù)據(jù)刷新周期為3 s,。采用的通信方式是先接收,,對數(shù)據(jù)長度和頭尾幾個字節(jié)進行校驗,若校驗符合,,則進行數(shù)據(jù)處理,,然后發(fā)送讀命令。能見度接收數(shù)據(jù)長度為22 B,,其中15 B~18 B為單精度浮點數(shù)。數(shù)據(jù)處理采用API函數(shù)CopyMemory,,采用傳遞地址的方式,,把字節(jié)數(shù)組中的內(nèi)容復制到一個單精度變量中(如按照IEEE 754標準進行換算,但計算紛繁復雜),,然后把這個單精度變量的內(nèi)容寫到iFIX實時數(shù)據(jù)庫標簽中(標簽的I/O地址采用SIM驅(qū)動器的地址空間),。
2.4 情報信息標志通信的實現(xiàn)
考慮到情報信息標志為非實時刷新,因此采用Access數(shù)據(jù)庫來保存每塊信息標志有關的內(nèi)容,。當程序打開時,,自動讀取數(shù)據(jù)庫中的所有記錄,并把其中的關鍵信息添加到“選擇對象”ComboBox中,。當用戶在復合框選擇一塊信息標志時,,程序從數(shù)據(jù)庫中讀取該信息標志的有關信息及上次發(fā)送的內(nèi)容,并顯示給用戶,。當用戶成功下載內(nèi)容到信息標志時,,把相關內(nèi)容更新到數(shù)據(jù)庫中。
在VBA中處理漢字的方法是:一個漢字為一個字符,,可以使用MID()函數(shù)截取一個字符,,然后用ASC()函數(shù)取得該字符的值,如果是漢字,,則該值為負數(shù),,否則為正數(shù)。該負值加65 536,,得到該漢字的雙字節(jié)機內(nèi)碼,,整數(shù)除256得到高字節(jié),取模256得到低字節(jié)。
如圖5所示,,畫面右下角的“高級功能”按鈕用于啟動情報信息標志設備廠家專用軟件,。雖然設備廠家軟件功能齊全,但從使用結果來看,,本文開發(fā)的系統(tǒng)響應速度快,,一個請求過程平均耗時在0.1~0.6 s之間(包括數(shù)據(jù)庫的處理時間、通過日志記錄的數(shù)據(jù)計算),,而情報信息標志設備廠家專用軟件正常情況下處理時間需10 s左右,,有時還有錯誤的響應(如網(wǎng)絡不通),但顯示狀態(tài)仍為正常等現(xiàn)象,。
以iFIX為平臺開發(fā)的高速公路及其隧道項目數(shù)據(jù)監(jiān)控系統(tǒng)已投入正常運行,,并取得了比較滿意的效果,系統(tǒng)運行穩(wěn)定可靠,、占用資源小,、維護方便。使用組態(tài)軟件開發(fā)隧道監(jiān)控系統(tǒng),,能夠充分發(fā)揮組態(tài)軟件靈活多樣的組態(tài)功能,;同時使用大量的VBA6.0腳本語言編寫通信程序,解決了組態(tài)軟件數(shù)據(jù)集成難度大的問題,,提高了系統(tǒng)運行效率,,降低了系統(tǒng)的開發(fā)成本。
參考文獻
[1] 王志偉,,楊超.高速公路隧道監(jiān)控系統(tǒng)的現(xiàn)狀與發(fā)展[J]. 現(xiàn)代隧道技術,,2009,46(6):8-16.
[2] 趙忠杰,,陳井偉,,朱斌.基于PLC網(wǎng)絡的公路隧道測控系統(tǒng)實現(xiàn)[J].微計算機信息,2007,,23(1):43-44.
[3] 袁向陽,,鄭宏,孟峰.基于PLC的高速公路隧道監(jiān)控系統(tǒng)及其數(shù)據(jù)集成[J].電氣應用,,2006,,8(4):34-39.
[4] 周曉軍,劉洪亮,,胡康.WinCC及S7-300在電封閉交流傳動測試臺中的應用[J].控制工程,,2010,17(5):655-657.
[5] 鐘路,,戴遠.城市隧道監(jiān)控系統(tǒng)的集成設計[J].武漢理工大學學報,,2010,,32(15):119-122.
[6] 浙大中控.Sview2.6電子手冊[Z].2003.