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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW的CSDB總線數(shù)據(jù)測試技術(shù)

          基于LabVIEW的CSDB總線數(shù)據(jù)測試技術(shù)

          作者: 時(shí)間:2010-11-05 來源:網(wǎng)絡(luò) 收藏

            基于7.1的總線通信

            用7.1編程來實(shí)現(xiàn)總線通信時(shí),用戶不必對GPIB,RS-232,VXI等硬件有專門的了解,為用戶提供了標(biāo)準(zhǔn)的I/O接口函數(shù)庫,在Lab VIEW的Functions→All Functions→Instrument I/O中提供了GPIB、串口通信等各種函數(shù)模塊,為實(shí)現(xiàn)串口通信提供了便捷的實(shí)現(xiàn)方法。軟件流程如圖3所示。

            圖3 串口通信軟件流程圖

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

            (1) 發(fā)送結(jié)構(gòu)多樣化解決方法

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

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

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

            結(jié)語

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


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(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); })();