近期小編開發了【跟我學CANopen】系列課程,會陸陸續續連載更新完畢,相關目錄如下(由于內容較多導致文字太小,下圖請放大后查看)。
對象字典索引區域定義中,0x1000h~0x9FFFh是通信對象子協議區和制造商特定子協議區。
01、通訊對象子協議區
通訊對象子協議區(Communication profile area)定義了所有和通信有關的對象參數。如下圖所示。
標綠色底紋的索引范圍1000h ~1029h為通用通訊對象,所有CANopen節點都必須具備這些索引,否則將無法加入CANopen網絡。其他索引根據實際情況進行分配與定義。
02、制造商狀態寄存器(索引1002h)
這個32位寄存器包含一個指針(16位索引和8位子索引)以及對象字典條目的長度(8位)。該寄存器中的內容由設備制造商來設定。
03、同步參數(索引 1005h、1006h、1007h和1019h)
同步報文COB標識符參數(索引1005h)是一個32位對象。它不僅包含使用的CAN 標識符,還包含3個控制位:第31位為預留位; 第30位確定設備是發送同步報文(生產者為1)還是接收同步報文(消費者為0);第29位用來區分11位CAN標識符(0)和29位CAN標識符(1)。如果參數中沒有定義這些位,而且用戶又試圖用SDO寫操作來設定這些位,那么系統就會發送SDO中止消息來應答。
通信循環周期(索引1006h)是針對同步報文發送方而言的,該參數設置同步周期(單位為us)。同步報文的接收方同樣也可以設置一個通信循環周期,這樣如果在規定的時間內接收方沒有收到同步報文,就會產生一個事件來通知應用程序,從而采取相應的措施。
同步窗口長度(索引1007h)以us為單位。在同步窗口時間范圍內,PDO傳輸必須在同步報文發送之后才能進行。否則,這一情況將通知給應用程序。
同步計數器溢出參數(索引1019h)中包含一個8位值(范圍為0?240,其他值均保留),該值可用來復位同步報文中的計數器。如果該值為0,則發送不含計數器字節的同步報文。
注意:該值必須是使用的同步PDO的倍數(1—240)。
04、設備監控(索引 100Ch、100Dh、1016h和1017h)
有兩個參數可用于配置心跳功能。一個是生產者心跳報文時間間隔(索引1017h) ,它表示的是發送心跳報文的周期(單位為ms) 。網絡中的所有設備會對心跳報文進行分析,從而確定設備故障。另一個參數是消費者心跳時間間隔(索引1016h) ,它最多可包含127個條目,條目記錄被監控設備的節點ID以及時間(單位為ms)。
消費者心跳時間間隔必須大于消費者心跳周期,否則在發送下一個心跳報文之前,就先會發出設備故障消息。一旦用戶設置了索引1017h的值(該值不為0) ,被監控設備進入預操作狀態后就會開始發送心跳報文。第一次收到心跳報文時開始監控設備。
如果其中某個心跳時間間隔為0,那么相應的監控就會停止。由于這里是一種生產者/消費者關系,因此,當心跳時間間隔改變時,所有消費者(監控某一設備的所有設備)同樣也必須收到心跳時間間隔參數發生變化通知,并進行相應的調整。
在此,我們不推薦NMT主機使用節點保護來監控設備(況且該保護方式還是基于遠程幀),而是引入2個新的參數:“保護時間”(索引100Ch) 和“壽命因子”(100Dh) .對象100Ch表示NMT主機通過遠程幀查詢NMT狀態所用的時間間隔(單位為ms)。如果不支持心跳機制,就必須使用該對象。
如果對象100Ch的值為0,則保護功能無效。
本文小部分內容引用自網絡,若有侵權請聯系刪除。
成功沒有捷徑,只有通過不斷的學習、學習再學習才能離成功更近一點點;想要學習的同學歡迎加入我們的技術交流群,共同學習,共同成長,讓我們離成功更近一步;
歡迎轉發
每篇原創內容都是我們用心血換來的知識精華,如果您覺得本文有價值,歡迎轉載分享;
歡迎加入
如果您對單片機及嵌入式設計感興趣,歡迎加入我們的辯論探討,加我微信【xyzn3333】