本文分析和研究了CSDB總線(xiàn)的協(xié)議,并介紹了通過(guò)計算機的RS-232串口及相應電平轉換電路,基于LabVIEW7.1軟件開(kāi)發(fā)平臺實(shí)現的計算機與UUT的雙向通信。其中,支持通信的軟件實(shí)現是關(guān)鍵。 圖1 CSDB總線(xiàn)結構 1 CSDB總線(xiàn)協(xié)議簡(jiǎn)介 CSDB總線(xiàn)體系結構的物理層規定了總線(xiàn)的機械特性和電氣特性;數據鏈路層給出了數據幀的定義以及數據幀之間的定時(shí)要求,并對總線(xiàn)連接的各種航空設備的參數做出了詳細的規定。 1.1 物理層 CSDB是單向廣播式異步串行總線(xiàn)標準,它可以構成單信源、多接收器的傳輸系統?偩(xiàn)數據采用NRZ編碼,全雙工差分方式傳輸。CSDB信號的數據格式與RS-232-C標準完全相同,都為異步串行通信格式,即:一個(gè)起始位、八個(gè)數據位、一個(gè)奇偶校驗位、一個(gè)停止位,其電氣標準為RS-422-A。 1.2 數據鏈路層 CSDB總線(xiàn)是面向字節的傳輸協(xié)議,固定長(cháng)度的字節組成消息塊,再由一定長(cháng)度的消息塊組合成幀,封裝在數據幀中的不同數據通過(guò)各自的地址字節加以區別,不同的數據幀之間通過(guò)同步消息塊分割。CSDB總線(xiàn)數據結構如圖1所示。 在圖1中,消息塊(Message Block)的第一個(gè)字節Byte 0稱(chēng)為標識 (或地址),消息塊都是通過(guò)標識來(lái)區分的。消息塊的長(cháng)度是固定不變的,為6字節。CSDB采用的是異步串行傳輸方式,通過(guò)起始位和停止位完成字節的位同步,因此,在編碼中不必帶有時(shí)鐘信息。幀同步通過(guò)識別同步消息塊6個(gè)字節的十六進(jìn)制“A5”來(lái)實(shí)現,同步消息塊標識了每個(gè)數據幀的開(kāi)始位置。 其中:t1=幀時(shí)間長(cháng)=1/最大更新率 t2=消息塊間隙時(shí)間長(cháng)(無(wú)限制) t3=總線(xiàn)空閑時(shí)間(最小11bit的時(shí)間) t4=字節間隙時(shí)長(cháng)(無(wú)限制) CSDB總線(xiàn)信號測試 1.3 測試原理 對CSDB總線(xiàn)信號進(jìn)行測試,是先將CSDB信號電平轉換為和計算機適應的RS-232電平,再根據CSDB總線(xiàn)的規則,實(shí)現對控制信息的正確發(fā)送和實(shí)時(shí)反饋信息的正確接收,并根據需要,將有用信息提出送測試系統處理,完成對航空機載設備的自動(dòng)化測試。具體步驟分為信號電氣轉換、通信同步、LabVIEW實(shí)現。 圖2 CSDB總線(xiàn)信號通信原理框圖 1.4 通信配置 (1)電氣轉換 CSDB總線(xiàn)信號經(jīng)過(guò)電氣轉換芯片后直接與計算機進(jìn)行串口通信。在進(jìn)行RS-422-A到RS-232的電氣標準轉換時(shí),使用MAX488全雙工電平轉換芯片。 (2)通信同步 CSDB總線(xiàn)為異步串行通信,按照串行數據傳輸的基本原理,實(shí)現正確通信的基本條件是保持接收和發(fā)送雙方時(shí)鐘一致,以避免發(fā)送與接收雙方的數據位寬產(chǎn)生累積誤差,造成不能正確檢測到總線(xiàn)數據。在串行通信中,信息是按位傳送的,傳送速率用波特率表示,數據的發(fā)送和接收受各自的時(shí)鐘控制,因此,發(fā)送方和接收方的波特率應保持一致。經(jīng)對具體部品測試,CSDB數據總線(xiàn)數據波特率為12.5Kbit/s,為與此同步,要求計算機產(chǎn)生的波特率也應為12.5Kbit/s。 如圖2所示,在計算機中負責串行通信的器件為8250異步通信適配器(UART),或其兼容元器件,程序通過(guò)對8250內部的寄存器讀寫(xiě)來(lái)控制通信模式,8250使用頻率為1.8432MHz的基準時(shí)鐘輸入信號作為主數據時(shí)鐘,通過(guò)對8250內部寄存器置位來(lái)獲得需要的波特率。在異步串行通信中,為防止由于信號畸形、不同步等原因造成對數據的誤讀,通信適配器規定每讀取或發(fā)送1bit數據至少要用16個(gè)時(shí)鐘脈沖來(lái)控制其波特率,實(shí)際應用中波特率時(shí)鐘是主時(shí)鐘的1/16或1/(16×N),對于要求的波特率,在寫(xiě)寄存器時(shí)用如下公式計算除數因子: 除數因子=(主數據時(shí)鐘頻率/16)/波特率=115200/波特率 在算出除數因子后,將相應數據寫(xiě)入8250內部的波特率設置寄存器,即可在串口得到相應波特率的數據。經(jīng)計算,115200除以12500后不為整數,所以,受到計算機異步通信適配器8250的限制,在波特率設置上不能完全和12.5Kbit/s相同,經(jīng)計算,當除數因子取9時(shí)對應的波特率為12.8Kbit/s,與CSDB總線(xiàn)要求的波特率最為接近,其每bit占據78?S,相對80?S/bit(12.5Kbit/s)誤差為0.25%,小于串行通信波特率最大容許誤差5%,理論上可實(shí)現通信同步,因此在程序上將通信的波特率設置為12.8Kbit/s。 2 基于LabVIEW7.1的總線(xiàn)通信 用LabVIEW7.1編程來(lái)實(shí)現總線(xiàn)通信時(shí),用戶(hù)不必對GPIB,RS-232,VXI等硬件有專(zhuān)門(mén)的了解,LabVIEW為用戶(hù)提供了標準的I/O接口函數庫,在Lab VIEW的Functions→All Functions→Instrument I/O中提供了GPIB、串口通信等各種函數模塊,為實(shí)現串口通信提供了便捷的實(shí)現方法。軟件流程如圖3所示。 圖3 串口通信軟件流程圖 3 軟件設計中的關(guān)鍵問(wèn)題及解決方法 (1) 發(fā)送數據幀結構多樣化解決方法 通過(guò)對系統中不同部品的實(shí)際測試發(fā)現,由于其互聯(lián)情況不同,相應部品控制碼的幀結構也不盡相同,同步字后跟1~4個(gè)控制消息塊不等,而在自動(dòng)化測試系統中要求此通信軟件具有通用性。為此,將發(fā)送程序中控制消息塊接口設為最大(4個(gè)),當程序檢測到某一接口有數據輸入時(shí)就發(fā)送此數據,若沒(méi)有,則以相等長(cháng)度的延時(shí)替代。這樣,在保證所有數據幀周期相同的情況下,滿(mǎn)足了不同部品控制碼的不同要求。 (2) 接收數據多重校驗 數據接收程序中,LabVIEW要求設置接收數據緩沖長(cháng)度,程序在接收此長(cháng)度數據后才能進(jìn)行后續處理。實(shí)際程序運行后發(fā)現,如緩沖長(cháng)度僅為一幀(24×8bit),接收數據有可能誤接收。為避免此情況,將緩沖長(cháng)度設置為一幀字長(cháng)的4~6倍,在接收到數據后,再根據同步字、標號等多重匹配原則進(jìn)行驗證后將數據取出,再將4~6組數據相比較,如相同,則認為數據可信,如不相同,則認為數據不可信。 4 結語(yǔ) 作CSDB總線(xiàn)數據測試時(shí),可以方便通過(guò)界面改變需要發(fā)送的數據,接收的數據也可實(shí)時(shí)顯示出來(lái),便于測試分析。把此程序封裝成一個(gè)子函數模塊,可應用于某航空無(wú)線(xiàn)電自動(dòng)測試系統中,基于對CSDB總線(xiàn)的收發(fā)控制,成功實(shí)現了VIR-32導航接收機、VHF-22 甚高頻電臺等相關(guān)產(chǎn)品的自動(dòng)測試。 |