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