核心概述

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 可编程设备)

关联