▼點(diǎn)擊下方名片,關(guān)注公眾號(hào)▼
近期小編開(kāi)發(fā)了【跟我學(xué)CANopen】系列課程,會(huì)陸陸續(xù)續(xù)連載更新完畢,相關(guān)目錄如下(由于內(nèi)容較多導(dǎo)致文字太小,下圖請(qǐng)放大后查看),歡迎關(guān)注【玩轉(zhuǎn)單片機(jī)與嵌入式】公眾號(hào)持續(xù)跟進(jìn)學(xué)習(xí)。
歡迎關(guān)注【玩轉(zhuǎn)單片機(jī)與嵌入式】公眾號(hào),持續(xù)跟進(jìn)學(xué)習(xí);
對(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)都必須具備這些索引,否則將無(wú)法加入CANopen網(wǎng)絡(luò)。其他索引根據(jù)實(shí)際情況進(jìn)行分配與定義。
02通用通訊對(duì)象
由于通用通訊對(duì)象十分重要,NMT主站(CANopen主站)在啟動(dòng)時(shí),通常都全部或者部分讀取所有從站中通用通訊對(duì)象中的索引,所以所有的通用通訊對(duì)象都必須在CANopen從站中實(shí)現(xiàn),使用者也必須熟知這些索引地址與其含義。
03用于設(shè)備描述的對(duì)象(索引1000h、1008h、1009、100A、1018)
設(shè)備類(lèi)型參數(shù)的結(jié)構(gòu)(設(shè)備類(lèi)型索引0x1000h)可用來(lái)描述所使用的設(shè)備子協(xié)議或應(yīng)用規(guī)范,如下圖所示“設(shè)備子協(xié)議編號(hào)”字段中包含CiA規(guī)定的子協(xié)議編號(hào)(如401表示I/O。設(shè)備子協(xié)議)。如果不是標(biāo)準(zhǔn)化的子協(xié)議,則子協(xié)議編號(hào)為0。
“附加信息”字段對(duì)子協(xié)議執(zhí)行的功能進(jìn)行詳細(xì)說(shuō)明,這些信息在相應(yīng)的子協(xié)議中有規(guī)定。如果設(shè)備中含有多個(gè)邏輯設(shè)備,則“附加信息”為FFFFh。第一個(gè)邏輯設(shè)備的 子協(xié)議編號(hào)保存在對(duì)象67FFh中。下表所列為內(nèi)置電機(jī)驅(qū)動(dòng)器、編碼器和I/O模塊3個(gè)邏輯設(shè)備的對(duì)象字典。
以下對(duì)象也可用來(lái)描述設(shè)備屬性:
-
索引1008h:制造商設(shè)備名稱(chēng);
-
索引1009h:制造商硬件版本;
-
索引100Ah:制造商軟件版本。
上面這3個(gè)固定不變的對(duì)象的數(shù)據(jù)類(lèi)型均為Visible String,用戶(hù)可以讀取索引中的信息, 同時(shí)還可以用它們對(duì)設(shè)備進(jìn)行更詳細(xì)的描述, 或告知用戶(hù)當(dāng)前使用的設(shè)備版本。
此外,還有一個(gè)可以詳細(xì)描述設(shè)備的對(duì)象——相同對(duì)象(索引I018h)。它屬于一種結(jié)構(gòu)(索引0023h),包含(最多)4個(gè)數(shù)據(jù)類(lèi)型為unsigned32的條目。4.0版本以后的CANopen協(xié)議中,這個(gè)對(duì)象都規(guī)定為必選項(xiàng),至少制造商ID(子索引01h)必須設(shè)置。
制造商ID是每一個(gè)制造商在全球的唯一標(biāo)識(shí),而且必須向CiA提出申請(qǐng)方可使用,禁止使用自行創(chuàng)建的制造商ID。此外,協(xié)議軟件或CANopen接口卡的供應(yīng)商可能會(huì)提供制造商ID為0的產(chǎn)品,這種制造商ID是無(wú)效的, OEM(原始設(shè)備制造商)必須自己申請(qǐng)一個(gè)有效的ID。
04用于錯(cuò)誤顯示的對(duì)象(索引1001h和1003h)
錯(cuò)誤寄存器(索引1001h) 包含錯(cuò)誤類(lèi)型信息,這些錯(cuò)誤是內(nèi)部設(shè)備經(jīng)常出現(xiàn)的,如下圖所示。每一個(gè)錯(cuò)誤都必須設(shè)有一個(gè)常規(guī)錯(cuò)誤位,而特殊的錯(cuò)誤位可以選擇性地設(shè)置。當(dāng)錯(cuò)誤排除后,相應(yīng)的位復(fù)位。如果所有錯(cuò)誤都排除了,常規(guī)錯(cuò)誤位也會(huì)復(fù)位。錯(cuò)誤寄存器是一個(gè)8位寄存器,其中所含的錯(cuò)誤信息可以通過(guò)緊急報(bào)文來(lái)發(fā)送。
錯(cuò)誤存儲(chǔ)器(預(yù)定義錯(cuò)誤場(chǎng),索引1003h) 是一個(gè)包含多達(dá)254個(gè)基本單元的數(shù)據(jù)場(chǎng)。這些基本單元提供近期引發(fā)緊急報(bào)文的錯(cuò)誤列表。子索引00h表示錯(cuò)誤存儲(chǔ)器中錯(cuò)誤的個(gè)數(shù),而基本單元的個(gè)數(shù)卻沒(méi)有硬性規(guī)定,但至少要有一個(gè)錯(cuò)誤存儲(chǔ)單元,這樣才能保存最近一次出現(xiàn)的錯(cuò)誤。
當(dāng)設(shè)備出現(xiàn)新的錯(cuò)誤時(shí),通常會(huì)將錯(cuò)誤保存在索引01h中。預(yù)定義錯(cuò)誤場(chǎng)會(huì)招之前的錯(cuò)誤依次向下移動(dòng),也就是升高一個(gè)子索引。這也可以算是一種堆棧,即在開(kāi)頭添加新的單元。如果所有子索引都被占用,則刪除最早出現(xiàn)的錯(cuò)誤。讀子索引00h的值會(huì)返回所存儲(chǔ)的錯(cuò)誤的數(shù)量。如果所有錯(cuò)誤都被排除了,子索引01h的值變?yōu)?。此外,向子索引00h寫(xiě)入0還可以將預(yù)定義錯(cuò)誤場(chǎng)清零。
本文小部分內(nèi)容引用自網(wǎng)絡(luò),若有侵權(quán)請(qǐng)聯(lián)系刪除。
E N D