3. 必选节[FileInfo]:文件版本、创建时间、修改时间、创建工具、描述信息

好,咱们正式开始动手写 EDS 文件。第一个要面对的,就是 [FileInfo] 这个节。说白了,它就是整个配置文件的“身份证”。

我刚开始接触 EDS 时,觉得这节不就是填几个日期吗?随便写写得了。后来在一条汽车焊装线上,因为 FileInfo 里的版本号写错了,导致现场 30 多台伺服驱动器固件批量刷错。嗯,从那以后,我再也不敢小看这个节了。

3.1 [FileInfo] 到底管什么?

你可以把它理解成快递单上的寄件人信息。设备是谁生成的、什么时候生成的、版本对不对得上,全看这一节。主站(Master)在加载 EDS 时,第一件事就是读 [FileInfo],校验文件是否匹配当前设备。

它的核心字段就五个:

字段名 含义 我踩过的坑
FileVersion EDS 文件格式版本 写错会导致主站拒绝加载
CreationDateTime 文件创建时间 格式必须精确到秒
LastModificationDateTime 最后修改时间 跟固件版本联动才靠谱
CreatedBy 创建工具或人 建议写工具名+版本号
Description 设备描述信息 别写废话,写关键参数

3.2 字段详解与避坑指南

3.2.1 FileVersion — 文件格式的“版本锁”

这个字段目前主流值是 4(对应 CiA DS-301 V4.x)。有些老设备还在用 3,但新项目我建议统一用 4。

为什么?因为主站解析器看到版本号不对,直接罢工。我曾经在一条包装线上,把 FileVersion 写成了 2,结果倍福主站报“Unsupported EDS version”,查了整整半天才发现是这里的问题。

✅ 正确写法:

[FileInfo]
FileVersion=4

3.2.2 CreationDateTime 与 LastModificationDateTime — 时间戳的“格式陷阱”

这两个字段的格式非常严格,必须是:

YYYY-MM-DD-HH:MM:SS

注意:分隔符是 连字符(-),不是斜杠(/),也不是空格。时间用 24 小时制。

举个例子:

CreationDateTime=2025-06-15-14:30:00
LastModificationDateTime=2025-06-15-16:45:00

⚠️ 我曾经犯过的错:

有一次我手动编辑 EDS,把 CreationDateTime 写成了 2025/06/15 14:30:00。结果主站加载时直接跳过这个字段,用默认时间 1970-01-01 代替。设备上线后,固件版本比对永远失败。记住:连字符 + 24小时制 + 没有空格,一个字符都不能差。

3.2.3 CreatedBy — 你的“签名档”

这个字段我建议写成 工具名称 + 版本号。比如:

CreatedBy=EDS_Editor v2.1.0

如果你是自己写脚本生成的,也可以写脚本名:

CreatedBy=AutoEDS_Generator_Python3.9

我个人习惯把版本号写全。因为现场排查问题时,看到 CreatedBy 就能知道这个 EDS 是用哪个工具生成的,方便复现问题。

3.2.4 Description — 别写“通用设备”这种废话

Description 是给人看的。主站一般不解析它,但现场工程师会读。你想想看,一个柜子里 50 台设备,每台 EDS 的 Description 都写“伺服驱动器”,那跟没写有什么区别?

我建议至少包含:

  • 设备型号(比如 MDS-200A)
  • 关键参数(额定电流、通信速率)
  • 固件版本(比如 FW v3.2.1)

举个例子:

Description=MDS-200A Servo Drive, 5A Rated, CANopen DS-301, FW v3.2.1

3.3 完整示例与知识图谱

下面是一个完整的 [FileInfo] 节,你可以直接当模板用:

[FileInfo]
FileVersion=4
CreationDateTime=2025-06-15-14:30:00
LastModificationDateTime=2025-06-15-16:45:00
CreatedBy=EDS_Editor v2.1.0
Description=MDS-200A Servo Drive, 5A Rated, CANopen DS-301, FW v3.2.1

为了让你更直观地理解 [FileInfo] 在整个 EDS 文件中的位置和作用,我画了张图:

[FileInfo] 在 EDS 文件中的位置与作用 EDS 文件结构 — [FileInfo] 核心位置 EDS 文件整体 📄 [FileInfo] 节 文件版本 · 创建时间 · 修改时间 · 创建工具 · 描述 主站加载时 首先读取 主站 Master [DeviceInfo] 设备信息 [DummyUsage] 对象字典映射 [Mandatory] 强制对象 💡 为什么 [FileInfo] 必须放在文件最前面? 主站解析 EDS 时是顺序读取的。先读到 [FileInfo],就能快速判断 文件版本是否兼容、设备描述是否匹配。如果不匹配,直接跳过后续解析, 节省加载时间。所以 [FileInfo] 永远是 EDS 文件的第一个节。

3.4 几个实用小技巧

💡 技巧 1:时间戳自动生成

如果你用脚本生成 EDS,建议用系统时间自动填充 CreationDateTime。我习惯在 Python 里这样写:

from datetime import datetime
now = datetime.now()
creation_time = now.strftime("%Y-%m-%d-%H:%M:%S")

这样永远不会出现格式错误。

💡 技巧 2:Description 里加个“搜索标签”

我建议在 Description 末尾加几个关键词,比如 #CANopen #Servo #5A。现场工程师用文本搜索时,一搜就能找到对应的 EDS 文件。这招我在一个 200 台设备的项目里用过,反馈特别好。

⚠️ 注意:不要手动修改时间戳

除非你清楚自己在做什么,否则不要手动改 CreationDateTime 和 LastModificationDateTime。主站有时会用这两个时间跟设备固件时间做比对。我曾经见过有人把时间改成 2099 年,结果主站认为 EDS 文件“来自未来”,直接拒绝加载。

3.5 小结

[FileInfo] 虽然字段少,但它是主站认识你设备的第一印象。格式错了、时间不对、描述不清,都会给现场调试埋坑。

记住三个要点:

  • 格式严格:连字符、24小时制、版本号写对
  • 描述清晰:型号 + 关键参数 + 固件版本
  • 工具签名:写清楚生成工具和版本,方便追溯