PIC18單片機的CANopen通信協(xié)議簡介及設計
要掌握CANopen協(xié)議,重點是對對象字典和設備模型的理解以及對4類通信對象的掌握。本文先對CANopen協(xié)議進行削析,再重點介紹在PICl8F458單片機上開發(fā)基于CANopen協(xié)議的節(jié)點,最后通過溫度測控系統(tǒng)實驗驗證了系統(tǒng)信息傳遞的可靠性、準確性和實時性。
1 CANopen通信協(xié)議簡介
CANopen協(xié)議是CiA協(xié)會基于CAN總線定義的應用層協(xié)議之一,在各種控制系統(tǒng)中得到了廣泛應用。它以CAN芯片為硬件基礎,有效利用CAN芯片所提供的簡單通信功能來滿足工業(yè)控制網絡的復雜應用層協(xié)議要求。CANopen網絡是主從站(Master—Slave)結構,系統(tǒng)的運行由主站控制,主站可以對127個從設備進行控制,不同設備通過CAN總線進行連接組網。圖1為CANopen設備模型。CANopen通信協(xié)議接口用于提供在總線上收發(fā)通信對象的服務,不同CANopen設備間的通信都是通過交換通信對象來完成的。CANopen協(xié)議中定義了4種通信對象(通信模式),用于對不同作用的信息進行處理:NMT對象(網絡管理對象)、SDO對象(服務數據對象)、PDO對象(過程數據對象)、特殊功能對象。
設備對象字典是CANopen協(xié)議的核心概念,位于CANopen設備模型中通信層和用戶應用層之間,為用戶應用層提供接口。它是一個結構標準化的、有序的對象組,描述了該設備使用的所有數據類型、通信對象和應用對象。基于CANopen協(xié)議的網絡系統(tǒng)中每一個設備都要實現一個唯一的對象字典,區(qū)別在于設備類型不同其內容則不同。對象字典中每個對象擁有一個唯一的16位主索引和8位子索引,由此實現對其中各種對象的訪問。對象字典在系統(tǒng)軟件設計中得以實現,然后使用標準化的EDS文件對其進行描述。
針對系統(tǒng)的要求,選用PICl8F458單片機作為從節(jié)點的主芯片。它是Microchip公司的單片16位高性能微控制器,具有片內CAN控制器,CAN模塊符合CAN2.0B標準,帶有3個發(fā)送緩沖區(qū)、2個接收緩沖區(qū)、2個接收屏蔽寄存器、6個完全接收濾波器。CAN收發(fā)器采用PCA82C250芯片,它具有高速穩(wěn)定的差動發(fā)送和接收能力,可作為CAN協(xié)議控制器和物理總線接口。此外,為了便于調試和與主控制器的通信,系統(tǒng)中還擴展了RS232接口。
對于各個節(jié)點都采用預定義連接集中規(guī)定的11位ID。它由4位功能碼和7位節(jié)點ID組成。其中各通信對象具體分配的COB—ID為NMT SERVICE一000、EMER—GENCY一080、TIMESTAMP一100、SYNC一080、TPD01—180、RPD01—200、TPD02—280、RPD02—300、TSDO一580、RSDO一600、HEARTBEAT一700。
設定傳感溫度節(jié)點的ID為6,以TPDO對象方式發(fā)送測到的溫度。所以發(fā)送對象的COB—ID分別為TP—D02(200+6)、TSD()(580+6)、HEARTBEAT(700+6)、EMERGENCY(080+6),接收對象的COB—ID分別為NMT SERVICE(000)、RSD()(600+6)。
設定溫度調節(jié)節(jié)點的ID為7,以RPDO對象方式接收從傳感溫度節(jié)點發(fā)送的溫度,并以TPDO對象方式發(fā)送調節(jié)狀態(tài)。所以發(fā)送對象的COB—ID分別為TPD01(180+7)、TSDO(580+7)、HEARTBEAT(700+7)、EMERGENCY(080+7),接收對象的COB—ID分別為NMT SERVICE(000)、RSDO(600+7)、RPDO2(280+6)。
設定命令節(jié)點的ID為8,以RPDO對象方式分別接收從傳感溫度節(jié)點發(fā)送的溫度和從溫度調節(jié)節(jié)點發(fā)送的調節(jié)狀態(tài),也可用NMT對象方式發(fā)送NMT報文。所以發(fā)送對象的COB—ID分別為TSDO(580+8)、HEART—BEAT(700+8)、EMERGENCY(080+8)、NMT MAS—TER(000),接收對象的COB—ID分別為NMT SERVICE(000)、RSD0(600+8)、RPD02(280+6)、RPD01(180+7)。
2.2 節(jié)點對象字典的建立
對象字典的內容除了包括CANopen協(xié)議規(guī)定的必需項外,還包括調用的各功能模塊和參數設定項。它的正確配置和使用,是保證整個CANopen網絡正常運行的核心,是節(jié)點實現其預定功能的必要保證。對象字典的組建采用C語言在頭文件中編寫,通過Struct(結構)語句實現對象字典內容的尋址。對象字典的規(guī)劃賦值設計按照CANopen協(xié)議規(guī)定的格式完成,每個節(jié)點的對象字典都具有相同的結構,但具體內容要根據不同的設備而定義,包含了描述這個設備和它網絡的所有參數。對象字典的操作是CANopen協(xié)議軟件的核心,通過對象字典實現網絡間參數的映射從而完成各種數據的處理,需要編寫對象字典解碼子函數、讀對象字典子函數和寫對象字典子函數。下面以溫度調節(jié)節(jié)點為例介紹對象字典的創(chuàng)建、賦值和具體操作。表1顯示了此節(jié)點中PDO的各個參數。
命令節(jié)點進行NMT對象操作時再觀察各節(jié)點狀態(tài):當按下按鈕1時,節(jié)點進入欲操作狀態(tài);當按下按鈕2時,節(jié)點重啟。
從以上兩個實驗可以看出,整個系統(tǒng)在運行過程中達到了滿意的控制效果,實現了基于CANopen協(xié)議的對象數據的交換,通信傳輸理想。
應用PIC18單片機自行開發(fā)的基于CANopen協(xié)議的節(jié)點,實現了對4種通信對象信息的通信處理,并通過測試驗證了系統(tǒng)信息傳遞的可靠性、準確性和實時性,很好地滿足了基于CANopen協(xié)議的溫度測控系統(tǒng)的要求;對于CANopen在國內的應用和普及,以及CAN網絡和驅動產品盡早和國際接軌,具有重要的意義。
評論