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