在上一篇文章中,我們對(duì)CANopen框架和CANopen的7種服務(wù)類型進(jìn)行了簡(jiǎn)要介紹,而在本篇文章中,我們將展開介紹CANopen的對(duì)象字典、SDO和PDO等內(nèi)容。本系列文章主要是對(duì)CANopen協(xié)議進(jìn)行介紹,主要內(nèi)容包括對(duì)象字典、服務(wù)、SDO、PDO和主/從站節(jié)點(diǎn)等。如需CANopen軟硬件解決方案或培訓(xùn)服務(wù),可通過400-999-3848或support@hkaco.com聯(lián)系虹科工業(yè)控制團(tuán)隊(duì)!
前文回顧:
虹科干貨 | 最簡(jiǎn)單實(shí)用的CANopen介紹,看完你就明白了(1)
虹科干貨 | 最簡(jiǎn)單實(shí)用的CANopen介紹,看完你就明白了(2)
在7個(gè)CANopen服務(wù)中,PDO和SDO服務(wù)特別重要,因?yàn)樗鼈儤?gòu)成了大多數(shù)CANopen通信的基礎(chǔ)。下面我們將進(jìn)行詳細(xì)介紹,但在此之前我們需要了解CANopen的一個(gè)核心概念:對(duì)象字典。
1
對(duì)象字典OD
Object Dictionary
所有的CANopen節(jié)點(diǎn)必須有一個(gè)對(duì)象字典(OD),對(duì)象字典是一個(gè)標(biāo)準(zhǔn)化結(jié)構(gòu),包含描述CANopen節(jié)點(diǎn)行為的所有參數(shù)。OD條目通過一個(gè)16位的索引和8位的子索引進(jìn)行查詢。例如,符合CANopen標(biāo)準(zhǔn)的節(jié)點(diǎn)OD的索引1008(子索引0)包含節(jié)點(diǎn)設(shè)備名稱。
具體來說,對(duì)象字典中的條目由屬性定義的:
?
索引:對(duì)象的16位地址
?
對(duì)象名稱:制造商的設(shè)備名稱
?
對(duì)象代碼:數(shù)組、變量或記錄
?
數(shù)據(jù)類型:例如VISIBLE_STRING、UNSIGNED32或記錄名稱
?
訪問:“rw”(讀/寫),“ro”(只讀)或 “wo”(只寫)
?
類別:這表明參數(shù)是強(qiáng)制性的還是可選的
OD標(biāo)準(zhǔn)化部分
在對(duì)象字典被分成標(biāo)準(zhǔn)化的部分中,有一些條目是強(qiáng)制性的,而另一些是完全可定制的。重要的是,一個(gè)設(shè)備(例如一個(gè)從站設(shè)備)的OD條目可以被另一個(gè)設(shè)備(例如一個(gè)主設(shè)備)通過CAN訪問,例如使用SDO。這可能讓主站改變從站節(jié)點(diǎn)是否通過特定的輸入傳感器記錄數(shù)據(jù),或改變從站發(fā)送心跳的頻率。閱讀電子數(shù)據(jù)表和設(shè)備配置文件可以幫助理解OD。
電子數(shù)據(jù)表(EDS)
在實(shí)踐中,配置/管理復(fù)雜的CANopen網(wǎng)絡(luò)將會(huì)用到一些合適的軟件工具。為了簡(jiǎn)化這一點(diǎn),CiA 306標(biāo)準(zhǔn)定義了一種人類可讀且和機(jī)器友好的INI文件格式,作為設(shè)備OD的“模板”——例如 “ServoMotor3000”。此EDS通常由供應(yīng)商提供,包含所有設(shè)備對(duì)象(但不包括值)的信息。
設(shè)備配置文件(DCF)
假設(shè)一家工廠購(gòu)買了一臺(tái)ServoMotor3000,以整合到他們的傳送帶上。在操作過程中,操作員編輯了設(shè)備的EDS,并在EDS中添加了特定的參數(shù)值或改變了每個(gè)對(duì)象的描述名稱。這樣一來,操作者就有效地創(chuàng)建了所謂的設(shè)備配置文件(DCF)。有了這個(gè)文件,ServoMotor3000便能夠集成到現(xiàn)場(chǎng)的特定CANopen網(wǎng)絡(luò)中。
查看真實(shí)的EDS/DCF示例是理解CANopen對(duì)象字典的最佳方法之一,在下圖中,您可以留意EDS和DCF對(duì)象條目之間的區(qū)別以及DCF如何包含特定的參數(shù)值。
此外,我們建議到官網(wǎng)上查看CiA 306標(biāo)準(zhǔn),通過實(shí)際的例子對(duì)OD、EDS和DCF有更深入的了解。
如前文所述,DCF通常在設(shè)備集成時(shí)創(chuàng)建。然而,經(jīng)常需要在初始配置后讀取或改變一個(gè)節(jié)點(diǎn)的對(duì)象值——這就是SDO服務(wù)的作用所在。
2
服務(wù)數(shù)據(jù)對(duì)象SDO
配置CANopen網(wǎng)絡(luò)
SDO服務(wù)允許CANopen節(jié)點(diǎn)通過CAN網(wǎng)絡(luò)讀取/編輯另一個(gè)節(jié)點(diǎn)的對(duì)象字典的值。正如在“通信模型”中提到的,SDO服務(wù)使用“客戶端/服務(wù)器”模式。具體來說,一個(gè)SDO “客戶端”與一個(gè)專門的SDO“服務(wù)器”發(fā)起通信。其目的可以是更新一個(gè)OD條目(稱為“SDO下載”)或讀取一個(gè)條目(“SDO上傳”)。在簡(jiǎn)單的主/從網(wǎng)絡(luò)中,具有NMT主站功能的節(jié)點(diǎn)充當(dāng)所有NMT從站節(jié)點(diǎn)讀取或?qū)懭肫銸D的客戶端。
示
例
客戶端節(jié)點(diǎn)SDO下載:
客戶端節(jié)點(diǎn)可以通過在 CAN 幀下方的廣播來啟動(dòng)到節(jié)點(diǎn) 5 的 SDO 下載 - 這將觸發(fā)節(jié)點(diǎn) 5(并被其他節(jié)點(diǎn)忽略,見上圖)。SDO“接收”(即請(qǐng)求)CAN 幀如下所示:
SDO消息變量解釋
首先,COB-ID 605反映了“SDO接收”的使用(COB-ID 600 +節(jié)點(diǎn)ID)
CCS(客戶端命令指定符)是傳輸類型(例如,1:下載,2:上傳)
n是字節(jié)區(qū)4-7中不包含的字節(jié)數(shù)(如果e和s被設(shè)置為有效)
e表示“加速傳輸”,且所有數(shù)據(jù)都在單個(gè)CAN幀中(如果有設(shè)置)
s表示數(shù)據(jù)大小顯示為n(如果有設(shè)置)
索引(16位)和子索引(8位)反映了要訪問的OD地址
最后,節(jié)點(diǎn)5將相應(yīng)字節(jié)4-7中包含的相關(guān)數(shù)據(jù)
一旦主站節(jié)點(diǎn)(客戶端)發(fā)送CAN幀,從站節(jié)點(diǎn)5(服務(wù)器)通過COB-ID 585的“SDO傳輸”進(jìn)行響應(yīng)。響應(yīng)包含索引/子索引和4個(gè)空數(shù)據(jù)字節(jié)。自然,如果客戶端節(jié)點(diǎn)請(qǐng)求上傳(即從節(jié)點(diǎn)5OD讀取數(shù)據(jù)),節(jié)點(diǎn)5將響應(yīng)字節(jié)4-7中包含的相關(guān)數(shù)據(jù)。此外,對(duì)于更大的數(shù)據(jù)場(chǎng)景,可以使用SDO分段/塊進(jìn)行傳輸。
一般來說,SDO很靈活,但也會(huì)帶來較高的成本,這使得SDO不太適合實(shí)時(shí)操作數(shù)據(jù)。這就是PDO的用武之地。
3
過程數(shù)據(jù)對(duì)象PDO
操作CANopen網(wǎng)絡(luò)
CANopen的PDO服務(wù)用于在CANopen節(jié)點(diǎn)之間有效地共享實(shí)時(shí)操作數(shù)據(jù)。例如,PDO將攜帶來自壓力傳感器的壓力數(shù)據(jù)或來自溫度傳感器的溫度數(shù)據(jù)。原則上,SDO服務(wù)也能實(shí)現(xiàn)共享實(shí)時(shí)操作數(shù)據(jù),但由于單個(gè)SDO響應(yīng)只能攜帶4個(gè)數(shù)據(jù)字節(jié),出于成本原因,我們不建議這么做。
此外,假設(shè)一個(gè)主站節(jié)點(diǎn)需要來自節(jié)點(diǎn)5的兩個(gè)參數(shù)值(例如“SensTemp2”和“Torque5”)。如果通過SDO來實(shí)現(xiàn),需要4個(gè)完整的CAN幀(2個(gè)請(qǐng)求和2個(gè)響應(yīng))。相比之下,一個(gè)PDO消息可以包含8個(gè)完整的數(shù)據(jù)字節(jié),而且它可以在一個(gè)幀內(nèi)包含多個(gè)對(duì)象參數(shù)值。因此,在SDO服務(wù)中至少需要4個(gè)報(bào)文,而在PDO服務(wù)中則可能只需要1個(gè)報(bào)文就可以完成。
PDO通常被看作是最重要的CANopen協(xié)議,因?yàn)樗休d了大量的信息。下面我們將介紹CANopen的PDO服務(wù)是如何工作的。
PDO服務(wù)使用的是“消費(fèi)者/生產(chǎn)者”模型。因此,生產(chǎn)者 "生產(chǎn)數(shù)據(jù)",它使用發(fā)送PDO(TPDO)將其傳送給“消費(fèi)者”(主站)。反之,它可以通過“接收PDO”(RPDO)從消費(fèi)者那里接收數(shù)據(jù)。例如,生產(chǎn)者節(jié)點(diǎn)可以被配置為對(duì)應(yīng)的同步觸發(fā),例如每隔100ms廣播給消費(fèi)者。然后,節(jié)點(diǎn)5可以在傳輸帶有COB-ID 185的PDO下廣播:
請(qǐng)注意這里的數(shù)據(jù)字節(jié)是如何裝入3個(gè)參數(shù)值的。這些值反映了節(jié)點(diǎn)5的特定OD條目的實(shí)時(shí)數(shù)據(jù)。使用這些信息的節(jié)點(diǎn)(消費(fèi)者)需要知道如何解釋PDO數(shù)據(jù)字節(jié)。
在某種程度上,PDO服務(wù)有點(diǎn)像J1939 PGN和SPN,這類似于特定J1939 參數(shù)組(PG)如何在 8 個(gè)數(shù)據(jù)字節(jié)中包含多個(gè) SPN/信號(hào)(也稱為數(shù)據(jù)參數(shù))。J1939 CAN 幀不需要在“解碼”信息上浪費(fèi)數(shù)據(jù)字節(jié),因?yàn)橄嚓P(guān)節(jié)點(diǎn)(以及外部工具通過例如J1939 DBC 文件或 J1939 PDF 標(biāo)準(zhǔn))知道這一點(diǎn)。問題在于,在 CANopen 中,這些“PDO 映射”通常是可配置的,并且可以在創(chuàng)建 DCF 或通過 SDO 服務(wù)期間進(jìn)行更改。
4
虹科CANopen解決方案
HongKe Solutions
虹科CANopen數(shù)據(jù)記錄儀
CANopen經(jīng)常被用于倉(cāng)庫(kù)中的電動(dòng)叉車或自動(dòng)導(dǎo)引車中,對(duì)CANopen數(shù)據(jù)進(jìn)行監(jiān)測(cè)和分析有利于改善管理,比如監(jiān)測(cè)充電狀態(tài)有助于減少故障和改善電池壽命,并且工業(yè)機(jī)械可以通過云端的物聯(lián)網(wǎng)CAN記錄器進(jìn)行監(jiān)控,根據(jù)CANopen數(shù)據(jù)預(yù)測(cè)和避免故障。此外,CAN記錄器可以作為工業(yè)機(jī)械的“黑匣子”,提供數(shù)據(jù)用于解決OEM和用戶之間的糾紛,或作為罕見問題診斷的一部分。
虹科CANopen IO模塊
虹科HK-CIO系列是支持CANopen協(xié)議的遠(yuǎn)程IO模塊,IO類型包含數(shù)字量,模擬量,高速計(jì)數(shù)器,脈沖輸出,PWM,PT100/1000等,緊湊型設(shè)計(jì),支持DIN導(dǎo)軌安裝,IO與CANopen通訊之間相互電氣隔離。
虹科CANopen協(xié)議開發(fā)方案
虹科CANopen源代碼實(shí)施全功能符合CiA 301標(biāo)準(zhǔn)草案,支持快速且標(biāo)準(zhǔn)地開發(fā)你的CANopen主站或從站設(shè)備,包括NMT主站(網(wǎng)絡(luò)管理)、LSS主站(層設(shè)置服務(wù))或SDO客戶端。
-
CAN
+關(guān)注
關(guān)注
57文章
2754瀏覽量
463697
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論