現場總線是用于過程自動化和制造自動化最底層的現場設備或現場儀表互連的通信網絡,是現場通信、計算機技術和控制系統的集成。它在生產現場的測量控制設備之間實現雙向串行多節點數字通信、完成測量控制任務;是一種開放型的網絡,使測控裝置隨現場設備分散化,被譽為自控領域的局域網。它在制造業、流程工業、交通、樓宇等處的自動化系統中具有廣泛的應用前景。
CAN是Controller Area Net的縮寫,即控制網絡局部網,是一種有效支持分布式控制或實時控制的串行通信網路。CAN是德國Bosh公司為汽車的檢測、控制系統而設計的。由于CAN具有卓越的特性和較高的可靠性,因而非常適合工業過程監控設備互連。CAN已經成為一種國際標準(ISO-11898),是最具前途的現場總線之一。
1 控制器局域網(CAN)
1.1 CAN總線的特點
(1)CAN總線以多主方式工作,網絡上任意節點均可在任意時刻主動地向網絡上其他節點發送信息,而不分主從,通信方式靈活,且無需考慮接收者地址的優先級。
(2)CAN網絡上的節點信息分不同的優先級,可滿足不同的實時要求,高優先級的數據最多可在134μs內得到傳輸。
(3)CAN采用非破壞性總線仲裁技術,當多個節點同時向總線發送信息時,優先級比較低的節點會主動退出發送,而最高優先級的節點可不受影響地繼續傳輸數據,從而大大節省了總線沖突仲裁時間。
(4)CAN只需通過報文濾波即可實現點對點、一點對多點及全局廣播等幾種方式傳送接收數據,無需專門的“調度”。
(5)CAN的直接通信距離最遠可達10 km,此時速率5 kbit·s-1;通信速率最高可達1 Mbit·s-1,此時通信距離最長為40 m.
(6)CAN的節點數主要取決于總線驅動電路,目前可達110個;報文標識符可達2 032種(CAN2.0A);而擴展標準(CAN2.0B)的報文標識符幾乎不受限制。
(7)采用短幀結構,傳輸時間短,受干擾概率低,具有良好的檢錯效果。
(8)CAN的每幀信息都有CRC校驗及其他檢錯措施,保證了數據出錯率極低。
(9)CAN的通信介質可為雙絞線,同軸電纜或光纖,選擇靈活。
(10)CAN節點在錯誤嚴重的情況下具有自動關閉輸出的功能,這是總線上其他節點的操作不受影響。
正因為CAN總線具有以上這些特點,所以能較好地滿足多點實時數據通信平臺的要求。
1.2 CAN總線協議
CAN的協議結構劃分為兩層:數據鏈路層和物理層。數據鏈路層又劃分為邏輯鏈路控制子層和介質訪問控制子層。物理層可分為物理信號層PLS、物理介質連接PMA和介質相關接口MDI.CAN的ISO/OSI參考分層結構如圖1所示。
圖1 CAN的ISO/OSI參考分層結構
數據鏈路層的LLC和MAC子層的服務和功能被描述為“目標層”和“傳送層”.LLC子層的主要功能是:為數據轉送和遠程數據請求提供服務,確認由LLC子層接收的報文是否已被接收,并為恢復管理和通知超載提供信息。MAC子層的功能主要是傳送規則,亦即控制幀結構、執行仲裁、錯誤檢測、出錯標定和故障界定。MAC子層也要確定何時開始一次新的發送,總線是否開放或者是否馬上開始接收。定位時特性也是MAC子層的一部分。
物理層定義了信號怎樣進行發送,因而涉及位定時、位編碼和同步的描述。詳細層的功能參閱文獻。
1.3 CAN多點實時通信
CAN是有效支持分布式(多點)實時控制的串行通信網絡,在實際的系統設計中,用戶可以根據振蕩器時鐘頻率、總線波特率以及總線的最大傳輸距離等因素,對CAN控制器的位定時參數進行優化設置,協調影響位定時設置的兩個主要因素:振蕩器容差和最大總線長度,合理安排位周期中采樣點的位置和采樣次數,保證總線上位流的有效同步的同時,優化系統的通信性能,進一步推進CAN總線的應用。
2 C8051 F040單片機
Cygnal公司的51系列單片機C8051F040是集成在一塊芯片上的混合信號系統級單片機,在一個芯片內集成了構成一個單片機數據采集或控制的智能節點所需要的幾乎所有模擬、數字外設以及其他功能部件,代表了目前8位單片機控制系統的發展方向。芯片上有1個12位多通道ADC,2個12位DAC,2個電壓比較器,1個電壓基準,1個32 kB的Flash存儲器,與MCS-51指令集完全兼容的高速CIP-51內核,峰值速度可達25 MI·s-1,并且還有硬件實現的UART串行接口、完全支持CAN2.0A和CAN2.0B的CAN控制器。
3 CAN多點實時數據通信系統設計
3.1 CAN多點實時數據通信系統硬件結構
設計的CAN多點實時數據通信系統由一臺電腦,兩塊基于C8051F040單片機開發板組成。結構框圖如圖2所示。
圖2 CAN通信結構框圖
在這個系統中,電腦作為主機,通過USB/CAN轉換器與CAN總線相連,使用軟件工具CANTools-V6.2進行數據地發送、接收以及顯示。系統中兩個CAN節點分別為開發板1和開發板2,通過編譯相應的程序,使得CAN節點能實時把數據發送到主機,主機可根據接收到的數據向CAN節點發出控制信號來改變CAN節點回發的數據,以此達到實時通信控制的目的。同時兩個CAN節點之間也能互相進行數據通信,并把所接收到的數據顯示在開發板的LCD屏上。
3.2 軟件設計
軟件設計分為兩大部分:(1)主程序的設計。(2)CAN通信庫函數程序的編寫。
主程序主要涉及的是程序流程,包括調用初始化函數,打開中斷,根據與主機通信還是與其他節點通信調用CAN通信庫函數編寫出相應的通信流程,流程圖如圖3所示。
圖3 主程序流程圖
CAN通信庫函數主要包括:系統初始化函數、CAN初始化函數、CAN中斷服務函數、CAN接收數據函數和CAN發送數據函數。
這里詳細講述CAN通信庫函數中,CAN接收數據函數、CAN發送數據函數和CAN中斷服務函數。
CAN接收數據函數和發送數據函數的流程圖,如圖4所示。
圖4 CAN接收數據函數和發送數據函數的流程圖
CAN中斷服務函數程序流程圖,如圖5所示。
圖5 CAN中斷服務函數程序流程圖
4 結束語
系統可以完成各個節點之間以及節點與主機之間的實時數據收發,基本完成了多點實時數據通信任務,能做到速度快、延遲低、錯誤率低、穩定性高,并且能夠在電腦上直觀地看到實驗結果。通過示波器測得該系統完成一次通信需要10.8μs,能滿足工業上實時監控的要求,這說明基于C8051F040的CAN多點實時數據通信的可能性,且因為其多節點設備接入簡易,使其在遠程工業實時監控上有較好的前景。缺點在于節點的數量不夠多,節點之間的距離不夠遠,沒有測試出多點通信的節點數量上限和實時通信距離上限。
圖6 示波器測得CAN通信波形
(審核編輯: 小丸子2)
分享