乐于分享
好东西不私藏

AutoCreateSldd:Excel Simulink 数据字典双向同步

AutoCreateSldd:Excel Simulink 数据字典双向同步
做嵌入式开发(尤其是汽车电子、电机控制、BMS)的工程师,一定对这个场景不陌生:

系统工程师在 Excel 里维护了完整的信号和参数清单,软件工程师需要在 Simulink 数据字典(.sldd)里把这些变量一个个配好存储类、数据类型、头文件……几百个变量,复制粘贴到手软。

更痛苦的是,Excel 改了一版,数据字典又得重新来一遍。反过来,数据字典里调好的内容要倒回 Excel 给系统工程师核对?无从下手。


这个工具能干什么

AutoCreateSldd 是一个 MATLAB App Designer 桌面应用。你给它一个 Excel 文件,它可以:

  • ✅ 生成 Simulink 数据字典(.sldd)——正向同步
  • ✅ 从数据字典导出回 Excel——反向同步
  • ✅ 生成标准 Excel 模板——填数据直接用
  • ✅ 校验数据合法性——减少低级错误

打开 .mlapp 文件就能用,不需要敲命令。


正向同步:Excel → .sldd

这是最核心的流程,在工具里点一个按钮就能完成。背后的处理逻辑比想象中要周全:

第一步:生成中间脚本

工具会读取 Excel,为每个变量生成对应的 Simulink 对象创建代码。生成的 .m 脚本是可见、可编辑的——你可以打开检查,没问题再往下走。

第二步:在工作区创建对象

在 MATLAB 基础工作区创建所有 Simulink 数据对象。

第三步:写入 .sldd

写入时不是简单粗暴地全部覆盖,而是逐条对比

情况
处理
条目不存在
新增
条目已存在,内容没变
跳过
条目已存在,内容已变
更新

最后会告诉你:新增了几个、修改了几个、跳过了几个。你之前在数据字典里手动改过的东西,不会被胡乱抹掉。

支持的对象类型

类型
说明
Signal
Simulink.Signal 及自定义子类
Parameter
Simulink.Parameter 及自定义子类
Const
按 Define 存储类处理
Bus
Simulink.Bus
BusElement
按总线名分组写入
Enum
每个枚举生成独立 .m 类定义

自定义存储类

你在 Excel 中给变量指定了自定义存储类(如 ExportedGlobal、BitField、GetSet 等)和对应的 Package,工具能够正确识别并设置到 Simulink 对象上——生成代码时变量会自动出现在你期望的内存 Section 中,不需要手动一个个配。


反向同步:.sldd → Excel

团队协作中,经常需要把数据字典的最新状态导出给系统工程师核对。点击工具里的 「SLDD → Excel 反向同步」 按钮:

  1. 读取 .sldd 中的条目,按 Signal / Parameter / Const / Bus / BusElement 分类
  2. 扫描目录下的 Enum 类定义文件
  3. 写回 Excel

格式完全保留——颜色、字体、冻结行、下拉列表都和原来一样。不只如此,Excel 里原来缺失的内容也会自动补全:比如系统工程师漏填了某个信号的数据类型,你在数据字典里配好后反向同步回去,Excel 对应位置会自动填上。对方收到直接就能看,不用再手动补一遍。


数据校验

填 Excel 时难免有疏漏——必填列空了、变量名重复了、Bus 引用了不存在的总线……工具内置了校验功能,点一下就能检查出来,避免写到一半才发现问题。


图形界面长什么样

打开 .mlapp 后,界面布局很清晰:

  • 文件与输出区
    ——选择 Excel 文件、设置 .sldd 路径
  • 工作表选择区
    ——勾选你要导入的 Sheet
  • 操作按钮区
    ——校验 / 预览 / 生成脚本 / 完整导入 / 反向同步
  • 预览区
    ——实时查看工作表内容和生成结果
  • 日志区
    ——每一步操作的记录

不需要记任何 MATLAB 命令,点几下鼠标就能完成整个同步流程。


环境要求

  • MATLAB R2020b+ + Simulink
  • Python 3 + openpyxl(仅反向同步 SLDD→Excel 时需要)

怎么用

三步搞定:

① 双击 .mlapp 打开工具 → 点击「生成模板」② 在生成的 Excel 里填好变量③ 回到工具 → 勾选工作表 → 点击「完整导入到 SLDD」

没有复杂的配置,不需要设环境变量。


如果你也在做 Simulink 相关的嵌入式开发,每天跟信号、参数、总线定义打交道,这个工具能让 Excel 和数据字典的同步变成几分钟的事。