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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CAN總線的數(shù)據(jù)采集與處理系統(tǒng)的設(shè)計(jì)

          CAN總線的數(shù)據(jù)采集與處理系統(tǒng)的設(shè)計(jì)

          作者: 時(shí)間:2016-12-13 來源:網(wǎng)絡(luò) 收藏
            1 引言

            現(xiàn)場(chǎng)總線及其應(yīng)用技術(shù)日益成為國際自動(dòng)控制領(lǐng)域關(guān)注的一個(gè)焦點(diǎn)。CAN總線是目前公認(rèn)的幾種最有前途的現(xiàn)場(chǎng)總線之一。通信介質(zhì)可以是雙絞線、同軸電纜和光纖,其通信速率可達(dá)1mbps。can國際標(biāo)準(zhǔn)的制定更加推動(dòng)了它的發(fā)展和應(yīng)用,基于can總線的工業(yè)應(yīng)用系統(tǒng)業(yè)大量涌現(xiàn)。其主要應(yīng)用領(lǐng)域包括大型儀器設(shè)備、傳感器技術(shù)數(shù)據(jù)采集系統(tǒng)和工業(yè)現(xiàn)場(chǎng)監(jiān)控系統(tǒng)等[1][2]。本文結(jié)合can總線的特點(diǎn),介紹了基于can總線的數(shù)據(jù)采集與處理的一種設(shè)計(jì)方法。

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

            2 系統(tǒng)設(shè)計(jì)

            2.1 can系統(tǒng)概要

            

            圖1 結(jié)構(gòu)簡(jiǎn)圖

            本系統(tǒng)由兩個(gè)cpu通過雙口 ram相互連接組成,一片cpu(p87c591)負(fù)責(zé)can信號(hào)的發(fā)送與接收,另一片cpu(p89c58ba)負(fù)責(zé) rs-485 信號(hào)的發(fā)送與接收。設(shè)計(jì)中通訊控制器選用了集成有can控制器的p87c591單片機(jī)。它自帶的can控制器完全具有sja1000的功能,可完成can協(xié)議中規(guī)定的所有數(shù)據(jù)鏈路層和物理層的功能。且p87c591自帶了15個(gè)中斷源和看門狗定時(shí)器(wdt),應(yīng)用十分方便。系統(tǒng)結(jié)構(gòu)簡(jiǎn)圖如圖1所示。圖中各部分所完成的主要功能如下:

            (1) cpu-1:該芯片帶有can接口,故可與下位機(jī)進(jìn)行can通訊。通過can總線發(fā)送上位機(jī)的設(shè)定信息給下位機(jī),同時(shí)接收下位機(jī)提供的數(shù)據(jù)信息,將其存入雙口ram中,以供cpu-2來查詢。

            (2) cpu-2:該芯片連接有max491和max485 芯片,故可與外部進(jìn)行422或485通訊,上位機(jī)的信息通過485通訊讀入cpu-2之中,cpu-2再將其存入雙口ram之中,以供cpu-1來查詢,cpu-1再通過can總線將此設(shè)定信息傳送給上位機(jī)。反之,下位機(jī)的所有已存入雙口ram的檢測(cè)值信息,也是通過該單片機(jī)的讀取,并通過485通訊,將所有顯示信息在人機(jī)界面上顯示。

            (3) 雙口ram:雙口ram用于存儲(chǔ)系統(tǒng)的設(shè)置信息和狀態(tài)信息,完成各種信息存儲(chǔ)與交換。選用存儲(chǔ)容量為16k的idt7006系列,并采用后備電池支持,保證掉電時(shí)存儲(chǔ)的信息不丟失。雙口ram按存儲(chǔ)內(nèi)容不同,分為設(shè)置區(qū)、狀態(tài)區(qū)和預(yù)留區(qū)。設(shè)置區(qū)用來存儲(chǔ)上位機(jī)的信息;狀態(tài)區(qū)用來存儲(chǔ)從下位機(jī)收集的系統(tǒng)狀態(tài)信息;預(yù)留區(qū)則作為預(yù)留備用。

            2.2 p87c591單片機(jī)概要

            在系統(tǒng)中采用philips公司生產(chǎn)的p87c591單片機(jī),該單片機(jī)是一個(gè)8 位高性能微控制器具有片內(nèi)can控制器[3],大大簡(jiǎn)化了硬件電路的設(shè)計(jì),提高了can接口的穩(wěn)定性。p87c591 采用了強(qiáng)大的80c51指令集,并集成了sja1000 can控制器的pelican功能。主要有以下功能特點(diǎn):can2.0b控制器,支持11位標(biāo)準(zhǔn)標(biāo)識(shí)符和29位擴(kuò)展標(biāo)識(shí)符,4個(gè)可獨(dú)立配置的驗(yàn)收濾波器,都可“在運(yùn)行中改變”。can控制器的發(fā)送緩沖區(qū)能夠保存一個(gè)完整的can信息幀(標(biāo)準(zhǔn)或擴(kuò)展幀格式),只要通過cpu啟動(dòng)發(fā)送,信息字節(jié)就從發(fā)送緩沖區(qū)傳輸?shù)絚an內(nèi)核模塊完成發(fā)送。can接口包含5個(gè)實(shí)現(xiàn)cpu與can控制器連接的特殊功能寄存器,對(duì)重要can寄存器的訪問通過快速自動(dòng)增加的尋址和對(duì)特殊功能寄存器的位尋址實(shí)現(xiàn)。接收一個(gè)信息時(shí),can內(nèi)核模塊將串行位流轉(zhuǎn)換成并行數(shù)據(jù)輸入到驗(yàn)收濾波器,通過該可編程濾波器,p87c591可以確定實(shí)際接收到的信息。

            p87c591連接的can節(jié)點(diǎn)電路設(shè)計(jì)比較簡(jiǎn)單,所需的外部元件只是一個(gè)晶振加兩個(gè)電容驅(qū)動(dòng)片內(nèi)震蕩器、一個(gè)連接到復(fù)位腳的電阻、電容。使用片內(nèi)上電復(fù)位電路以及一個(gè)收發(fā)器將p87c591連接到can總線上。如圖2所示。

            

            圖2 can 節(jié)點(diǎn)電路

            2.3 can總線p87c591單片機(jī)側(cè)的主要任務(wù)

            在整個(gè)系統(tǒng)中591起到數(shù)據(jù)傳輸和處理的作用,通過can總線接收數(shù)據(jù)采集節(jié)點(diǎn)接收來的信息,整理后按協(xié)議存儲(chǔ)到雙口ram中。其主要任務(wù)有以下兩點(diǎn):其一采集下位機(jī)的數(shù)據(jù)信息;其二將采集來的信息按照協(xié)議的約定存儲(chǔ)到雙口ram中的固定的位置,便于58查詢顯示。

            3 can總線軟件設(shè)計(jì)

            can總線軟件設(shè)計(jì)主要包括兩大部分:通信網(wǎng)絡(luò)的應(yīng)用層協(xié)議和功能實(shí)現(xiàn)的流程和編碼。can通信軟件主要由初始化、接收處理、發(fā)送處理及中斷處理等組成。本文重點(diǎn)介紹發(fā)送、接收處理子程序。

            3.1 發(fā)送程序

            發(fā)送子程序負(fù)責(zé)節(jié)點(diǎn)報(bào)文的發(fā)送。信息從can控制器發(fā)送到can總線是由can控制器自動(dòng)完成的。其流程圖如圖3所示。

            

            圖3 查詢發(fā)送流程圖

            3.2 接收程序

            接收子程序負(fù)責(zé)接收節(jié)點(diǎn)報(bào)文的接收。信息從can總線到can緩沖區(qū)是由can控制器自動(dòng)完成的,接收程序只需從接收緩沖區(qū)讀取要接收的信息。其流程圖如圖4所示。

            

            圖4 中斷接收流程圖

            4 問題討論

            本設(shè)計(jì)的硬件電路中, 采用雙cpu系統(tǒng),即用一個(gè)cpu完成測(cè)控功能,另一個(gè)cpu完成系統(tǒng)聯(lián)網(wǎng)和接口通信功能。cpu間的通信可以采用串口、并口等方式,但它們共同的缺點(diǎn)是操作復(fù)雜、速度慢。因此,采用雙口ram方式在兩個(gè)cpu系統(tǒng)間交換數(shù)據(jù)是一個(gè)不錯(cuò)的選擇。但雙口ram有時(shí)會(huì)發(fā)生共享沖突問題。

            一般雙口ram都提供了兩個(gè)完全獨(dú)立的端口,每個(gè)端口都有自己的控制線、地址線和數(shù)據(jù)線,cpu對(duì)雙口ram端口的操作等效于對(duì)它對(duì)外部ram進(jìn)行操作。雙口ram在使用上要注意的問題是如何避免兩端cpu對(duì)同一ram單元的爭(zhēng)用,雙口ram可提供三種防沖突方式:插入等待狀態(tài)的防沖突方式;信號(hào)燈防沖突方式;中斷防沖突方式。本設(shè)計(jì)中雙口ram主要用于兩個(gè)cpu之間交換數(shù)據(jù),由于交換的實(shí)時(shí)性很難用軟件來保證,所以采用中斷方式解決沖突問題。

            雙口ram被劃分為兩個(gè)區(qū)域,其中數(shù)據(jù)接收緩沖區(qū)是通信cpu插件向其發(fā)送命令和數(shù)據(jù)的區(qū)域;數(shù)據(jù)發(fā)送緩沖區(qū)是它向通信cpu插件發(fā)送數(shù)據(jù)的區(qū)域。為了保證數(shù)據(jù)交換的實(shí)時(shí)性和有效性,可采用雙口ram的中斷方式通知對(duì)方,信號(hào)intl和intr可作為cpu的一個(gè)中斷輸入。數(shù)據(jù)交換時(shí),先將數(shù)據(jù)放入對(duì)應(yīng)的雙口ram存儲(chǔ)區(qū),然后寫入對(duì)方信箱,以通知對(duì)方有數(shù)據(jù)發(fā)送;接收方在相應(yīng)的中斷中對(duì)數(shù)據(jù)進(jìn)行處理,同時(shí)讀自己的信箱以清除中斷信號(hào),然后再寫入對(duì)方信箱以告知其數(shù)據(jù)已處理完畢。

            5 結(jié)束語

            所設(shè)計(jì)的系統(tǒng)可用于電力參數(shù)監(jiān)控和其他工業(yè)自動(dòng)化場(chǎng)合。利用can總線結(jié)構(gòu)靈活簡(jiǎn)單,可靠性高,適應(yīng)性好,易于維護(hù)等優(yōu)點(diǎn)。通過rs485/422和can 總線轉(zhuǎn)換器實(shí)現(xiàn)現(xiàn)場(chǎng)智能設(shè)備與上位機(jī)間或其他監(jiān)控裝置的數(shù)據(jù)交換,利用上位機(jī)強(qiáng)大的數(shù)據(jù)處理能力,實(shí)現(xiàn)事件記錄、數(shù)據(jù)處理等功能。因此該系統(tǒng)用于工業(yè)領(lǐng)域性價(jià)比較高。



          評(píng)論


          技術(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); })();