近年來(lái),隨著橋梁安全事故的不斷增多,橋梁健康監(jiān)測(cè)技術(shù)逐漸成為學(xué)術(shù)界、工程界的一個(gè)研究熱點(diǎn),與此同時(shí),也開(kāi)發(fā)出了許多用于橋梁健康監(jiān)測(cè)的系統(tǒng)軟件。目前橋梁健康監(jiān)測(cè)系統(tǒng)軟件開(kāi)發(fā)主要有兩種方式,一種是利用高級(jí)語(yǔ)言編程工具,主要有VB,VC,Delphi;另一種是利用專業(yè)化的圖形化編程語(yǔ)言Lab-VIEW。利用高級(jí)語(yǔ)言編程,不受開(kāi)發(fā)工具的限制,可以根據(jù)開(kāi)發(fā)者自身的設(shè)計(jì)開(kāi)發(fā)出比較友好美觀的界面程序,但是對(duì)軟件人員的要求較高;利用LabVIEW進(jìn)行二次開(kāi)發(fā),雖然能夠在短時(shí)間內(nèi)開(kāi)發(fā)出比較實(shí)用的軟件,但是軟件開(kāi)發(fā)容易受限于開(kāi)發(fā)工具。這兩種開(kāi)發(fā)方式各有利弊,應(yīng)根據(jù)實(shí)際情況選擇使用。本文軟件編程采用的是面向?qū)ο蟮目梢暬幊陶Z(yǔ)言VC++6.0,充分利用VC++自帶的MFC類庫(kù),開(kāi)發(fā)出了界面友好美觀的橋梁健康監(jiān)測(cè)系統(tǒng)軟件。
1、基于以太網(wǎng)的橋梁健康監(jiān)測(cè)系統(tǒng)概述
橋梁健康監(jiān)測(cè)技術(shù)是在橋梁體的關(guān)鍵部位安裝一些傳感器件,實(shí)時(shí)在線監(jiān)測(cè)這些監(jiān)測(cè)點(diǎn)所采集的結(jié)構(gòu)參數(shù)在橋梁運(yùn)營(yíng)過(guò)程中的變化,通過(guò)對(duì)這些結(jié)構(gòu)參數(shù)的分析和處理,綜合評(píng)定橋梁的安全服役狀況。因此,橋梁健康監(jiān)測(cè)系統(tǒng)基本應(yīng)該包含以下功能:
(1)各種傳感器信號(hào)的采集和處理;
(2)將采集到的數(shù)據(jù)變送至上位機(jī)控制單元;
(3)上位機(jī)實(shí)時(shí)信號(hào)的監(jiān)控、分析和處理;
(4)歷史數(shù)據(jù)的保存和查閱。
隨著通信技術(shù)的發(fā)展,網(wǎng)絡(luò)技術(shù)也正逐步應(yīng)用在國(guó)內(nèi)外許多大型橋梁監(jiān)測(cè)系統(tǒng)中。將監(jiān)測(cè)儀通過(guò)以太網(wǎng)連接到中央控制機(jī),可以實(shí)現(xiàn)采集數(shù)據(jù)的遠(yuǎn)程傳輸和共享,從而在監(jiān)控中心就可以對(duì)橋梁各項(xiàng)結(jié)構(gòu)參數(shù)的實(shí)時(shí)在線監(jiān)測(cè)。
基于以太網(wǎng)的橋梁健康監(jiān)測(cè)系統(tǒng)的框架結(jié)構(gòu)如圖1所示。其中,監(jiān)測(cè)儀主要完成數(shù)據(jù)的采集和變送,由于橋梁監(jiān)測(cè)系統(tǒng)采集和處理的數(shù)據(jù)量非常大,實(shí)時(shí)性要求非常高,以單片機(jī)實(shí)現(xiàn)的嵌入式系統(tǒng)難以滿足要求,本次設(shè)計(jì)的監(jiān)測(cè)儀主板的設(shè)計(jì)充分利用了DSP的強(qiáng)大數(shù)據(jù)處理能力和FPGA的時(shí)序邏輯功能,因此,可以滿足大數(shù)據(jù)量、實(shí)時(shí)監(jiān)測(cè)的系統(tǒng)需求。
中央控制機(jī)實(shí)時(shí)顯示當(dāng)前監(jiān)測(cè)的各項(xiàng)性能指標(biāo),同時(shí)能夠自行分析橋梁是否處在安全服役狀態(tài),當(dāng)出現(xiàn)突發(fā)情況下橋梁的損傷、安全性能下降的情況下能提示安全警報(bào),避免發(fā)生重大的惡習(xí)安全事故。
2、基于以太網(wǎng)的橋梁健康監(jiān)測(cè)系統(tǒng)的軟件設(shè)計(jì)
2.1 軟件設(shè)計(jì)需求分析
現(xiàn)場(chǎng)監(jiān)測(cè)儀將采集到的信號(hào)通過(guò)以太網(wǎng)傳送到上位機(jī)PC,在PC機(jī)上實(shí)時(shí)顯示、保存、分析采集數(shù)據(jù)信息,既能夠充分利用了DSP在現(xiàn)場(chǎng)高速采集處理數(shù)據(jù)的能力,又能夠充分利用了上位PC機(jī)在繪制圖像和保存數(shù)據(jù)方面的優(yōu)勢(shì)。因此,一個(gè)完整的橋梁健康監(jiān)測(cè)系統(tǒng)在中央監(jiān)控部分應(yīng)該完成以下幾個(gè)功能:
(1)每臺(tái)監(jiān)測(cè)儀IP地址、MAC地址、Port端口等網(wǎng)絡(luò)地址信息、運(yùn)行模式以及系統(tǒng)采樣時(shí)間的設(shè)定;
(2)監(jiān)測(cè)儀8個(gè)通道的采樣頻率、放大倍數(shù)、采樣保存時(shí)間的設(shè)定以及每個(gè)通道對(duì)應(yīng)傳感器類型的選擇;
(3)動(dòng)態(tài)實(shí)時(shí)顯示數(shù)據(jù)曲線。數(shù)據(jù)的顯示可以以原始數(shù)據(jù)和FFT兩種格式,并且可以調(diào)整采樣時(shí)間設(shè)定一幀采集的數(shù)據(jù)量的大??;
(4)八個(gè)通道數(shù)據(jù)采集數(shù)據(jù)的長(zhǎng)度、采集的時(shí)間能夠同步實(shí)時(shí)顯示在中央控制機(jī)上;
(5)越限報(bào)警。當(dāng)采集到的數(shù)據(jù)出現(xiàn)異常,超出正常的數(shù)據(jù)范圍的時(shí)候,能夠向中央控制單元報(bào)警,便于工作人員及時(shí)查找出現(xiàn)的故障和損傷;
(6)能夠?qū)Σ杉降臄?shù)據(jù)進(jìn)行實(shí)時(shí)分析。
2.2 軟件系統(tǒng)整體設(shè)計(jì)和流程
軟件設(shè)計(jì)核心部分主要有兩個(gè),一個(gè)是中央控制單元向監(jiān)測(cè)儀發(fā)送命令參數(shù),另一個(gè)是中央控制單元接收監(jiān)測(cè)儀發(fā)送回來(lái)的采集數(shù)據(jù)信息。PC機(jī)接收到采集的數(shù)據(jù)信息后,還需要根據(jù)系統(tǒng)要求繪制出數(shù)據(jù)曲線圖,便于對(duì)采集到的數(shù)據(jù)進(jìn)行分析,同時(shí)為了歷史數(shù)據(jù)信息的查閱,還必須將采集到的數(shù)據(jù)保存到Excel文件,其流程圖如圖2所示。根據(jù)軟件設(shè)計(jì)的整體設(shè)計(jì)和流程,采用了四個(gè)線程:
線程1:UINTSendCMDToDSP(LPVOID IParam),完成向DSP發(fā)送在主程序設(shè)定的命令參數(shù);
線程2:UINT、RecieveData(LPVOID IParam),完成接收采集的數(shù)據(jù)信息;
線程3:UINTDrawCurve(LPVOID IParam),將采集到的數(shù)據(jù)繪制成曲線圖像;
線程4:UINT StoreToExcel(LPVOID IParam),將采集到的數(shù)據(jù)保存到Excel文件,便于查閱分析歷史數(shù)據(jù)。
其中,由于PC是被動(dòng)接收監(jiān)測(cè)儀采集的數(shù)據(jù),為了保證在接收數(shù)據(jù)時(shí)沒(méi)有數(shù)據(jù)丟失,要把RecieveData線程的優(yōu)先級(jí)設(shè)為最高。
Windows本身采用的是消息驅(qū)動(dòng)機(jī)制,當(dāng)一個(gè)線程發(fā)出一條消息時(shí),操作系統(tǒng)首先接收到該消息,然后把該消息轉(zhuǎn)發(fā)給目標(biāo)線程。所以可以自定義消息,然后通過(guò)操作系統(tǒng)來(lái)實(shí)現(xiàn)一個(gè)線程向另一個(gè)線程發(fā)送消息。
首先SendCMDToDSP線程發(fā)送參數(shù)命令給監(jiān)測(cè)儀主板核心器件DSP,DSP收到參數(shù)命令后,按參數(shù)命令的要求向PC發(fā)送數(shù)據(jù),RecieveData線程監(jiān)聽(tīng)到DSP開(kāi)始發(fā)送采集數(shù)據(jù)后,開(kāi)始接收數(shù)據(jù)。由于Recie-veData線程優(yōu)先級(jí)別高于SendCMDToDSP線程,所以當(dāng)接收數(shù)據(jù)時(shí)發(fā)送命令參數(shù),SendCMDToDSP線程則需要等待RecieveData線程接收完數(shù)據(jù)才能開(kāi)始發(fā)送命令參數(shù),這樣就不會(huì)造成命令參數(shù)的覆蓋。在PC機(jī)內(nèi)存區(qū)域開(kāi)辟一塊緩沖區(qū)用于接收數(shù)據(jù),RecieveData開(kāi)始接收數(shù)據(jù),當(dāng)內(nèi)存緩沖區(qū)滿的時(shí)候,RecieveData線程PostThreadMessage一個(gè)消息給DrawCurve線程,將緩沖區(qū)指針和大小作為消息參數(shù)傳遞過(guò)去,然后釋放緩沖區(qū),再等待接收數(shù)據(jù);DrawCurve線程接收到消息后,分配另一塊內(nèi)存保存數(shù)據(jù),繪完采集數(shù)據(jù)的曲線圖像后,DrawCurve線程PostThreadMessage一個(gè)消息給StoreToExcel線程,將新的內(nèi)存指針和大小作為消息參數(shù)傳遞過(guò)去,然后把數(shù)據(jù)緩沖區(qū)釋放,再繼續(xù)等待消息;StoreToExcel線程獲取消息后,同樣分配另一塊內(nèi)存保存數(shù)據(jù),將采集的數(shù)據(jù)保存到Excel文件,然后把緩沖區(qū)釋放,再繼續(xù)等待消息。
2.3 以太網(wǎng)通信模塊設(shè)計(jì)
PC與DSP的數(shù)據(jù)通信采用的是以太網(wǎng)通信,上位PC機(jī)向DSP發(fā)送設(shè)定好的命令參數(shù),DSP則按照接收到的命令參數(shù)采集數(shù)據(jù),然后向PC機(jī)發(fā)送采集到的數(shù)據(jù)。以太網(wǎng)通信部分采用的是套接口Socket編程,套接口Socket提供了許多函數(shù),利用這些函數(shù),程序員就可以實(shí)現(xiàn)DSP和上位PC機(jī)的以太網(wǎng)通信。
2.3.1 發(fā)送命令模塊
當(dāng)上位PC機(jī)向監(jiān)測(cè)儀發(fā)送IP地址、MAC地址等命令參數(shù)時(shí),監(jiān)測(cè)儀作為服務(wù)器端,PC機(jī)作為客戶端。在服務(wù)器端和客戶端分別創(chuàng)建一個(gè)套接口Socket,然后在系統(tǒng)上電后,監(jiān)測(cè)儀就處于監(jiān)聽(tīng)狀態(tài),當(dāng)監(jiān)聽(tīng)到PC有連接請(qǐng)求時(shí),監(jiān)測(cè)儀服務(wù)端又創(chuàng)建一個(gè)新的套接口stcpctive來(lái)與PC建立連接,當(dāng)監(jiān)測(cè)儀與PC建立連接以后,PC就可以向監(jiān)測(cè)儀發(fā)送命令參數(shù)了。在此過(guò)程中,PC每次向監(jiān)測(cè)儀發(fā)送100 B的命令參數(shù),其中,第一個(gè)字節(jié)是區(qū)分不同命令參數(shù)的標(biāo)志,監(jiān)測(cè)儀接收到命令參數(shù)后,利用這個(gè)標(biāo)志來(lái)設(shè)置的各項(xiàng)參數(shù),通過(guò)這種方式,依次設(shè)定監(jiān)測(cè)儀各個(gè)通道的采樣頻率、保存時(shí)間、PGA、采樣閾值、FFT使能以及監(jiān)測(cè)儀本身的IP地址、MAC地址、運(yùn)行時(shí)模式以及監(jiān)測(cè)儀系統(tǒng)時(shí)間的設(shè)置,其流程如圖3所示。
2.3.2 接收數(shù)據(jù)模塊
當(dāng)監(jiān)測(cè)儀將采集到的數(shù)據(jù)通過(guò)以太網(wǎng)發(fā)送到上位PC機(jī)時(shí),PC機(jī)作為服務(wù)器端,監(jiān)測(cè)儀作為客戶端。同樣,也是在PC機(jī)服務(wù)器端和監(jiān)測(cè)儀客戶端各創(chuàng)建一個(gè)套接口Socket,當(dāng)PC機(jī)上的應(yīng)用程序開(kāi)始運(yùn)行后,PC機(jī)就處于監(jiān)聽(tīng)狀態(tài),當(dāng)監(jiān)聽(tīng)到有監(jiān)測(cè)儀端有連接請(qǐng)求的時(shí)候,就創(chuàng)建一個(gè)新的套接口stcpctive與監(jiān)測(cè)儀建立連接。當(dāng)PC機(jī)與監(jiān)測(cè)儀建立連接以后,監(jiān)測(cè)儀依次向PC機(jī)發(fā)送采樣時(shí)間、通道號(hào)、數(shù)據(jù)長(zhǎng)度、采樣數(shù)據(jù)。采樣時(shí)間即表示該發(fā)送的數(shù)據(jù)對(duì)象是哪個(gè)時(shí)刻的采樣結(jié)果。為了接收監(jiān)測(cè)儀發(fā)送過(guò)來(lái)的數(shù)據(jù)信息,需要在內(nèi)存緩沖區(qū)開(kāi)辟一個(gè)容量為16 384×4的buffer,每臺(tái)監(jiān)測(cè)儀8個(gè)通道,因此開(kāi)辟8個(gè)buffer,用來(lái)存放8個(gè)通道接收到的數(shù)據(jù),其流程如圖4所示。
3 模擬測(cè)試
橋梁健康監(jiān)測(cè)技術(shù)的發(fā)展還有很多處于實(shí)驗(yàn)室研究階段,因此,數(shù)據(jù)的采集測(cè)試是在實(shí)驗(yàn)室環(huán)境下采用波形發(fā)生器產(chǎn)生的三角波信號(hào)來(lái)模擬實(shí)際現(xiàn)場(chǎng)傳感器信號(hào)。設(shè)定好通道號(hào)、采樣時(shí)間、采樣頻率和放大倍數(shù)等命令參數(shù),運(yùn)行程序,可以看到如圖5所示的三角波波形。其中,橫坐標(biāo)表示在設(shè)定的采樣時(shí)間內(nèi)采集數(shù)據(jù)的個(gè)數(shù),即為1 s時(shí)間內(nèi)采集512個(gè)數(shù)據(jù)??v坐標(biāo)表示采集信號(hào)的幅值,由于從傳感器出來(lái)的信號(hào)電壓是-2.5~2.5 V,ADC采樣分辨率為24 b,去掉第24位,取中間值即222,為0 V,如圖5所示。采集數(shù)據(jù)無(wú)漏點(diǎn),波形完整,因此符合橋梁健康監(jiān)測(cè)系統(tǒng)的采集數(shù)據(jù)的基本需要。
4、結(jié) 語(yǔ)
本文完成了基于以太網(wǎng)的橋梁健康監(jiān)測(cè)系統(tǒng)的軟件設(shè)計(jì),實(shí)現(xiàn)了橋梁健康監(jiān)測(cè)系統(tǒng)中各種傳感器信號(hào)的采集,同時(shí)將采集到的數(shù)據(jù)信號(hào)通過(guò)以太網(wǎng)傳輸?shù)絇C上,實(shí)時(shí)顯示各采集信號(hào)的輸出波形,并將采集到的數(shù)據(jù)保存至Excel文件,便于歷史查閱和分析。軟件設(shè)計(jì)界面友好,可完成一般的橋梁健康監(jiān)測(cè)任務(wù)。