,,
(海軍工程大學(xué) 電氣與信息工程學(xué)院,武漢 430033)
在現(xiàn)代艦船導(dǎo)航裝備中異步串口通信應(yīng)用非常廣泛。異步串口通信協(xié)議規(guī)定了一系列特定的參數(shù),通信中收發(fā)雙方必須采用一致的通信參數(shù)才能實(shí)現(xiàn)數(shù)據(jù)的正常傳輸[1]。然而在艦艇裝備的導(dǎo)航設(shè)備中部分存在裝備信息掌握不完全,通信參數(shù)不明確的情況,這給裝備的解析和正常使用帶來(lái)了困難。由于波特率、數(shù)據(jù)位長(zhǎng)度、校驗(yàn)方式、停止位長(zhǎng)度以及數(shù)據(jù)編碼方式的多樣化,現(xiàn)行導(dǎo)航設(shè)備常用的通信參數(shù)組合達(dá)上千種[2]。若采用人工窮舉檢測(cè)的方法速度慢,效率低,需要大量數(shù)據(jù)的支持。所以迫切需要應(yīng)用能夠自動(dòng)、迅速、高效地檢測(cè)通信參數(shù)的分析方法。
異步串口通信是以字符幀為基本單位傳送數(shù)據(jù)信息的,協(xié)議規(guī)定了字符幀被傳送的波特率與字符幀的格式,見(jiàn)圖1。
圖1 字符幀被傳遞的波特率與字符幀的格式
字符幀按一定的波特率被傳送,波特率是單位時(shí)間內(nèi)傳送的二進(jìn)制數(shù)據(jù)的比特?cái)?shù),單位為“bit/s”。每個(gè)字符幀以一個(gè)比特低電平的起始位開(kāi)始,緊接著是5~8位比特長(zhǎng)度的數(shù)據(jù)位,數(shù)據(jù)位后面可以有一比特的校驗(yàn)位也可以沒(méi)有,最后是1~2位比特長(zhǎng)度的停止位[3]。字符幀與字符幀之間可以有任意長(zhǎng)度的空閑位。
要徹底解析異步串口通信協(xié)議就要確定波特率、數(shù)據(jù)位長(zhǎng)度、校驗(yàn)方式、停止位長(zhǎng)度以及數(shù)據(jù)編碼方式,其協(xié)議參數(shù)見(jiàn)表1。
表1 導(dǎo)航系統(tǒng)常用異步串口通信協(xié)議參數(shù)
基于對(duì)未知的異步串口通信電平進(jìn)行的采樣,把采樣數(shù)據(jù)傳送至PC機(jī)。通過(guò)PC機(jī)對(duì)采樣數(shù)據(jù)進(jìn)行解析,達(dá)到檢測(cè)協(xié)議參數(shù)的目的。
在波特率、數(shù)據(jù)位長(zhǎng)度、校驗(yàn)方式、停止位長(zhǎng)度和數(shù)據(jù)編碼方式5個(gè)參數(shù)中,由于停止位電平與空閑位相連且電平一致,故停止位與空閑位的界限并不明顯。所以在停止位大于1 bit的情況下仍然可以把停止位視為1 bit,把其余視為空閑位,并不影響數(shù)據(jù)接收[4]。所以參數(shù)檢測(cè)的關(guān)鍵在于對(duì)另外4個(gè)參數(shù)的分析。
在存在采樣誤碼且誤碼率未知的條件下,同電位電平的最短持續(xù)時(shí)間并不一定是波特率時(shí)間TBR[5]。如圖2所示,誤碼的存在使得采用檢測(cè)同電位電平的最短持續(xù)時(shí)間的方法檢測(cè)波特率遇到了障礙。
圖2 存在誤碼的電平采樣示意
考慮到誤碼因素,提出用統(tǒng)計(jì)受檢數(shù)據(jù)單個(gè)低電平平均持續(xù)時(shí)間的方法檢測(cè)波特率的方法。假設(shè)傳送的數(shù)據(jù)是隨機(jī)信號(hào),先假設(shè)無(wú)誤碼的情況,低電平每隔TBR發(fā)生跳變的概率是1/2。低電平持續(xù)時(shí)間l的概率pl的取值見(jiàn)圖3。
圖3 低電平持續(xù)時(shí)間長(zhǎng)度與概率取值示意
設(shè)有一段包含k個(gè)字符幀的受檢電平,字符幀誤碼率為e。誤碼以等概率發(fā)生在高低電平中,故誤碼不影響低電平總時(shí)間,每個(gè)誤碼使低電平個(gè)數(shù)增1。由于一個(gè)字符幀內(nèi)停止位只出現(xiàn)一次,對(duì)電平跳變概率影響很小。若經(jīng)統(tǒng)計(jì)受檢電平中低電平個(gè)數(shù)為m,故低電平總時(shí)間可認(rèn)為為2m,在一個(gè)字符幀隨機(jī)信號(hào)中高低電平的概率相等,故字符幀內(nèi)電平(不包括空閑位電平)總時(shí)間可認(rèn)為為4m。若只計(jì)1位停止位在字符幀內(nèi),則一個(gè)字符幀長(zhǎng)度在7~11個(gè)TBR之間,故k和m的關(guān)系可表述為:7k<4m<11k。故存在誤碼的單個(gè)低電平持續(xù)時(shí)間期望:Etl=2m/(m+k×e)。
考慮到實(shí)際情況下,一個(gè)字符幀的長(zhǎng)度一般在7~11 bit之間(只計(jì)1位停止位在字符幀內(nèi))故而:14/(7+4e) 數(shù)據(jù)位和校驗(yàn)位長(zhǎng)度是指一字符幀數(shù)據(jù)中除起始位和停止位以外的數(shù)據(jù)長(zhǎng)度。對(duì)數(shù)據(jù)位和校驗(yàn)位長(zhǎng)度的檢測(cè)是用已檢測(cè)出的波特率構(gòu)造數(shù)據(jù)位長(zhǎng)度n不同的標(biāo)準(zhǔn)采樣匹配模板,分別對(duì)受檢電平采樣數(shù)據(jù)進(jìn)行模糊匹配,并計(jì)算每種模板的隸屬度un,確定n值。 2.2.1 標(biāo)準(zhǔn)采樣匹配模板 本文提出的標(biāo)準(zhǔn)采樣匹配模板見(jiàn)圖4,是停止位只取1 bit的一個(gè)字符幀長(zhǎng)度模擬采樣模板,只擁有字符幀中起始位和停止位的模擬采樣值,而n位數(shù)據(jù)位的值被忽略。 圖4 標(biāo)準(zhǔn)采樣匹配模板示意 2.2.2 低電平等待的模糊匹配 在異步串口通信中,字符幀之間存在長(zhǎng)度不定的空閑位高電平。本文提出一種低電平等待模糊匹配(見(jiàn)圖5)算法消除空閑位的影響。 圖5 一次低電平等待匹配示意 步驟1。受檢電平采樣數(shù)據(jù)的低電平第一個(gè)采樣點(diǎn)和標(biāo)準(zhǔn)采樣匹配模板的起始位以第一個(gè)模擬采樣點(diǎn)對(duì)準(zhǔn),依次匹配它們同位置的采樣值,至標(biāo)準(zhǔn)采樣匹配模板停止位的最后一個(gè)模擬采樣值。 步驟2。等待受檢數(shù)據(jù)電平后續(xù)尚未參與匹配的采樣低電平出現(xiàn),重復(fù)步驟1,直至所有受檢電平匹配完為止。 步驟3。計(jì)算隸屬度un,使un最大的n值就是受檢電平的數(shù)據(jù)信息位長(zhǎng)度。 2.2.3 隸屬度計(jì)算 隸屬度定義為 (1) 式中:xi,si——參加匹配受檢電平與標(biāo)準(zhǔn)模板電平對(duì)應(yīng)采樣點(diǎn)采樣值; m——參加匹配的采樣點(diǎn)總數(shù); n——數(shù)據(jù)位和校驗(yàn)位長(zhǎng)度,n=5、6、7、8、9。 低電平等待模糊匹配算法檢測(cè)出受檢電平數(shù)據(jù)每個(gè)字符幀的起始位和停止位后,可以把所有的起始位和停止位剝離開(kāi),對(duì)剩余數(shù)據(jù)分析數(shù)據(jù)的校驗(yàn)方式。由于由低電平等待模糊匹配算法檢測(cè)的開(kāi)始若干個(gè)字符幀的起始位和停止位為止并不準(zhǔn)確,為了提高校驗(yàn)方式檢測(cè)的準(zhǔn)確度,應(yīng)該丟棄開(kāi)頭若干字取出的數(shù)據(jù)再進(jìn)行校驗(yàn)方式檢測(cè)。為了盡可能提高留下數(shù)據(jù)的正確率,假設(shè)導(dǎo)致un<1的失配電平全部產(chǎn)生于開(kāi)始的不準(zhǔn)確匹配導(dǎo)致的停止位失配,則丟棄的字符幀數(shù)為 r=pf×N(1-un) (2) 式中:N——受檢電平總字符幀數(shù); pf——隨機(jī)匹配下停止位失配概率,pf=1/2。 對(duì)字符幀校驗(yàn)方式的判斷依據(jù)如下。 1)若每字符幀數(shù)據(jù)位和校驗(yàn)位中1的個(gè)數(shù)總為偶數(shù),則為偶校驗(yàn)。 2)若每字符幀數(shù)據(jù)位和校驗(yàn)位中1的個(gè)數(shù)總為奇數(shù),則為奇校驗(yàn)。 3)若每字符幀數(shù)據(jù)位和校驗(yàn)位的最后一位總為1,則為高校驗(yàn)。 4)若每字符幀數(shù)據(jù)位和校驗(yàn)位的最后一位總為0,則為低校驗(yàn)。 5)若無(wú)以上特征,則無(wú)校驗(yàn)位。 導(dǎo)航系統(tǒng)異步串口通信數(shù)據(jù)編碼方式可分為16進(jìn)制數(shù)和ASCⅡ碼兩種,其中所傳輸?shù)腁SCⅡ碼均為可見(jiàn)字符,即ASCⅡ碼表中的32號(hào)至127號(hào)字符。檢測(cè)數(shù)據(jù)編碼即檢測(cè)受檢數(shù)據(jù)值是否屬于[32,127]。本文依據(jù)數(shù)據(jù)統(tǒng)計(jì)量用Bayes決策計(jì)算出后驗(yàn)概率得出數(shù)據(jù)編碼方式判據(jù)。 假設(shè)w1表示一字符數(shù)據(jù)為ASCⅡ碼,w2表示一字符數(shù)據(jù)為16進(jìn)制數(shù);q為異步串口通信誤碼率;p為一字符數(shù)據(jù)即可以被譯為ASCⅡ碼的概率。設(shè)事件X:n個(gè)受檢字符中,有k個(gè)字符可被譯為ASCⅡ碼。則在w1和w2條件下事件x發(fā)生的前驗(yàn)概率為 (3) 根據(jù)Bayes公式,得出后驗(yàn)概率 p(wi|x)=p(x|wi)p(wi)/ (4) 把本文提出的檢測(cè)算法用C++ Builder編寫(xiě)成檢測(cè)軟件[6],試驗(yàn)該算法的實(shí)用性。例如從串口調(diào)試助手軟件發(fā)送一段波特率9 600 bit/s、數(shù)據(jù)位8位、停止位1位、偶校驗(yàn)的異步串口通信電平模擬受檢電平,經(jīng)采樣和傳輸,用所編寫(xiě)的檢測(cè)軟件檢測(cè)結(jié)果見(jiàn)圖6。 圖6 智能檢測(cè)算法檢測(cè)結(jié)果 圖6表明協(xié)議參數(shù)分析結(jié)果完全符合實(shí)際。其它改變協(xié)議參數(shù)的實(shí)驗(yàn)也得到了同樣的結(jié)果。 本文所提出的導(dǎo)航系統(tǒng)異步串口通信協(xié)議參數(shù)智能檢測(cè)算法能夠自動(dòng)檢測(cè)波特率范圍從150~19 200 bit/s的常用串口電平的所有參數(shù)。大量實(shí)驗(yàn)表明,該算法具有運(yùn)算時(shí)間復(fù)雜度低,結(jié)果準(zhǔn)確率高的特點(diǎn),基本可以實(shí)現(xiàn)實(shí)時(shí)出結(jié)果,比起現(xiàn)行的人工分析的方法具有很大的優(yōu)越性。 [1] 馮懷迪,周亞軍.通信協(xié)議設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)電工程,2009,26(11):91-93. [2] 陳永冰,傅 軍,陳 浩.等.導(dǎo)航系統(tǒng)接口技術(shù)[M].武漢:海軍工程大學(xué)出版社,2010. [3] 周永余,李文魁.艦船組合導(dǎo)航系統(tǒng)發(fā)展評(píng)述[J].中國(guó)慣性技術(shù)學(xué)報(bào),2003,11(1):67-72. [4] 胡寶清.模糊理論基礎(chǔ)[M].武漢:武漢大學(xué)出版社,2004. [5] 徐勝江,張宗麟.測(cè)量融合組合導(dǎo)航方法研究[J〗. 中國(guó)慣性技術(shù)學(xué)報(bào),2001,9(2):16-18. [6] 李幼儀,甘 志.C++ Builder高級(jí)應(yīng)用開(kāi)發(fā)指南[M].北京:清華大學(xué)出版社,2002.2.2 數(shù)據(jù)位和校驗(yàn)位長(zhǎng)度檢測(cè)
2.3 校驗(yàn)方式檢測(cè)
2.4 基于最小錯(cuò)誤率Bayes決策的數(shù)據(jù)編碼方式檢測(cè)
3 算法實(shí)際應(yīng)用
4 結(jié)論