<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于CAN總線(xiàn)智能數據采集模塊設計

基于CAN總線(xiàn)智能數據采集模塊設計

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

引言

本文引用地址:http://dyxdggzs.com/article/149770.htm

集中管理、分散控制的分散控制系統(distributed control system)解決了集中式直接數字控制系統對控制器處理能力和可靠性要求過(guò)高的缺陷,但由于其具有一定的封閉性、各分散控制系統之間的不兼容性,集散控制系統難以實(shí)現網(wǎng)絡(luò )互連和信息共享。

現場(chǎng)的出現使得全數字化,全開(kāi)放式,具有可互操作性,徹底分散的現場(chǎng)控制系統(fieldbus control system)得以實(shí)現,現場(chǎng)控制系統已成為自動(dòng)化領(lǐng)域中的一個(gè)熱點(diǎn),也將成為工業(yè)過(guò)程控制的一個(gè)重要發(fā)展方向。

控制器局域網(wǎng)(controller areanet work)是德國B(niǎo)osch公司在現代汽車(chē)電子技術(shù)領(lǐng)域中推出的一種多主控制器局域網(wǎng)絡(luò )技術(shù),能有效支持分布式和實(shí)時(shí)控制,最早主要應用于汽車(chē)內部電子監測和控制器件數據通信。由于其高可靠性及高實(shí)時(shí)性而廣泛應用于工業(yè)現場(chǎng)控制等領(lǐng)域。其突出的特點(diǎn)是采用最長(cháng)8個(gè)數據字節的短幀結構,傳輸時(shí)間短,實(shí)時(shí)性高;另外協(xié)議取消了傳統的地址編碼概念,取而代之的是數據塊標識符的無(wú)損優(yōu)先級仲裁,給分布式控制系統實(shí)現間的信息共享帶來(lái)了極大的方便。

總線(xiàn)的主要特點(diǎn)及發(fā)展趨勢,我校電液實(shí)驗室開(kāi)放式電液伺服控制系統的改造中采用CAN總線(xiàn)作為現場(chǎng)總線(xiàn)標準,構建了一套基于CAN總線(xiàn)節點(diǎn)的現場(chǎng)總線(xiàn)控制系統。文中將詳細介紹的軟硬件,該可以實(shí)現控制現場(chǎng)的數字、模擬信號采集,現場(chǎng)數據預處理,數據傳送以及與監控計算機通訊等功能。

液壓伺服系統簡(jiǎn)介

開(kāi)放式電液伺服控制系統包括數臺電液伺服位置控制實(shí)驗臺、電液比例轉速控制實(shí)驗臺、電液比例力控制實(shí)驗臺。各實(shí)驗臺配置1套基于CAN總線(xiàn)的模塊和內置控制算法的智能控制模塊,通過(guò)CAN總線(xiàn)將各分散的采集模塊和控制模塊組成一個(gè)控制網(wǎng)絡(luò ),1臺PC機通過(guò)內置的CAN適配卡接入局部網(wǎng)絡(luò ),模擬工業(yè)現場(chǎng)的過(guò)程控制,PC機作為擔任過(guò)程控制監控任務(wù)的控制站,可以實(shí)時(shí)顯示各實(shí)驗臺工作狀況及向各實(shí)驗臺發(fā)送啟停命令,同時(shí)還可以通過(guò)高速以太網(wǎng)將現場(chǎng)數據遠程傳輸至工程師站等管理級計算機,實(shí)現如圖1所示的分層現場(chǎng)總線(xiàn)控制系統。

圖1 開(kāi)放式電液伺服控制系統總體結構

系統硬件

模塊作為一種智能化現場(chǎng)儀表,主要包括硬件系統和控制軟件2大部分。模塊硬件部分以80C196KC單片機作為采集模塊的核心,外圍電路主要包括CAN總線(xiàn)接口,程序存儲器,電源監控及復位電路,GAL譯碼電路,DI、A/D轉換電路及模塊參數設置電路等。模塊結構如圖2所示。

圖2 數據采集模塊結構

80C196KC單片機簡(jiǎn)介

80C196KC是Intel公司推出的高性能16位單片機。和MCS51系列單片機相比,MCS196系列單片機具有更快的運算速度和更豐富的片上外圍設備,提高了控制系統的實(shí)時(shí)性,主要體現在以下幾個(gè)方面:

a.可采用8/16位動(dòng)態(tài)總線(xiàn)配置方式,增強系統的靈活性。

b.CPU中的算術(shù)邏輯單元不采用常規的累加器結構,改用寄存器-寄存器結構。CPU的操作直接面向256字節的寄存器,消除了51單片機中存在的累加器的瓶頸問(wèn)題,提高了操作速度和數據吞吐能力。

c.有一套效率更高、執行速度更快的指令系統??梢詫Х枖岛筒粠Х枖颠M(jìn)行操作,16×16位只需1.4μs(20MHz),32÷16位只需2.4μs(20MHz),此外還有3操作數指令,大大提高指令效率。

選擇80C196KC單片機作為數據采集模塊的核心器件,可以滿(mǎn)足應用系統的要求,保證系統的可靠性和實(shí)時(shí)性。

CAN總線(xiàn)接口電路

CAN總線(xiàn)接口由PHILIPS公司的獨立總線(xiàn)控制器SJA1000和接口芯片82C250組成。SJA1000在軟件上和引腳上都是與它的前款PCA82C200獨立控制器兼容的,并增加了許多新功能:標準幀數據結構和擴展幀數據結構,并且這2種幀格式都具有單/雙接收過(guò)濾器;64字節的接收FIFO;可讀錯誤計數器和可編程的出錯警告界限以及僅聽(tīng)模式和自測試模式等。硬件連接上比較簡(jiǎn)單:SJA1000的數據地址總線(xiàn)是分時(shí)復用的,可以直接與80C196KC的P3口連接,對應控制線(xiàn)相連即可。需注意的是,80C196KC是Intel公司的處理器,因此SJA1000工作在Intel方式,mode引腳應接電源正端,另外單片機的外部中斷只有正跳變有效,而SJA1000的中斷信號是低電平有效,因此需反相后才能連接單片機中斷引腳。

82C250器件提供對總線(xiàn)的差動(dòng)發(fā)送能力和對CAN控制器的差動(dòng)接收能力,其RS引腳允許選擇3種不同的工作方式:高速、斜率控制和待機。在低速和總線(xiàn)長(cháng)度較短時(shí),一般采用斜率控制方式,限制上升和下降斜率,降低射頻干擾,斜率可通過(guò)由RS引腳至地連接的電阻進(jìn)行控制。通信信號傳輸到導線(xiàn)的端點(diǎn)時(shí)會(huì )發(fā)生反射,反射信號會(huì )干擾正常信號的傳輸,因而總線(xiàn)兩端通常應接有終端電阻,以消除反射信號,其阻值約等于傳輸電纜的特性阻抗,一般取120Ω。

數字信號采集電路

電液伺服實(shí)驗臺需要采集的物理量之一是液壓缸的位移,實(shí)驗室現有裝備的位移傳感器有2種:感應同步器和旋轉光電編碼器。二者都配有帶BCD碼輸出的數顯測量?jì)x表,直接采集數顯表的數字量可以保證采集模塊具有儀表的高精度,避免因采集傳感器前端脈沖而帶來(lái)的誤差,同時(shí)也使電路更加簡(jiǎn)潔。

數字顯示儀表的有效BCD碼位數為5位(個(gè)、十、百位及2位小數位),另帶一位符號位,共有21位二進(jìn)制位。80C196KC片內不帶程序存儲器,因而用P3和P4口作為地址數據總線(xiàn),單片機剩余有效IO口資源較少,因此必須擴展并口。并口擴展可以采用專(zhuān)用擴展芯片或通用74系列的邏輯芯片,為了簡(jiǎn)化電路和編程,采用常見(jiàn)的可擴展24路IO口的82C55A并口擴展芯片?,F場(chǎng)的數字顯示儀表的輸出是非標準的TTL電平,為了實(shí)現模塊與前端儀表兼容和隔離,對輸入的數字信號采用了TLP521光耦進(jìn)行電平轉換和信號隔離。

A/D轉換電路電路

本模塊中A/D轉換器選用AD1*,它與AD574兼容,12位分辨率,輸入電壓范圍0~±10V或0~±5V單雙極性可選,轉換時(shí)間為10μs,單通道最大采集速率50KHz,片內帶基準電壓、三態(tài)緩沖器,且具有采樣保持電路,完全滿(mǎn)足的需要。

模擬電壓信號來(lái)自BLR1型拉壓式稱(chēng)重傳感器,傳感器壓力測量量程為0~5000kg,輸出電壓信號0~16mV。為適應AD1*輸入電壓范圍,需對傳感器的微弱電壓信號放大,但同時(shí)并存許多噪聲源:傳感器內阻、電纜電阻、放大器電路以及電路周?chē)碾姶鸥蓴_源。因此,電壓信號前端采用低通濾波器和差分放大器AD620等來(lái)抑制差模噪聲和共模噪聲,如圖3所示。

圖3

設Vs為傳感器的信號電壓,Vn1、Vn2為外部噪聲源在電纜線(xiàn)上的感應噪聲信號,Vns為電路噪聲。因此,差分放大器輸出電壓Vo為:

Vo=A(V1-V2)=A(Vs+Vns+(Vn1+Vn2));如果噪聲源與信號源頻譜不重疊,則經(jīng)低通濾波電路后:Vf≈AVs。

GAL譯碼電路

本模塊電路中,單片機擴展外圍器件較多,有程序存儲器AT28C256、CAN控制器SJA1000、并口擴展82C55A和A/D轉換AD1*。196單片機在模塊中主要工作于8位總線(xiàn)寬度下,由于A(yíng)D1*采用了12位并行輸出模式,因此還需動(dòng)態(tài)改變總線(xiàn)寬度。為了簡(jiǎn)化電路,以及適應196單片機較高總線(xiàn)速度的要求,譯碼電路放棄了傳統的門(mén)電路組合的方法,采用了可多次編程的通用陣列邏輯器件(generic array logic)GAL16V8。這樣可以減少元器件數量、降低線(xiàn)路復雜程度,同時(shí)降低故障機率及提高硬件設計的靈活性。

GAL16V8引腳分配及邏輯表達式如下:

  Input device‘P16V8AS’;

  WR,RD,CAN,A12,A13,A14,A15,ADC

  pin2,3,4,5,6,7,8,9;

  BUSWIDTH,CSCAN,INTCAN,CEROM,CSADC, CS8255,NTADC,EADC

  pin19,18,17,16,15,14,13,12;

  EQUATI*

  !CEROM=!A15!A14A13!A12#

  !A15!A14A13A12

  #!A15A14!A13!A12#!A15

  A14!A13A12

  #!A15A14A13!A12#!A15

  A14A13A12

  #A15!A14!A13!A12#A15!

  A14!A13A12;

  !CSCAN=A15!A14A13!A12;

  !CS8255=A15!A14A13A12;

  !CSADC=A15A14!A13!A12;

  BUSWIDTH=A15A14!A13!A12;

  !INTCAN=CAN;

  !INTADC=ADC;

  !CEADC=WRRD;

由上述邏輯表達式可以看出,外圍器件地址基地址由最高4位地址A12~A15決定,AT28C256、SJA1000、82C55A及AD1*對應基地址分別為:2000H,A000H,B000H,C000H。當選通AD1*時(shí),單片機總線(xiàn)寬度控制引腳BUSWIDTH將置為高,動(dòng)態(tài)調整到16位總線(xiàn)寬度,其余時(shí)刻,BUSWIDTH為低,單片機保持8位總線(xiàn)寬度。INTCAN和INTADC分別是對SJA1000和AD1*中斷請求信號取反。GAL表達式文件用ABEL軟件編譯形成JED文件,使用通用編程器燒入芯片,且可反復多次燒寫(xiě),方便調試。

軟件編程

控制軟件的合理設計是模塊實(shí)時(shí)、有效地完成數據采集及通信任務(wù)的關(guān)鍵,主要包括系統初始化、CAN信息處理、數據采集及處理等功能模塊。系統開(kāi)放一個(gè)定時(shí)中斷,定時(shí)時(shí)間對應上位機發(fā)送來(lái)的采樣周期。CAN報文的接收主要有2種方式:中斷和查詢(xún)方式。為提高系統的實(shí)時(shí)性,同時(shí)也保證接收緩沖器不出現數據溢出現象,模塊中采用中斷接收方式。CAN報文發(fā)送采用查詢(xún)方式,即當需要發(fā)送數據時(shí),將預先組織好的數據幀按字節寫(xiě)入SJA1000的發(fā)送緩沖寄存器中。

SJA1000的初始化主要是在SJA1000的復位模式下設置相應寄存器。在初始化CAN內部寄存器時(shí)應注意同一網(wǎng)絡(luò )中各模塊的通信速率的設置應一致。下面給出SJA1000工作在BasicCAN模式下的簡(jiǎn)單的初始化源程序:

  INIT-SJA1000:

  LDB AL, #01H

  STB AL, REG-CR??;復位SJA1000

  LDB AL, #0AAH

  STB AL, REG-OCR??;設置輸出寄存器為普通輸出模式

  LDB AL, #048H

  STB AL, REG-CDR??;使能內部比較器,禁止時(shí)鐘輸出

  STB #01H, REG-BTR0??;設置波特率為

  250K(使用16M晶振)

  STB #1CH, REG-BTR1

  LDB AL, #00H

  STB AL, REG-ACR??;設置驗收碼寄存器

  LDB AL, #0FFH

  STB AL, REG-AMR??;設置驗收屏蔽碼寄存器

  LDB AL, REG-CR

  ANDB AL, #0FEH??;SJA1000退出復位模式

  LDB AL, #02H

  STB AL, REG-CR??;設置中斷寄存器,使能

  接收中斷

  RET

以上程序段可以正確初始化SJA1000,為了提高程序可靠性和容錯性,實(shí)際應用中應該讀出SJA1000寄存器內容并加以比較,從而判斷是否正確寫(xiě)入。

結束語(yǔ)

基于以上所述的軟、硬件設計實(shí)現了CAN協(xié)議所包括數據鏈路層和物理層,由于CAN總線(xiàn)協(xié)議沒(méi)有定義應用層,因此在實(shí)際的應用中有必要定義高層通信協(xié)議,即相應的命令、參數和數據的格式。國際上比較流行的基于CAN底層協(xié)議的高層協(xié)議有DeviceNet和CANopen,我們在簡(jiǎn)單應用中,采用了自定義的簡(jiǎn)單通信協(xié)議,在此不作敘述。設計的智能數據采集模塊應用于電液伺服控制系統以來(lái),運行情況良好,由于CAN總線(xiàn)的應用,大大提高了分布式數據采集和控制系統的靈活性、可靠性和實(shí)時(shí)性,建立了一個(gè)有效的現場(chǎng)總線(xiàn)控制系統的實(shí)驗教學(xué)平臺。同時(shí)該數據采集模塊也可以方便地移植到工業(yè)上的其它控制系統中,與其它基于CAN總線(xiàn)的智能控制模塊組成CAN現場(chǎng)總線(xiàn)控制系統。

電氣符號相關(guān)文章:電氣符號大全


稱(chēng)重傳感器相關(guān)文章:稱(chēng)重傳感器原理


評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>