摘 要:介紹了基于CAN總線的通信節(jié)點(diǎn)設(shè)計(jì)方法。在分析CAN總線的主要技術(shù)特性及CAN總線在工業(yè)控制系統(tǒng)中所處的位置之后,給出了設(shè)計(jì)CAN通信節(jié)點(diǎn)選用的器件及其硬件特性和通信節(jié)點(diǎn)的硬件設(shè)計(jì)框圖。描述了CAN節(jié)點(diǎn)軟硬件設(shè)計(jì)方法,同時(shí)給出了CAN控制器的初始化流程以及發(fā)送、接收程序流程圖。介紹的設(shè)計(jì)方法易于掌握且具有較強(qiáng)的靈活性和通用性,可用于多種工業(yè)現(xiàn)場(chǎng)控制。
關(guān)鍵詞:CAN總線;SJA1000;總線緩沖器;通信節(jié)點(diǎn)
中圖分類號(hào):TN919 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004373X(2008)0307203
Design of Communication Node Based on CAN Bus
WANG Yunwu,WEIZongshou
(Key Laboratory of Opto—Technology and Intelligent Control Ministry of Education,Lanzhou JiaotongUniversity,Lanzhou,730070,China)
Abstract:This paper introduces the way of designing communication node based on CAN bus.After introducing the main technical characteristic of CAN bus and its position in the industrial control system,it gives components for designing communication node of CAN bus and its characteristic of hardware and it also gives the designing chart of hardware of communication node.The design of hardware and software is described in this paper,it also gives the initialization process of CAN controller and the flow chart of sending and receiving data program.The method of design in this paper is easy to grasp and is flexibility and versatility,it can be used to control in many industry fields.
Keywords:CAN bus;SJA100;bus buffer;communication node
1 引 言
在20世紀(jì)80年代初,德國的BOSCH公司提出了用CAN總線(Controller Area Network,控制器局域網(wǎng))來解決汽車內(nèi)部的復(fù)雜硬件信號(hào)接線。CAN總線以其低成本、高可靠性、實(shí)時(shí)性、抗干擾能力強(qiáng)等特點(diǎn)得到了廣泛的應(yīng)用。1993年ISO正式頒布了ISO11898CAN高速應(yīng)用標(biāo)準(zhǔn)和ISO11519CAN低速應(yīng)用標(biāo)準(zhǔn),這為CAN總線的標(biāo)準(zhǔn)化、規(guī)范化鋪平了道路。CAN總線主要具有以下特性:
(1) CAN采用多主方式工作,網(wǎng)絡(luò)上任意節(jié)點(diǎn)均可以在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息而不分主從,通訊方式靈活且無需站地址等節(jié)點(diǎn)信息。
(2) CAN網(wǎng)絡(luò)上的信息可分成不同的優(yōu)先級(jí),滿足不同的實(shí)時(shí)性要求;高優(yōu)先級(jí)的數(shù)據(jù)最多可在134 μm內(nèi)得到傳輸。
(3) CAN的直接通信距離最遠(yuǎn)可達(dá)10 km(速率5 kb/s以下);通訊速率最高可達(dá)1 Mb/s(此時(shí)通信距離為40 m)。
(4) CAN只需通過報(bào)文濾波即可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)及全局廣播等幾種方式傳送接收數(shù)據(jù),無需專門的“調(diào)度”。
(5) CAN采用非破壞性總線裁決技術(shù)(CSMA/CD),在多個(gè)節(jié)點(diǎn)對(duì)總線發(fā)送信息出現(xiàn)沖突時(shí),低優(yōu)先級(jí)的節(jié)點(diǎn)會(huì)主動(dòng)退出發(fā)送而保證高優(yōu)先級(jí)的節(jié)點(diǎn)的信息傳輸,因此大大節(jié)省了總線沖突裁決時(shí)間,最重要的是在網(wǎng)絡(luò)負(fù)載很重的情況下也不會(huì)出現(xiàn)網(wǎng)絡(luò)癱瘓情況(以太網(wǎng)則可能)。
(6) CAN協(xié)議廢除了傳統(tǒng)的站地址編碼,而對(duì)通訊數(shù)據(jù)塊進(jìn)行編碼,使網(wǎng)絡(luò)中的節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制。
(7) CAN總線具有極好的檢錯(cuò)效果,CAN的每幀信息都具有CRC校驗(yàn)和其他檢錯(cuò)措施,保證了錯(cuò)誤的輸出率極低。
(8) CAN節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下具有自動(dòng)關(guān)閉輸出功能,以使總線以上其他節(jié)點(diǎn)的操作不受影響。
2 基本硬件介紹
本文所涉及的通信系統(tǒng)相關(guān)工業(yè)控制系統(tǒng)框圖如圖1所示。
其中,CAN總線通過PC適配卡與上位機(jī)相連,各CAN節(jié)點(diǎn)都可與上位機(jī)通信,同時(shí)互相之間也可以通信。考慮到系統(tǒng)的可靠性與安全性,建議上位機(jī)采用工控機(jī),當(dāng)然在要求可靠性與安全性相對(duì)較低的場(chǎng)合也可以考慮采用PC機(jī)。CAN總線控制器是以在一塊可編程芯片上的邏輯電路的組合來提供與微處理器的物理線路的接口。通過對(duì)他的編程,CPU可以設(shè)置他的工作方式,控制他的工作狀態(tài),進(jìn)行數(shù)據(jù)的發(fā)送和接收,把網(wǎng)絡(luò)應(yīng)用層建立在他的基礎(chǔ)之上。CAN控制器目前主要有兩大類:一類是獨(dú)立控制器,如PHILIPS公司的PCA82C200,SJA1000,INTEL公司的82526,82527等;另外一類是內(nèi)部帶有CAN控制器的微處理器,如P8XC591等。我們采用的是PHILIPS公司的SJA1000控制器以及TJA1050總線驅(qū)動(dòng)器。
圖1 應(yīng)用CAN總線的工業(yè)控制系統(tǒng)
2.1 SJA1000特性及內(nèi)部結(jié)構(gòu)
SJA1000是一種獨(dú)立控制器,是PHILIPS公司的PCA82C200的替代產(chǎn)品。他增加了一種新的工作模式(PeliCAN),這種模式支持具有很多新特點(diǎn)的CAN 2.0B協(xié)議。SJA1000主要具有如下特點(diǎn):
(1) 與PCA82C200獨(dú)立CAN控制引腳和電氣兼容;
(2) 仍然具有PCA82C200模式(即默認(rèn)的BasicCAN模式);
(3) 擴(kuò)展的接收緩沖器(64 B FIFO);
(4) 同時(shí)支持11位和29位標(biāo)識(shí)符且與CAN 2.0B兼容;
(5) 位速率可達(dá)1 Mb/s;
(6) 具有詳細(xì)位號(hào)(bit position)的仲裁丟失中斷;
(7) 只聽模式(無確認(rèn)、無激活的出錯(cuò)標(biāo)志);
(8) 可編程的CAN輸出驅(qū)動(dòng)器配置;
(9) 可以和不同處理器接口。
2.2 TJA1050特性
TJA1050是PHILIPS公司生產(chǎn)的,用以替代PCA82C250的高速總線收發(fā)器。該器件提供了CAN控制器與物理總線之間的接口以及對(duì)CAN總線的差動(dòng)發(fā)送和接收功能。TJA1050的主要特性如下:
(1) 與ISO11898標(biāo)準(zhǔn)完全兼容;
(2) 總線與電源及地之間的短路保護(hù);
(3) 優(yōu)化了輸出信號(hào)CANH和CANL之間的耦合,大大降低了信號(hào)的電磁輻射;
(4) 具有強(qiáng)電磁干擾下,寬工模范圍的差動(dòng)接收能力;
(5) 未上電節(jié)點(diǎn)不會(huì)干擾總線(對(duì)此類節(jié)點(diǎn)性能做了優(yōu)化);
(6) 總線至少可連接110個(gè)節(jié)點(diǎn)。
3 CAN節(jié)點(diǎn)硬件電路設(shè)計(jì)
3.1 CAN節(jié)點(diǎn)硬件電路設(shè)計(jì)的原理
圖2為硬件電路設(shè)計(jì)的原理框圖。其中主控制器選用ATMEL公司的ATmega128單片機(jī),總線收發(fā)器為TJA1050。其中ATmega128為ATMEL公司生產(chǎn)的基于RISC結(jié)構(gòu)的高性能低功耗的新一代8位單片機(jī),其主要功能如下:
(1) 具有先進(jìn)的RISC結(jié)構(gòu),具有預(yù)取指令功能,大多數(shù)指令可在一個(gè)時(shí)鐘周期內(nèi)完成;
(2) 內(nèi)置128 kB可擦寫10 000次以上的可編程FLASH;
(3) 具有獨(dú)立鎖定位,可選擇的啟動(dòng)代碼區(qū)具有多重密碼保護(hù)鎖死功能;
(4) 內(nèi)置模擬比較器,具有8路10位ADC,I/O口可做AD轉(zhuǎn)換用;
(5) 內(nèi)部有標(biāo)定的RC振蕩器,同時(shí)具有獨(dú)立片內(nèi)震蕩器的可編程看門狗定時(shí)器;
(6) 6種睡眠模式:空閑模式、ADC噪聲抑制模式、省電模式、掉電模式、Standby模式以及擴(kuò)展的Standby模式;
(7) 有2個(gè)異步串行通訊口UART,不占用定時(shí)器和SPI傳輸功能;
(8) 具有多個(gè)片內(nèi)/外中斷源。
圖2 CAN節(jié)點(diǎn)硬件電路原理圖
3.2 節(jié)點(diǎn)硬件設(shè)計(jì)的部分說明
(1) SJA1000選用PeliCAN模式,與微控制器連接后,其片選地址即操作SAJ1000內(nèi)部寄存器的基址用戶可以自行設(shè)定。
(2) TJA1050采用了最新的EMC技術(shù),比PCA82C250/251的抗電磁干擾能力提高了20 dB。引腳S用于選定TJA1050的工作模式。有兩種工作模式可以選擇:如果引腳S接地,則TJA1050進(jìn)入高速模式。當(dāng)S端懸空時(shí),其默認(rèn)工作模式也是高速模式。高速模式是TJA1050的正常工作模式,也是我們所選用的模式。如果引腳S接高電平,則TJA1050進(jìn)入靜音模式,該模式可防止由于CAN控制器失控而造成的網(wǎng)絡(luò)阻塞,同時(shí)由于TJA1050支持的CAN信號(hào)有良好的對(duì)稱性,所以不像前代產(chǎn)品需要專門的斜率控制模式。
(3) 在CAN控制器和總線驅(qū)動(dòng)器的物理輸出輸入線路中,可根據(jù)情況適當(dāng)加入保護(hù)電路,以增加數(shù)據(jù)傳輸?shù)姆€(wěn)定性。
4 CAN節(jié)點(diǎn)軟件設(shè)計(jì)流程
CAN應(yīng)用節(jié)點(diǎn)的程序設(shè)計(jì)主要分為3部分:SJA1000初始化子程序、發(fā)送子程序、接收子程序??梢哉f所有CAN通信程序設(shè)計(jì)都是遵循這3個(gè)基本步驟的,所以熟練掌握這3部分子程序的設(shè)計(jì)對(duì)于應(yīng)用CAN總線的工程技術(shù)人員來說是非常有必要的。下面就這3個(gè)子程序分別加以說明。
4.1 SJA1000初始化子程序
微控制器和SJA1000之間狀態(tài)、控制和命令信號(hào)的交換都是在控制段中完成的。初始化加載后,寄存器的接收代碼、接收屏蔽、總線定時(shí)寄存器0和1以及輸出控制就不能改變了。SJA1000共有2種工作模式:復(fù)位模式和工作模式。當(dāng)硬件復(fù)位或控制器掉電時(shí)會(huì)自動(dòng)進(jìn)入復(fù)位模式,只有在復(fù)位模式下才可以對(duì)SJA1000進(jìn)行初始化。初始化主要包括工作方式的設(shè)定、接收屏蔽寄存器和接收代碼寄存器的設(shè)定、總線時(shí)序寄存器的設(shè)置、輸出模式寄存器和中斷使能寄存器的設(shè)置等。在初始化完成以后,CAN總線就可以開始進(jìn)行數(shù)據(jù)的接收與發(fā)送工作,其初始化流程圖見圖3。
圖3 SJA1000初始化流程圖
4.2 發(fā)送與接收子程序
首先與CAN控制器連接的微處理器必須將要發(fā)送的數(shù)據(jù)從其數(shù)據(jù)存儲(chǔ)區(qū)中取出,與主機(jī)的ID地址一起組成信息幀按CAN報(bào)文結(jié)構(gòu)發(fā)送到發(fā)送緩沖器中,并置位命令寄存器中的發(fā)送請(qǐng)求標(biāo)志,接收到發(fā)送請(qǐng)求后發(fā)送過程由CAN控制器自動(dòng)完成。在檢測(cè)到接收緩沖器中存在有
效報(bào)文后,接收程序?qū)⒔邮站彌_器中的內(nèi)容讀入CPU的數(shù)據(jù)存儲(chǔ)區(qū)。接收完畢后檢查總線狀態(tài)及溢出情況等并做相應(yīng)處理,發(fā)送與接收程序流程圖見圖4。
圖4 發(fā)送與接收程序流程圖
5 結(jié) 語
采用了多主工作方式及CSMA/CD的CAN總線以其顯著優(yōu)于傳統(tǒng)“一主多從”式多機(jī)串行通訊模式而得到了廣泛應(yīng)用。實(shí)踐表明,由于CAN總線結(jié)構(gòu)簡(jiǎn)單,器件容易購置,開發(fā)技術(shù)易于掌握,且具有統(tǒng)一的國際標(biāo)準(zhǔn),故在現(xiàn)場(chǎng)總線的發(fā)展中占有了重要位置。本文所介紹的基于CAN總線的通信節(jié)點(diǎn)可在大部分中短距離傳輸信息的控制現(xiàn)場(chǎng)發(fā)揮良好的作用。
參考文獻(xiàn)
[1]饒運(yùn)濤,鄒繼軍,鄭勇蕓.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[2]李正軍.現(xiàn)場(chǎng)總線及其應(yīng)用技術(shù)[M].北京:機(jī)械工業(yè)出版社,2005.
[3]耿德根,宋建國,馬潮,等.AVR高速嵌入式單片機(jī)原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2001.
[4]宋曉強(qiáng),吳愛國,李保林.具有高可靠性和靈活性的CAN總線控制系統(tǒng)的設(shè)計(jì)與開發(fā)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2004(1):54—56.
作者簡(jiǎn)介 王云午 男,1980年出生,內(nèi)蒙古鑲黃旗人,蘭州交通大學(xué)在讀研究生。主要研究方向?yàn)橹悄芸刂啤?/p>
魏宗壽 男,1954年出生,甘肅省天水市人,蘭州交通大學(xué)光電技術(shù)與智能控制教育部重點(diǎn)實(shí)驗(yàn)室研究員。主要研究領(lǐng)域?yàn)榻煌ㄐ畔⒐こ碳翱刂啤?/p>
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。