基于物聯(lián)網(wǎng)的鐵路貨車軸溫監(jiān)測系統(tǒng)
2.2 STM32網(wǎng)關(guān)軟件設(shè)計
本文引用地址:http://butianyuan.cn/article/201703/345028.htm2.2.1 網(wǎng)關(guān)軟件總體設(shè)計
嵌入式操作系統(tǒng)μC/OS-III是一種廣泛應(yīng)用于嵌入式系統(tǒng)微內(nèi)核的實時操作系統(tǒng),支持任務(wù)時間片輪轉(zhuǎn)調(diào)度、任務(wù)間通信以及基本的內(nèi)存管理機制等。將其移植到STM32F103上,主要對OS_CPU.H 頭文件、OS_CPU_C.C源代碼文件、OS_CPU_A.S 匯編代碼文件的編寫與修改。針對用戶交互和數(shù)據(jù)存儲方面的考慮,系統(tǒng)接著移植了STemWin圖形用戶界面系統(tǒng)和FATFS嵌入式文件系統(tǒng)。系統(tǒng)上電后,進(jìn)入一系列硬件初始化工作,如串口、定時器、觸摸屏、SD卡等;然后初始化μC/OS-III操作系統(tǒng)和STemWin圖形界面系統(tǒng)。初始化完成后開始創(chuàng)建任務(wù),主要為每個任務(wù)設(shè)置優(yōu)先級、堆棧大小和任務(wù)函數(shù),創(chuàng)建完成后調(diào)用OSStart()函數(shù)開啟多任務(wù)調(diào)度。網(wǎng)關(guān)軟件總體設(shè)計流程如圖8所示。
圖8 網(wǎng)關(guān)軟件總體設(shè)計流程圖
2.2.2 GPRS初始化任務(wù)
GPRS初始化任務(wù)主要是設(shè)置一系列A T指令完成SIM900A的初始化工作,設(shè)置TCP最大嘗試連接的次數(shù)為5,GPRS初始化任務(wù)結(jié)束后掛起任務(wù),并在LCD顯示屏上顯示地面監(jiān)控中心主機的IP地址、端口號和GPRS連接狀態(tài)。
2.2.3 串口接收任務(wù)
串口接收任務(wù)負(fù)責(zé)對ZigBee匯聚節(jié)點發(fā)來的數(shù)據(jù)包進(jìn)行接收并解析,由于串口接收數(shù)據(jù)量較大,為區(qū)分不同節(jié)點的數(shù)據(jù)包,定義串口連續(xù)接收2個字符之間的時間差不大于10ms來決定是不是一次連續(xù)的數(shù)據(jù)。串口接收到一幀有效數(shù)據(jù)后對其進(jìn)行解包,解包后的數(shù)據(jù)保存在結(jié)構(gòu)體ZigMsg_Packet對應(yīng)的成員變量中,如下所示:
typedef struct {
uchar Carnumber[5]; //車廂編號
uchar Et_temp[5]; //環(huán)境溫度
uchar Bear1temp[5]; //軸承1溫度
uchar Bear2temp[5]; //軸承2溫度
uchar Bear3temp[5]; //軸承3溫度
uchar Bear4temp[5]; //軸承4溫度
uchar Bear5temp[5]; //軸承5溫度
uchar Bear6temp[5]; //軸承6溫度
uchar Bear7temp[5]; //軸承7溫度
uchar Bear8temp[5]; //軸承8溫度
uchar Bearstatus[8]; //軸承狀態(tài)(8個字節(jié))
uchar Bearnumber[8]; //軸承號(8個字節(jié))
uchar Carstatus ; //車廂狀態(tài)
}ZigMsg_Packet;
2.2.4 GUI顯示任務(wù)
GUI界面顯示任務(wù)主要完成了以下工作:1、確定界面布局,顯示界面基本信息;2、顯示LISTVIEW控件,并通過LISTVIEW顯示采集的數(shù)據(jù)和報警信息;3、制作字模,建立字母和漢字庫,并在屏幕上顯示;4、顯示當(dāng)前時間和GPRS信息。界面顯示如圖9所示,圖中顯示的是2016年5月22日21點18分10秒接收的數(shù)據(jù),LISTVIEW控件中顯示了對應(yīng)節(jié)點的車廂號、環(huán)境溫度和8個軸承溫度,由于采集節(jié)點中設(shè)置溫度報警的閾值是26.5℃,可以看到軸承對應(yīng)單元格的背景顏色均為綠色,說明當(dāng)前軸承狀態(tài)都是正常的。
圖9 GUI界面顯示
2.2.5 FATFS存儲任務(wù)
FATFS存儲任務(wù)負(fù)責(zé)將串口接收到的有效數(shù)據(jù)實時保存到本地SD卡中,以便貨車維護(hù)人員查看數(shù)據(jù)。在保存數(shù)據(jù)時需要確認(rèn)SD卡是否掛載成功,接著調(diào)用f_open()函數(shù)實現(xiàn)文件的建立和打開工作,如果文件已經(jīng)建立則直接調(diào)用f_write()函數(shù)寫入數(shù)據(jù),待寫入完成后調(diào)用f_close()函數(shù)關(guān)閉文件即可。圖10為SD卡中保存的數(shù)據(jù)。
圖10 FATFS保存數(shù)據(jù)
2.2.6 系統(tǒng)監(jiān)視任務(wù)
由于系統(tǒng)的數(shù)據(jù)傳輸容量較大易發(fā)生網(wǎng)路擁塞,尤其是貨車在過隧道或山洞時很容易造成斷網(wǎng)現(xiàn)象,系統(tǒng)加入了監(jiān)視任務(wù)每隔15秒查詢一次GPRS狀態(tài),主要通過發(fā)送“AT+CSQ”查詢信號質(zhì)量、發(fā)送“AT+CPIN?”確定SIM卡是否在位,若沒有定期返回“OK”則關(guān)閉移動場景、重新發(fā)起TCP連接指令,將連接狀態(tài)在GUI上實時顯示出來。
3 上位機的設(shè)計與實現(xiàn)
上位機的設(shè)計主要是以VC++ 2010為平臺開發(fā)完成的。上位機作為C/S模式的服務(wù)器,運行程序時自動獲取顯示本機IP地址,手動配置一個端口號,開啟監(jiān)聽之后,此時GPRS客戶端需將目的地址很端口號設(shè)置成服務(wù)器端的地址和端口號,連接成功后,監(jiān)控界面上連接狀態(tài)會顯示綠色,當(dāng)有數(shù)據(jù)通過Socket發(fā)送時,系統(tǒng)根據(jù)編組號分別實時顯示變化,若出現(xiàn)某一車廂編號工作狀態(tài)為紅色,表示本節(jié)車廂軸承出現(xiàn)故障,點擊后面“查看”按鈕,即可查詢哪個軸承出現(xiàn)故障了。如圖11所示,車廂編號為95271工作狀態(tài)為紅色,可知本節(jié)車廂的軸承有故障,點擊控件“查看”后自動打開一個新的名為“軸承詳細(xì)信息”的對話框,如圖12所示。
圖11 上位機監(jiān)控主界面
圖12 軸承詳細(xì)信息
從圖12可以清楚地發(fā)現(xiàn)3、5、6和8號軸承都出現(xiàn)故障。這也驗證了系統(tǒng)所設(shè)計的報警功能的準(zhǔn)確性。
從TCP/IP發(fā)送過來的數(shù)據(jù),一方面實時顯示,另一方面還需要自動存儲到數(shù)據(jù)庫,以便專家分析歷史數(shù)據(jù)。本文采用的是Access 2010設(shè)計數(shù)據(jù)庫表,當(dāng)有數(shù)據(jù)接收時,表里面的內(nèi)容就立即更新,圖13是存入數(shù)據(jù)庫表中數(shù)據(jù)的一部分。
圖13 數(shù)據(jù)存放表
4 結(jié)論
本文將物聯(lián)網(wǎng)技術(shù)應(yīng)用到鐵路貨車軸溫監(jiān)測系統(tǒng)中,通過研究與試驗工作,系統(tǒng)達(dá)到了軸承狀態(tài)動態(tài)監(jiān)控和數(shù)據(jù)可靠傳輸?shù)男Ч?,彌補了現(xiàn)有的軸溫檢測裝置的不足,能夠提高軸溫監(jiān)測的實時性、可靠性和方便性,在鐵路貨車行車安全監(jiān)測領(lǐng)域具有較好的應(yīng)用前景。
作者:陳啟武 張高明 吳新春西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院(四川 成都 610031)
評論