韋啟 李爭平 黃明 仵松頎
摘 要:地面控制裝置主要運用UDP作為通信協議,系統軟件的基本功能包括軟件上電自檢與遠程控制自檢、數據采集與上傳、遠程命令接收與處理及繼電器控制。文中對系統各功能模塊的設計思想做了簡要闡述,并給出時序圖與流程圖、軟件測試方法、實驗記錄及結果分析。
關鍵詞:地面控制裝置;UDP通信;上電自檢;遠程控制;時序圖;流程圖
中圖分類號:TP277文獻標識碼:A文章編號:2095-1302(2019)03-00-04
0 引 言
近年來,隨著國家航空航天研究的深入,無人機悄然興起,主要應用于一些惡劣環境的探索及長時間實時數據的收集。無人機執行的是長時間惡劣環境下的數據采集任務,同時需要與地面站之間能夠有大規模數據交互,且對數據采集的精度要求極高。基于此,本文主要通過Keil4環境開發基于嵌入式的無人機地面控制裝置,實現無人機遠距離數據采集與實時控制。嵌入式系統是一種以控制、監控或輔助各種操作機器與設備為目的的裝置,是運用計算機技術,圍繞應用需求,對軟件、硬件進行相應裁剪,使功能、成本、體積、功耗以及可靠性等都能適應相應要求的專用計算機系統[1]。
1 系統設計與實現
1.1 通信協議設計
在嵌入式領域有多種通信協議可供選擇。由于嵌入式終端實現了網絡通信,故可考慮通過以太網的TCP/IP或UDP協議實現系統與上位機的通信,現就這兩種協議的異同進行討論,以選擇更適合本文系統的協議。
1.1.1 TCP/IP協議
傳輸控制協議(Transmission Control Protocol,TCP)是基于連接的協議[2],即在正式收發數據前,須與對方建立可靠連接。一個TCP連接必須經過3次“對話”才能建立起來,3次“對話”的目的是使數據包的發送與接收同步,經過3次“對話”后,兩個主機才能正式發送數據。
1.1.2 UDP協議
用戶數據報協議(User Data Protocol,UDP)是與TCP相對應的協議。它是面向非連接的協議,不與對方建立連接,而直接把數據包發送過去。
1.1.3 二者差異
由于TCP/IP協議是面向協議的通信,因此需要兩個設備之間建立連接,且TCP/IP管發管到,安全性更高。而UDP協議是面向非協議的通信,可用于組播發送,只需組播地址并加入組播就可收到廣播,實時性更強。
綜上所述,只需使系統將采集到的數據發送到上位機即可,且鑒于對數據采集的實時性要求較高,因此本文采用UDP協議進行通信。
1.2 系統架構設計
針對本文系統性能要求,選擇STM32F407ZGT作為系統核心處理模塊,內核為Cortex-M4[3]。STM32F407ZGT核心板ADC為12位,最多可采集24通道數據,滿足設計要求。此核心板還支持10/100 Ethernet MAC以太網通信,可工作在-40~105 ℃環境下。
根據設計需求,系統采用中斷與時間片輪詢軟件架構,可保證系統數據采集與控制的實時性。系統軟件的基本功能包括軟件上電自檢與遠程控制自檢、數據采集與上傳、遠程命令接收與處理、繼電器控制。軟件執行的基本時序是:系統開機后進行設備自檢與系統自檢,自檢通過后進入中斷監聽程序,待發生中斷后做出相應動作,執行過程中進行系統自檢,隨時上報自檢結果。系統結構如圖1所示,軟件執行時序如圖2所示。
主線程偽代碼如下:
sysInit();//系統初始化
GPIO_ResetBits(GPIOB,GPIO_Pin_13);
//自檢開始,點亮黃燈
powerSelfCheck();//電源自檢
controlSelfCheck();//控制自檢
networkSelfCheck();//網絡自檢
GPIO_SetBits(GPIOB,GPIO_Pin_13);//自檢結束黃燈滅
Set_IP4_ADDR(&ipMultiCast,UDP_MC_REMOTE_IP);
//遠端IP
while(1)//主循環
軟件上電自檢流程如圖3所示。
軟件上電自檢過程中,狀態指示燈紅閃;自檢結束并異常,狀態指示燈紅色常亮;自檢結束并正常,狀態指示燈綠色常亮。
由于通過ADC采集到的數據為十六進制數,因此需要經過與參數做運算實現數值轉換,以便進行判斷比較。
網口遠程控制自檢過程可獨立控制不同繼電器控制電路的自檢。第1,2,4路自檢與上電自檢流程相同;第3路自檢需要在遠程控制開關閉合狀態下完成,具體流程如圖4所示。
基于定時中斷的采樣過程采用周期定時中斷方式進行[4],每次采樣完成所有24通道ADC采樣過程,將采樣結果上報上位機。
基于程序控制采樣過程可以命令采集不同通道的樣值上報,每次采集一個通道的樣值。
程序設置看門狗計數器,當程序出現異常時控制程序自動重啟。
系統中主要采用定時中斷、網口通信中斷,網口通信中斷優先于定時中斷。
系統采用定時向上位機發送采樣值的方式報告地面控制裝置的狀態。若超時未發送采樣值,則說明地面控制裝置異常。同時,每次上報采樣值后,上位機需應答確認。若地面控制裝置接收上位機應答確認超時,則控制狀態指示燈黃色常亮。
1.3 網絡模塊軟件設計
網絡模塊選擇以太網接口芯片DP83848,DP83848支持IEEE 802.3u以太網協議,且可工作在-40~125 ℃環境下,既能滿足網絡通信需求,又能工作于惡劣環境。為了使主控板能夠對DP83848進行正確讀寫,并使DP83848處于激活狀態,以便指令數據收發,需要對網卡進行初始化[5]。
網絡初始化流程如圖5所示。在網絡初始化過程中,若出現異常則狀態指示燈黃閃。
1.4 與上位機通信過程設計
地面控制裝置與上位機通信包括控制命令與采樣上報兩種信息。控制命令執行時序如圖6所示,采樣上報執行時序如圖7所示。
1.5 系統軟件與上位機指令協議說明
通信協議具體要求如下:
(1)使用UDP協議。1號裝置IP地址為192.168.70.11,組播地址為224.0.10.1,端口號為0x8001;2號裝置IP地址為192.168.70.12,組播地址為224.0.10.2,端口號為0x8002。
(2)收到的上位機發控指令幀格式與向上位機上報的發控數據幀格式見表1、表2所列。
①動作序號代碼中0000H代表動作開關1;00FFH代表動作開關2;0F0FH代表動作開關3;3333H代表動作開關4;FFFFH代表動作開關5。
②動作指令代碼中0000H代表撤銷繼電器控制電壓;FFFFH代表添加繼電器控制電壓。
③動作持續時間0000H代表接收到此命令后立刻執行,直至收到下一個同動作序號代碼的指令;其余代表收到此命令后立刻執行,直至收到下一個同動作序號代碼的指令或持續到本條指令中動作持續時間結束(實際動作持續時間=指令中動作持續時間×1 ms)。
①發控數據幀10 ms上報一次。
②當收到發控指令后,下一幀發控數據幀中發控指令回令部分填寫收到指令4~9 B的內容,未收到指令時發控指令回令部分填寫55555555H。
③每條發控指令發送3次,2次間隔10 ms,要求在收到1條發控指令后50 ms內回復,但不響應相同的指令。
④幀計數在第一幀上報時填寫00000001H,往后每幀加1H。
2 系統軟件測試
軟件測試主要采用白盒測試的方式,包括功能測試與性能測試。
功能測試主要對每條控制指令執行情況進行測試,包括繼電器控制指令測試、采集信號控制指令測試與系統自檢控制指令測試。
性能測試包括指令響應時間測試與壓力測試,模擬實際控制場景進行壓力測試,統計遠程控制命令的響應時間。
首先進行指令測試,給設備通電,然后使用上位機向設備發送命令,讀取設備采集到的數據,并將數據發送到上位機上,同時寫入文件,再用示波器對測試結果進行檢驗。
上位機發送指令采集數據界面如圖8所示。利用上位機發送命令,使繼電器1,2,4,5處于打開狀態,繼電器3處于關閉狀態,此時可觀察到A/D采集到的數據。由于供給設備30 V穩壓直流電源,故圖中通道C1~C10采集的數據均為30 V上下,同時這些數據均寫入文件。圖9所示為寫入文件的數據,同時使用示波器進行采集,發現滿足每10 ms上傳一次數據,結果如圖10所示。
采用STM32嵌入式開發的無人機地面控制裝置實現了遠距離數據采集與實時控制,使得無人機在惡劣環境下仍可執行數據采集與上傳任務,在確保數據精度的情況下,為人們探索一些人力所不能及的地方提供了新的可能。
本文系統通過UDP協議進行通信,確保通信實時性的同時擁有獨立的指令協議,實現了通信可靠性。該裝置在與軟件聯調時發現的諸多問題在一次次排錯與整改中得到了排除,在保障安全性、維修性與可靠性的前提下進行三化設計,最終基本實現了要求的功能及指標。
參 考 文 獻
[1]季國華.基于DSP的嵌入式系統網絡通信技術應用[J].無線互聯技術,2017(24):3-4.
[2]李逸瀚,石春,吳剛.基于μC/TCP-IP協議棧的嵌入式以太網通信系統[J].計算機應用與軟件,2017,34(9):153-158.
[3]李德佶,吳萬敏.基于STM32和SIM800C的小型嵌入式監控設備的設計與開發方案:以小微企業污水處理為例[J].科技與創新,2018(3):36-38.
[4] SCAGLIA S.The embedded internet TCP/IP basics:implementation and application[M].北京:北京航空航天大學出版社,2008:67-98.
[5]戚新建,章偉.基于STM32的快速嵌入式以太網接口[J].儀表技術與傳感器,2017(7):45-49.
[6]譚浩強.C語言程序設計[M].4版.北京:清華大學出版杜,2010.
[7]康一梅.嵌入式程序設計[M]. 北京:機械工業出版社,2007.
[8]范延濱,李小康.嵌入式Linux下WiFi接入技術研究[J].物聯網技術,2014,4(10):30-32.
[9]姚莉,鄧丹君.基于A8的嵌入式Linux遠程視頻監控系統的設計與實現[J].物聯網技術,2016,6(5):24-26.
[10]張仕海,周穎.基于ARM的嵌入式視頻監控系統的硬件設計[J].物聯網技術,2017,7(5):12-14,17.
[11]彭旭.基于嵌入式系統的通信控制器設計與開發[D].哈爾濱:哈爾濱工業大學,2007.