核心概述
CANopen 设备要通过软件工具(组态、网络设计、项目管理)来管理和配置,工具需要设备的电子化描述。CiA DS 306 V1.3(2005-01-01,Draft Standard)定义了三份标准化文件格式,使厂商无关的第三方工具可以读入任何 CANopen 设备:
- EDS(Electronic Data Sheet):某厂商某型号设备的”模板”,描述通讯功能、对象字典对象、参数限值与默认值
- DCF(Device Configuration File):EDS 加上具体设备的实际 incarnate——对象实际取值、波特率、Node-ID,即”这台配置好的设备”
- MDS/MD(Module Description):模块化设备(总线耦合器+扩展模块)中每个扩展模块的描述
与既有笔记 CANopen轻松入门教程(致远电子入门篇,讲协议分层与 SDO/PDO/NMT 概念)互补:那篇讲”CANopen 怎么通讯”,本篇讲”CANopen 设备如何被工具描述与组态”。
EDS 文件格式基本规则
- ASCII 文本(ISO646 字符集),行尾 LF 或 CR/LF,单行 ≤255 字符
- INI 风格:
[节名]方括号必须、左顶格;键名=값;节名键名均不区分大小写,节和键顺序任意 - 纯数字键名按字符串解释:
10=xxx≠0xA=xxx≠0x0A=xxx - 注释行以
;开头且顶格 - 数值:十进制、
0x十六进制、前导 0 八进制等价(10 = 0xa = 012);字符串不加引号;octet string 写成十六进制字节序列(无前导 0x,高半字节为 0 的字节要保留 0);位串写 0/1 序列 - **NODEID+offset`,导入时替换为实际节点号——预定义 PDO 的 COB-ID 就是这么随 Node-ID 漂移的(只允许加偏移,不允许复杂表达式)
核心章节结构
| 节 | 作用 | 关键字段 |
|---|---|---|
| [FileInfo] | 文件版本管理 | FileName / FileVersion / FileRevision / EDSVersion(本规范写 “4.0”)/ Description / Creation* / ModifiedBy |
| [DeviceInfo] | 设备身份与能力 | VendorName / VendorNumber / ProductName / ProductNumber / RevisionNumber(与 1018h 身份对象一致)/ BaudRate_10…1000(布尔)/ SimpleBootUpMaster/Slave / Granularity(映射粒度,多为 8)/ NrOfRXPDO / NrOfTXPDO / LSS_Supported |
| [DummyUsage] | 声明可用于填充映射空洞的哑元数据类型 | `Dummy<数据类型索引>={0 |
| [MandatoryObjects] | 必选对象(至少 1000h 设备类型、1001h 错误寄存器;4.0 版设备加 1018h 身份) | supportedObjects 计数 + SupportedObjectn 索引 |
| [OptionalObjects] | 1000h-1FFFh 与 6000h-FFFFh 区其余对象 | 同上 |
| [ManufacturerObjects] | 厂商自定义区 2000h-5FFFh | 同上 |
每个对象节 [obj_<hex>] | 参数对象描述 | ParameterName / ObjectType / DataType / AccessType / LowLimit / HighLimit / DefaultValue / PDOMapping / 子索引计数 |
| [Comments] | 任意注释行 | Lines / Linen |
DCF(设备组态文件)
- EDS 结构之上再加
[DeviceInfo]中FileSize、以及 对象实际值:可在对象节里写值,或写CompactStorage紧凑记法(只列非默认值的对象,值按子索引连续写) - 超长域数据可用
external=文件名引用外挂文件 - [DeviceComissioning] 节(DCF 特有):NodeID、NodeName、Baudrate、NetNumber、NetworkName、LSS_SerialNumber——把设备身份”钉死”到具体网络位置
- 直观理解:EDS 是”类型”,DCF 是”实例”;同一个 EDS 可派生 Node-ID=2 @(1000kbit/s) 和 Node-ID=55 @(250kbit/s) 多份 DCF
模块概念(总线耦合器 + 扩展模块)
- 总线耦合器 EDS 的 [SupportedModules] 节列出支持的扩展模块数 NrOfEntries,每个模块类型配一份 MD(Mx 节:MxModuleInfo 产品名/版本/订货号,MxComments 描述,MxFixedObjects 固定索引对象清单——如接了至少 1 个模拟输入才实例化的 CiA401 6423h “Global_Interrupt_Enable”)
- 过程数据扩展的两条路线:CiA401 顺序子索引法(6000h:01 → 6000h:02 …)与 CiA301 多设备法(对象字典整体平移 800h 复制);DS 306 只为前者提供描述规范
- PDO 映射规则(简化务实):扩展模块数据填预定义 PDO;映射条目可以引用”不一定存在的对象”——实际组态确定后,映射表截断到第一个不存在的对象为止,子索引 00h 相应缩短。例:TPDO1 映射 6000h:01-08,实接两个 16 位输入模块后只剩 01-04,00h 子索引改为 4
工程要点备忘
- 厂商不提供 EDS 时用”默认 EDS”(按设备类 profile 生成全量对象)风险大:描述与实际固件功能不符会造成组态错误
- EDSVersion 4.0 对应 CANopen 4.0 设备(强制 1018h 身份对象);老文件缺省按 3.0 解释
- 未来扩展节/键允许存在,一致性测试工具(Conformance Test Tool)只报 warning 不报错
- 引用标准:CiA 301(应用层)、CiA 302(管理器框架)、CiA 401(通用 I/O 设备画像)、CiA 405(IEC 61131 可编程设备)
关联
- CANopen轻松入门教程 —— 协议概念入门(NMT/SDO/PDO/对象字典是什么)
- CiA 系列其余规格书在云盘同目录(301/302/401/406/409 等,队列 CiASpecifications 簇),本篇 DS 306 是其中”设备描述文件”一支
- CANopen 在项目中的实际使用背景见 Olympus-AU2700-AU5400生化分析仪在线通讯协议 等仪器通讯类笔记