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