1寫在前面
上一篇文章主要是引導大家學習CANOpen協議通信接口的相關內容。通信接口的內容有點多,對于初學者來說,如果看不懂,請多看幾遍(最好有個印象)。
CANopen設備最重要的一個部分就是對象字典。對象字典本質上是一種被預先安排的對象序列,可通過網絡訪問。字典里面的每一對象均可使用一個16-bit主索引和8-bit子索引尋址到。
初學者學習如果難理解通信接口(上一篇)有些內容,如:PDO、SDO及網絡管理對象,可以結合對象字典索引來學習和記憶。
2
對象字典重要內容
對象字典OD:Object dictionary。
一組帶有 16 位索引和 8 位子索引的數據或對象。對象字典下面主要包含:數據類型、通信對象、應用對象。
對象字典主索引:
2.1 通信子協議區
通信子協議區,如上圖1000h 到 1FFFh這個區域。也就是通信接口(或通信對象)協議區。
對于初學者來說,通信對象子協議區是比較重要的一個區域,牽涉到上一篇文章《通信接口》講述的大部分內容。同時,這之間的關系也非常緊密。
通訊對象子協議區:
如上圖,通訊對象子協議區又劃分為幾個區域,而其中的1000h 到 1029h為通用通訊對象。
通用通訊對象里面的內容已經被約定好,如果我們需要用到,可直接配置使用即可。
通用通訊對象內容:
通信子協議區的內容非常重要,也比較多,需要拆分并一個一個掌握。可結合周立功提供相關教程,以及前面提到的CiA 301手冊理解。
我這里就不一一列出來了,簡單再列一個通信子協議區中PDO通信參數與映射參數:
寫到這里,想必很多朋友都能理解,也能明白這些內容。更多的內容,可以結合這種拆分的思路去理解。
3
對象字典生成工具
上面介紹了對象字典的一些內容,可能還是有很多初學者不明白。同時,也就可能會產生疑問:這個對象字典我們需要字典和我們代碼有什么關系呢?
可以簡單來說,就是一些16位索引和8位子索引對應的變量數據,來下看下代碼(下面兩圖),加深理解:
3.1 對象字典的代碼需要自己寫嗎?
很多初學者,包括我(之前初學時)也會產生疑問:對象字典的代碼需要我們自己寫嗎?
答案:不用自己寫。
當然,對象字典的代碼可以自己寫,但完全沒必要。1.自己寫不一定正確;2.有現成工具可以節約大量時間。
3.2 Canfestival對象字典生成工具
我微信公眾號分享《CANOpen系列教程》的封面中有一行英文:Canfestival.相信學過CANOpen的朋友都應該知道我接下來會結合這套Canfestival免費開源的CANOpen架構來講述。
其中,Canfestival里面包含我們需要的CANOpen協議源碼和對象字典生成工具。
有了對象字典生成工具,對象字典的代碼就可以通過它來自動生成。搭建Canfestival對象字典生成工具的環境是一個重點。
對于很多初學者來說搭建環境也是一個難點,不少初學者就卡在這一關,然后,學習CANOpen就沒有繼續下去了。
簡單的說,搭建對象字典生成工具的環境步驟不多,可能會因為諸多因素導致搭建失敗。搭建成功,運行之后會出現如下圖界面:
在學習對象字典生成工具時,會看見一個詞:EDS,即Electronic Data Sheet電子數據單。
像周立功的CANOpen從站模塊就配有工具生成EDS文件。當然,Canfestival提供的工具也能導出EDS文件。
Canfestival對象字典生成工具搭建過程,及相關內容我將在下一篇文章詳細講述。
-
通信協議
+關注
關注
28文章
915瀏覽量
40442 -
CAN
+關注
關注
57文章
2770瀏覽量
464398 -
CANopen
+關注
關注
8文章
270瀏覽量
43762
發布評論請先 登錄
相關推薦
評論