近期小編開發了【跟我學CANopen】系列課程,會陸陸續續連載更新完畢,相關目錄如下(由于內容較多導致文字太小,下圖請放大后查看)。
對象字典索引區域定義中,0x1000h~0x9FFFh是通信對象子協議區和制造商特定子協議區。
01、通訊對象子協議區
通訊對象子協議區(Communication profile area)定義了所有和通信有關的對象參數。如下圖所示。
標綠色底紋的索引范圍1000h ~1029h為通用通訊對象,所有CANopen節點都必須具備這些索引,否則將無法加入CANopen網絡。其他索引根據實際情況進行分配與定義。
02、用于時間報文和緊急報文的參數(索引1012h、1013h、1014h和1015h)
要想通過時間報文發送網絡時間,就必須給時間報文分配一個CAN標識符。該CAN標識符記錄在COB標識符參數(索引1012h)中,如下圖所示。該參數還包含接收(第31位=1)/發送(第30位=1)時間報文的信息。第29 位表示使用的CAN 標識符的位數,為0表示使用11位CAN標識符,為1表示使用29位CAN標識符。
第29位和第30位都是無法修改的,這取決于設備的功能。如果對其進行寫操作,則可用SDO異常中止消息來應答。
如果要支持高分辨率時間,可在參數1013h(高分辨率時間)中寫入一個32位時間值(單位為us)。該值可打包在PDO中,供高精度同步設備使用。
與時間報文相似,在對象字典1014h (COB-ID緊急報文)中同樣也給緊急報文設定一個CAN標識符。但COB-ID緊急報文參數中的第30位是不可用的,且固定為0。
為了避免總線因持續發送高優先級的緊急報文而無法進行通信,可以在對象字典1015h(禁止時間緊急報文)中設定一個禁止發送緊急報文的時間,該時間為100us的倍數。僅當禁止時間結束之后,才允許重新發送緊急報文。
03、用于SDO服務器和SDO客戶端的參數(索引1200h~127Fh、1280h~12FFh)
SDO服務器和SDO客戶端的參數( 索引1200h?127Fh或1280h?12FFh)的對象類型均為復雜數據類型( 索引0022h)。子索引01h包含客戶端發往服務器報文的COB標識符,子索引02h包含服務器發往客戶端報文的COB 標識符。這2 個標識符必須在2個方向的SDO通道中使用。如下圖所示。
有效位v表示SDO消息以及COB標識符參數中所含的CAN標識符是否有效,0表示有效,1表示無效。只有2個方向都使用CAN標識符,SDO通道才有效。
第30位表示SDO的設置類型,0表示靜態設置的SDO,1表示動態設置的SDO。設備復位后第31位和第30位又變為無效。SDO管理器可以利用dyn位識別預置的SDO連接以及在運行期間生成的連接。
子索引03h為可選項,包含服務器或客戶端的節點ID。
默認SDO服務器的SDO參數集(索引1200h)為可選項。在索引1201h以后用于其他SDO通道的所有條目可讀/寫,這些SDO通道通常默認為禁止的。
成功沒有捷徑,只有通過不斷的學習、學習再學習才能離成功更近一點點;想要學習的同學歡迎加入我們的技術交流群,共同學習,共同成長,讓我們離成功更近一步;
歡迎轉發
每篇原創內容都是我們用心血換來的知識精華,如果您覺得本文有價值,歡迎轉載分享;
歡迎加入
如果您對單片機及嵌入式設計感興趣,歡迎加入我們的辯論探討,加我微信【xyzn3333】