摘要:
本文在闡述CANopen對象字典的概念與結(jié)構(gòu)的基礎(chǔ)之上,結(jié)合生成對象字典常用方法的不足,引出一種可快速可靠創(chuàng)建與修改對象字典的對象字典生成器ODBuilder,不僅有效減少編輯對象字典的時間,而且最大限度地避免工程師手工編輯對象字典的錯誤出現(xiàn),為CANopen設(shè)備參數(shù)設(shè)置提供有力可靠的解決方案。
關(guān)鍵詞:
CANopen,對象字典,生成器,ODBuilder,EDS文件
Abstract:
In this paper, on the introduction of the concept and structure of the CANopen object dictionary, combined with the shortage of common methods of generating object dictionary, lead to a object dictionary generator-ODBuilder, which is quickly and reliably create and modify the CANopen object dictionary. This tool not only effectively reduce the time of editing object dictionary, but significantly minimize the occurrence of error of manually editing the object dictionary, and provide a robust and reliable solutions for the parameter Settings of CANopen equipment.
Key words:
CANopen,Object dictionary,generator,ODBuilder,EDS File
引言
CANopen協(xié)議是一種基于控制器局域網(wǎng)(CAN)的應(yīng)用層協(xié)議,該協(xié)議具有實(shí)時高效、組網(wǎng)靈活和產(chǎn)品兼容性高等優(yōu)勢,CANopen協(xié)議在國內(nèi)越來越受到青睞,其應(yīng)用領(lǐng)域也越來越多廣泛,不僅應(yīng)用于過程與生產(chǎn)自動化等領(lǐng)域,還涉及到醫(yī)療、鐵路、軍事、太陽能等等領(lǐng)域。目前CANopen協(xié)議由CiA(CAN in Automation)組織負(fù)責(zé)管理與推廣。
對象字典是CANopen通信接口與應(yīng)用程序之間接口,是CANopen協(xié)議的重要組成部分。在CANopen網(wǎng)絡(luò)中,每個標(biāo)準(zhǔn)的CANopen設(shè)備都有一個對象字典,用來描述CANopen設(shè)備的全部功能。
一般在CANopen配置或者開發(fā)工程中,對象字典的創(chuàng)建與管理是一個不可缺少的步驟,同時也是保證CANopen正常通訊的重要保障。如果CANopen系統(tǒng)工程相對比較簡單,人工編寫對象字典是可行的。但是如果面對系統(tǒng)較復(fù)雜、通訊量龐大的CANopen工程,單純用人工編寫對象字典是很低效的,同時也很容易出現(xiàn)編寫錯誤,可能給CANopen工程帶來潛在的危險。為了提高對象字典的編輯效率,同時最大限度地避免對象字典的編輯錯誤,本文描述的一個快速可靠的對象字典生成器ODBuilder,為CANopen工程的對象字典生成與修改提供一個很好的解決方案。
一、對象字典結(jié)構(gòu)與EDS文件描述
1.1對象字典結(jié)構(gòu)
對象字典是一個有序的對象組,每個對象采用一個 16 位的索引值來尋址,為了允許訪問數(shù)據(jù)結(jié)構(gòu)中的單個元素,同時定義了一個 8 位的子索引。對象字典中索引值0000- 0x0FFF 是數(shù)據(jù)類型的定義,具體類型有固定的分區(qū)。而一個CANopen節(jié)點(diǎn)的對象字典相關(guān)的常用范圍在 0x1000 到 0x9FFF 之間。其中,索引1000h-1FFFh描述的是通信對象(COB),如設(shè)備類型,錯誤寄存器,支持的 PDO 數(shù)量等等,該參數(shù)定義了CANopen接口的通信功能。索引2000h-5FFFh是預(yù)留給制造商定義的特定對象。索引000h-9FFFh是用于標(biāo)準(zhǔn)化設(shè)備子協(xié)議的對象描述,例如I/O模塊子協(xié)議、驅(qū)動與運(yùn)動控制設(shè)備子協(xié)議、傳感器與測量設(shè)備子協(xié)議、醫(yī)療器材子協(xié)議、電梯子協(xié)議等等。CANopen 對象字典通用結(jié)構(gòu)如表1所示。
索引
|
對象
|
0000h
|
未用(Not used)
|
0001 - 001F
|
靜態(tài)數(shù)據(jù)類型 (標(biāo)準(zhǔn)數(shù)據(jù)類型,如 Boolean,Integer 16)
|
0020 - 003F
|
復(fù)雜數(shù)據(jù)類型
(預(yù)定義由簡單類型組合成的結(jié)構(gòu)如 PDOCommPar,SDOParameter)
|
0040 - 005F
|
制造商規(guī)定的復(fù)雜數(shù)據(jù)類型
|
0060 - 007F
|
設(shè)備子協(xié)議規(guī)定的靜態(tài)數(shù)據(jù)類型
|
0080 - 009F
|
設(shè)備子協(xié)議規(guī)定的復(fù)雜數(shù)據(jù)類型
|
00A0 - 0FFF
|
保留(Reserved)
|
1000 - 1FFF
|
通訊子協(xié)議區(qū)域
(如設(shè)備類型,錯誤寄存器,支持的 PDO 數(shù)量)
|
2000 - 5FFF
|
制造商特定子協(xié)議區(qū)域
|
6000 - 9FFF
|
標(biāo)準(zhǔn)的設(shè)備子協(xié)議區(qū)域
|
A000 - FFFF
|
保留(Reserved)
|
表1 CANopen 對象字典通用結(jié)構(gòu)
1.2 EDS文件描述
CANopen 網(wǎng)絡(luò)中每個節(jié)點(diǎn)都有一個對象字典,對象字典包含了描述這個設(shè)備和它的網(wǎng)絡(luò)行為的所有參數(shù)。而在描述CANopen設(shè)備時,使用了一種標(biāo)準(zhǔn)化的ASCII格式的描述文件,即:電子數(shù)據(jù)表(EDS)。電子數(shù)據(jù)表不僅記錄了對象字典的所有參數(shù),同時也對設(shè)備及其配置進(jìn)行標(biāo)準(zhǔn)化的描述,所以EDS電子數(shù)據(jù)表是對象字典的載體與保存方式。
二、對象字典的實(shí)現(xiàn)
通常來說,在CANopen工程中將所有的CANopen通信描述條目放在一個表格中,然后用索引來訪問所有的對象。這不失是一個解決方法,不過這種方法只適用于系統(tǒng)簡單、通信參數(shù)少、非CANopen通信標(biāo)準(zhǔn)化的產(chǎn)品中,而且對象字典的修改與管理工作都較為繁瑣。由此本文介紹一種動態(tài)輸入掩碼顯示各個參考的對象類型,編輯過程不斷檢查其正確性并修正的對象字典生成器ODBuilder。ODBuilder工具生成的對象字典,通信描述完全符合CANopen標(biāo)準(zhǔn)規(guī)范CiA DS301以及設(shè)備描述符合EDS標(biāo)準(zhǔn)文件CiA DSP306規(guī)范,具有CANopen標(biāo)準(zhǔn)化設(shè)備的通用性。
三、對象字典生成器ODBuilder
3.1對象字典生成原理
對象字典生成器ODBuilder生成對象字典的原理是根據(jù)CANopen通信協(xié)議的訪問對象字典的機(jī)制,通過固定的索引、子索引來創(chuàng)建每一個CANopen對象字典條目。訪問對象字典示意圖如圖3.1所示。
圖3.1 CANopen訪問對象字典
對象字典條目表格提供一個指向存儲器中某個變量的指針,而應(yīng)用程序可直接通過變量名稱訪問所需的條目。因此對象字典條目列表就構(gòu)成了索引/子索引與對應(yīng)變量名稱之間的接口。
對象字典列表分為幾個不同的塊,目的為了方便對象的查找。通常分為用戶可通過索引查找相應(yīng)的列表(如通信Communication Profile Area),再通過偏移量訪問該列表中所需的單元。因此在生成對象字典時為了描述索引里的單元,就先創(chuàng)建該單元的訪問類型、數(shù)據(jù)類型和指針變量等的結(jié)構(gòu)體。然后利用創(chuàng)建好的結(jié)構(gòu)體與應(yīng)用變量建立相關(guān)聯(lián)的索引條目。此外,還會編輯一個包含指向子索引字段的指針列表,方便查找相關(guān)條目。
3.2對象字典生成過程
對象字典生成器ODBuilder創(chuàng)建一個簡明樹形結(jié)構(gòu)的對象字典工程,方便修改與訪問對象字典條目;在編輯對象字典條目過程中,無需手工輸入不同條目的數(shù)據(jù)類型,直接通過下拉選項(xiàng)選擇對應(yīng)類型;在編輯過程中,ODBuilder不斷檢查對象字典的輸入條目的正確性并提供修正參考,最后完成后可生成標(biāo)準(zhǔn)EDS文件。ODBuilder對象字典生成過程原理框圖如圖3.2所示。
圖3.2 對象字典生成過程原理框圖
3.3 創(chuàng)建簡明樹型條目
根據(jù)對象字典條目的分布特性,ODBuilder將創(chuàng)建的對象字典以簡明的樹型結(jié)構(gòu),索引值由小到大排列。用戶需要訪問或者修改某一條索引,可直接點(diǎn)擊該條目就可以進(jìn)行訪問或修改。如圖3.3所示。
圖3.3 樹型結(jié)構(gòu)索引結(jié)構(gòu)
3.4 編輯對象字典索引屬性
1.根據(jù)CANopen協(xié)議CiA DSP306規(guī)范,輸入不同的索引值,可靈活設(shè)定其“可選”、“制造商”、“強(qiáng)制”屬性。以編輯0x1000h索引為例,如圖3.3.1所示,通常用于Device Type,如果作為從站的產(chǎn)品,該索引通常為“強(qiáng)制”屬性,ODBuilder將其自動設(shè)置為“強(qiáng)制”屬性。
圖3.4.1編輯對象字典索引屬性
2.根據(jù)不同的CANopen設(shè)備的存儲需要,可選擇索引是否存儲在非易失存儲器以及ROM或者RAM中。
3.索引的對象參數(shù)、數(shù)據(jù)類型、訪問類型等直接通過下拉條選擇,如圖3.3.2所示,另外可選該索引條目是否有PDO映射功能。
圖3.4.2 下拉條選項(xiàng)輸入
4.根據(jù)對象參數(shù)屬性,如果選擇為變量,默認(rèn)值、最小值和最大值為可輸入狀態(tài)。
5.子索引自動繼承索引屬性,無需要重新設(shè)定其存儲屬性、PDO映射參數(shù)。
3.5檢查輸入正確性
在CANopen系統(tǒng)工程較復(fù)雜的情況下,ODBuilder隨時提示對象字典的輸入,確保對象字典條目的每一個屬性參數(shù)不遺漏,檢查對象字典條目的輸入正確性。例如,如果編輯對象字典時遺漏索引標(biāo)示符(Designator)的輸入,則會提示用戶輸入對應(yīng)值。同樣,遺漏索引值、對象類型、數(shù)據(jù)類型、訪問類型任何一項(xiàng)都有相應(yīng)的輸入提示。如圖3.5所示。
圖3.4 檢查輸入提示
3.6導(dǎo)出EDS文件
當(dāng)完成對象字典所有條目的編輯,ODBuilder的檢查功能已經(jīng)很大程度的減少對象字典的輸入錯誤,同時導(dǎo)出符合CiA DSP306規(guī)范的EDS文件,該文件不僅包含了CANopen設(shè)備的對象字典所有的內(nèi)容,同時也要求添加文件描述信息,設(shè)備信息等信息。如圖3.6所示。
圖3.6生成EDS
結(jié)語
本文在CANopen對象字典的概念基礎(chǔ)上,進(jìn)一步闡述了一種可快速可靠靈活創(chuàng)建對象字典的工具ODBuilder,并生成標(biāo)準(zhǔn)化EDS文件,不僅為CANopen設(shè)備的生產(chǎn)也為CANopen工程設(shè)備的參數(shù)配置,提供快速創(chuàng)建與修改對象字典的解決方案,目前該軟件已經(jīng)應(yīng)用于多家大型醫(yī)療器材、運(yùn)動控制、軌道運(yùn)輸?shù)刃袠I(yè)設(shè)備的對象字典生成。
參考文獻(xiàn)
[1] Olaf pfeiffer, Andrew Ayre, Christan Keydel,embedded networking with CAN and
CANopen [M], 2008, 42-56
[2](德)Holger Zeltwanger 著,周立功,黃曉清,嚴(yán)寒亮譯,現(xiàn)場總線 CANopen 設(shè)計與應(yīng)
用 [M],2011,62-75
[3]CiA Draft Standard 306,Version 1.3,01 January 2005
[4] CANopen Object Dictionary Software ODBuilder Manual, Edition August 2008
作者簡介 龔龍峰,(1988- ),男,助理工程師,研究方向:自動化及通信技術(shù)