基于以太網(wǎng)的橋梁健康監(jiān)測系統(tǒng)的軟件設(shè)計
2 基于以太網(wǎng)的橋梁健康監(jiān)測系統(tǒng)的軟件設(shè)計
2.1 軟件設(shè)計需求分析
現(xiàn)場監(jiān)測儀將采集到的信號通過以太網(wǎng)傳送到上位機PC,在PC機上實時顯示、保存、分析采集數(shù)據(jù)信息,既能夠充分利用了DSP在現(xiàn)場高速采集處理數(shù)據(jù)的能力,又能夠充分利用了上位PC機在繪制圖像和保存數(shù)據(jù)方面的優(yōu)勢。因此,一個完整的橋梁健康監(jiān)測系統(tǒng)在中央監(jiān)控部分應(yīng)該完成以下幾個功能:
(1)每臺監(jiān)測儀IP地址、MAC地址、Port端口等網(wǎng)絡(luò)地址信息、運行模式以及系統(tǒng)采樣時間的設(shè)定;
(2)監(jiān)測儀8個通道的采樣頻率、放大倍數(shù)、采樣保存時間的設(shè)定以及每個通道對應(yīng)傳感器類型的選擇;
(3)動態(tài)實時顯示數(shù)據(jù)曲線。數(shù)據(jù)的顯示可以以原始數(shù)據(jù)和FFT兩種格式,并且可以調(diào)整采樣時間設(shè)定一幀采集的數(shù)據(jù)量的大小;
(4)八個通道數(shù)據(jù)采集數(shù)據(jù)的長度、采集的時間能夠同步實時顯示在中央控制機上;
(5)越限報警。當采集到的數(shù)據(jù)出現(xiàn)異常,超出正常的數(shù)據(jù)范圍的時候,能夠向中央控制單元報警,便于工作人員及時查找出現(xiàn)的故障和損傷;
(6)能夠?qū)Σ杉降臄?shù)據(jù)進行實時分析。
2.2 軟件系統(tǒng)整體設(shè)計和流程
軟件設(shè)計核心部分主要有兩個,一個是中央控制單元向監(jiān)測儀發(fā)送命令參數(shù),另一個是中央控制單元接收監(jiān)測儀發(fā)送回來的采集數(shù)據(jù)信息。PC機接收到采集的數(shù)據(jù)信息后,還需要根據(jù)系統(tǒng)要求繪制出數(shù)據(jù)曲線圖,便于對采集到的數(shù)據(jù)進行分析,同時為了歷史數(shù)據(jù)信息的查閱,還必須將采集到的數(shù)據(jù)保存到Excel文件,其流程圖如圖2所示。根據(jù)軟件設(shè)計的整體設(shè)計和流程,采用了四個線程:
線程1:UINT SendCMDToDSP(LPVOID IParam),完成向DSP發(fā)送在主程序設(shè)定的命令參數(shù);
線程2:UINT、RecieveData(LPVOID IParam),完成接收采集的數(shù)據(jù)信息;
線程3:UINT DrawCurve(LPVOID IParam),將采集到的數(shù)據(jù)繪制成曲線圖像;
線程4:UINT StoreToExcel(LPVOID IParam),將采集到的數(shù)據(jù)保存到Excel文件,便于查閱分析歷史數(shù)據(jù)。
其中,由于PC是被動接收監(jiān)測儀采集的數(shù)據(jù),為了保證在接收數(shù)據(jù)時沒有數(shù)據(jù)丟失,要把RecieveData線程的優(yōu)先級設(shè)為最高。
Windows本身采用的是消息驅(qū)動機制,當一個線程發(fā)出一條消息時,操作系統(tǒng)首先接收到該消息,然后把該消息轉(zhuǎn)發(fā)給目標線程。所以可以自定義消息,然后通過操作系統(tǒng)來實現(xiàn)一個線程向另一個線程發(fā)送消息。本文引用地址:http://www.ex-cimer.com/article/195686.htm
首先SendCMDToDSP線程發(fā)送參數(shù)命令給監(jiān)測儀主板核心器件DSP,DSP收到參數(shù)命令后,按參數(shù)命令的要求向PC發(fā)送數(shù)據(jù),RecieveData線程監(jiān)聽到DSP開始發(fā)送采集數(shù)據(jù)后,開始接收數(shù)據(jù)。由于Recie-veData線程優(yōu)先級別高于SendCMDToDSP線程,所以當接收數(shù)據(jù)時發(fā)送命令參數(shù),SendCMDToDSP線程則需要等待RecieveData線程接收完數(shù)據(jù)才能開始發(fā)送命令參數(shù),這樣就不會造成命令參數(shù)的覆蓋。在PC機內(nèi)存區(qū)域開辟一塊緩沖區(qū)用于接收數(shù)據(jù),RecieveData開始接收數(shù)據(jù),當內(nèi)存緩沖區(qū)滿的時候,RecieveData線程PostThreadMessage一個消息給DrawCurve線程,將緩沖區(qū)指針和大小作為消息參數(shù)傳遞過去,然后釋放緩沖區(qū),再等待接收數(shù)據(jù);DrawCurve線程接收到消息后,分配另一塊內(nèi)存保存數(shù)據(jù),繪完采集數(shù)據(jù)的曲線圖像后,DrawCurve線程PostThreadMessage一個消息給StoreToExcel線程,將新的內(nèi)存指針和大小作為消息參數(shù)傳遞過去,然后把數(shù)據(jù)緩沖區(qū)釋放,再繼續(xù)等待消息;StoreToExcel線程獲取消息后,同樣分配另一塊內(nèi)存保存數(shù)據(jù),將采集的數(shù)據(jù)保存到Excel文件,然后把緩沖區(qū)釋放,再繼續(xù)等待消息。
2.3 以太網(wǎng)通信模塊設(shè)計
PC與DSP的數(shù)據(jù)通信采用的是以太網(wǎng)通信,上位PC機向DSP發(fā)送設(shè)定好的命令參數(shù),DSP則按照接收到的命令參數(shù)采集數(shù)據(jù),然后向PC機發(fā)送采集到的數(shù)據(jù)。以太網(wǎng)通信部分采用的是套接口Socket編程,套接口Socket提供了許多函數(shù),利用這些函數(shù),程序員就可以實現(xiàn)DSP和上位PC機的以太網(wǎng)通信。
評論