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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于CAN總線的數(shù)據(jù)采集人機(jī)界面設(shè)計

          基于CAN總線的數(shù)據(jù)采集人機(jī)界面設(shè)計

          作者: 時間:2012-02-07 來源:網(wǎng)絡(luò) 收藏

          0 引言

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

          目前在鐵路機(jī)車內(nèi),模擬表盤大量存在,它給鐵路運(yùn)輸?shù)陌踩芾碓斐闪讼喈?dāng)大的不便。使用模擬表盤有以下缺點(diǎn):第一,沒有數(shù)據(jù)存儲功能,如果發(fā)生事故,就很難得到事故發(fā)生時的確切信息;第二,需要大量布線、安裝不便。如果在原模擬系統(tǒng)中添加設(shè)備,則需要重新布線;第三,不能利用成熟的數(shù)字信號的現(xiàn)代信息處理技術(shù)。對火車機(jī)車監(jiān)控系統(tǒng)而言,數(shù)據(jù)測量和傳輸?shù)目焖傩浴?zhǔn)確性、可靠性、存儲性、通訊的靈活性都是至關(guān)重要的。有必要將機(jī)車內(nèi)的模擬表數(shù)字化和智能化,在此基礎(chǔ)上利用現(xiàn)場技術(shù)構(gòu)成測控網(wǎng)絡(luò),完成對機(jī)車內(nèi)重要數(shù)據(jù)及時的采集、傳輸、存儲、顯示、報警。

          本鐵路機(jī)車數(shù)據(jù)平臺采用了技術(shù)。選用可靠性方面的考慮。總線最初廣泛用在汽車內(nèi)部的電子監(jiān)控上。由于火花塞產(chǎn)生的高頻干擾和發(fā)動機(jī)產(chǎn)生的機(jī)械震動都比較強(qiáng),而CAN總線能在這種工作中可靠的工作,說明其具有很強(qiáng)的抗干擾能力。該機(jī)車數(shù)據(jù)平臺中的智能模塊采用了89C51單片機(jī),其通訊部分使用了CAN控制器SJA1000。CAN總線通信控制器中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對通信數(shù)據(jù)的成幀處理,包括零位的插入和刪除、數(shù)據(jù)塊編碼、循環(huán)冗余檢驗、優(yōu)先級判別等項工作。CAN協(xié)議的一個特點(diǎn)是廢除了傳統(tǒng)的棧地址編碼,而代之以對通信數(shù)據(jù)塊進(jìn)行編碼。采用這種方法的優(yōu)點(diǎn)是可使網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)個數(shù)理論上不受限制,數(shù)據(jù)塊的標(biāo)識碼可由11位(按CAN技術(shù)規(guī)范2.0A)或29位(按CAN技術(shù)規(guī)范2.0B)二進(jìn)制數(shù)組成,因此可以定義2的11次方或2的29次方個不同的數(shù)據(jù)塊。這種按數(shù)據(jù)塊編碼的方式,還可使不同的節(jié)點(diǎn)同時接收到相同的數(shù)據(jù),這一點(diǎn)在分布式控制系統(tǒng)中非常有用。數(shù)據(jù)段長度最多為8個字節(jié),可滿足通常工業(yè)領(lǐng)域中控制命令、工作狀態(tài)及測試數(shù)據(jù)傳送的一般要求。同時,8個字節(jié)不會占用總線時間過長,從而保證了通信的實(shí)時性。CAN協(xié)議采用CRC效驗并可提供相應(yīng)的錯誤處理和重發(fā)功能,保證了數(shù)據(jù)通信的可靠性。

          1 機(jī)車數(shù)據(jù)平臺使用說明

          1.1原理

          機(jī)車數(shù)據(jù)平臺實(shí)際上是一臺分布式計算機(jī)系統(tǒng),其中采用了先進(jìn)的現(xiàn)場總線技術(shù)。機(jī)車數(shù)據(jù)平臺是將微處理器置入傳統(tǒng)的測量控制儀表,使他們各自都具有了數(shù)字計算和數(shù)據(jù)通訊能力(智能儀表),采用可進(jìn)行簡單連接的雙絞線等作總線,把多個測量儀表連接成網(wǎng)絡(luò),并按公開、規(guī)范的通訊協(xié)議(CAN總線協(xié)議),在現(xiàn)場儀表和遠(yuǎn)程計算機(jī)之間,實(shí)現(xiàn)數(shù)據(jù)傳輸和信息交換。簡而言之,它把單個分散的測量設(shè)備變成網(wǎng)絡(luò)節(jié)點(diǎn),已現(xiàn)場總線為紐帶,把他們聯(lián)系起來,共同完成自控任務(wù)的網(wǎng)絡(luò)系統(tǒng)與控制系統(tǒng)。現(xiàn)場總線使自控系統(tǒng)與設(shè)備有了通訊能力,把它們連成網(wǎng)絡(luò)系統(tǒng),加入到信息網(wǎng)絡(luò)的行列。

          本機(jī)車數(shù)據(jù)平臺采用CAN總線技術(shù)。CAN是控制局域網(wǎng)絡(luò)(Control Area Network)的簡稱,最早由德國BOSCH公司推出,用于汽車內(nèi)部測量與執(zhí)行部件間的數(shù)據(jù)通訊。眾所周知,現(xiàn)代汽車越來越多的采用電子控制裝置。由于這些控制須檢測及交換大量的數(shù)據(jù),采用硬接信號線的方式不但煩瑣、昂貴,而且難以解決問題,采用CAN總線上述問題得到了很好的解決。由于CAN總線本身的特點(diǎn),其應(yīng)用范圍已不在局限于汽車工業(yè),而向過程工業(yè)、機(jī)械工業(yè)、紡織工業(yè)、農(nóng)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械及傳感器領(lǐng)域發(fā)展。

          1.2功能

          1每秒一次采集各智能表的數(shù)據(jù)和各開關(guān)量的狀態(tài)。智能表包括電壓表、電流表、壓力表和速度表等;開關(guān)量包括繼電器接觸器按鈕的通斷、信號燈的明滅、各種開關(guān)和接點(diǎn)的閉合等。

          2設(shè)定各智能表的上報警限、下報警限和偏差報警限,并在各智能表超出報警限時發(fā)出報警信息。

          1.3性能指標(biāo)

          1可容納54個智能表和8塊開關(guān)量采集卡(每塊16個開關(guān)量)。

          2智能表輸入有隔離,隔離電壓5000伏;開關(guān)量輸入也有隔離,隔離電壓1500伏。

          3智能表接受75mv、10v和110v交直流輸入(按用戶要求)。

          4智能表測量精度2%。

          5電源:輸入:70——130V直流/150W

          輸出:5V/8A 24V/4A

          1.4智能儀表功能

          1保留了原指針模擬表的功能,即接受一個模擬量輸入,并用指針顯示該模擬量的數(shù)值,包括電壓、電流、轉(zhuǎn)速、溫度和壓力等。

          2把輸入的模擬量轉(zhuǎn)化為相應(yīng)的數(shù)字量,隔離后通過CAN總線發(fā)送給站,發(fā)送的數(shù)據(jù)中包括報警(上超限、下超限,偏差超限)信息。

          3接受來自監(jiān)控報警器的設(shè)定信息,包括上超限設(shè)定、下超限設(shè)定,偏差超限設(shè)定。

          1.5開關(guān)量采集卡的功能、協(xié)議與設(shè)定

          116路獨(dú)立的光電隔離開關(guān)量輸入。

          2用來檢測開關(guān)、繼電器和電磁閥等的通斷,指示燈的明滅。

          3每秒鐘一次將16路開關(guān)量狀態(tài)讀入,而后通過CAN總線發(fā)送給站。

          系統(tǒng)能容納8塊開關(guān)量采集卡,總共能檢測到16*8=128個開關(guān)量狀態(tài)。每塊采集卡需要設(shè)定一個獨(dú)一無二的ID號,范圍限定在55到62。ID號通過開關(guān)量采集卡上的跳線ID設(shè)定。ID號按二進(jìn)制編碼,跳線短接為0,反之為1。

          1.6監(jiān)控報警器的功能、校準(zhǔn)智能表以及報警限的設(shè)定

          1.6.1功能

          1設(shè)定智能表上超限、下超限和偏差超限的量值,并將這些量通過CAN總線發(fā)送給智能表和數(shù)據(jù)采集站。

          2校準(zhǔn)智能表。

          3接受來自數(shù)據(jù)采集站的報警信息,并顯示報警信息和通過繼電器觸電輸出報警信息。

          1.6.2校準(zhǔn)智能表

          1壓校準(zhǔn)鍵,使進(jìn)入校準(zhǔn)狀態(tài)。自動顯示接受到的01號智能表的數(shù)值(中間值,滿量程=1000)。

          2壓切換鍵,而后用鍵盤輸入要校準(zhǔn)的智能表的ID號,壓確認(rèn)鍵,則顯示該智能表的中間值。

          3將該表與用標(biāo)準(zhǔn)表實(shí)際測量到的值比較,確定誤差。

          4調(diào)節(jié)智能表電路板上的電位器VR2消除誤差。

          1.6.3報警限的設(shè)定

          1在校準(zhǔn)狀態(tài)下壓切換鍵,而后輸入要設(shè)定的智能表的ID號,壓確定鍵后,則顯示該智能表的中間值。

          2壓切換鍵,再壓切換鍵,則光標(biāo)切換到第二行,第二行顯示的數(shù)值為存儲的上超限值。

          3修改上超限值,而后壓確認(rèn)鍵,則修改后的上超限值被存儲并通過總線發(fā)送給智能表和數(shù)據(jù)采集站。

          4壓切換鍵,將光標(biāo)切換到第三行,第三行顯示的數(shù)值為存儲的下超限值。

          5修改下超限值,而后壓確認(rèn)鍵,則修改后的下超限值被存儲并通過總線發(fā)送給智能表和數(shù)據(jù)采集站。

          6壓切換鍵,將光標(biāo)切換到第四行,第四行顯示的數(shù)值為存儲的偏差超限值。

          7修改偏差超限值,而后壓確認(rèn)鍵,則修改后的偏差超限值被存儲并通過總線發(fā)送給只能表和數(shù)據(jù)采集站。

          2界面說明及流程圖
          我們這里用五塊智能表和一組開關(guān)量來說明本課題的主要功能:

          1每秒一次采集各智能表的數(shù)據(jù)和各開關(guān)量的狀態(tài)。智能表包括電壓表、電流表和壓力表等。

          2設(shè)定各智能表的上報警限、下報警限和偏差報警限,并在各智能表超出報警限時發(fā)出報警信息。

          流程圖如圖1所示:

          圖1 數(shù)據(jù)采集界面總流程圖

          在這里,將模擬量進(jìn)行如表1設(shè)置:

          表1模擬量設(shè)置

          數(shù)據(jù)采集界面運(yùn)行圖如圖2所示:

          圖2 數(shù)據(jù)采集界面

          由圖2看出,模擬量數(shù)據(jù)轉(zhuǎn)換為數(shù)字量數(shù)據(jù)已經(jīng)相當(dāng)精確;1#、2#、5#數(shù)據(jù)均在下限~上限之間,均正常運(yùn)行;11#、13#分別超過上限、低于下限,均發(fā)出報警警告。

          利用CAN總線技術(shù)構(gòu)成網(wǎng)絡(luò),利用VB語言設(shè)計數(shù)據(jù)采信界面,定現(xiàn)了顯示智能表讀數(shù)、開關(guān)量數(shù)據(jù)并在超限時報警的功能。運(yùn)行(采集模塊6個)后表明,性能穩(wěn)定,采集數(shù)據(jù)的波動幅度小1%,數(shù)據(jù)準(zhǔn)確性令人滿意,充分體現(xiàn)了CAN總線的優(yōu)越性。

          電接點(diǎn)壓力表相關(guān)文章:電接點(diǎn)壓力表原理


          評論


          相關(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); })();