一種基于gprs監(jiān)控終端的軟件系統(tǒng)的制作方法
【專利摘要】本發(fā)明具體公開了一種基于GPRS監(jiān)控終端的軟件系統(tǒng),所述軟件系統(tǒng)由底層硬件驅(qū)動(dòng)程序、嵌入式操作系統(tǒng)及多任務(wù)應(yīng)用程序構(gòu)成;所述多任務(wù)應(yīng)用程序基于多任務(wù)設(shè)計(jì)方式實(shí)現(xiàn),多任務(wù)包括:開始任務(wù)、Modem串口接收任務(wù)、GPRS調(diào)度任務(wù)、數(shù)據(jù)解析轉(zhuǎn)換任務(wù)、GPRS鏈路建立及保持任務(wù)、系統(tǒng)監(jiān)控告警任務(wù)、設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù);所述GPRS鏈路建立及保持任務(wù)的狀態(tài)機(jī)包含狀態(tài)轉(zhuǎn)換過(guò)程;所述多任務(wù)應(yīng)用程序?qū)崿F(xiàn)了多任務(wù)軟件看門狗。本發(fā)明實(shí)現(xiàn)了一種基于GPRS監(jiān)控終端的高可靠性的軟件系統(tǒng),使其能夠在光伏電站、風(fēng)電場(chǎng)等惡劣的應(yīng)用環(huán)境中正常工作。
【專利說(shuō)明】—種基于GPRS監(jiān)控終端的軟件系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無(wú)線通信【技術(shù)領(lǐng)域】,具體公開了一種基于GPRS監(jiān)控終端的軟件系統(tǒng)。
【背景技術(shù)】
[0002]在光伏電站、風(fēng)電場(chǎng)等惡劣的工業(yè)應(yīng)用場(chǎng)合,為了保證現(xiàn)場(chǎng)設(shè)備的可靠運(yùn)行,需要對(duì)這些設(shè)備進(jìn)行遠(yuǎn)程監(jiān)控。GPRS是物聯(lián)網(wǎng)應(yīng)用中最重要的數(shù)據(jù)傳輸方式之一,現(xiàn)已廣泛應(yīng)用于工業(yè)自動(dòng)化、智能電網(wǎng)、智能交通、智能家居、物流、水文、氣象等行業(yè)領(lǐng)域。采用GPRS技術(shù)可方便地構(gòu)建現(xiàn)場(chǎng)設(shè)備遠(yuǎn)程智能監(jiān)控系統(tǒng),用于滿足用戶的需求。一方面,設(shè)備生產(chǎn)廠家通過(guò)該監(jiān)控系統(tǒng)可方便地實(shí)現(xiàn)設(shè)備運(yùn)行狀態(tài)的長(zhǎng)期監(jiān)測(cè)及遠(yuǎn)程升級(jí),從而實(shí)現(xiàn)設(shè)備的遠(yuǎn)程維護(hù),不斷地提高產(chǎn)品的可靠性,節(jié)省大量出差費(fèi)用和人力成本;另一方面,現(xiàn)場(chǎng)設(shè)備的使用者也能夠通過(guò)該遠(yuǎn)程監(jiān)控系統(tǒng)方便地查看設(shè)備的運(yùn)行狀態(tài),配置設(shè)備參數(shù),從而降低設(shè)備運(yùn)行的維護(hù)成本,并獲得更好的用戶體驗(yàn)。
[0003]但是,在實(shí)際的工業(yè)應(yīng)用場(chǎng)合如光伏電站、風(fēng)電場(chǎng)等工業(yè)現(xiàn)場(chǎng),惡劣的物理環(huán)境及各種電磁干擾可能導(dǎo)致布置于工業(yè)現(xiàn)場(chǎng)的GPRS監(jiān)控終端不能正常工作,即工業(yè)現(xiàn)場(chǎng)對(duì)GPRS監(jiān)控終端的可靠性具有很高的要求。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種基于GPRS監(jiān)控終端的高可靠性的軟件系統(tǒng),該軟件系統(tǒng)了滿足光伏電站、風(fēng)電場(chǎng)等惡劣應(yīng)用環(huán)境對(duì)GPRS監(jiān)控終端的高可靠性要求。
[0005]為解決上述技術(shù)問(wèn)題,本發(fā)明采用了以下技術(shù)方案:
一種基于GPRS監(jiān)控終端的軟件系統(tǒng),所述軟件系統(tǒng)由底層硬件驅(qū)動(dòng)程序、嵌入式操作系統(tǒng)及多任務(wù)應(yīng)用程序構(gòu)成;所述多任務(wù)應(yīng)用程序基于多任務(wù)設(shè)計(jì)方式實(shí)現(xiàn),多任務(wù)包括:開始任務(wù)、Modem串口接收任務(wù)、GPRS調(diào)度任務(wù)、數(shù)據(jù)解析轉(zhuǎn)換任務(wù)、GPRS鏈路建立及保持任務(wù)、系統(tǒng)監(jiān)控告警任務(wù)、設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù);所述GPRS鏈路建立及保持任務(wù)的狀態(tài)機(jī)包含狀態(tài)轉(zhuǎn)換過(guò)程;所述多任務(wù)應(yīng)用程序?qū)崿F(xiàn)了多任務(wù)軟件看門狗,該多任務(wù)軟件看門狗由每個(gè)任務(wù)的軟件看門狗子程序,以及多任務(wù)軟件看門狗喂狗子程序構(gòu)成;所述多任務(wù)應(yīng)用程序?qū)崿F(xiàn)了多任務(wù)軟件看門狗,該多任務(wù)軟件看門狗由每個(gè)任務(wù)的軟件看門狗子程序,以及多任務(wù)軟件看門狗喂狗子程序構(gòu)成;每個(gè)任務(wù)的軟件看門狗子程序主要負(fù)責(zé)該任務(wù)軟件看門狗的初始化,并在主循環(huán)中更新該任務(wù)軟件看門狗的計(jì)數(shù)器;多任務(wù)軟件看門狗喂狗子程序則在每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)檢查每個(gè)任務(wù)的軟件看門狗是否已超時(shí),只要某個(gè)任務(wù)的軟件看門狗超時(shí),就通過(guò)硬件看門狗完成對(duì)系統(tǒng)的復(fù)位。
[0006]進(jìn)一步的,所述多任務(wù)設(shè)計(jì)如下:
開始任務(wù):首先啟動(dòng)GPRS無(wú)線通信模塊,接著檢測(cè)嵌入式微控制器本地配置串口是否接收到進(jìn)入配置狀態(tài)的指令,若在設(shè)定時(shí)間內(nèi)未檢測(cè)到該指令,則進(jìn)入系統(tǒng)正常啟動(dòng)狀態(tài),否則進(jìn)入系統(tǒng)參數(shù)配置狀態(tài); Modem串口接收任務(wù):Modem串口接收任務(wù)主要負(fù)責(zé)定期查詢與GPRS無(wú)線通信模塊相連接的嵌入式微控制器的串口緩沖區(qū)中是否有GPRS無(wú)線通信模塊發(fā)來(lái)的數(shù)據(jù),若有,則取出并送入Modem接收數(shù)據(jù)消息隊(duì)列;
GPRS調(diào)度任務(wù):GPRS調(diào)度任務(wù)完成GPRS無(wú)線通信模塊數(shù)據(jù)、短信息的接收,以及GPRS數(shù)據(jù)、短消息的發(fā)送;
數(shù)據(jù)解析轉(zhuǎn)換任務(wù):數(shù)據(jù)解析轉(zhuǎn)換任務(wù)定期依次查詢以下標(biāo)志位并進(jìn)行相應(yīng)的處理:查詢數(shù)據(jù)接收標(biāo)志位,若該標(biāo)志位為真,則對(duì)接收到的數(shù)據(jù)進(jìn)行解析;查詢數(shù)據(jù)發(fā)送標(biāo)志位,若該標(biāo)志位為真,則構(gòu)建發(fā)送數(shù)據(jù)包并傳遞給GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送;
系統(tǒng)監(jiān)控告警任務(wù):系統(tǒng)監(jiān)控告警任務(wù)完成對(duì)系統(tǒng)狀態(tài)及采集到的設(shè)備實(shí)時(shí)數(shù)據(jù)的異常監(jiān)測(cè),通過(guò)定期檢測(cè)系統(tǒng)的運(yùn)行狀態(tài),從而及時(shí)發(fā)現(xiàn)系統(tǒng)異常,并在檢測(cè)到異常事件時(shí)置位相應(yīng)的告警標(biāo)志位,并置位發(fā)送系統(tǒng)異常告警數(shù)據(jù)包的標(biāo)志位,以便數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行查詢、構(gòu)建并傳遞系統(tǒng)告警數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送;
設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù):設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù)定期完成對(duì)設(shè)備實(shí)時(shí)數(shù)據(jù)的采集、存儲(chǔ),并置位設(shè)備實(shí)時(shí)數(shù)據(jù)上傳標(biāo)志位,以便數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行查詢、構(gòu)建并傳遞設(shè)備實(shí)時(shí)數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送;
GPRS鏈路建立及保持任務(wù):GPRS鏈路建立及保持任務(wù)完成GPRS通信鏈路的建立及維持,該任務(wù)采用了狀態(tài)機(jī)實(shí)現(xiàn),該狀態(tài)機(jī)由“GPRS Modem初始化”狀態(tài)、“建立GPRS PPP連接”狀態(tài)、“建立GPRS TCP/UDP連接”狀態(tài)、“登錄遠(yuǎn)程服務(wù)器”狀態(tài)、“檢測(cè)GPRS PPP連接狀態(tài)”狀態(tài)、“檢測(cè)GPRS TCP/UDP連接狀態(tài)”狀態(tài)、“GPRS Modem硬件復(fù)位”狀態(tài)、“GPRSModem重上電”狀態(tài)、及“軟件系統(tǒng)軟復(fù)位”狀態(tài)構(gòu)成。
[0007]進(jìn)一步的,所述Modem AT指令操作機(jī)制是針對(duì)GPRS無(wú)線通信模塊對(duì)不同AT指令的響應(yīng)時(shí)間不一致,采用超時(shí)機(jī)制,即根據(jù)每個(gè)AT命令不同的響應(yīng)時(shí)間設(shè)置不同的等待時(shí)間,若指定時(shí)間內(nèi)獲得返回值則結(jié)束等待,超時(shí)則自動(dòng)結(jié)束等待。
[0008]進(jìn)一步的,所述可靠登錄GPRS網(wǎng)絡(luò)機(jī)制采用超時(shí)機(jī)制進(jìn)行登錄,即監(jiān)控節(jié)點(diǎn)登錄時(shí),若等待登錄反饋超時(shí),則認(rèn)為登錄失敗,多次登錄失敗后,則重新復(fù)位GPRS無(wú)線通信模塊。
[0009]進(jìn)一步的,所述心跳機(jī)制為GPRS監(jiān)控終端定時(shí)向后臺(tái)服務(wù)器發(fā)送心跳包,若?;顣r(shí)間內(nèi)未收到心跳包反饋,則認(rèn)為鏈路已斷開,自動(dòng)斷開現(xiàn)有連接并重新建立鏈路。
[0010]進(jìn)一步的,所述終端實(shí)時(shí)在線檢測(cè)機(jī)制是通過(guò)周期性檢測(cè)GPRS PPP連接狀態(tài),可及時(shí)檢測(cè)到節(jié)點(diǎn)是否從GPRS網(wǎng)絡(luò)掉線,若掉線則執(zhí)行嘗試重新?lián)芴?hào)連接操作,從而保證監(jiān)控節(jié)點(diǎn)實(shí)時(shí)在線。
[0011]進(jìn)一步的,所述“GPRS Modem硬件復(fù)位”、“GPRS Modem重上電”、“軟件系統(tǒng)軟復(fù)位”三種狀態(tài)構(gòu)成了 GPRS鏈路建立及保持任務(wù)的三重重啟機(jī)制。
[0012]進(jìn)一步的,所述GPRS鏈路建立及保持任務(wù)的狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換過(guò)程如下:
a、進(jìn)入“GPRSModem初始化”狀態(tài),在此狀態(tài)下進(jìn)行GPRS Modem初始化,在初始化的每一個(gè)Modem的AT指令操作時(shí),均采用了“確定性的Modem AT指令操作機(jī)制”;若Modem初始化成功則進(jìn)入“建立GPRS PPP連接”狀態(tài),若初始化失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài);
b、在“建立GPRSPPP連接”狀態(tài)下,通過(guò)向GPRS Modem發(fā)送AT指令嘗試建立PPP連接,若建立連接成功,則進(jìn)入“建立GPRS TCP/UDP連接”狀態(tài),若連續(xù)3次嘗試建立PPP連接失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài);
C、在“建立GPRS TCP/UDP連接”狀態(tài)下,根據(jù)系統(tǒng)參數(shù)的配置選擇嘗試與指定的服務(wù)器端口建立TCP連接或UDP連接,若建立連接成功,則進(jìn)入“登錄后臺(tái)服務(wù)器”狀態(tài),若連續(xù)3次嘗試建立TCP/UDP連接失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài);
d、在“登錄后臺(tái)服務(wù)器”狀態(tài)下,采用“可靠登錄GPRS網(wǎng)絡(luò)機(jī)制”進(jìn)行服務(wù)器的遠(yuǎn)程登錄操作;置位向服務(wù)器發(fā)送登錄數(shù)據(jù)包的標(biāo)志位,等待數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行檢測(cè)并構(gòu)建、傳遞登錄數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送,并等待后臺(tái)服務(wù)器的登錄數(shù)據(jù)包反饋,若在指定的等待時(shí)間內(nèi)接收到后臺(tái)服務(wù)器的登錄數(shù)據(jù)包反饋,則說(shuō)明登錄服務(wù)器成功,進(jìn)入“檢測(cè)GPRS PPP連接狀態(tài)”狀態(tài),否則說(shuō)明登錄服務(wù)器失敗,若連續(xù)3次登錄服務(wù)器失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài);
e、在“檢測(cè)GPRSPPP連接狀態(tài)”狀態(tài)下,實(shí)現(xiàn)了“終端實(shí)時(shí)在線檢測(cè)機(jī)制”,通過(guò)定期向GPRS Modem發(fā)送AT指令檢測(cè)GPRS PPP連接的狀態(tài),若GPRS PPP連接正常,則進(jìn)入“檢測(cè)GPRS TCP/UDP連接狀態(tài)”狀態(tài),若連續(xù)3次檢測(cè)到GPRS PPP連接斷開,則進(jìn)入“建立GPRSPPP連接”狀態(tài),重新建立GPRS PPP連接;之所以需要定期檢測(cè)GPRS PPP連接狀態(tài),是由于GPRS網(wǎng)絡(luò)本身的網(wǎng)絡(luò)狀況會(huì)導(dǎo)致GPRS無(wú)線監(jiān)控節(jié)點(diǎn)掉線,為了保證GPRS無(wú)線監(jiān)控節(jié)點(diǎn)與服務(wù)器的正常通信,GPRS無(wú)線監(jiān)控節(jié)點(diǎn)必須知道何時(shí)從GPRS網(wǎng)絡(luò)上掉線,從而及時(shí)重新建立PPP連接以及TCP/UDP連接。
[0013]f、在“檢測(cè)GPRS TCP/UDP連接狀態(tài)”狀態(tài)下,采用“心跳機(jī)制”實(shí)現(xiàn)TCP/UDP鏈路的連接狀態(tài)檢測(cè),通過(guò)定期向服務(wù)器發(fā)送心跳數(shù)據(jù)包來(lái)檢測(cè)GPRS TCP/UDP連接的狀態(tài),若GPRS TCP/UDP連接正常,則進(jìn)入“檢測(cè)GPRS PPP連接狀態(tài)”狀態(tài),若連續(xù)3次檢測(cè)到GPRSTCP/UDP連接斷開,則進(jìn)入“建立GPRS TCP/UDP連接”狀態(tài),重新建立GPRS TCP/UDP連接,其中,向服務(wù)器發(fā)送心跳數(shù)據(jù)包的實(shí)現(xiàn)方式與發(fā)送登錄數(shù)據(jù)包類似,通過(guò)置位向服務(wù)器發(fā)送心跳數(shù)據(jù)包的標(biāo)志位,等待數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行檢測(cè)并構(gòu)建、傳遞心跳數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送,并等待服務(wù)器的心跳數(shù)據(jù)包反饋,若在指定的等待時(shí)間內(nèi)接收到服務(wù)器的心跳數(shù)據(jù)包反饋,則說(shuō)明TCP/UDP連接正常,否則認(rèn)為TCP/UDP連接斷開。
[0014]g、在“GPRS Modem硬件復(fù)位”狀態(tài)下,執(zhí)行GPRS Modem硬件復(fù)位動(dòng)作,并累計(jì)GPRS Modem硬件復(fù)位的次數(shù),若GPRS Modem硬件復(fù)位的次數(shù)超過(guò)3次,則進(jìn)入“GPRS Modem重上電”狀態(tài),否則進(jìn)入“GPRS Modem初始化”狀態(tài);
h、在“GPRSModem重上電”狀態(tài)下,依次執(zhí)行GPRS Modem關(guān)機(jī)、斷電、上電、開機(jī)操作,并累計(jì)GPRS Modem重上電的次數(shù),若GPRS Modem重上電的次數(shù)超過(guò)3次,則進(jìn)入“軟件系統(tǒng)軟復(fù)位”狀態(tài),否則進(jìn)入“GPRS Modem初始化”狀態(tài);
1、在“軟件系統(tǒng)軟復(fù)位”狀態(tài)下,執(zhí)行軟件系統(tǒng)軟復(fù)位動(dòng)作,重啟軟件系統(tǒng),進(jìn)而在建立GPRS鏈路建立及保持任務(wù)后,進(jìn)入“GPRS Modem初始化”狀態(tài)。
[0015]進(jìn)一步的,每個(gè)任務(wù)的軟件看門狗子程序主要包括定時(shí)器的初始值的賦值以及計(jì)數(shù)器的更新,具體地:在每個(gè)任務(wù)起始處都需要初始化該任務(wù)的軟件看門狗,包括將軟件看門狗定時(shí)器的初始值賦值為該任務(wù)的超時(shí)值,并開啟該任務(wù)的軟件看門狗;此外,在每個(gè)任務(wù)的主循環(huán)中都要對(duì)該任務(wù)軟件看門狗的計(jì)數(shù)器進(jìn)行更新;
多任務(wù)軟件看門狗喂狗子程序位于系統(tǒng)時(shí)鐘節(jié)拍鉤子函數(shù),在每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)被調(diào)用一次;
多任務(wù)軟件看門狗喂狗子程序流程如下:
進(jìn)入多任務(wù)軟件看門狗喂狗子程序后,首先檢查“停止喂硬件看門狗標(biāo)志位”是否為真,如果為真,則直接結(jié)束多任務(wù)軟件看門狗喂狗子程序;如果不為真,則依次對(duì)每個(gè)任務(wù)的軟件看門狗狀態(tài)進(jìn)行檢查,步驟如下:檢查該任務(wù)軟件看門狗計(jì)數(shù)器是否已更新,若已更新,則重置該任務(wù)軟件看門狗定時(shí)器的值為該任務(wù)的超時(shí)值,并繼續(xù)進(jìn)行下一個(gè)任務(wù)的軟件看門狗狀態(tài)檢查;若未更新,則首先將該任務(wù)軟件看門狗定時(shí)器的值減1,然后判斷該任務(wù)軟件看門狗定時(shí)器的值是否為零,為零則說(shuō)明該任務(wù)軟件看門狗定時(shí)器已超時(shí),置位“停止喂硬件看門狗標(biāo)志位”為真,直接結(jié)束多任務(wù)軟件看門狗喂狗子程序,不為零則繼續(xù)進(jìn)行下一個(gè)任務(wù)的軟件看門狗狀態(tài)檢查。按照上述步驟依次完成對(duì)每個(gè)任務(wù)軟件看門狗的狀態(tài)檢查,然后執(zhí)行喂硬件看門狗的步驟,最后結(jié)束多任務(wù)軟件看門狗喂狗子程序。
[0016]本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:
1、本發(fā)明所涉及基于GPRS監(jiān)控終端的軟件系統(tǒng)滿足了光伏電站、風(fēng)電場(chǎng)等工業(yè)現(xiàn)場(chǎng)的復(fù)雜環(huán)境對(duì)設(shè)備的高可靠性要求,滿足用戶對(duì)于復(fù)雜應(yīng)用環(huán)境的遠(yuǎn)程監(jiān)控需求。
[0017]2、多任務(wù)應(yīng)用程序設(shè)計(jì)的優(yōu)勢(shì)在于:
i)與不采用操作系統(tǒng)的單任務(wù)軟件系統(tǒng)設(shè)計(jì)相比,一方面不需要進(jìn)行功能調(diào)度設(shè)計(jì),從而降低軟件系統(tǒng)設(shè)計(jì)的復(fù)雜性,最大限度降低設(shè)計(jì)偏差;另一方面,由于采用了多任務(wù)設(shè)計(jì),當(dāng)軟件系統(tǒng)遭遇外部強(qiáng)干擾時(shí),只會(huì)導(dǎo)致軟件系統(tǒng)的某個(gè)任務(wù)異常,而不會(huì)引發(fā)所有任務(wù)異常,從而增強(qiáng)了軟件系統(tǒng)的可靠性;
ii)多任務(wù)設(shè)計(jì)能夠方便地進(jìn)行系統(tǒng)功能擴(kuò)展及系統(tǒng)升級(jí),如果需要在原有功能基礎(chǔ)上增加一個(gè)功能,只需要單獨(dú)為該功能設(shè)計(jì)實(shí)現(xiàn)一個(gè)任務(wù),無(wú)需對(duì)現(xiàn)有軟件系統(tǒng)進(jìn)行大的更改;
iii)采用基于嵌入式操作系統(tǒng)的多任務(wù)設(shè)計(jì)還能夠提高系統(tǒng)的效率及實(shí)時(shí)性。
[0018]3、GPRS監(jiān)控終端的網(wǎng)絡(luò)連接穩(wěn)定性是基于GPRS監(jiān)控終端的遠(yuǎn)程監(jiān)控系統(tǒng)正常運(yùn)行的關(guān)鍵因素,GPRS鏈路建立及保持狀態(tài)機(jī)的過(guò)程設(shè)計(jì)實(shí)現(xiàn)了基于狀態(tài)機(jī)的監(jiān)控節(jié)點(diǎn)自動(dòng)網(wǎng)絡(luò)連接及維護(hù)機(jī)制。
[0019]4、通過(guò)給軟件系統(tǒng)的每個(gè)任務(wù)分配一個(gè)軟件看門狗,并與硬件看門狗結(jié)合,實(shí)現(xiàn)了多任務(wù)軟件看門狗,保證了系統(tǒng)不會(huì)因?yàn)橥獠繌?qiáng)干擾導(dǎo)致系統(tǒng)死機(jī)。
【專利附圖】
【附圖說(shuō)明】
[0020]圖1為本發(fā)明涉及的一種高可靠性GPRS監(jiān)控終端的硬件系統(tǒng)結(jié)構(gòu)。
[0021]圖2為本發(fā)明的GPRS電源管理模塊電路。
[0022]圖3本發(fā)明的多任務(wù)應(yīng)用程序的多任務(wù)交互示意圖。
[0023]圖4為本發(fā)明的GPRS鏈路建立及保持狀態(tài)機(jī)流程圖。
[0024]圖5為本發(fā)明的GPRS Modem初始化程序流程圖。
[0025]圖6為本發(fā)明多任務(wù)軟件看門狗喂狗流程圖。
[0026]圖7為本發(fā)明的殼體結(jié)構(gòu)。
[0027]其中,附圖標(biāo)記為:1為上殼體,2為下殼體,3為接插件安裝位置,4為上殼體凹槽(密封條安裝位置)。
【具體實(shí)施方式】
[0028]以下結(jié)合附圖對(duì)本發(fā)明的一種高可靠性GPRS監(jiān)控終端進(jìn)行進(jìn)一步描述。
[0029]如圖1所示,本實(shí)例涉及的一種高可靠性GPRS監(jiān)控終端,其硬件電路包括嵌入式微控制器、GPRS無(wú)線通信模塊、電源模塊、GPRS電源管理模塊、存儲(chǔ)模塊、輸入輸出模塊、硬件看門狗及指示燈;其中,GPRS無(wú)線通信模塊通過(guò)串口與嵌入式微控制器相連接,GPRS電源管理模塊通過(guò)通用1 口與嵌入式微控制器相連接,電源模塊分別與嵌入式微控制器、GPRS電源管理模塊相連接,嵌入式微控制器還與存儲(chǔ)模塊、輸入輸出模塊、硬件看門狗及指示燈相連接,嵌入式微控制器通過(guò)控制GPRS電源管理模塊開啟或停止對(duì)GPRS無(wú)線通信模塊的供電。
[0030]如圖2所示,GPRS電源管理模塊電路的輸入端為GPRS_PWR_D0WNn,與嵌入式微控制器的通用1 口相連接,輸出端為VCC_GPRS,與GPRS無(wú)線通信模塊的電源輸入端相連接。嵌入式微控制器根據(jù)軟件系統(tǒng)的控制指令控制嵌入式微控制器的通用1 口的輸出電平,進(jìn)而控制GPRS電源管理模塊電路的輸入端的電平。當(dāng)GPRS電源管理模塊電路輸入端為低電平時(shí),GPRS電源管理模塊電路輸出端VCC_GPRS電壓為零,即此時(shí)切斷對(duì)GPRS無(wú)線通信模塊的電源供應(yīng);iGPRS電源管理模塊電路輸入端為高電平時(shí),GPRS電源管理模塊電路輸出端VCC_GPRS電壓為3.8V,即此時(shí)對(duì)GPRS無(wú)線通信模塊提供3.8V的電源供應(yīng)。通過(guò)上述控制機(jī)制,實(shí)現(xiàn)了軟件指令控制GPRS無(wú)線通信模塊重上電的操作,從而保證GPRS監(jiān)控終端在斷網(wǎng)后能夠恢復(fù)到正常工作狀態(tài),可靠連接至網(wǎng)絡(luò)。
[0031]如圖3所示,GPRS監(jiān)控終端上電后,軟件系統(tǒng)自動(dòng)啟動(dòng)并進(jìn)入Main函數(shù),在Main函數(shù)中,首先初始化串口、指示燈、存儲(chǔ)模塊等外設(shè),然后控制GPRS電源管理模塊給GPRS無(wú)線通信模塊上電,接著初始化嵌入式操作系統(tǒng),并創(chuàng)建開始任務(wù),最后啟動(dòng)多任務(wù)調(diào)度。
[0032]開始任務(wù)中,首先啟動(dòng)GPRS無(wú)線通信模塊,接著檢測(cè)嵌入式微控制器本地配置串口是否接收到進(jìn)入配置狀態(tài)的指令,若在設(shè)定時(shí)間內(nèi)未檢測(cè)到該指令,則進(jìn)入系統(tǒng)正常啟動(dòng)狀態(tài),否則進(jìn)入系統(tǒng)參數(shù)配置狀態(tài)。在系統(tǒng)參數(shù)配置狀態(tài)下,用戶可以通過(guò)配置串口向系統(tǒng)發(fā)送配置指令,系統(tǒng)在接收到配置指令后,進(jìn)行指令解析及參數(shù)修改、存儲(chǔ)。用戶也可以通過(guò)指令查看最新的系統(tǒng)參數(shù)值。在接收到用戶發(fā)來(lái)的配置完成指令后,系統(tǒng)進(jìn)入正常啟動(dòng)狀態(tài)。在軟件系統(tǒng)進(jìn)入正常啟動(dòng)狀態(tài)后,首先初始化多任務(wù)軟件看門狗,然后創(chuàng)建相關(guān)的信號(hào)量、消息郵箱及消息隊(duì)列,接著創(chuàng)建Modem串口接收任務(wù)、GPRS調(diào)度任務(wù)、數(shù)據(jù)解析轉(zhuǎn)換任務(wù)、GPRS鏈路建立及保持任務(wù)、系統(tǒng)監(jiān)控告警任務(wù)、設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù),最后開始任務(wù)將自身掛起。之后,操作系統(tǒng)就開始進(jìn)行Modem串口接收任務(wù)、GPRS調(diào)度任務(wù)、數(shù)據(jù)解析轉(zhuǎn)換任務(wù)、GPRS鏈路建立及保持任務(wù)、系統(tǒng)監(jiān)控告警任務(wù)、設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù)的調(diào)度。
[0033]Modem串口接收任務(wù)主要負(fù)責(zé)定期查詢與GPRS無(wú)線通信模塊相連接的嵌入式微控制器的串口緩沖區(qū)中是否有GPRS無(wú)線通信模塊發(fā)來(lái)的數(shù)據(jù),若有,則取出并送入Modem接收數(shù)據(jù)消息隊(duì)列。
[0034]GPRS調(diào)度任務(wù)完成GPRS無(wú)線通信模塊數(shù)據(jù)、短信息的接收,以及GPRS數(shù)據(jù)、短消息的發(fā)送。GPRS調(diào)度任務(wù)定期查詢Modem接收數(shù)據(jù)消息隊(duì)列中是否有消息,若有,則取出該消息并進(jìn)行解析,若消息內(nèi)容為TCP/UDP數(shù)據(jù)或短消息,則進(jìn)行相應(yīng)的數(shù)據(jù)提取并置位相應(yīng)的標(biāo)志位,若消息內(nèi)容為AT指令應(yīng)答數(shù)據(jù),則通過(guò)消息郵箱將該數(shù)據(jù)傳遞給GPRS鏈路建立及保持任務(wù)進(jìn)行處理。GPRS調(diào)度任務(wù)還定期查詢Modem發(fā)送數(shù)據(jù)消息隊(duì)列中是否有消息,若有,則取出該消息,并檢測(cè)GPRS鏈路是否暢通,若暢通,則進(jìn)行數(shù)據(jù)的無(wú)線發(fā)送,否貝U,累計(jì)重發(fā)次數(shù)并延時(shí)等待、重發(fā)。若重發(fā)次數(shù)超過(guò)3次,則放棄該數(shù)據(jù)的無(wú)線發(fā)送。此夕卜,GPRS調(diào)度任務(wù)定期查詢短消息發(fā)送標(biāo)志位,若該標(biāo)志位為真,則進(jìn)行短消息的發(fā)送。
[0035]數(shù)據(jù)解析轉(zhuǎn)換任務(wù)定期依次進(jìn)行如下標(biāo)志位的查詢,并執(zhí)行相應(yīng)的動(dòng)作:
(O若有新的TCP/UDP數(shù)據(jù),則進(jìn)行相應(yīng)的解析。若該TCP/UDP數(shù)據(jù)為服務(wù)器遠(yuǎn)程操作命令(如遠(yuǎn)程查詢、設(shè)置命令等),則按照預(yù)定義規(guī)約構(gòu)建相應(yīng)的應(yīng)答幀,并將該應(yīng)答幀加入Modem發(fā)送數(shù)據(jù)消息隊(duì)列,等待GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送;若該TCP/UDP數(shù)據(jù)為服務(wù)器應(yīng)答幀(如登錄應(yīng)答幀、心跳包應(yīng)答幀等),則置位相應(yīng)的標(biāo)志位。
[0036](2)若有新的遠(yuǎn)程操作短消息,則進(jìn)行解析,并按照預(yù)定義規(guī)約構(gòu)建應(yīng)答短消息并置位短消息發(fā)送標(biāo)志位,等待GPRS調(diào)度任務(wù)進(jìn)行查詢及短消息的無(wú)線發(fā)送。
[0037](3)在網(wǎng)絡(luò)連接正常時(shí),進(jìn)行登錄數(shù)據(jù)包、心跳數(shù)據(jù)包、設(shè)備實(shí)時(shí)數(shù)據(jù)包、系統(tǒng)告警數(shù)據(jù)包、設(shè)備告警數(shù)據(jù)包等發(fā)送標(biāo)志位的檢測(cè),若某種數(shù)據(jù)包發(fā)送標(biāo)志位為真,則按照預(yù)定義規(guī)約構(gòu)建該數(shù)據(jù)包,并將其送入待發(fā)送消息隊(duì)列,等待GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送。
[0038]系統(tǒng)監(jiān)控告警任務(wù)完成對(duì)系統(tǒng)狀態(tài)及采集到的設(shè)備實(shí)時(shí)數(shù)據(jù)的異常監(jiān)測(cè),通過(guò)定時(shí)檢測(cè)系統(tǒng)的運(yùn)行狀態(tài),從而及時(shí)發(fā)現(xiàn)系統(tǒng)異常,并在檢測(cè)到異常事件時(shí)置位相應(yīng)的告警標(biāo)志位,并置位發(fā)送系統(tǒng)異常告警數(shù)據(jù)包的標(biāo)志位,以便數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行查詢、構(gòu)建并傳遞系統(tǒng)告警數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送。此外,系統(tǒng)監(jiān)控告警任務(wù)在檢測(cè)到有新的設(shè)備實(shí)時(shí)數(shù)據(jù)時(shí),對(duì)其進(jìn)行異常檢測(cè),與系統(tǒng)異常的處理類似,在檢測(cè)到設(shè)備實(shí)時(shí)數(shù)據(jù)異常事件時(shí)置位相應(yīng)的告警標(biāo)志位,并置位發(fā)送設(shè)備異常告警數(shù)據(jù)包的標(biāo)志位,以便數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行查詢、構(gòu)建并傳遞設(shè)備告警數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送。
[0039]設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù):設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù)定期完成對(duì)設(shè)備實(shí)時(shí)數(shù)據(jù)的采集、存儲(chǔ)及上傳。
[0040]GPRS鏈路建立及保持任務(wù):GPRS鏈路建立及保持任務(wù)完成GPRS通信鏈路的建立及維持,該任務(wù)采用了狀態(tài)機(jī)實(shí)現(xiàn),該狀態(tài)機(jī)由“GPRS Modem初始化”狀態(tài)、“建立GPRS PPP連接”狀態(tài)、“建立GPRS TCP/UDP連接”狀態(tài)、“登錄遠(yuǎn)程服務(wù)器”狀態(tài)、“檢測(cè)GPRS PPP連接狀態(tài)”狀態(tài)、“檢測(cè)GPRS TCP/UDP連接狀態(tài)”狀態(tài)、“GPRS Modem硬件復(fù)位”狀態(tài)、“GPRSModem重上電”狀態(tài)及“軟件系統(tǒng)軟復(fù)位”狀態(tài)構(gòu)成。
[0041]如圖4所示,所述GPRS鏈路建立及保持任務(wù)的狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換機(jī)制如下:
a、進(jìn)入“GPRSModem初始化”狀態(tài),在此狀態(tài)下進(jìn)行GPRS Modem初始化,在初始化的每一個(gè)Modem的AT指令操作時(shí),均采用了“確定性的Modem AT指令操作機(jī)制”;若Modem初始化成功則進(jìn)入“建立GPRS PPP連接”狀態(tài),若初始化失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài);
b、在“建立GPRSPPP連接”狀態(tài)下,通過(guò)向GPRS Modem發(fā)送AT指令嘗試建立PPP連接,若建立連接成功,則進(jìn)入“建立GPRS TCP/UDP連接”狀態(tài),若連續(xù)3次嘗試建立PPP連接失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài);
C、在“建立GPRS TCP/UDP連接”狀態(tài)下,根據(jù)系統(tǒng)參數(shù)的配置選擇嘗試與指定的服務(wù)器端口建立TCP連接或UDP連接,若建立連接成功,則進(jìn)入“登錄遠(yuǎn)程服務(wù)器”狀態(tài),若連續(xù)3次嘗試建立TCP/UDP連接失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài);
d、在“登錄遠(yuǎn)程服務(wù)器”狀態(tài)下,采用“可靠登錄GPRS網(wǎng)絡(luò)機(jī)制”進(jìn)行服務(wù)器的遠(yuǎn)程登錄操作;置位向服務(wù)器發(fā)送登錄數(shù)據(jù)包的標(biāo)志位,等待數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行檢測(cè)并構(gòu)建、傳遞登錄數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送,并等待服務(wù)器的登錄數(shù)據(jù)包反饋,若在指定的等待時(shí)間內(nèi)接收到服務(wù)器的登錄數(shù)據(jù)包反饋,則說(shuō)明登錄服務(wù)器成功,進(jìn)入“檢測(cè)GPRSPPP連接狀態(tài)”狀態(tài),否則說(shuō)明登錄服務(wù)器失敗,若連續(xù)3次登錄服務(wù)器失敗,則進(jìn)入“GPRSModem硬件復(fù)位”狀態(tài);
e、在“檢測(cè)GPRSPPP連接狀態(tài)”狀態(tài)下,實(shí)現(xiàn)了“終端實(shí)時(shí)在線檢測(cè)機(jī)制”。通過(guò)定期向GPRS Modem發(fā)送AT指令檢測(cè)GPRS PPP連接的狀態(tài),若GPRS PPP連接正常,則進(jìn)入“檢測(cè)GPRS TCP/UDP連接狀態(tài)”狀態(tài),若連續(xù)3次檢測(cè)到GPRS PPP連接斷開,則進(jìn)入“建立GPRSPPP連接”狀態(tài),重新建立GPRS PPP連接;之所以需要定期檢測(cè)GPRS PPP連接狀態(tài),是由于GPRS網(wǎng)絡(luò)本身的網(wǎng)絡(luò)狀況會(huì)導(dǎo)致GPRS無(wú)線監(jiān)控節(jié)點(diǎn)掉線,為了保證GPRS無(wú)線監(jiān)控節(jié)點(diǎn)與服務(wù)器的正常通信,GPRS無(wú)線監(jiān)控節(jié)點(diǎn)必須知道何時(shí)從GPRS網(wǎng)絡(luò)上掉線,從而及時(shí)重新建立PPP連接以及TCP/UDP連接。
[0042]f、在“檢測(cè)GPRS TCP/UDP連接狀態(tài)”狀態(tài)下,采用“心跳機(jī)制”實(shí)現(xiàn)TCP/UDP鏈路的連接狀態(tài)檢測(cè)。通過(guò)定期向服務(wù)器發(fā)送心跳數(shù)據(jù)包來(lái)檢測(cè)GPRS TCP/UDP連接的狀態(tài),若GPRS TCP/UDP連接正常,則進(jìn)入“檢測(cè)GPRS PPP連接狀態(tài)”狀態(tài),若連續(xù)3次檢測(cè)到GPRSTCP/UDP連接斷開,則進(jìn)入“建立GPRS TCP/UDP連接”狀態(tài),重新建立GPRS TCP/UDP連接。其中,向服務(wù)器發(fā)送心跳數(shù)據(jù)包的實(shí)現(xiàn)方式與發(fā)送登錄數(shù)據(jù)包類似,通過(guò)置位向服務(wù)器發(fā)送心跳數(shù)據(jù)包的標(biāo)志位,等待數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行檢測(cè)并構(gòu)建、傳遞心跳數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送,并等待服務(wù)器的心跳數(shù)據(jù)包反饋,若在指定的等待時(shí)間內(nèi)接收到服務(wù)器的心跳數(shù)據(jù)包反饋,則說(shuō)明TCP/UDP連接正常,否則認(rèn)為TCP/UDP連接斷開。
[0043]g、在“GPRS Modem硬件復(fù)位”狀態(tài)下,執(zhí)行GPRS Modem硬件復(fù)位動(dòng)作,并累計(jì)GPRS Modem硬件復(fù)位的次數(shù),若GPRS Modem硬件復(fù)位的次數(shù)超過(guò)3次,則進(jìn)入“GPRS Modem重上電”狀態(tài),否則進(jìn)入“GPRS Modem初始化”狀態(tài);
h、在“GPRSModem重上電”狀態(tài)下,依次執(zhí)行GPRS Modem關(guān)機(jī)、斷電、上電、開機(jī)操作,并累計(jì)GPRS Modem重上電的次數(shù),若GPRS Modem重上電的次數(shù)超過(guò)3次,則進(jìn)入“軟件系統(tǒng)軟復(fù)位”狀態(tài),否則進(jìn)入“GPRS Modem初始化”狀態(tài);
1、在“軟件系統(tǒng)軟復(fù)位”狀態(tài)下,執(zhí)行軟件系統(tǒng)軟復(fù)位動(dòng)作,重啟軟件系統(tǒng),進(jìn)而在建立GPRS鏈路建立及保持任務(wù)后,進(jìn)入“GPRS Modem初始化”狀態(tài)。
所述Modem AT指令操作機(jī)制是針對(duì)GPRS無(wú)線通信模塊對(duì)不同AT指令的響應(yīng)時(shí)間不一致,采用超時(shí)機(jī)制,即根據(jù)每個(gè)AT命令不同的響應(yīng)時(shí)間設(shè)置不同的等待時(shí)間,若指定時(shí)間內(nèi)獲得返回值則結(jié)束等待,超時(shí)則自動(dòng)結(jié)束等待,保證Modem AT指令操作的可靠性。
[0044]所述可靠登錄GPRS網(wǎng)絡(luò)機(jī)制采用超時(shí)機(jī)制進(jìn)行登錄,即監(jiān)控節(jié)點(diǎn)登錄時(shí),若等待登錄反饋超時(shí),則認(rèn)為登錄失敗,多次登錄失敗后,則重新復(fù)位GPRS無(wú)線通信模塊。
[0045]所述心跳機(jī)制為GPRS監(jiān)控終端定時(shí)向后臺(tái)服務(wù)器發(fā)送心跳包,若?;顣r(shí)間內(nèi)未收到心跳包反饋,則認(rèn)為鏈路已斷開,自動(dòng)斷開現(xiàn)有連接并重新建立鏈路;盡管GPRS有一直在線的特點(diǎn),但當(dāng)GPRS長(zhǎng)時(shí)間在線卻無(wú)數(shù)據(jù)傳輸時(shí),數(shù)據(jù)業(yè)務(wù)級(jí)別會(huì)自動(dòng)被降低,采用心跳機(jī)制即當(dāng)系統(tǒng)長(zhǎng)時(shí)間沒(méi)有有效數(shù)據(jù)傳輸?shù)臅r(shí)候,監(jiān)控節(jié)點(diǎn)按照一定的時(shí)間間隔向服務(wù)器發(fā)送一幀無(wú)效數(shù)據(jù),從而保持?jǐn)?shù)據(jù)傳輸業(yè)務(wù)處于較高的優(yōu)先級(jí)別,維持GPRS數(shù)據(jù)鏈路。
[0046]所述終端實(shí)時(shí)在線檢測(cè)機(jī)制是通過(guò)周期性檢測(cè)GPRS PPP連接狀態(tài),可及時(shí)檢測(cè)到節(jié)點(diǎn)是否從GPRS網(wǎng)絡(luò)掉線,若掉線則執(zhí)行嘗試重新?lián)芴?hào)連接操作,從而保證監(jiān)控節(jié)點(diǎn)實(shí)時(shí)在線;由于GPRS網(wǎng)絡(luò)本身的不穩(wěn)定性可能會(huì)導(dǎo)致GPRS無(wú)線監(jiān)控節(jié)點(diǎn)掉線,為了保證監(jiān)控節(jié)點(diǎn)與服務(wù)器的正常通信,監(jiān)控節(jié)點(diǎn)必須知道何時(shí)從GPRS網(wǎng)絡(luò)上掉線,進(jìn)而重新建立PPP連接以及TCP/UDP連接。
[0047]所述“GPRS Modem硬件復(fù)位”、“GPRS Modem重上電”、“軟件系統(tǒng)軟復(fù)位”三種狀態(tài)構(gòu)成了 GPRS鏈路建立及保持任務(wù)的三重重啟機(jī)制;保證監(jiān)控節(jié)點(diǎn)在掉線后能夠恢復(fù)與后臺(tái)服務(wù)器的連接,從而實(shí)現(xiàn)GPRS無(wú)線監(jiān)控節(jié)點(diǎn)的可靠聯(lián)網(wǎng)。
[0048]如圖5所示,GPRS Modem初始化流程如下:
(I)首先對(duì)GPRS Modem進(jìn)行AT指令測(cè)試,若測(cè)試成功則關(guān)閉Modem的AT指令回顯功能,接著進(jìn)行SIM卡測(cè)試;若連續(xù)3次測(cè)試失敗則結(jié)束GPRS Modem初始化,并返回初始化失敗信息。
[0049](2)若SM卡測(cè)試成功則進(jìn)行GPRS信號(hào)質(zhì)量測(cè)試;若連續(xù)3次SM卡測(cè)試失敗,貝IJ結(jié)束GPRS Modem初始化,并返回初始化失敗信息。
[0050](3)若GPRS信號(hào)質(zhì)量好則進(jìn)行GPRS Modem網(wǎng)絡(luò)注冊(cè);若GPRS信號(hào)不可用,則結(jié)束GPRS Modem初始化,并返回初始化失敗信息。
[0051](4)若GPRS Modem網(wǎng)絡(luò)注冊(cè)成功,則進(jìn)行短消息(SMS)相關(guān)參數(shù)初始化;若連續(xù)3次GPRS Modem網(wǎng)絡(luò)注冊(cè)失敗,則結(jié)束GPRS Modem初始化,并返回初始化失敗信息。
[0052](5)若短消息(SMS)相關(guān)參數(shù)初始化成功,則讀取GPRS Modem信息,結(jié)束GPRSModem初始化,并返回初始化成功信息;若短消息(SMS)相關(guān)參數(shù)初始化失敗,則結(jié)束GPRSModem初始化,并返回初始化失敗信息。
[0053]以上初始化過(guò)程中的各種測(cè)試或操作的次數(shù)并不限于3次,可根據(jù)實(shí)際的應(yīng)用場(chǎng)合進(jìn)行調(diào)整。
[0054]如圖6所示,所述多任務(wù)應(yīng)用程序?qū)崿F(xiàn)了多任務(wù)軟件看門狗,該多任務(wù)軟件看門狗由每個(gè)任務(wù)的軟件看門狗子程序,以及多任務(wù)軟件看門狗喂狗子程序構(gòu)成;每個(gè)任務(wù)的軟件看門狗子程序主要負(fù)責(zé)該任務(wù)軟件看門狗的初始化,并在主循環(huán)中更新該任務(wù)軟件看門狗的計(jì)數(shù)器;多任務(wù)軟件看門狗喂狗子程序則在每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)檢查每個(gè)任務(wù)的軟件看門狗是否已超時(shí),只要某個(gè)任務(wù)的軟件看門狗超時(shí),就通過(guò)硬件看門狗完成對(duì)系統(tǒng)的復(fù)位。
[0055]其中,每個(gè)任務(wù)的軟件看門狗子程序主要包括定時(shí)器的初始值的賦值以及計(jì)數(shù)器的更新,具體地:在每個(gè)任務(wù)起始處都需要初始化該任務(wù)的軟件看門狗,包括將軟件看門狗定時(shí)器的初始值賦值為該任務(wù)的超時(shí)值,并開啟該任務(wù)的軟件看門狗。此外,在每個(gè)任務(wù)的主循環(huán)中都要對(duì)該任務(wù)軟件看門狗的計(jì)數(shù)器進(jìn)行更新。
[0056]多任務(wù)軟件看門狗喂狗子程序位于系統(tǒng)時(shí)鐘節(jié)拍鉤子函數(shù),在每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)被調(diào)用一次。多任務(wù)軟件看門狗喂狗子程序流程說(shuō)明如下:
進(jìn)入多任務(wù)軟件看門狗喂狗子程序后,首先檢查“停止喂硬件看門狗標(biāo)志位”是否為真,如果為真,則直接結(jié)束多任務(wù)軟件看門狗喂狗子程序;如果不為真,則依次對(duì)每個(gè)任務(wù)的軟件看門狗狀態(tài)進(jìn)行檢查,步驟如下:檢查該任務(wù)軟件看門狗計(jì)數(shù)器是否已更新,若已更新,則重置該任務(wù)軟件看門狗定時(shí)器的值為該任務(wù)的超時(shí)值,并繼續(xù)進(jìn)行下一個(gè)任務(wù)的軟件看門狗狀態(tài)檢查;若未更新,則首先將該任務(wù)軟件看門狗定時(shí)器的值減1,然后判斷該任務(wù)軟件看門狗定時(shí)器的值是否為零,為零則說(shuō)明該任務(wù)軟件看門狗定時(shí)器已超時(shí),置位“停止喂硬件看門狗標(biāo)志位”為真,直接結(jié)束多任務(wù)軟件看門狗喂狗子程序,不為零則繼續(xù)進(jìn)行下一個(gè)任務(wù)的軟件看門狗狀態(tài)檢查。按照上述步驟依次完成對(duì)每個(gè)任務(wù)軟件看門狗的狀態(tài)檢查,然后執(zhí)行喂硬件看門狗的步驟,最后結(jié)束多任務(wù)軟件看門狗喂狗子程序。
[0057]如圖7所示,殼體采用內(nèi)上外下的殼體結(jié)構(gòu),材料為鋁合金;上下殼體之間采用密封條進(jìn)行密封,密封條為硅橡膠材料,安裝于上殼體內(nèi)的凹槽中;上下殼體采用螺紋進(jìn)行連接并壓緊上下殼體之間的密封條,達(dá)到密封的效果;接插件選用PG7電纜防水接頭,安裝位置均布置于殼體兩側(cè);硬件電路板通過(guò)螺紋連接固定在下殼體內(nèi)。
[0058]對(duì)于【具體實(shí)施方式】的理解的描述僅僅是為幫助理解本發(fā)明,而不是用來(lái)限制本發(fā)明的。本領(lǐng)域技術(shù)人員均可以利用本發(fā)明的思想進(jìn)行一些改動(dòng)和變化,只要其技術(shù)手段沒(méi)有脫離本發(fā)明的思想和要點(diǎn),仍然在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于GPRS監(jiān)控終端的軟件系統(tǒng),其特征在于:所述軟件系統(tǒng)由底層硬件驅(qū)動(dòng)程序、嵌入式操作系統(tǒng)及多任務(wù)應(yīng)用程序構(gòu)成; 所述多任務(wù)應(yīng)用程序基于多任務(wù)設(shè)計(jì)方式實(shí)現(xiàn),多任務(wù)包括:開始任務(wù)、Modem串口接收任務(wù)、GPRS調(diào)度任務(wù)、數(shù)據(jù)解析轉(zhuǎn)換任務(wù)、GPRS鏈路建立及保持任務(wù)、系統(tǒng)監(jiān)控告警任務(wù)、設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù); 所述GPRS鏈路建立及保持任務(wù)的狀態(tài)機(jī)包含狀態(tài)轉(zhuǎn)換過(guò)程; 所述多任務(wù)應(yīng)用程序?qū)崿F(xiàn)了多任務(wù)軟件看門狗,該多任務(wù)軟件看門狗由每個(gè)任務(wù)的軟件看門狗子程序,以及多任務(wù)軟件看門狗喂狗子程序構(gòu)成; 所述多任務(wù)應(yīng)用程序?qū)崿F(xiàn)了多任務(wù)軟件看門狗,該多任務(wù)軟件看門狗由每個(gè)任務(wù)的軟件看門狗子程序,以及多任務(wù)軟件看門狗喂狗子程序構(gòu)成;每個(gè)任務(wù)的軟件看門狗子程序主要負(fù)責(zé)該任務(wù)軟件看門狗的初始化,并在主循環(huán)中更新該任務(wù)軟件看門狗的計(jì)數(shù)器;多任務(wù)軟件看門狗喂狗子程序則在每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)檢查每個(gè)任務(wù)的軟件看門狗是否已超時(shí),只要某個(gè)任務(wù)的軟件看門狗超時(shí),就通過(guò)硬件看門狗完成對(duì)系統(tǒng)的復(fù)位。
2.根據(jù)權(quán)利要求1所述的一種基于GPRS監(jiān)控終端的軟件系統(tǒng),其特征在于,所述多任務(wù)設(shè)計(jì)如下: 開始任務(wù):首先啟動(dòng)GPRS無(wú)線通信模塊,接著檢測(cè)嵌入式微控制器本地配置串口是否接收到進(jìn)入配置狀態(tài)的指令,若在設(shè)定時(shí)間內(nèi)未檢測(cè)到該指令,則進(jìn)入系統(tǒng)正常啟動(dòng)狀態(tài),否則進(jìn)入系統(tǒng)參數(shù)配置狀態(tài); Modem串口接收任務(wù)=Modem串口接收任務(wù)主要負(fù)責(zé)定期查詢與GPRS無(wú)線通信模塊相連接的嵌入式微控制器的串口緩沖區(qū)中是否有GPRS無(wú)線通信模塊發(fā)來(lái)的數(shù)據(jù),若有,則取出并送入Modem接收數(shù)據(jù)消息隊(duì)列; GPRS調(diào)度任務(wù):GPRS調(diào)度任務(wù)完成GPRS無(wú)線通信模塊數(shù)據(jù)、短消息的接收,以及GPRS數(shù)據(jù)、短消息的發(fā)送; 數(shù)據(jù)解析轉(zhuǎn)換任務(wù):數(shù)據(jù)解析轉(zhuǎn)換任務(wù)定期依次查詢以下標(biāo)志位并進(jìn)行相應(yīng)的處理:查詢數(shù)據(jù)接收標(biāo)志位,若該標(biāo)志位為真,則對(duì)接收到的數(shù)據(jù)進(jìn)行解析;查詢數(shù)據(jù)發(fā)送標(biāo)志位,若該標(biāo)志位為真,則構(gòu)建發(fā)送數(shù)據(jù)包并傳遞給GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送; 系統(tǒng)監(jiān)控告警任務(wù):系統(tǒng)監(jiān)控告警任務(wù)完成對(duì)系統(tǒng)狀態(tài)及采集到的設(shè)備實(shí)時(shí)數(shù)據(jù)的異常監(jiān)測(cè),通過(guò)定期檢測(cè)系統(tǒng)的運(yùn)行狀態(tài),從而及時(shí)發(fā)現(xiàn)系統(tǒng)異常,并在檢測(cè)到異常事件時(shí)置位相應(yīng)的告警標(biāo)志位,并置位發(fā)送系統(tǒng)異常告警數(shù)據(jù)包的標(biāo)志位,以便數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行查詢、構(gòu)建并傳遞系統(tǒng)告警數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送; 設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù):設(shè)備數(shù)據(jù)采集存儲(chǔ)上傳任務(wù)定期完成對(duì)設(shè)備實(shí)時(shí)數(shù)據(jù)的采集、存儲(chǔ),并置位設(shè)備實(shí)時(shí)數(shù)據(jù)上傳標(biāo)志位,以便數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行查詢、構(gòu)建并傳遞設(shè)備實(shí)時(shí)數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送; GPRS鏈路建立及保持任務(wù):GPRS鏈路建立及保持任務(wù)完成GPRS通信鏈路的建立及維持,該任務(wù)采用了狀態(tài)機(jī)實(shí)現(xiàn),該狀態(tài)機(jī)由“GPRS Modem初始化”狀態(tài)、“建立GPRS PPP連接”狀態(tài)、“建立GPRS TCP/UDP連接”狀態(tài)、“登錄遠(yuǎn)程服務(wù)器”狀態(tài)、“檢測(cè)GPRS PPP連接狀態(tài)”狀態(tài)、“檢測(cè)GPRS TCP/UDP連接狀態(tài)”狀態(tài)、“GPRS Modem硬件復(fù)位”狀態(tài)、“GPRSModem重上電”狀態(tài)、及“軟件系統(tǒng)軟復(fù)位”狀態(tài)構(gòu)成。
3.根據(jù)權(quán)利要求2所述的一種基于GPRS監(jiān)控終端的軟件系統(tǒng),其特征在于:所述Modem AT指令操作機(jī)制是針對(duì)GPRS無(wú)線通信模塊對(duì)不同AT指令的響應(yīng)時(shí)間不一致,采用超時(shí)機(jī)制,即根據(jù)每個(gè)AT命令不同的響應(yīng)時(shí)間設(shè)置不同的等待時(shí)間,若指定時(shí)間內(nèi)獲得返回值則結(jié)束等待,超時(shí)則自動(dòng)結(jié)束等待。
4.根據(jù)權(quán)利要求2所述的一種基于GPRS監(jiān)控終端的軟件系統(tǒng),其特征在于:所述可靠登錄GPRS網(wǎng)絡(luò)機(jī)制采用超時(shí)機(jī)制進(jìn)行登錄,即監(jiān)控節(jié)點(diǎn)登錄時(shí),若等待登錄反饋超時(shí),則認(rèn)為登錄失敗,多次登錄失敗后,則重新復(fù)位GPRS無(wú)線通信模塊。
5.根據(jù)權(quán)利要求2所述的一種基于GPRS監(jiān)控終端的軟件系統(tǒng),其特征在于:所述心跳機(jī)制為GPRS監(jiān)控終端定時(shí)向后臺(tái)服務(wù)器發(fā)送心跳包,若?;顣r(shí)間內(nèi)未收到心跳包反饋,則認(rèn)為鏈路已斷開,自動(dòng)斷開現(xiàn)有連接并重新建立鏈路。
6.根據(jù)權(quán)利要求2所述的一種基于GPRS監(jiān)控終端的軟件系統(tǒng),其特征在于:所述終端實(shí)時(shí)在線檢測(cè)機(jī)制是通過(guò)周期性檢測(cè)GPRS PPP連接狀態(tài),可及時(shí)檢測(cè)到節(jié)點(diǎn)是否從GPRS網(wǎng)絡(luò)掉線,若掉線則執(zhí)行嘗試重新?lián)芴?hào)連接操作,從而保證監(jiān)控節(jié)點(diǎn)實(shí)時(shí)在線。
7.根據(jù)權(quán)利要求2所述的一種基于GPRS監(jiān)控終端的軟件系統(tǒng),其特征在于:所述“GPRS Modem硬件復(fù)位”、“GPRS Modem重上電”、“軟件系統(tǒng)軟復(fù)位”三種狀態(tài)構(gòu)成了 GPRS鏈路建立及保持任務(wù)的三重重啟機(jī)制。
8.根據(jù)權(quán)利要求1或2所述的任種基于GPRS監(jiān)控終端的軟件系統(tǒng),其特征在于,所述GPRS鏈路建立及保持任務(wù)的狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換過(guò)程如下: a、進(jìn)入“GPRSModem初始化”狀態(tài),在此狀態(tài)下進(jìn)行GPRS Modem初始化,在初始化的每一個(gè)Modem的AT指令操作時(shí),均采用了“確定性的Modem AT指令操作機(jī)制”;若Modem初始化成功則進(jìn)入“建立GPRS PPP連接”狀態(tài),若初始化失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài); b、在“建立GPRSPPP連接”狀態(tài)下,通過(guò)向GPRS Modem發(fā)送AT指令嘗試建立PPP連接,若建立連接成功,則進(jìn)入“建立GPRS TCP/UDP連接”狀態(tài),若連續(xù)3次嘗試建立PPP連接失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài); C、在“建立GPRS TCP/UDP連接”狀態(tài)下,根據(jù)系統(tǒng)參數(shù)的配置選擇嘗試與指定的服務(wù)器端口建立TCP連接或UDP連接,若建立連接成功,則進(jìn)入“登錄后臺(tái)服務(wù)器”狀態(tài),若連續(xù)3次嘗試建立TCP/UDP連接失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài); d、在“登錄后臺(tái)服務(wù)器”狀態(tài)下,采用“可靠登錄GPRS網(wǎng)絡(luò)機(jī)制”進(jìn)行服務(wù)器的遠(yuǎn)程登錄操作;置位向服務(wù)器發(fā)送登錄數(shù)據(jù)包的標(biāo)志位,等待數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行檢測(cè)并構(gòu)建、傳遞登錄數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送,并等待后臺(tái)服務(wù)器的登錄數(shù)據(jù)包反饋,若在指定的等待時(shí)間內(nèi)接收到后臺(tái)服務(wù)器的登錄數(shù)據(jù)包反饋,則說(shuō)明登錄服務(wù)器成功,進(jìn)入“檢測(cè)GPRS PPP連接狀態(tài)”狀態(tài),否則說(shuō)明登錄服務(wù)器失敗,若連續(xù)3次登錄服務(wù)器失敗,則進(jìn)入“GPRS Modem硬件復(fù)位”狀態(tài); e、在“檢測(cè)GPRSPPP連接狀態(tài)”狀態(tài)下,實(shí)現(xiàn)了“終端實(shí)時(shí)在線檢測(cè)機(jī)制”,通過(guò)定期向GPRS Modem發(fā)送AT指令檢測(cè)GPRS PPP連接的狀態(tài),若GPRS PPP連接正常,則進(jìn)入“檢測(cè)GPRS TCP/UDP連接狀態(tài)”狀態(tài),若連續(xù)3次檢測(cè)到GPRS PPP連接斷開,則進(jìn)入“建立GPRSPPP連接”狀態(tài),重新建立GPRS PPP連接;之所以需要定期檢測(cè)GPRS PPP連接狀態(tài),是由于GPRS網(wǎng)絡(luò)本身的網(wǎng)絡(luò)狀況會(huì)導(dǎo)致GPRS無(wú)線監(jiān)控節(jié)點(diǎn)掉線,為了保證GPRS無(wú)線監(jiān)控節(jié)點(diǎn)與服務(wù)器的正常通信,GPRS無(wú)線監(jiān)控節(jié)點(diǎn)必須知道何時(shí)從GPRS網(wǎng)絡(luò)上掉線,從而及時(shí)重新建立PPP連接以及TCP/UDP連接; f、在“檢測(cè)GPRSTCP/UDP連接狀態(tài)”狀態(tài)下,采用“心跳機(jī)制”實(shí)現(xiàn)TCP/UDP鏈路的連接狀態(tài)檢測(cè),通過(guò)定期向服務(wù)器發(fā)送心跳數(shù)據(jù)包來(lái)檢測(cè)GPRS TCP/UDP連接的狀態(tài),若GPRSTCP/UDP連接正常,則進(jìn)入“檢測(cè)GPRS PPP連接狀態(tài)”狀態(tài),若連續(xù)3次檢測(cè)到GPRS TCP/UDP連接斷開,則進(jìn)入“建立GPRS TCP/UDP連接”狀態(tài),重新建立GPRS TCP/UDP連接,其中,向服務(wù)器發(fā)送心跳數(shù)據(jù)包的實(shí)現(xiàn)方式與發(fā)送登錄數(shù)據(jù)包類似,通過(guò)置位向服務(wù)器發(fā)送心跳數(shù)據(jù)包的標(biāo)志位,等待數(shù)據(jù)解析轉(zhuǎn)換任務(wù)進(jìn)行檢測(cè)并構(gòu)建、傳遞心跳數(shù)據(jù)包至GPRS調(diào)度任務(wù)進(jìn)行無(wú)線發(fā)送,并等待服務(wù)器的心跳數(shù)據(jù)包反饋,若在指定的等待時(shí)間內(nèi)接收到服務(wù)器的心跳數(shù)據(jù)包反饋,則說(shuō)明TCP/UDP連接正常,否則認(rèn)為TCP/UDP連接斷開; g、在“GPRSModem硬件復(fù)位”狀態(tài)下,執(zhí)行GPRS Modem硬件復(fù)位動(dòng)作,并累計(jì)GPRSModem硬件復(fù)位的次數(shù),若GPRS Modem硬件復(fù)位的次數(shù)超過(guò)3次,則進(jìn)入“GPRS Modem重上電”狀態(tài),否則進(jìn)入“GPRS Modem初始化”狀態(tài); h、在“GPRSModem重上電”狀態(tài)下,依次執(zhí)行GPRS Modem關(guān)機(jī)、斷電、上電、開機(jī)操作,并累計(jì)GPRS Modem重上電的次數(shù),若GPRS Modem重上電的次數(shù)超過(guò)3次,則進(jìn)入“軟件系統(tǒng)軟復(fù)位”狀態(tài),否則進(jìn)入“GPRS Modem初始化”狀態(tài); 1、在“軟件系統(tǒng)軟復(fù)位”狀態(tài)下,執(zhí)行軟件系統(tǒng)軟復(fù)位動(dòng)作,重啟軟件系統(tǒng),進(jìn)而在建立GPRS鏈路建立及保持任務(wù)后,進(jìn)入“GPRS Modem初始化”狀態(tài)。
9.根據(jù)權(quán)利要求1或2所述的任 種基于GPRS監(jiān)控終端的軟件系統(tǒng),其特征在于:每個(gè)任務(wù)的軟件看門狗子程序主要包括定時(shí)器的初始值的賦值以及計(jì)數(shù)器的更新,具體地:在每個(gè)任務(wù)起始處都需要初始化該任務(wù)的軟件看門狗,包括將軟件看門狗定時(shí)器的初始值賦值為該任務(wù)的超時(shí)值,并開啟該任務(wù)的軟件看門狗;此外,在每個(gè)任務(wù)的主循環(huán)中都要對(duì)該任務(wù)軟件看門狗的計(jì)數(shù)器進(jìn)行更新; 多任務(wù)軟件看門狗喂狗子程序位于系統(tǒng)時(shí)鐘節(jié)拍鉤子函數(shù),在每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)被調(diào)用一次; 多任務(wù)軟件看門狗喂狗子程序流程如下: 進(jìn)入多任務(wù)軟件看門狗喂狗子程序后,首先檢查“停止喂硬件看門狗標(biāo)志位”是否為真,如果為真,則直接結(jié)束多任務(wù)軟件看門狗喂狗子程序;如果不為真,則依次對(duì)每個(gè)任務(wù)的軟件看門狗狀態(tài)進(jìn)行檢查,步驟如下:檢查該任務(wù)軟件看門狗計(jì)數(shù)器是否已更新,若已更新,則重置該任務(wù)軟件看門狗定時(shí)器的值為該任務(wù)的超時(shí)值,并繼續(xù)進(jìn)行下一個(gè)任務(wù)的軟件看門狗狀態(tài)檢查;若未更新,則首先將該任務(wù)軟件看門狗定時(shí)器的值減1,然后判斷該任務(wù)軟件看門狗定時(shí)器的值是否為零,為零則說(shuō)明該任務(wù)軟件看門狗定時(shí)器已超時(shí),置位“停止喂硬件看門狗標(biāo)志位”為真,直接結(jié)束多任務(wù)軟件看門狗喂狗子程序,不為零則繼續(xù)進(jìn)行下一個(gè)任務(wù)的軟件看門狗狀態(tài)檢查; 按照上述步驟依次完成對(duì)每個(gè)任務(wù)軟件看門狗的狀態(tài)檢查,然后執(zhí)行喂硬件看門狗的步驟,最后結(jié)束多任務(wù)軟件看門狗喂狗子程序。
【文檔編號(hào)】G08C17/02GK104200629SQ201410440657
【公開日】2014年12月10日 申請(qǐng)日期:2014年9月1日 優(yōu)先權(quán)日:2014年9月1日
【發(fā)明者】徐立強(qiáng), 范傳康, 董娜, 姜周, 湯卿, 吳建東 申請(qǐng)人:中國(guó)東方電氣集團(tuán)有限公司