摘要:CANopen是一種架構在控制局域網路(Controller Area Network, CAN)上的高層通訊協議,其中對象字典是協議中最為核心的概念,透徹掌握其相關內容,運用CANOpen將會如魚得水,游刃有余。
CANopen對象字典(OD: Object Dictionary)是CANopen協議最為核心的概念。所謂的對象字典就是一個有序的對象組,描述了對應CANopen節點的所有參數,包括通訊數據的存放位置也列入其索引,這個表變成可以傳遞形式就叫做EDS文件(電子數據文檔Electronic Data Sheet)。對象字典,就像體檢表,具備這個人每個功能的參數,便于用人單位(主站)進行合理分配工作。如圖 1所示。
圖 1 對象字典與體檢表
每個對象采用一個16位的索引值來尋址,這個索引值通常被稱為索引,其范圍在0x0000到0xFFFF之間。為了避免數據大量時無索引可分配,所以在某些索引下也定義了一個8 位的索引值,這個索引值通常被稱為子索引,其范圍是0x00到0xFF之間。
每個索引內具體的參數,最大用32位的變量來表示,即Unsigned32,四個字節。
每個CANopen設備都有一個對象字典,使用電子數據文檔(EDS文件)來記錄這些參數,而不需要把這些參數記錄在紙上。對于CANopen網絡中的主節點來說,不需要對CANopen從節點的每個對象字典項都訪問。
CANopen對象字典中的項由一系列子協議來描述。子協議為對象字典中的每個對象都描述了它的功能、名字、索引、子索引、數據類型,以及這個對象是否必需、讀寫屬性等等,這樣可保證不同廠商的同類型設備兼容。
CANopen協議的核心描述子協議是DS301,其包括了CANopen協議應用層及通信結構描述,其它的協議子協議都是對DS301 協議描述文本的補充與擴展。在不同的應用行業都會起草一份CANopen設備子協議,子協議編號一般是DS4xx 。
對象字典概述
如表 1所示,為對象字典索引區域定義,其中標綠色底紋的通訊對象子協議區和制造商特定子協議區是用戶需要關注的區域。
表 1 對象字典概述
Index range索引范圍 | Description描述 |
0000h | Reserved保留 |
0001h to 025Fh | Data types數據類型 |
0260h to 0FFFh | Reserved保留 |
1000h to 1FFFh | Communication profile area通訊對象子協議區 |
2000h to 5FFFh | Manufacturer-specific profile area制造商特定子協議區 |
6000h to 9FFFh | Standardized profile area標準化設備子協議區 |
A000h to AFFFh | Network variables網絡變量(符合IEC61131-3) |
B000h to BFFFh | System variables用于路由網關的系統變量 |
C000h to FFFFh | Reserved保留 |
通訊對象子協議區(Communication profile area)
通訊對象子協議區(Communication profile area)定義了所有和通信有關的對象參數,如表 2所示,標綠色底紋的索引范圍1000h to 1029h為通用通訊對象,所有CANopen節點都必須具備這些索引,否則將無法加入CANopen網絡。其他索引根據實際情況進行分配與定義。
表 2 通訊對象子協議區
Index range索引范圍 | Description描述 |
1000h to 1029h | General communication objects通用通訊對象 |
1200h to 12FFh | SDO parameter objects SDO參數對象 |
1300h to 13FFh | CANopen safety objects 安全對象 |
1400h to 1BFFh | PDO parameter objects PDO參數對象 |
1F00h to 1F11h | SDO manager objects SDO管理對象 |
1F20h to 1F27h | Configuration manager objects配置管理對象 |
1F50h to 1F54h | Program control object程序控制對象 |
1F80h to 1F89h | NMT master objects網絡管理主機對象 |
通用通訊對象(General communication objects)
由于通用通訊對象十分重要,NMT主站(CANopen主站)在啟動時,通常都全部或者部分讀取所有從站中通用通訊對象中的索引,所以所有的通用通訊對象都必須在CANopen從站中實現,使用者也必須熟知這些索引地址與其含義。如表 3所示。
表 3 通用通訊對象
Index索引 | Object對象 | Name名字 |
1000h | VAR變量 | Device type設備類型 |
1001h | VAR變量 | Error register錯誤寄存器 |
1002h | VAR變量 | Manufacturer status register制造商狀態寄存器 |
1003h | ARRAY數組 | Pre-defined error field預定義錯誤場 |
1005h | VAR變量 | COB-ID Sync message同步報文COB標識符 |
1006h | VAR變量 | Communication cycle period同步通信循環周期(單位us) |
1007h | VAR變量 | Synchronous windows length同步窗口長度(單位us) |
1008h | VAR變量 | Manufacturer device name制造商設備名稱 |
1009h | VAR變量 | Manufacturer hardware version制造商硬件版本 |
100Ah | VAR變量 | Manufacturer software version制造商軟件版本 |
100Ch | VAR變量 | Guard time守護時間(單位ms) |
100Dh | VAR變量 | Life time factor壽命因子(單位ms) |
1010h | VAR變量 | Store parameters保存參數 |
1011h | VAR變量 | Restore default parameters恢復默認參數 |
1012h | VAR變量 | COB-ID time stamp時間報文COB標識符(發送網絡時間) |
1013h | VAR變量 | High resolution time stamp高分辨率時間標識 |
1014h | VAR變量 | COB-ID emergency緊急報文COB標識符 |
1015h | VAR變量 | Inhibit time emergency緊急報文禁止時間(單位100us) |
1016h | ARRAY數組 | Consumer heartbeat time消費者心跳時間間隔(單位ms) |
1017h | VAR變量 | Producer heartbeat time生產者心跳時間間隔(單位ms) |
1018h | RECORD記錄 | Identity object廠商ID標識對象 |
1019h | VAR變量 | Sync.counter overflow value同步計數溢出值 |
1020h | ARRAY數組 | Verify configuration驗證配置 |
1021h | VAR變量 | Store EDS存儲EDS |
1022h | VAR變量 | Storage format存儲格式 |
1023h | RECORD記錄 | OS command操作系統命令 |
1024h | VAR變量 | OS command mode操作系統命令模式 |
1025h | RECORD記錄 | OS debugger interface操作系統調試接口 |
1026h | ARRAY數組 | OS prompt操作系統提示 |
1027h | ARRAY數組 | Module list模塊列表 |
1028h | ARRAY數組 | Emergency consumer緊急報文消費者 |
1029h | ARRAY數組 | Error behavior錯誤行為 |
制造商特定子協議(Manufacturer-specific Profile)
對象字典索引2000h to 5FFFh為制造商特定子協議,通常是存放所應用子協議的應用數據。而上文所描述的通訊對象子協議區(Communication profile area)是存放這些應用數據的通信參數。比如廣州致遠電子的XGate-COP10從站模塊規定了:
lRPDO的通訊參數存放在1400h to 15FFh 映射參數存放在1600h to 17FFh 數據存放為2000h 之后廠商自定義區;
lTPDO的通訊參數存放在1800h to 19FFh 映射參數存放在1A00h to 1BFFh 數據存放為2000h 之后廠商自定義區。
對于在設備子協議中未定義的特殊功能,制造商也可以在此區域根據需求定義對象字典對象。因此這個區域對于不同的廠商來說,相同的對象字典項其定義不一定相同。
標準化設備子協議(Standardized profile area)
標準化設備子協議,為各種行業不同類型的標準設備定義對象字典中的對象。目前已有十幾種為不同類型的設備定義的子協議,例如 DS401、DS402、DS406等,其索引值范圍為0x6000~0x9FFF。同樣,這個區域對于不同的標準化設備子協議來說,相同的對象字典項其定義不一定相同。