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