隨著微處理器的發(fā)展,利用微處理器對工業(yè)生產(chǎn)過程進行控制已成為趨勢,。在工業(yè)控制過程中,,由于大量數(shù)據(jù)信息的共享和傳輸,傳統(tǒng)的串行通信模式已不能滿足要求,。在工業(yè)控制領域中,,需要一種抗干擾性強、可靠性高,、傳輸速度快和傳輸距離長的總線結(jié)構(gòu),。CAN總線技術不僅滿足上述要求,而且還能實現(xiàn)多點間的信息傳遞,。本文使用PCI9810-cAN適配卡上的CAN總線組成局域網(wǎng)絡,,實現(xiàn)多微處理器間的信息傳遞和PC機對多處理器的檢控、通信,。
1 CAN總線簡介
CAN(Controller Area Networks)總線,,最早是由德國Bosch公司開發(fā)用于局域網(wǎng)控制的總線技術。CAN總線采用傳統(tǒng)的雙線串行通信方式,,具有診斷能力,,抗電磁干擾,,其最陜傳輸速率可達1 Mb·s-1,最長通信距離可達10 km(此時的傳輸速率大約為40 kb·s-1),。在CAN總線組成的局域網(wǎng)絡中,,通信節(jié)點之間不采用主從方式,而是具有總線訪問優(yōu)先權,,通信方式靈活,,可實現(xiàn)點對點,一點對多點及廣播方式傳輸數(shù)據(jù),。
2 系統(tǒng)通信模塊的硬件設計
CAN總線是由PCI9810-CAN適配卡提供,,本文主要完成通信節(jié)點的設計。通信節(jié)點不僅可以和PC機進行信息交換,,還可獨立與其他各節(jié)點通信,。微處理器在需要和主機或其它節(jié)點通信時,其通過P0口向SJA1000T的寄存器發(fā)送信息,,再由PCA82C250把信息傳遞到CAN總線上,。主機和其他通信節(jié)點判斷接收報文的標識符,將對接收到的信息作相應的處理,,從而實現(xiàn)通信功能,,如圖1所示。
在設計過程中,,為了滿足多微處理器間通信的實時性和可靠性要求,,結(jié)合CAN控制器的特點,對圖1作簡單介紹:
(1)收發(fā)器PCA82C250的引腳8(Rs)有3種工作方式:高速,,斜率控制和待機,。斜率控制方式具有抗射頻干擾的功能,所以采用47 kΩ的電阻連接引腳8,,實現(xiàn)斜率控制方式,。
(2)圖1中應為兩個高速光電耦合隔離器件6N137,由于6N137輸出引腳的驅(qū)動能力不夠,,需要連接一個約390 Ω的上拉電阻,,以增加輸出引腳的驅(qū)動能力。兩個光電耦合隔離器件6N137的電源信號采用5 V的DC-DC隔離模塊WRA0505P,,以增強系統(tǒng)的抗干擾能力,。
(3)收發(fā)器PCA82C250的CANH和CANL引腳各自由通過一個5 Ω的電阻與CAN總線相連,,電阻起到一定的限流作用,,保護PCA82C250免受CAN總線上的過流沖擊。
(4)收發(fā)器PCA82C250的CANH和CANL引腳與電源地之間分別反接一個保護二極管和30 pF的電容,,可以起到CAN總線的過壓保護作用和過流沖擊,。
(5)CAN控制器SJA1000T輸入方式有2種:Intel輸入方式和Motorola輸入方式,。在此采用Intel輸入方式,所以SJA1000T的MODE引腳接高電平,。
(6)設計僅用到TX0和RX0引腳,,根據(jù)SJA1000T通信協(xié)議所要求的輸入/輸出邏輯電平關系,SJA1000T的TX1腳懸空,,RX1引腳的電位必須維持在0.5 Vcc以上,,所以在TX1引腳接上約6.8 kΩ和3.6 kΩ分壓電阻。
(7)微處理器C51的引腳P2.7接CAN控制器SJA1000T的片選信號/CS,,可知CAN控制器SJA1000T的寄存器首地址為8000H,。處理器C41和CAN控制器SJA1000T共用12 MHz的晶振,以提高通信速率,。
通過上述分析,,設計的電路原理圖,如圖2所示,。
3 系統(tǒng)通信模塊的軟件設計
通信模塊的軟件由3部分組成:初始化程序,,發(fā)送程序和接受程序。僅這3部分程序,,就能完成通信節(jié)點間信息的傳遞,。要將CAN總線應用于更復雜的通信系統(tǒng)中,還要考慮CAN總線的錯誤處理,,超載處理等功能和節(jié)點間的計算方法,。由于每個通信節(jié)點都有自己的MCU,所以它們之間可以自由通信,。通過CAN收發(fā)器PCA82C250的引腳CANH和CANL對總線輸出,,使總線表現(xiàn)“顯性”,這時可發(fā)送信息,。判斷總線表現(xiàn)為“顯性”時,,就要為接受信息做好準備。
3.1 CAN控制器SJA1000T初始化程序
該程序首先進入復位狀態(tài),,設置SJAl000T的模式寄存器MR為Basic CAN模式,,驗收碼寄存器ACR和屏蔽碼寄存器AMR,再設置定時器0和定時器1,,輸出控制寄存器OCR,,重新設置控制寄存器CR,返回到正常工作模式下,。初始化程序流程圖如圖3所示,。
3.2 發(fā)送程序
此系統(tǒng)采用中斷方式發(fā)送信息,這樣能節(jié)省資源,提高通信效率,。需要發(fā)送信息時,,先將信息組合成一幀報文:數(shù)據(jù)幀或遠程幀。進入發(fā)送程序后,,首先關閉中斷,,保護現(xiàn)場,讀中斷寄存器是否為發(fā)送中斷,,將報文寫入發(fā)送緩沖區(qū),,設置命令寄存器允許發(fā)送,開中斷,。發(fā)送程序流程圖,,如圖4所示。
3.3 接受程序
此系統(tǒng)仍采用中斷方式接收信息,。接收程序比較復雜,,需要對錯誤報警,接收溢出等情況作進一步的處理,。信息報文通過CAN總線被送入接收緩存器中,,接收中斷被置位,處理器從控制器SJA1000T的緩存器內(nèi)讀取信息,,再設置新的接收標志,,開中斷。接收程序流程圖如圖5所示,。
4 結(jié)束語
把多個通信節(jié)點連接到PCI9810-CAN適配卡上的CAN總線,,構(gòu)成一個局部通信網(wǎng)絡,從而實現(xiàn)PC機對多通信節(jié)點的檢控和信息傳送,,通信節(jié)點間的高速通信,。在實際中,可以實現(xiàn)約110個通信節(jié)點間的通信,,但系統(tǒng)比較復雜,,通信效率降低,就需要考慮PCI9810-CAN適配卡和通信節(jié)點的程序改進和相應算法的應用,。在多機通信系統(tǒng)的設計過程中,,主要是通過軟件的編寫,提高系統(tǒng)的高速傳輸性,。