1 引言
在ff,、lonworks,、profibus,、can,、hart等主流現(xiàn)場總線工業(yè)通訊技術之中,can(controller area network,,又稱控制器局域網)總線除了具備現(xiàn)場總線的開放式,、互操作性,、數(shù)字化通訊等特點外,還具有以下特點:(1)以多主機方式工作,;(2)can上的節(jié)點信息分不同的優(yōu)先級,,可滿足不同的實時要求,;(3)采用非破壞性總線仲裁技術,,節(jié)省了總線沖突仲裁時間;(4)采用短幀結構,,傳輸時間短,,受干擾率降低,具有極好的檢錯效果,;(5)每幀信息都有crc校驗及其它檢錯措施,,數(shù)據(jù)出錯率極低;(6)通信介質可靈活地選擇,;(7)can上的節(jié)點數(shù)高達110個,;(8)有很高的可靠性和性能價格比等。CAN總線" title="CAN總線">CAN總線的這些特點使得其能同時滿足過程控制和制造業(yè)自動化的需求,,[1]因而can總線的研究與應用已成為工業(yè)數(shù)據(jù)總線領域的熱點,。在總線系統(tǒng)中,傳統(tǒng)的4-20ma的模擬輸入信號被數(shù)字信號取代,,設備狀態(tài),、故障、參數(shù)等信息通過現(xiàn)場總線傳送給上位機完成遠程控制及遠程參數(shù)化,,具有can總線接口" title="接口">接口的各種儀器,、儀表設備通過can適配卡可實現(xiàn)與上位機的can總線通訊。
2 硬件設計
can通信的核心芯片是can控制器,,can的通信協(xié)議主要是由它完成的,,它可以實現(xiàn)物理層和數(shù)據(jù)鏈路層的所有功能。can控制器有許多芯片結構,,獨立芯片的例如philips的sja1000,,西門子的82c900等,還有和微處理器做在一起的嵌入型結構,。本項目根據(jù)智能化,、可靠性高、抗干擾能力強,、成本低等原則,,can控制器采用microchip公司的PIC18F458" title="PIC18F458">PIC18F458單片機內嵌can控制器方案。pic18f458功能強大,1536k片內數(shù)據(jù)ram,、3個16位定時/計數(shù)器,、1個8位看門狗wdt定時器,、8路模擬輸入的片內ADC??撮T狗wdt定時器用來監(jiān)視程序的運行狀態(tài),,一旦cpu由于意外原因偏離正常程序之外,wdt將強行把cpu復位,,使其返回正常程序,。pic18f458can模塊除遵循can總線的協(xié)議,同時也有自己的特點,,主要包括:(1)支持can協(xié)議can2.0a,、can2.0b;(2)支持標準幀,、擴展幀,、遠程幀、過載幀,、錯誤幀等,;(3)2個接收緩沖器、3個發(fā)送緩沖器,;(4)6個接收過濾器,;(5)2個屏蔽過濾器。選用功能強大的pic18f458單片機,,大大簡化了電路設計,,節(jié)省了成本。
can收發(fā)器即總線驅動器是can控制器與物理總線之間的接口,,可以提供對總線的差動發(fā)送和接受功能,,can總線驅動器種類有82c250/251、tja1040,、tja1050等多種,,適用于不同場合。philips公司的高速總線驅動器82c50,,它采用雙線差分驅動,,抗干擾強。can總線驅動器與單片機接線如圖1所示,,為實現(xiàn)總線上節(jié)點之間的電氣隔離 can驅動器通過高速光藕6n137與pic18f458進行相連,。在can總線兩端的can接頭上接入120歐匹配電阻,以消除阻抗不連續(xù)時的反射現(xiàn)象,,總線與地各自并聯(lián)一個30pf的小電容,以防電磁輻射和抗高頻干擾[2],。注意在實際應用中,節(jié)點之間的電源也要隔離,+5v隔離后才能接vcc,,否則也會有干擾,。
圖1 82c250與pic18f458接線圖
3 軟件設計
軟件采用mplab ide7.5開發(fā)平臺及mcc18軟件,為了有利于程序的移植和修改可將程序設計成能相對獨立的子程序,。can總線的各種協(xié)議已經被集成在pic18f458的can模塊里面,只要對相應的寄存器進行操作就可完成can系統(tǒng)通信,。pici8f458的can通信程序主要包括can初始化、接受子程序,、發(fā)送子程序等,。can初始化主要對can進行配置,設置發(fā)送郵箱,、接收郵箱標識符及初始化數(shù)據(jù),,設置波特率,、can工作模式,,初始化接受濾波器和接受屏蔽。接受使用中斷方式,,發(fā)送采用查詢方式,。在can總線上的所有節(jié)點必須有相同的波特率,設波特率fosc=4mhz,同步時間段sync_seg=1tq,,傳輸時間段prop_seg=1tq,,相位緩沖時間段1phase_seg1=3tq,相位緩沖時間段2phase_seg2=3tq,,標稱位時間=8tq,,位率=0.125mhz。在can總線通訊中,,can的初始化非常重要[3],。
3.1 can初始化子程序
3.2 接收中斷子程序
3.3 發(fā)送子程序
寫好這三部分程序,就很容易寫出通訊程序了,。
4 結束語
本項目設計可用于各種電氣設備形成can接口,,也可在此基礎上繼續(xù)開發(fā),加入設備的控制算法,,對設備進行總線化智能化改造,。利用pic18f458設計的can總線接口進行了dkj直行程電動執(zhí)行機構的智能化改造,與上位機實現(xiàn)了can總線通訊,,試驗效果理想,。