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