韓林
(中國西南電子技術(shù)研究所,成都610036)
基于VxWorks的嵌入式二次雷達(dá)航跡記錄儀設(shè)計(jì)?
韓林
(中國西南電子技術(shù)研究所,成都610036)
為實(shí)現(xiàn)對(duì)二次雷達(dá)航跡數(shù)據(jù)的實(shí)時(shí)記錄以及事后的回放分析,設(shè)計(jì)并研制了基于VxWorks實(shí)時(shí)系統(tǒng)的嵌入式記錄儀,采用自定義緩沖隊(duì)列的數(shù)據(jù)傳輸機(jī)制,充分考慮了任務(wù)之間的同步及互斥,并利用PC104板卡的硬件輔助時(shí)鐘進(jìn)行系統(tǒng)設(shè)計(jì)。實(shí)踐證明,在航跡數(shù)據(jù)均值速率3.84 kbyte/s(96批/秒)(峰值速率為20.48 kbyte/s即512批/秒)的情況下,能達(dá)到正常實(shí)況回放的效果。
二次雷達(dá);航跡數(shù)據(jù);記錄儀;VxWorks嵌入式系統(tǒng);緩沖隊(duì)列;輔助時(shí)鐘;任務(wù)互斥
在工程項(xiàng)目中,二次雷達(dá)系統(tǒng)需要配備一套基于以太網(wǎng)絡(luò)的記錄回放設(shè)備,用作記錄目標(biāo)航跡數(shù)據(jù),并在事后可對(duì)所記錄的數(shù)據(jù)進(jìn)行回放分析。
目前,廣為實(shí)現(xiàn)并被使用的記錄回放設(shè)備主要有雷達(dá)等高速信號(hào)或各種視頻信號(hào)采集及回放系統(tǒng)[1],還有一部分記錄回放設(shè)備被使用在了飛行器或空管系統(tǒng)的航跡記錄與回放分系統(tǒng)中[2],本設(shè)備類似于后者。
該設(shè)備以VxWorks嵌入式系統(tǒng)為設(shè)備運(yùn)作平臺(tái)。VxWorks是目前嵌入式系統(tǒng)領(lǐng)域中被廣泛應(yīng)用且市場占有率比較高的嵌入式操作系統(tǒng),同時(shí)也具有較強(qiáng)的網(wǎng)絡(luò)功能。該操作系統(tǒng)具有高效的代碼和良好的可裁剪性,以及良好的可移植性。系統(tǒng)提供基于優(yōu)先級(jí)的任務(wù)調(diào)度、任務(wù)間同步與通信、中斷處理、定時(shí)器和內(nèi)存管理等功能。
本項(xiàng)目研發(fā)過程中利用了VxWorks系統(tǒng)的多任務(wù)調(diào)度機(jī)制,以由數(shù)據(jù)描述結(jié)構(gòu)體組成的自定義緩沖隊(duì)列[3]為記錄(回放)數(shù)據(jù)的緩存及在任務(wù)間傳遞的方式,代替了以消息隊(duì)列為任務(wù)間通信的傳統(tǒng)方式;軟件流程設(shè)計(jì)上,以命令解釋任務(wù)為所有遠(yuǎn)程網(wǎng)絡(luò)命令響應(yīng)任務(wù)生成的源頭,有效提升了多任務(wù)運(yùn)行環(huán)境下任務(wù)之間的互斥性能,從而增加了系統(tǒng)運(yùn)行的可靠性;同時(shí),為了達(dá)到在數(shù)據(jù)回放時(shí)能較精確地實(shí)現(xiàn)數(shù)據(jù)的實(shí)況回放(回放的數(shù)據(jù)(信號(hào))與當(dāng)初采集的數(shù)據(jù)(信號(hào))格式基本相同且速度相同),還利用到了系統(tǒng)運(yùn)行硬件平臺(tái)——PC104板卡中的輔助時(shí)鐘來完成數(shù)據(jù)回放部分的設(shè)計(jì)。
2.1 軟件設(shè)計(jì)原理
記錄儀的主要軟件設(shè)計(jì)原理如圖1所示。描述,命令數(shù)據(jù)描述結(jié)構(gòu)體成員如下:
圖1 軟件設(shè)計(jì)主要流程框圖Fig.1 Software design flow diagram
為保證航跡數(shù)據(jù)的記錄不影響對(duì)網(wǎng)絡(luò)命令的響應(yīng),分別用兩個(gè)任務(wù)來執(zhí)行相關(guān)的操作,并分配各自的緩沖隊(duì)列;由唯一的命令解釋任務(wù)對(duì)網(wǎng)絡(luò)命令進(jìn)行分析判別,從而生成相應(yīng)的執(zhí)行任務(wù)。執(zhí)行結(jié)果數(shù)據(jù)直接送入網(wǎng)絡(luò)發(fā)送數(shù)據(jù)緩沖隊(duì)列;若是執(zhí)行回放操作,則生成兩個(gè)任務(wù)——由記錄文件數(shù)據(jù)讀取任務(wù)負(fù)責(zé)從記錄文件讀取回放數(shù)據(jù)并存入航跡數(shù)據(jù)回放緩沖隊(duì)列,由回放數(shù)據(jù)發(fā)送任務(wù)負(fù)責(zé)將從該緩沖隊(duì)列中順序取出的航跡數(shù)據(jù)按實(shí)況的時(shí)間間隔發(fā)送到網(wǎng)絡(luò)發(fā)送數(shù)據(jù)緩沖隊(duì)列。最后,網(wǎng)絡(luò)發(fā)送任務(wù)將網(wǎng)絡(luò)發(fā)送數(shù)據(jù)緩沖隊(duì)列中的數(shù)據(jù)順序無差別地發(fā)送到網(wǎng)絡(luò)。
2.2 重點(diǎn)實(shí)現(xiàn)流程
2.2.1 數(shù)據(jù)記錄任務(wù)流程
網(wǎng)絡(luò)數(shù)據(jù)報(bào)文在收到以后存入在系統(tǒng)內(nèi)存中開辟的緩存區(qū),數(shù)據(jù)描述結(jié)構(gòu)體在裝訂時(shí)間信息后也分別被加入到了命令數(shù)據(jù)緩沖隊(duì)列或航跡數(shù)據(jù)接收緩沖隊(duì)列中。
數(shù)據(jù)描述結(jié)構(gòu)體是對(duì)接收到的網(wǎng)絡(luò)數(shù)據(jù)報(bào)文的排列組成。
圖2 數(shù)據(jù)記錄流程Fig.2 Data recording process
上述的數(shù)據(jù)記錄文件由收到的記錄數(shù)據(jù)順序排列組成,數(shù)據(jù)索引文件由記錄數(shù)據(jù)描述結(jié)構(gòu)體順序
航跡數(shù)據(jù)完成記錄后在硬盤上形成的文件結(jié)構(gòu)圖例如圖3所示。
開始記錄后即以“年-月-日”作為名稱生成文件夾,該文件夾下又以該日記錄工作的次序數(shù)為名稱生成子目錄,該子目錄下包含兩個(gè)文件:航跡數(shù)據(jù)文件和航跡數(shù)據(jù)索引文件,以“TRKDATA”作為數(shù)據(jù)文件名稱,以“TRKDATA-INDEX”作為索引文件名稱。這樣的“目錄+文件”的文件結(jié)構(gòu)設(shè)計(jì)方式主要是為了便于后續(xù)的回放操作。
圖3 硬盤文件結(jié)構(gòu)圖例Fig.3 Structure sketchmap of files on the hard drive
圖5 航跡數(shù)據(jù)的發(fā)送流程Fig.5 The sending process of track data
2.2.2 數(shù)據(jù)回放流程(記錄文件數(shù)據(jù)讀取任務(wù)、回放數(shù)據(jù)發(fā)送任務(wù))
網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)包括命令操作結(jié)果和回放的航跡數(shù)據(jù)。
航跡數(shù)據(jù)的回放流程分為數(shù)據(jù)的讀取與數(shù)據(jù)的發(fā)送兩個(gè)部分,之所以將數(shù)據(jù)回放分為兩個(gè)任務(wù)來實(shí)現(xiàn),主要是為了簡化任務(wù)使命,通過系統(tǒng)模塊化設(shè)計(jì)來提高軟件可靠性,具體如圖4和圖5所示。
圖4 航跡數(shù)據(jù)的讀取流程Fig.4 The reading process of track data
上述的回放流程最后只是將回放的數(shù)據(jù)添加到了網(wǎng)絡(luò)發(fā)送緩沖隊(duì)列中,并沒有完成網(wǎng)絡(luò)發(fā)送。當(dāng)回放數(shù)據(jù)被添加到網(wǎng)絡(luò)數(shù)據(jù)發(fā)送隊(duì)列時(shí),其數(shù)據(jù)描述結(jié)構(gòu)體可簡化為命令數(shù)據(jù)描述結(jié)構(gòu)體cmdSingle。
命令結(jié)果數(shù)據(jù)在相關(guān)命令執(zhí)行后直接添加到網(wǎng)絡(luò)數(shù)據(jù)發(fā)送隊(duì)列中,其元素結(jié)構(gòu)體同上。
最后的網(wǎng)絡(luò)發(fā)送是單獨(dú)由專門負(fù)責(zé)網(wǎng)絡(luò)發(fā)送的任務(wù)統(tǒng)一執(zhí)行的,在該任務(wù)中,對(duì)回放數(shù)據(jù)和命令結(jié)果數(shù)據(jù)進(jìn)行無差別的網(wǎng)絡(luò)發(fā)送。
2.3 軟件設(shè)計(jì)中的重點(diǎn)
2.3.1 數(shù)據(jù)描述結(jié)構(gòu)體的采用
軟件設(shè)計(jì)中,各記錄回放數(shù)據(jù)的緩沖隊(duì)列均以數(shù)據(jù)描述結(jié)構(gòu)體為隊(duì)列元素,同時(shí)以“數(shù)據(jù)文件+數(shù)據(jù)索引文件”的方式作為存儲(chǔ)機(jī)制。
數(shù)據(jù)描述結(jié)構(gòu)體以定長數(shù)據(jù)作為數(shù)組成員,且可以在該數(shù)據(jù)描述結(jié)構(gòu)體中通過增加新的結(jié)構(gòu)體成員來增加對(duì)原數(shù)據(jù)的特征描述,從而為不定長的原數(shù)據(jù)提供了一個(gè)較友好的封裝。同一數(shù)據(jù)在兩個(gè)隊(duì)列中傳遞時(shí),也可以通過以數(shù)據(jù)描述結(jié)構(gòu)體在兩個(gè)隊(duì)列數(shù)組中的傳遞來代替數(shù)據(jù)的傳遞,這樣可以減少內(nèi)存資源的申請(qǐng)占用次數(shù),從而提高了程序效率。
“數(shù)據(jù)文件+數(shù)據(jù)索引文件”的存儲(chǔ)機(jī)制也正是在上述基礎(chǔ)上建立起來的,不定長的數(shù)據(jù)在存儲(chǔ)時(shí),必然需要加入額外的一些信息,從而才能避免讀取時(shí)出錯(cuò)。數(shù)據(jù)索引(即數(shù)據(jù)描述結(jié)構(gòu)體)中就包含了這樣的信息,而將數(shù)據(jù)與數(shù)據(jù)索引分開存儲(chǔ),就避免了數(shù)據(jù)與其相關(guān)描述信息存儲(chǔ)在一個(gè)文件里面造成的信息雜亂,又減少了數(shù)據(jù)文件的存儲(chǔ)空間。從另一個(gè)角度來看,若善加利用此索引文件,也能達(dá)到對(duì)數(shù)據(jù)進(jìn)行簡單加密的效果。
2.3.2 緩沖隊(duì)列的實(shí)現(xiàn)
緩沖隊(duì)列其實(shí)就是以在2.2.1節(jié)中提到的數(shù)據(jù)描述結(jié)構(gòu)體為元素組成的數(shù)組。該數(shù)組為全局變量數(shù)組,這樣就可被兩個(gè)任務(wù)函數(shù)訪問,一個(gè)任務(wù)向該數(shù)組添加元素,一個(gè)任務(wù)從該數(shù)組取元素,因此為了讓這兩個(gè)任務(wù)在添加(取)元素之前能知道(或者之后能更新)數(shù)組的當(dāng)前有效元素個(gè)數(shù)或其他狀態(tài),還需要設(shè)置一些能表明當(dāng)前數(shù)組狀態(tài)的全局變量(比如數(shù)組中的元素個(gè)數(shù)、數(shù)組頭元素位置等)。同時(shí)又為了讓這些全局變量不會(huì)因?yàn)橥瑫r(shí)被訪問而產(chǎn)生混亂,就還需要設(shè)置一個(gè)互斥信號(hào)量來供這兩個(gè)任務(wù)爭奪,誰得即誰訪問,訪問完后即刻釋放。
由此可知,緩沖隊(duì)列的構(gòu)成主要是以下3個(gè)要素組成:數(shù)組或鏈表(全局變量);表隊(duì)列(即數(shù)組)當(dāng)前狀態(tài)的全局變量,包括隊(duì)列長度(即數(shù)組當(dāng)前有效元素個(gè)數(shù))、隊(duì)列頭(即數(shù)組當(dāng)前第一個(gè)元素位置);互斥信號(hào)量。
用緩沖隊(duì)列代替消息隊(duì)列,有以下兩個(gè)好處:
(1)不論是隊(duì)列元素的添加任務(wù)或者讀取任務(wù),均是處于不停的輪轉(zhuǎn)中,沒有任務(wù)的阻塞發(fā)生。這種情況下,當(dāng)需要任務(wù)退出時(shí),可以很方便地通過設(shè)置表需任務(wù)退出的全局變量來讓各個(gè)任務(wù)即刻跳出任務(wù)循環(huán)而自動(dòng)退出,防止了通過直接刪除任務(wù)造成的部分資源未釋放的情況發(fā)生。
(2)當(dāng)緩沖隊(duì)列中的元素被取出而未被正確使用時(shí),可以簡單地通過不刪除隊(duì)列頭的操作來使下一次的循環(huán)可以仍然從該位置獲取到此元素。而消息隊(duì)列在消息被取出后即自動(dòng)更新隊(duì)列,若出現(xiàn)上述情況,則可能出現(xiàn)數(shù)據(jù)被遺漏處理的情況,即便可以通過在程序結(jié)構(gòu)設(shè)計(jì)更多的嵌套判斷來避免此種情況發(fā)生,其設(shè)計(jì)也相對(duì)較復(fù)雜。特別是在兩個(gè)上下游隊(duì)列中轉(zhuǎn)移元素時(shí),此情況尤為突出。
2.3.3 任務(wù)之間的互斥
由于需要記錄儀具有可通過網(wǎng)絡(luò)命令進(jìn)行遠(yuǎn)程操作的功能,而多命令必定形成多任務(wù)的同時(shí)執(zhí)行,這就涉及到可能存在的多任務(wù)互斥問題。除了使用VxWorks系統(tǒng)的各種信號(hào)量來進(jìn)行任務(wù)的同步與互斥之外,所有的任務(wù)都是通過唯一的命令解釋任務(wù)生成。這樣一來,對(duì)各個(gè)任務(wù)在生成前的必要判斷(比如是否重入、是否有資源沖突等)就變得比較簡單了。
測試時(shí),模擬發(fā)送目標(biāo)航跡報(bào)文M個(gè),每個(gè)航跡報(bào)文之間的發(fā)送時(shí)間間隔為T1?;胤艜r(shí)檢測到的航跡報(bào)文為N個(gè),每個(gè)航跡報(bào)文之間的時(shí)間間隔為T2。
若T2=T1,則表明對(duì)航跡數(shù)據(jù)的回放能夠達(dá)到實(shí)況回放的效果;否則,反之。若N=M,則表明對(duì)順序記錄的航跡報(bào)文能完成全部記錄,并能完成順序回放。若N<M,則表明記錄的航跡報(bào)文有漏記、錯(cuò)記或回放錯(cuò)誤的情況發(fā)生。
測試發(fā)現(xiàn),在其他條件不變的情況下,若T1越小,則N<M的情況越容易發(fā)生,同時(shí)T2與T1之間的偏差也越明顯。
N<M的情況發(fā)生,主要與系統(tǒng)在生成記錄任務(wù)之初對(duì)需記錄航跡報(bào)文的接收緩沖隊(duì)列的長度設(shè)置有關(guān)。若該隊(duì)列設(shè)置得越長,則能保證在數(shù)據(jù)記錄任務(wù)還來不及把后續(xù)收到的航跡數(shù)據(jù)寫入記錄文件的時(shí)候,能有更多的內(nèi)存空間可以先將這些航跡數(shù)據(jù)暫存下來,從而不至于造成航跡報(bào)文的丟失,也就不會(huì)導(dǎo)致數(shù)據(jù)漏記的情況發(fā)生。錯(cuò)記與回放錯(cuò)誤造成的N<M主要與程序邏輯錯(cuò)誤或存儲(chǔ)硬件有關(guān),在此不作考慮。此外,也不考慮程序邏輯錯(cuò)誤造成的數(shù)據(jù)漏記。
T2與T1之間的偏差主要來自兩個(gè)隊(duì)列元素在接收之初裝訂的時(shí)間信息之間的差值與時(shí)間真值差之間的偏差,同時(shí)也與系統(tǒng)輔助時(shí)鐘計(jì)數(shù)精度有關(guān),這兩方面均與系統(tǒng)整體及底層軟硬件有關(guān)。由于每個(gè)航跡報(bào)文均有專門字段標(biāo)明其生成的精確時(shí)間真值信息,故T2與T1之間的偏差不會(huì)對(duì)航跡數(shù)據(jù)的事后分析造成任何影響。
航跡數(shù)據(jù)的記錄與回放功能測試試驗(yàn)結(jié)果表明,若在對(duì)記錄文件進(jìn)行兩次批量寫操作之間設(shè)置了合適的間隔時(shí)間(3 s),只要設(shè)置足夠長的接收緩沖隊(duì)列(600條,30字節(jié)/條),同時(shí)在一次批量寫操作過程中設(shè)置合適的寫入數(shù)據(jù)條數(shù)(400條,30字節(jié)/條),就可以保證在均值速率3.84 kbyte/s(96批/秒)(峰值速率為20.48 kbyte/s即512批/秒)的情況下,不漏記航跡數(shù)據(jù)。雖然在突然斷電的情況下會(huì)最多漏記最后3 s的航跡數(shù)據(jù),但對(duì)于航跡記錄這樣非重大事件的記錄工作來說,這個(gè)時(shí)間值應(yīng)該是可以允許的。
本文采用“數(shù)據(jù)文件+數(shù)據(jù)索引文件”的存儲(chǔ)機(jī)制,實(shí)現(xiàn)了對(duì)不定長數(shù)據(jù)的記錄與回放;通過以緩沖隊(duì)列代替VxWorks消息隊(duì)列機(jī)制以實(shí)現(xiàn)各個(gè)任務(wù)之間數(shù)據(jù)(消息)的傳遞,良好地防止了數(shù)據(jù)被遺漏處理;以命令解釋任務(wù)作為任務(wù)生成的唯一入口簡化了任務(wù)之間的互斥處理;利用PC104板卡中的硬件輔助時(shí)鐘實(shí)現(xiàn)了回放精度較高的實(shí)況回放效果。上述幾點(diǎn)被良好的應(yīng)用在了本項(xiàng)目之中,在此提出進(jìn)一步改進(jìn)建議如下:
(1)回放數(shù)據(jù)時(shí)增加如下功能:查找到指定時(shí)間后開始回放,回放后退操作;
(2)文件的存儲(chǔ)結(jié)構(gòu)可以再進(jìn)行優(yōu)化,從而細(xì)化到可對(duì)文件進(jìn)行維護(hù)操作,如刪除、轉(zhuǎn)存等;
(3)增加采樣及數(shù)據(jù)壓縮編碼設(shè)計(jì),從而增加系統(tǒng)在出現(xiàn)已定義情況時(shí)對(duì)信號(hào)采集記錄回放的功能。
[1]李永冰.實(shí)時(shí)高速高分辨率信號(hào)采集存儲(chǔ)與回放系統(tǒng)[J].國外電子元器件,2007(4):73-75. LIYong-bing.Real time high speed signal collection storage and playback system[J].International Electronic Elements,2007(4):73-75.(in Chinese)
[2]張五二,游志勝,楊波,等.記錄回放在空管系統(tǒng)中的一種實(shí)現(xiàn)[J].中國民航飛行學(xué)院學(xué)報(bào),2005,16(3):47-49. ZHANGWu-er,YOU Zhi-sheng,YANG Bo,et al.An implementationmethod about record and replay in ATC system[J].Journalof China Civil Aviation Flying College,2005,16(3):47-49.(in Chinese)
[3]程敬原.VxWorks軟件開發(fā)項(xiàng)目實(shí)例完全解析[M].北京:中國電力出版社,2005. CHEN Jing-yuan.VxWorks software development project instance is fully resolved[M].Beijing:China Electric Power Press,2005.(in Chinese)
Design of Record and Replay M odule Based on VxW orks for Secondary Surveillance Radar Tracks
HAN Lin
(Southwest China Institute of Electronic Technology,Chengdu 610036,China)
Themodule based on Vxworks is designed and developed to record and replay the tracks in the Secondary Surveillance Radar(SSR).Themechanism ofbuffer queue customed is used in software design,in which the synchronization and mutex between tasks is considered,and the auxiliary clock of PC104 is adopted.The practice shows that the tracks relayed in themonitor can achieve the effect like live Telecast video after the data in the average 3.84 kbyte/s rate(96 packet/s)(the peak 20.48 kbit/s rate or 512 packet/s))is recorded. Key words:secondary surveillance radar;track data;recorder;VxWorks embedded system;buffer queue;auxiliary clock;mutex between tasks
the B.S.degree from University of Electronic Science and Technology of China in 2002.He is now an assistant engineer.His research concerns the secondary surveillance radar.
1001-893X(2012)04-0581-05
2011-11-25;
2012-03-23
TN957
A
10.3969/j.issn.1001-893x.2012.04.032
韓林(1979—),男,四川江油人,2002年于電子科技大學(xué)獲工學(xué)學(xué)士學(xué)位,現(xiàn)為助理工程師,主要從事二次雷達(dá)方面的研發(fā)工作。
Email:hanlinxx@163.com
HAN Lin was born in Jiangyou,Sichuan Province,in 1979.He