馮興林
(云南省交通科學研究所,云南 昆明 650011)
在高速公路監(jiān)控中,數(shù)據(jù)采集分為兩種方式,即:自動采集方式和非自動事件檢測方式。自動采集方式是在后臺自動進行的數(shù)據(jù)采集,不需要人工干預,采集過程對于監(jiān)控人員來說是透明的。非自動事件檢測方式是指監(jiān)控人員通過道路監(jiān)視或緊急電話等確認交通事件,或交利用人工觀測的方式獲得氣象情況,并在前臺人機交互界面輸入交通事件信息和氣象信息,存入到數(shù)據(jù)庫業(yè)中去。因為非自動事件檢測方式較為簡單,本文就不再詳述,下面將詳細介紹數(shù)據(jù)自動采集方式。數(shù)據(jù)自動采集,一般主要涉及的設備有:外場設備、通信設備、串口設備和通信計算機。在一般高速公路監(jiān)控系統(tǒng)中,外場設備主要有車輛檢測器、氣象檢測器、能見度檢測器、可變信息標志 (包括小型可變信息標志)、可變限速標志等;通信設備一般采用MODEM(調(diào)制解調(diào)器)和其它數(shù)據(jù)傳輸設備;串口設備一般采用多串口卡。
高速公路交通流參數(shù)實時數(shù)據(jù)的采集主要是通過車輛檢測器來實現(xiàn)的。車輛檢測器的環(huán)行線圈埋設在道路表面下,并與車輛檢測器控制器相連;當車輛通過時,通過線圈電磁場的變化來對車輛進行檢測;來自傳感器的信號由設置在路旁的微處理器進行計算,得出各個車道的平均車速、最高車速、最低車速、車流量、車道占有率和車頭時距等。
氣象檢測器由多種傳感器(溫度、濕度、風向、風速、雨量、能見度、路面狀況)、數(shù)據(jù)采集器和控制器等組成,各種傳感器由敏感元件和轉換電路組成。數(shù)據(jù)采集器是一種智能性采集器,它采集各種傳感器的電信號。氣象檢測器控制器進行數(shù)據(jù)的預處理。能見度檢測器與氣象檢測器數(shù)據(jù)采集過程相同,但它只能檢測能見度。
可變信息標志是高速公路監(jiān)控系統(tǒng)向過往車輛發(fā)布交通信息、通告的主要設備。可變信息標志分為大型可變信息標志和小型可變信息標志,其中大型可變信息標志模組數(shù)一般為10或12,安裝在高速公路上方的龍門架上,可顯示圖形和文字;小型信息標志體積較小,安裝在路旁,可顯示1個圖形或4個漢字??勺冃畔酥镜目刂破鞑杉斍帮@示信息和故障信息。
可變限速標志安裝在高速公路的路旁,當天氣惡劣、發(fā)生交通事故或其它異常情況時,控制室及時發(fā)布限速標志的顯示內(nèi)容,限制車速,確保高速公路行車安全和交通流暢;同時,可變限速標志的控制器可反饋顯示內(nèi)容及故障信息。
上述外場設備采集到自身檢測出的數(shù)據(jù)后,控制器先進行處理,然后通過控制器上的RS232、485、422等接口,經(jīng)通信系統(tǒng)將數(shù)據(jù)上傳至監(jiān)控室的通信計算機。
數(shù)據(jù)傳輸和采集設備一般主要包括MODEM、子速率板和串口設備等。
在高速公路監(jiān)控中一般應采用專線MODEM。MODEM主要是用以延伸計算機數(shù)字信號傳輸?shù)木嚯x。
MOEDM將計算機送來的數(shù)字信號調(diào)制成載波信號(模擬信號),調(diào)制后的載波信號通過通訊信道送到控制室,由上位MODEM將接收到的載波信號解調(diào)成數(shù)字信號,最后送給通信計算機處理。
若外場設備和通信計算機之間的距離較小,外場設備和通信計算機之間直接用一對MODEM就可以 實現(xiàn)數(shù)據(jù)傳輸;若距離超出了MODEM的最大傳輸距離,這時必須添加其它數(shù)據(jù)傳輸設備,例如子速率板。子速率板也是成對使用的,上位端一般在監(jiān)控室附近的通信機房,下位端在通信站。外場設備一般位于某個立交(收費站)附近,距離立交一般在幾公里以內(nèi),可在立交附近可設立通信站。一對子速率板可提供多個數(shù)據(jù)傳輸通道,一般采用異步傳輸模式。串口設備一般采用多串口卡。多串口卡技術較為成熟,且多串口卡成本較低,便于維護。多串口卡安 裝在通信計算機PCI插槽里,外接串口盒。每塊多串口卡一般最多支持32個串口或64個串口。
軟件功能及實現(xiàn)
3.1 數(shù)據(jù)采集軟件的主要功能
數(shù)據(jù)采集軟件實現(xiàn)的主要功能有:外場設備數(shù)據(jù)輪詢、控制命令的執(zhí)行、更改輪詢周期、進程的開啟關閉、通信配置等。數(shù)據(jù)采集軟件運行在通信計算機上。
外場設備數(shù)據(jù)輪詢模塊主要對外場設備進行數(shù)據(jù)采集。所謂輪詢是指依次通過串行口與外場設備通信,取得外場設備采集的數(shù)據(jù)的過程。輪詢周期是指相鄰兩次輪詢開始時刻的時間間隔。數(shù)據(jù)輪詢模塊以輪詢周期為時間間隔進行外場設備數(shù)據(jù)的采集,取得外場設備的故障信息、當前信息和校時信息,并且存人數(shù)據(jù)庫中。
控制命令的執(zhí)行模塊在一個通信端口監(jiān)測著多媒體計算機發(fā)送過來的控制命令,若接收到控制命令,數(shù)據(jù)驗證合格后,向相關設備發(fā)送控制命令,主要是可變信息標志、可變限速標志的開啟、關閉、編輯、調(diào)光等,以及所有外場設備的故障檢測,并將處理結果返回給發(fā)送方。
更改輪詢周期模塊設置套接字,監(jiān)聽下發(fā)的系統(tǒng)參數(shù)。如收到更改輪詢周期的有關數(shù)據(jù),則對輪詢周期進行相應的處理,并將處理結果返回給發(fā)送方。
進程的開啟關閉。采用Windows NT的多進程服務機制,將輪詢模塊作為Windows NT的服務進行啟動和運行。服務程序在系統(tǒng)安裝時向windows NT服務管理器注冊,所有服務進程均采用手工啟動的方式。監(jiān)控人員可通過人機交互界面發(fā)出開啟與關閉服務進程命令來實現(xiàn),也可使用windowsNT服務管理器來控制進程的開啟與關閉。
通信配置模塊提供一個人機交互界面,通過該界面可完成對數(shù)據(jù)采集系統(tǒng)的通信配置,配置內(nèi)容有:串口行、波特率、數(shù)據(jù)位、停止位、奇偶校驗、外場設備代碼等。
3.2 軟件實現(xiàn)
數(shù)據(jù)采集軟件在設計和開發(fā)中,除考慮滿足業(yè)務需求外,著重考慮穩(wěn)定性和高效性。在系統(tǒng)分析與設計方法上,采用面向對象的分析與設計方法,這樣降低了系統(tǒng)結構的復雜度,提高了代碼的可重用性和可維護性。通信計算機采取的操作系統(tǒng)為廣泛使用的Windows NT操作系統(tǒng),數(shù)據(jù)庫采用大型關系數(shù)據(jù)庫,網(wǎng)絡通信協(xié)議采用TCP/IP協(xié)議。
在數(shù)據(jù)采集系統(tǒng)中,外場設備數(shù)據(jù)輪詢模塊是最重要、也是開發(fā)難度最大的模塊,因此下面將主要介紹該模塊的軟件實現(xiàn),以及數(shù)據(jù)采集系統(tǒng)中的關鍵技術、開發(fā)工具的選擇。
外場設備數(shù)據(jù)輪詢模塊的實現(xiàn)。外場設備數(shù)據(jù)輪詢模塊首先初始化輪詢對象列表,用于保存關于輪詢對象(外場設備)信息的表;創(chuàng)建定時器,并從數(shù)據(jù)庫中取得輪詢周期賦予定時器;等待時間為輪詢周期時,定時器啟動,通信計算機向外場設備依次發(fā)送數(shù)據(jù)上傳指令;發(fā)出的指令主要有讀取故障信息、讀取當前信息和更改設備時間等,其中讀取故障信息和讀取當前主交通數(shù)據(jù)命令是在每次輪詢都要進行,更改設備時間只在零點進行。發(fā)出讀取數(shù)據(jù)指令后,按照設置的等待時間進行等待;接收到數(shù)據(jù)后,軟件進行數(shù)據(jù)解包,通過數(shù)據(jù)合法性校驗的數(shù)據(jù)進入數(shù)據(jù)庫,若未通過合法性校驗,則給出提示信息,并記錄到日志中。在輪詢結束時,發(fā)送輪詢結束事件,以便監(jiān)控系統(tǒng)處理其它業(yè)務。
軟件實現(xiàn)中的關鍵技術。數(shù)據(jù)采集軟件主要采用了如下技術和策略:
1)Win32串口通信技術
Win32下串口通信與16位串口通信有很大的區(qū)別。在Win32下,可以使用兩種編程方式實現(xiàn)串口通信,其一是調(diào)用Windows的API函數(shù),其二是使用串口通信類或ActiveX控件。在本文的數(shù)據(jù)采集中采取調(diào)用Windows的API函數(shù)方式。使用API函數(shù)調(diào)用,需要清楚地掌握串口通信的機制,熟悉各種配置,對軟件開發(fā)人員的開發(fā)能力要求較高,但可以自由靈活地實現(xiàn)串口通信。
2)Socket網(wǎng)絡編程技術
在更改論詢周期和控制命令執(zhí)行模塊中,采用Socket網(wǎng)絡編程技術,分別在不同端口監(jiān)聽數(shù)據(jù),一旦接收到數(shù)據(jù)就對數(shù)據(jù)進行及時處理。在輪詢結束時,也利用Socket網(wǎng)絡編程,發(fā)送輪詢結束信息,從而讓服務器及時進行數(shù)據(jù)發(fā)送和自動控制的執(zhí)行。Socket網(wǎng)絡編程技術保證了在不同計算機上運行的多個進程之間的相互通信,從而及時進行相業(yè)務的處理,使整個監(jiān)控系統(tǒng)成為有機的一個整體。
3)注冊表技術
注冊表是為Windows NT等所有32位硬件驅動和32位應用程序設計的數(shù)據(jù)文件。運行一個應用程序時,可以從注冊表中獲得配置信息。在注冊表中設置通信配置信息具有讀取速度快、配置靈活等優(yōu)點。因此,數(shù)據(jù)采集系統(tǒng)通過通信配置界面,將每個串口的配置信息記錄在注冊表的相應位置,包括設備代碼、設備種類、波特率、校驗位、數(shù)據(jù)位、停止位、等待時間等。注冊表技術的應用,提高了程序的運行效率。
4)多線程機制與線程同步
在Win32操作系統(tǒng)中,每個進程可以同時執(zhí)行多個線程,進程中的線程是并行執(zhí)行的,每個線程占
用CPU的時間由系統(tǒng)劃分,系統(tǒng)不停的在各個線程之間切換。由于系統(tǒng)為每個線程劃分的時間片很小(20毫秒左右),所以看上去好象是多個線程在同時運行。數(shù)據(jù)采集采用多線程機制,將實時數(shù)據(jù)輪詢、更改輪詢周期、控制命令的執(zhí)行等幾個線程同時執(zhí)行,只不過是更改輪詢周期、控制命令的執(zhí)行在大部分時間里是在相應端口等待數(shù)據(jù)的到來。
線程同步的目的是避免兩個線程同時操作同一個共享資源。在數(shù)據(jù)采集中有很多地方需要線程同步,例如對串口操作部分、錯誤提示信息向操作界面的輸出等。數(shù)據(jù)采集系統(tǒng)中使用的線程同步方法包括利用線程阻塞其自身執(zhí)行的等待函數(shù)、沖突臨界區(qū)、互斥量等。多線程機制與線程同步的運用,節(jié)省了系統(tǒng)資源,提高了數(shù)據(jù)采集的效率,同時保證了各種操作不會相互沖突。
5)計時器的使用
可等待的計時器是在特定時間或固定的時間間隔使自己有信號的內(nèi)核對象。外場設備數(shù)據(jù)輪詢程序創(chuàng)建可等待的計時器,對采樣周期采用定時器進行精確定時。每次論詢不僅需要等到定時器信號到來,同時需要上次輪詢結束信號的到來,這樣保證了相鄰兩次輪詢不會出現(xiàn)沖突,并且使輪詢時間控制得較為準確。
6)統(tǒng)一的接口協(xié)議
可變信息標志、可變限速標志、車輛檢測器等外場設備可由多個供應商提供。在實施過程中,要求這些供應商的設備都執(zhí)行統(tǒng)一的接口協(xié)議,這樣系統(tǒng)就具有與設備無關性,系統(tǒng)的擴展性較強。
7)日志管理
日志包括操作日志和異常信息日志。各種操作都記錄在日志中,便于日后明確責任。在數(shù)據(jù)采集過程中,可能有多種異常情況出現(xiàn),例如設備未返回信息、返回的信息格式不正確或不完整、數(shù)據(jù)庫無法連接等。在出現(xiàn)異常情況下,系統(tǒng)自動將異常信息記錄到相應日志文件中,以備日后查詢。
在軟件開發(fā)中,選擇一種合適的編程語言,可以大大加快工作效率,并且對軟件開發(fā)的難易程度也有很大的影響。數(shù)據(jù)采集系統(tǒng)過去一般是在DOS操作系統(tǒng)下應用匯編語言開發(fā)的。Windows操作系統(tǒng)的普及應用,尤其是可視化開發(fā)軟件Visual C++的出現(xiàn),為軟件開發(fā)提供了強大的圖形界面功能,使得開發(fā)出來的應用程序具有良好的人機交互功能,并且程序運行速度快、效率高。因此,在進行高速公路監(jiān)控系統(tǒng)時,可采用Visual C++來開發(fā)遠程數(shù)據(jù)采集軟件。
本文主要論述了高速公路監(jiān)控系統(tǒng)中數(shù)據(jù)采集的方式、遠程數(shù)據(jù)采集軟件的功能及實現(xiàn)、應用效果等。應用實踐表明:本文論述的遠程數(shù)據(jù)采集系統(tǒng)是可行的、有效的,在高速公路監(jiān)控領域具有較高的推廣價值。