陳紅英 張昌明 何 晶 黃 瓊
(中國衛(wèi)星海上測控部 江陰 214431)
?
基于正則表達(dá)式的遙測數(shù)據(jù)預(yù)處理研究*
陳紅英 張昌明 何 晶 黃 瓊
(中國衛(wèi)星海上測控部 江陰 214431)
運(yùn)載火箭遙測數(shù)據(jù)處理首次運(yùn)用于海上測控任務(wù)中,針對船載設(shè)備接收原始遙測事后數(shù)據(jù)包含許多無效的亂碼且記錄數(shù)據(jù)十分龐大、需要在短時間內(nèi)進(jìn)行數(shù)據(jù)處理的難題,首先介紹了遙測數(shù)據(jù)預(yù)處理原理,對預(yù)處理方法進(jìn)行了研究,最后提出了用正則表達(dá)式算法將原始數(shù)據(jù)從龐大的數(shù)據(jù)幀中解算出來的預(yù)處理模式,在短時間內(nèi)完成了數(shù)據(jù)的預(yù)處理工作,提高了處理效率,解決了遙測數(shù)據(jù)處理的關(guān)鍵技術(shù)問題。
正則表達(dá)式; 遙測; 預(yù)處理; 測量船
Class Number TP311
為了保護(hù)空間環(huán)境、減緩空間碎片,型號部門對長征系列火箭進(jìn)行改進(jìn)設(shè)計,將在星箭分離后進(jìn)行高壓氣體和剩余推進(jìn)劑排空等動作,測量船對火箭三級箭體遙測數(shù)據(jù)進(jìn)行跟蹤、接收和記錄,至信號消失。運(yùn)載火箭遙測事后數(shù)據(jù)處理主要完成海上測量任務(wù)的長征系列型號星箭分離后遙測數(shù)據(jù)的質(zhì)量檢查與選優(yōu)[1];運(yùn)用數(shù)字信號處理方法和隨機(jī)數(shù)據(jù)分析方法,以精選的數(shù)字模型和精確的計算公式對原始數(shù)據(jù)進(jìn)行加工、糾錯、誤差修正和計算,還原成各種物理量;對速變參數(shù)則還要進(jìn)行各種譜分析;完成滿足精度和處理要求的數(shù)據(jù)、圖像等處理結(jié)果光盤[2]。
在每次飛行試驗任務(wù)中如何把磁帶、磁盤或光盤上的原始測量數(shù)據(jù)從記錄介質(zhì)上輸入到計算機(jī)、剪輯、對接,并準(zhǔn)確地從帶有干擾的信息中提取數(shù)據(jù);如何判幀分路,對時間如何糾錯加工,如何去點計算是遙測數(shù)據(jù)處理中需要解決的主要問題。而遙測事后數(shù)據(jù)處理軟件首次在海上測控任務(wù)中使用,由于船載設(shè)備USB接收原始遙測數(shù)據(jù)包含許多無效的亂碼,而且記錄數(shù)據(jù)十分龐大,如何將有效的數(shù)據(jù)從近500M字節(jié)的原始數(shù)據(jù)中分離出來,并且兼顧時間性能和內(nèi)存資源消耗等因素,成為原始數(shù)據(jù)預(yù)處理的難點[3]。文章將具體介紹利用正則表達(dá)式處理遙測事后數(shù)據(jù)的預(yù)處理方法。
2.1 預(yù)處理主要內(nèi)容
遙測數(shù)據(jù)預(yù)處理工作將完成以下任務(wù)[4]:
1) 對火箭星箭分離后遙測數(shù)據(jù)質(zhì)量檢查,自動統(tǒng)計出信號記錄的有效起止時間,并記載、打印出錯誤原始碼。
2) 完成測量船記錄的遙測數(shù)據(jù)中絕對時轉(zhuǎn)換到相對時工作,具備形成一個與逐幀數(shù)據(jù)相對應(yīng)的時間文件。
3) 完成原始信號中的幀同步判別,剔除亂散點,并進(jìn)行速、緩變參數(shù)的分離及分路。
4) 根據(jù)產(chǎn)品的傳感器、變換器的校準(zhǔn)數(shù)據(jù),或在物理量換算的其它與參數(shù)有關(guān)的系數(shù)形成校準(zhǔn)數(shù)據(jù)。
2.2 原始數(shù)據(jù)
2.2.1 遙測格式的元素
脈沖編碼調(diào)制(PCM)遙測格式是指用來按比特、字、幀和格式等四個元素的層次來生成串行PCM遙測數(shù)據(jù)流的一種數(shù)據(jù)結(jié)構(gòu)[5]。
1) 比特、字和幀
比特是一個取值為“1”或“0”的二元信息符號,亦稱二進(jìn)制碼位,是PCM數(shù)據(jù)流中的最小單元,占有一位的時間間隔。幀同步字:用來傳送幀同步碼的兩個到三個相繼遙測字。識別字:航天器地址字、航天器上時鐘計數(shù)字、幀計數(shù)字、格式計數(shù)字等遙測字,均稱識別字,其數(shù)據(jù)均需固定在格式中所分配的位置上。
遙測幀是相繼的一組遙測字的有序集合。在串行PCM數(shù)據(jù)流中,每一幀總是由相鄰幀同步碼的起始點確定。一幀中所包含的遙測字的數(shù)目稱為幀長。對于一定的遙測格式,幀長總是固定的。副幀:若在格式的若干相繼幀的同一字位置,又安排相應(yīng)路數(shù)的較低速率采樣遙測參數(shù),則這些按幀相繼的遙測字(稱為副幀字)的有序集合,稱為副幀。一副幀中所包含的副幀字的數(shù)目稱為副幀長。
2) 波道、路
波道指的是遙測系統(tǒng)某交換子(如正交、副交等)中能單獨傳送一路信息的通道。某參數(shù)的波道號也正是從全幀信號中挑選它的依據(jù)。
路指的是某一被測參數(shù)的通路,通常占用一個波道(此時路信號與波道號相同),也可占用多個波道。
3) 主幀、副幀、子幀及同步碼
主交換子(時分割裝置)每采樣一周為一主幀。副幀指將主幀的一個時隙(一路)再分割成若干時隙(若干路),這些再分割路循環(huán)一周稱為一個副幀。副幀信號全部都采樣到,需若干個主幀。子幀為兩個子幀同步碼組之間的分割路循環(huán)一周稱為一個子幀。全幀,指的是彈(箭)上采編器將子幀、副幀的信號全部都采樣一遍稱為一個全幀。
2.2.2 原始數(shù)據(jù)來源
由于測量船的工況設(shè)計主要基于對衛(wèi)星在軌后的關(guān)鍵事件來考慮的,推進(jìn)劑排放一般在星箭分離后間隔數(shù)百秒開始進(jìn)行,在推進(jìn)劑排放的弧段,末級火箭所在軌道高度越來越高,測量船通視的時間較長。原始數(shù)據(jù)(包括PCM體制的數(shù)字量方式,PAM體制的模擬量方式及PACM混合體制組成的各種數(shù)據(jù)幀結(jié)構(gòu))接收時間一般從星箭分離數(shù)百秒開始進(jìn)行,一條測量船單站積累的遙測原始數(shù)據(jù)比火箭發(fā)射到星箭分離之間積累的數(shù)據(jù)還要大。數(shù)據(jù)元素為遙測數(shù)據(jù)的USB遙測監(jiān)控臺合并方式存盤格式[6],具體格式如表1所示。
表1 箭上遙測存盤格式
其中時間碼格式有接口板方式和網(wǎng)絡(luò)方式兩種,設(shè)備擇優(yōu)選用其中一種。
表2 箭上遙測傳輸設(shè)備主要技術(shù)參數(shù)
原始測量數(shù)據(jù)是以速、緩變?nèi)珟盒盘栍涗浀?信號需進(jìn)行判別、分組和分路。首先需判別的是主幀同步碼和子幀同步碼,除了判別各同步碼本身是否正確外,還應(yīng)判別相鄰兩同步碼之間的路間隔是否正確,以避免當(dāng)參數(shù)碼與同步碼偶然巧合時而發(fā)生誤判。必須同步碼判別正確分路,否則會因路序錯誤,造成參數(shù)編碼值錯誤,這種情況造成的參數(shù)值錯誤是很難發(fā)現(xiàn)的。
分組和分路是在各種同步碼判別出來后,依所需處理的參數(shù)在主幀、副幀或子幀中的路序來提取。數(shù)據(jù)對應(yīng)的時間,應(yīng)按所取點的幀號或記錄號,提取對應(yīng)幀號或記錄號的時間值,并按不同的精度要求進(jìn)行路間采樣及電波延遲修正。
3.1 正則表達(dá)式定義
正則表達(dá)式(Regular Expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。正則表達(dá)式是由普通字符(例如字符a~z)以及特殊字符(稱為元字符)組成的文字模式[7]。正則表達(dá)式作為一個模板,將某個字符模式與所搜索的字符串進(jìn)行匹配。一般用于文本的識別,其描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。確定有限狀態(tài)自動機(jī)(DFA)是由下述五個元素構(gòu)成的數(shù)學(xué)模型:
其中:S是有限的,非空的狀態(tài)集;∑是輸入字母表;δ是轉(zhuǎn)移函數(shù)?!痞?s,a)=S′意味著:當(dāng)現(xiàn)行狀態(tài)為s輸入字符為a時,將換到下一個狀態(tài)S′。稱S′為s的后繼狀態(tài)。
S0∈S是初始狀態(tài);F∈S是非空的終結(jié)狀態(tài)集。
3.2 符號描述
表3是元字符及其在正則表達(dá)式上下文中的行為的一個簡單列表[8]。
表3 正則表達(dá)式字符描述
構(gòu)造正則表達(dá)式的方法和創(chuàng)建數(shù)學(xué)表達(dá)式的方法一樣。也就是用多種元字符與操作符將小的表達(dá)式結(jié)合在一起來創(chuàng)建更大的表達(dá)式。正則表達(dá)式的組件可以是單個的字符、字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。
3.3 算法研究
圖1 遙測原始數(shù)據(jù)預(yù)處理主流程圖
運(yùn)載火箭遙測數(shù)據(jù)處理中原始數(shù)據(jù)是二進(jìn)制字符串?dāng)?shù)據(jù),可以視為廣義的文本字符串,通過Python語言讀入二進(jìn)制文件以后,利用正則表達(dá)式實現(xiàn)對副幀、子幀的識別,對遙測數(shù)據(jù)流文件進(jìn)行副幀、子幀統(tǒng)計,得出遙測數(shù)據(jù)的起始時間、結(jié)束時間,統(tǒng)計出丟幀段落等。如圖1所示。
遙測字由相繼的8個比特構(gòu)成,是組成遙測幀的基本單元,亦稱“路”或“字節(jié)”。根據(jù)原始數(shù)據(jù)的幀結(jié)構(gòu)對YCConst.py函數(shù)的內(nèi)容進(jìn)行修改以適應(yīng)具體任務(wù)需求,內(nèi)容如下:
YC_SUBFRAMELENGTH =104 # include Time code and ID code
# 子幀長度,長度包含遙測設(shè)備加上的時間碼長度和子幀ID長度,默認(rèn)為104
YC_MAINFRAMELENGTH = 64 # 副幀長度(包含多少子幀),默認(rèn)為64
YC_SUBFRAMESYNCODE='xebx90' # 子幀同步碼,默認(rèn)為'xebx90'
YC_MAINFRAMESYNCODE='x14x6f' # 副幀同步碼,默認(rèn)為'x14x6f'
YC_TIMECODETYPE='Network' # default is 'Interface'
# 時間碼接收類型(包括網(wǎng)絡(luò)方式或接口板方式),默認(rèn)為網(wǎng)絡(luò)方式
YC_T0 = [1,0,2,2,0,0,0,0,4,6,3,0,0]
# 任務(wù)T0的B碼方式,下面表示第102天20時00分04秒630.0毫秒
由于多種原因,設(shè)備接收原始遙測數(shù)據(jù)包含許多無效的亂碼,為了保證每一個完整的副幀計數(shù)都是有效的必須通過其特征字來驗證。根據(jù)《遙測大綱》約定在幀結(jié)構(gòu)中W(波道)47、W48、W71、W72的特征字為3F、1F、55、AA(F01變幀結(jié)構(gòu)后W71、W72特征字為AA、55)。副幀同步碼為146F,子幀同步碼為EB90[9]。
具體程序如下:
# read onefile another
def readData (inFile, outFile, wordList, subFrameList, timeMin=-1,
timeMax=-1):
frameP=re.compile('(.{54}\?\x1f.{22}\xaa\x55.{22}\xeb\x90){63}.{54}\?\x1f.{22}\xaa\x55.{22}\x14\x6f',re.DOTALL)
ii = frameP.finditer(open(inFile,'rb').read())
f = open(outFile,'w')
上面函數(shù)中“(.{54}\?\x1f.{22}\xaa\x55.{22}\xeb\x90){63}.{54}\?\ x1f.{22}\xaa\x55.{22}\x14\x6f'”該語句只利用正則表達(dá)式的基本元素“.”、“(”、“{”、“”、“?”等字符,就實現(xiàn)了讀取完整全幀數(shù)據(jù)的功能。副幀結(jié)構(gòu)(F01變幀結(jié)構(gòu)后)如表4所示。
表4 副幀結(jié)構(gòu)表
如表4中的副幀結(jié)構(gòu)所示,在打開原始數(shù)據(jù)文件后,逐字讀文件,首先讀取任意54個字符(包括時間碼和ID計數(shù)),用語句“.{54}”表示,讀取1個任意字符,用語句“?”表示,如果第56個字符也就是W48的特征碼為1F時,用語句“\x1f”,繼續(xù)讀取任意的22個字符,如果第79和80個字符的特征碼為AA和55時,再往下讀22個任意字符,如果第103和104個字符的特征碼為EB和90時(子幀同步碼),就讀取到一個完整的子幀,用同樣的語句“(.{54}\?\ x1f. {22}\xaa\x55. {22} \xeb\x90)”讀63個子幀,如果第64個子幀的W95和W96特征碼為14和6F時(副幀同步碼),這樣就讀取到一個完整的副幀,將其計入文本,如果讀到的字符不滿足上面的條件將其跳過,繼續(xù)讀原始文件直到文件結(jié)束,圖2中繪制了某任務(wù)原始數(shù)據(jù)預(yù)處理丟幀情況的統(tǒng)計結(jié)果,從圖中可以看出使用此函數(shù)代碼有效地去掉了原始數(shù)據(jù)中無效的亂碼,通過對特征字的驗證避免了當(dāng)參數(shù)碼與同步碼偶然巧合時發(fā)生誤判的情況,確保了錄取完整有效的副幀。由于識別幀結(jié)構(gòu)的工作變成了正則表達(dá)式的模式,而這種模式存儲在配置文件中即可[10]。如果二進(jìn)制文件格式發(fā)生變化時,無需改變程序邏輯,只需修改配置文件的幀結(jié)構(gòu)模式。利用這種設(shè)計使得程序使用和維護(hù)極為方便,大大提高了遙測數(shù)據(jù)處理的速度。
圖2 某任務(wù)遙測原始數(shù)據(jù)預(yù)處理結(jié)果統(tǒng)計
總而言之,用正則表達(dá)式解析文本數(shù)據(jù)文件具有高效、縮短開發(fā)時間的優(yōu)點,能夠節(jié)省大量分析文件、根據(jù)復(fù)雜的條件提取有用數(shù)據(jù)的時間。在一個迅速發(fā)展的環(huán)境中仍會有許多傳統(tǒng)的數(shù)據(jù)可資利用,掌握如何構(gòu)造高效的數(shù)據(jù)分析例程將是一種寶貴的技能。
通過幾次海上測控實戰(zhàn)任務(wù)的運(yùn)用,正則表達(dá)式高效、方便的字符串模式匹配技術(shù),將遙測記錄原始二進(jìn)制碼數(shù)據(jù)進(jìn)行分析,較好地解決了原始數(shù)據(jù)的預(yù)處理工作,解決了運(yùn)載火箭遙測事后數(shù)據(jù)處理中的關(guān)鍵問題。
[1] 沐俊山.星箭分離后箭遙數(shù)據(jù)處理的特點和方法[C]//第十一屆全國遙感遙測遙控學(xué)術(shù)研討會,2009:47-53.
[2] 簡仕龍.航天測量船海上測控技術(shù)概論[M].北京:國防工業(yè)出版社,2009:84-99.
[3] 江文達(dá).航天測量船[M].北京:國防工業(yè)出版社,2002:13-129.
[4] 劉利生.外彈道測量數(shù)據(jù)處理[M].北京:國防工業(yè)出版社,2002,2:225-318.
[5] 陳以恩.遙測數(shù)據(jù)處理[M].北京:國防工業(yè)出版社,2002:176-243.
[6] 李輝芬.船載設(shè)備測量數(shù)據(jù)處理結(jié)果的綜合分析方法[J].飛行器測控學(xué)報,2008,27(6):65-70.
[7] Jeffrey E. F. Friedl.精通正則表達(dá)式[M].北京:電子工業(yè)出版社,2007:230-254.
[8] 丁晶.基于正則表達(dá)式的深度包檢測算法[J].計算機(jī)應(yīng)用,2007,27(9):2184-2187.
[9] 李信真,車剛明,歐陽潔,等.計算方法[M].西安:西北工業(yè)大學(xué)出版社,2000:99-126.
[10] 陳紅英,李輝芬.航天測量船角度系統(tǒng)誤差偏大問題的分析與解決[J].電訊技術(shù),2011,51(10):71-75.
Telemetering Data Preprocessing Based on Regular Expressions
CHEN Hongying ZHANG Changming HE Jing HUANG Qiong
(China Satellite Maritime Tracking and Controlling Department, Jiangyin 214431)
Telemetering data preprocessing of carrier rocket handle is first appied in the ship for tracking and controlling. Aiming at the shortcoming of original telemetering data including many invalid disorderly code of the record data is very huge and need to preprocessing on the equipment of measurement ship in a short time, first the telemetering data preprocessing principle is introduced, the method of preprocessing is researched, finally the preprocessing mode is put forward to use regular expressions calculate original data from the huge data frames. In a short time, the work of data preprocessing is completed, processing efficiency is improved, and the key technique problem of telemetering data processing is solved.
regular expressions, telemetering, data preprocessing, measurement ship
2015年6月4日,
2015年7月26日
陳紅英,女,工程師,研究方向:數(shù)據(jù)處理與精度分析。
TP311
10.3969/j.issn.1672-9730.2015.12.036