<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW的CSDB總線信號(hào)測(cè)試

          基于LabVIEW的CSDB總線信號(hào)測(cè)試

          ——
          作者:北京航空航天大學(xué)儀器科學(xué)與光電工程學(xué)院 李亞麗 時(shí)間:2007-01-26 來(lái)源:《電子設(shè)計(jì)應(yīng)用》 收藏

          引言

          商業(yè)標(biāo)準(zhǔn)數(shù)據(jù)總線(commercial standard digital bus,以下簡(jiǎn)稱(chēng)csdb總線)是由羅克威爾公司柯林斯通用航空電子分部制定的航空電子設(shè)備間互連的串行總線標(biāo)準(zhǔn),被廣泛應(yīng)用于客機(jī)、軍用運(yùn)輸機(jī)等無(wú)線電設(shè)備之間的互聯(lián)通信。其廣泛應(yīng)用為機(jī)載航空電子設(shè)備的可靠性提供了保障,卻為機(jī)載電子設(shè)備的測(cè)試和維修帶來(lái)了不便,維修或測(cè)試人員不能通過(guò)傳統(tǒng)測(cè)試設(shè)備,如示波器、萬(wàn)用表等完成總線數(shù)據(jù)的測(cè)試,而必須借助相關(guān)產(chǎn)品聯(lián)測(cè)才能完成某一uut(unit under test)的測(cè)試,本文基于此需求,分析和研究了csdb總線的協(xié)議,并介紹通過(guò)計(jì)算機(jī)的rs-232串口及相應(yīng)電平轉(zhuǎn)換電路,基于labview7.1軟件開(kāi)發(fā)平臺(tái)實(shí)現(xiàn)的計(jì)算機(jī)與uut的雙向通信。其中,支持通信的軟件實(shí)現(xiàn)是關(guān)鍵。

          本文引用地址:http://www.ex-cimer.com/article/21169.htm

          csdb總線協(xié)議簡(jiǎn)介

          csdb總線體系結(jié)構(gòu)的物理層規(guī)定了總線的機(jī)械特性和電氣特性,數(shù)據(jù)鏈路層給出了數(shù)據(jù)幀的定義以及數(shù)據(jù)幀之間的定時(shí)要求,并對(duì)總線連接的各種航空設(shè)備的參數(shù)作出了詳細(xì)的規(guī)定。

          物理層

          csdb是單向廣播式異步串行總線標(biāo)準(zhǔn),它可以構(gòu)成單信源、多接收器的傳輸系統(tǒng),總線數(shù)據(jù)采用nrz編碼、全雙工差分方式傳輸,csdb信號(hào)的數(shù)據(jù)格式與rs-232-c標(biāo)準(zhǔn)完全相同,都為異步串行通信格式,即:一個(gè)起始位、八個(gè)數(shù)據(jù)位、一個(gè)奇偶校驗(yàn)位,一個(gè)停止位,其電氣標(biāo)準(zhǔn)為rs-422-a。

          數(shù)據(jù)鏈路層

          csdb總線是面向字節(jié)的傳輸協(xié)議,固定長(zhǎng)度的字節(jié)組成消息塊,再由一定長(zhǎng)度的消息塊組合成幀,封裝在數(shù)據(jù)幀中的不同數(shù)據(jù)通過(guò)各自的地址字節(jié)加以區(qū)別,不同的數(shù)據(jù)幀之間通過(guò)同步消息塊分割。csdb總線數(shù)據(jù)結(jié)構(gòu)如圖1所示。

          在圖1中,消息塊(message block)的第一個(gè)字節(jié)byte 0稱(chēng)為標(biāo)識(shí)(或地址),消息塊都是通過(guò)標(biāo)識(shí)來(lái)區(qū)分的。消息塊的長(zhǎng)度是固定不變的,為6字節(jié)。csdb采用的是異步串行傳輸方式,通過(guò)起始位和停止位完成字節(jié)的位同步,因此,在編碼中不必帶有時(shí)鐘信息,幀同步通過(guò)識(shí)別同步消息塊6個(gè)字節(jié)的十六進(jìn)制“a5”來(lái)實(shí)現(xiàn),同步消息塊標(biāo)識(shí)了每個(gè)數(shù)據(jù)幀的開(kāi)始位置。

          其中:t1=幀時(shí)間長(zhǎng)=1/最大更新率

          t2=消息塊間隙時(shí)間長(zhǎng)(無(wú)限制)

          t3=總線空閑時(shí)間(最小11bit的時(shí)間)

          t4=字節(jié)間隙時(shí)長(zhǎng)(無(wú)限制)

          csdb總線信號(hào)測(cè)試

          測(cè)試原理

          對(duì)csdb總線信號(hào)進(jìn)行測(cè)試,是先將csdb信號(hào)電平轉(zhuǎn)換為和計(jì)算機(jī)適應(yīng)的rs-232電平,再根據(jù)csdb總線的規(guī)則,實(shí)現(xiàn)對(duì)控制信息的正確發(fā)送和實(shí)時(shí)反饋信息的正確接收,并根據(jù)需要,將有用信息提出送測(cè)試系統(tǒng)處理,完成對(duì)航空機(jī)載設(shè)備的自動(dòng)化測(cè)試。具體步驟分為信號(hào)電氣轉(zhuǎn)換、通信同步和labview實(shí)現(xiàn)。

          通信配置

          (1)電氣轉(zhuǎn)換

          csdb總線信號(hào)經(jīng)過(guò)電氣轉(zhuǎn)換芯片后直接與計(jì)算機(jī)進(jìn)行串口通信。在進(jìn)行rs-422-a到rs-232的電氣標(biāo)準(zhǔn)轉(zhuǎn)換時(shí),使用max488全雙工電平轉(zhuǎn)換芯片。

          (2)通信同步

          csdb總線為異步串行通信,按照串行數(shù)據(jù)傳輸?shù)幕驹?,?shí)現(xiàn)正確通信的基本條件是保持接收和發(fā)送雙方時(shí)鐘一致,以避免發(fā)送與接收雙方的數(shù)據(jù)位寬產(chǎn)生累積誤差,造成不能正確檢測(cè)到總線數(shù)據(jù)。在串行通信中,信息是按位傳送的,傳送速率用波特率表示,數(shù)據(jù)的發(fā)送和接收受各自的時(shí)鐘控制,因此,發(fā)送方和接收方的波特率應(yīng)保持一致,經(jīng)過(guò)具體部品測(cè)試,csdb數(shù)據(jù)總線數(shù)據(jù)波特率為12.5kbit/s。為與此同步,要求計(jì)算機(jī)產(chǎn)生的波特率也應(yīng)為12.5kbit/s。

          如圖2所示,在計(jì)算機(jī)中負(fù)責(zé)串行通信的器件為8250異步通信適配器(uart),或其兼容元器件,程序通過(guò)對(duì)8250內(nèi)部的寄存器讀寫(xiě)來(lái)控制通信模式,8250使用頻率為1.432m赫茲的基準(zhǔn)時(shí)鐘輸入信號(hào)作為主數(shù)據(jù)時(shí)鐘,通過(guò)對(duì)8250內(nèi)部寄存器置位來(lái)獲得需要的波特率。在異步串行通信中,為防止由于信號(hào)畸變、不同步等原因造成對(duì)數(shù)據(jù)的誤讀,通信適配器規(guī)定每讀取或發(fā)送1bit數(shù)據(jù)至少要用16個(gè)時(shí)鐘脈沖來(lái)控制其波特率,實(shí)際應(yīng)用中波特率時(shí)鐘是主時(shí)鐘的1/16或1/(16×n),對(duì)于要求的波特率,在寫(xiě)寄存器時(shí)用如下公式計(jì)算除數(shù)因子:

          除數(shù)因子=(主數(shù)據(jù)時(shí)鐘頻率/16)/波特率=115200/波特率

          在算出除數(shù)因子后,將相應(yīng)數(shù)據(jù)寫(xiě)入8250內(nèi)部的波特率設(shè)置寄存器,即可在串口得到相應(yīng)波特率的數(shù)據(jù)。經(jīng)計(jì)算,115200除以12500后不為整數(shù),所以,受到計(jì)算機(jī)異步通信適配器8250的限制,在波特率設(shè)置上不能完全和12.5kbit/s相同,經(jīng)計(jì)算,當(dāng)除數(shù)因子取9時(shí)對(duì)應(yīng)的波特率為12.8kbit/s,與csdb總線要求的波特率最也接近,其每bit占據(jù)78μs,相對(duì)80μs/bit(12.5kbit/s)誤差為0.25%,小于串行通信波特率最大容許誤差5%。理論上可實(shí)現(xiàn)通信同步,因此在程序上將通信的波特率設(shè)置為12.8kbit/s。

          基于labview7.1的總線通信

          用labview7.1編程來(lái)實(shí)現(xiàn)總線通信時(shí),用戶(hù)不必對(duì)gpib,rs-232,vxi等硬件有專(zhuān)門(mén)的了解,labview為用戶(hù)提供了標(biāo)準(zhǔn)的i/o接口函數(shù)庫(kù),在labview的functions→all functions→ instrument i/o中提供了gpib、串口通信等各種函數(shù)模塊,為實(shí)現(xiàn)串口通信提供了便捷的實(shí)現(xiàn)方法。軟件流程如圖3所示。

          軟件設(shè)計(jì)中的關(guān)鍵問(wèn)題及解決方法

          (1)發(fā)送數(shù)據(jù)幀結(jié)構(gòu)多樣化解決方案

          通過(guò)對(duì)系統(tǒng)中不同部品的實(shí)現(xiàn)測(cè)試發(fā)現(xiàn),由于其互聯(lián)情況不同,相應(yīng)部品控制碼的幀結(jié)構(gòu)也不盡相同,同步字后跟1-4個(gè)控制消息塊不等,而在自動(dòng)化測(cè)試系統(tǒng)中要求此通信軟件具有通用性。為此,將發(fā)送程序中控制消息塊接口設(shè)為最大(4個(gè)),當(dāng)程序檢測(cè)到某一接口有數(shù)據(jù)輸入時(shí)就發(fā)送此數(shù)據(jù),若沒(méi)有,則以相等長(zhǎng)度的延時(shí)代替,這樣,在保證所有數(shù)據(jù)幀周期相同的情況下,滿(mǎn)足了不同部品控制碼的要求。

          (2)接收數(shù)據(jù)多重校驗(yàn)

          數(shù)據(jù)接收程序中,labview要求設(shè)置接收數(shù)據(jù)緩沖長(zhǎng)度,程序在接收此長(zhǎng)度數(shù)據(jù)后才能進(jìn)行后續(xù)處理,實(shí)際程序運(yùn)行后發(fā)現(xiàn),如緩沖長(zhǎng)度僅為一幀(24×8bit),接收數(shù)據(jù)有可能誤接收,為避免此情況,將緩沖長(zhǎng)度設(shè)置為一幀字長(zhǎng)的4-6倍,在接收到數(shù)據(jù)后,再根據(jù)同步字、標(biāo)號(hào)等多重匹配原則進(jìn)行驗(yàn)證后數(shù)據(jù)取出,再將4-6組數(shù)據(jù)相比較,如相同,則認(rèn)為數(shù)據(jù)可信,如不相同,則認(rèn)為數(shù)據(jù)不可信。

          結(jié)語(yǔ)

          作csdb總線數(shù)據(jù)測(cè)試時(shí),可以方便地通過(guò)界面改變需要發(fā)送的數(shù)據(jù),接收的數(shù)據(jù)也可實(shí)時(shí)顯示出來(lái),便于測(cè)試分析,把此程序封裝成一個(gè)子函數(shù)模塊,可應(yīng)用于某航空無(wú)線電自動(dòng)檢測(cè)系統(tǒng)中,基于對(duì)csdb總線的收發(fā)控制,成功實(shí)現(xiàn)了vir-32導(dǎo)航接收機(jī)、vhf-22甚高頻電臺(tái)等相關(guān)產(chǎn)品的自動(dòng)測(cè)試。



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();