1 引言
在面向微控制器的建模过程中,控制算法是可以复用到不同型号的同类产品中的。为了提高控制算法的可移植性,需要将模型与数据分开管理。如果不将模型与数据分开管理,直接将数据保存到模型中,即使在非批产的工程化应用或者小型项目中,也需要逐个点击模块进行修改,效率低且易出错。例如在上篇《基于MWORKS.Sysplorer的电子控制器应用案例-永磁同步电机FOC算法建模》中提到构建FOC算法模型后,需要给模型设置不同参数,就可使用数据字典统一管理算法模型中的数据,实现算法与数据分离。
最新MWORKS.Sysplorer中的数据字典功能具有以下特点:
-
模型与数据分离;
-
数据字典独立存储,可重复使用;
-
统一管理模型不同层级的参数信息;
-
生成代码的可读性增强。
此外,由于用户既存的Excel格式的数据字典,其列顺序各有不同,手动转换耗时且易出错,MWORKS.Sysplorer增加了脚本命令,用于异构数据字典转化生成MWORKS.Sysplorer的modd数据字典文件,提高了兼容性。
本篇将继续以永磁同步电机FOC为例,介绍如何使用MWORKS.Sysplorer数据字典,实现对FOC模型的数据管理。
2 什么是数据字典
2.1 数据字典概念
数据字典是由多个数据对象组成,以数据对象形式存储模型中的参数、信号的详细信息的持久性数据库。数据字典与模型是多对多关系,以文件形式独立于模型存储,后缀为modd。简单来说,数据字典就是存储模型数据的容器。
数据字典中的每条字典记录为一个数据对象。数据对象具体内容如下:
-
标识符:参数/信号的别名(必填项)。
-
描述:参数/信号的描述。
-
值/初始值:模型中参数/信号的值/初始值(必填项)。
-
维度:参数/信号的维度([]表示标量)。
-
最小值:参数/信号的最小值。
-
最大值:参数/信号的最大值。
-
单位:参数/信号的单位。
-
数据类型:参数/信号的数据类型,可选int、float、bool三种类型。
-
存储类型:可选Auto、ExportedGlobal、ImportedExtern、ImportedExternPointe四种类型。ExportedGlobal表示生成内部定义的全局变量,ImportedExtern表示导入外部定义的全局变量,ImportedExternPointer表示导入指向外部定义的全局变量的指针,默认为Auto类型。
-
文件名:将该变量生成代码时指定到该文件中。
图2‑1 数据字典表头
2.2数据字典作用
数据字典具有管理模型参数的作用。例如,在MWORKS.Sysplorer中新建一个模型,其中有三个Constant模块,他们参数相同,都是1。
图2‑2 示例模型(一)
如果要将其中的1改成5,就必须修改每个模块。如果Constant模块在模型的不同层级,还需要进入不同层级修改,改动重复且不可持续。
图2‑3 示例模型(二)
因此可在数据字典中新建一个数据对象,让不同层级的Constant模块与其绑定,并在模型仿真时应用数据字典内容,到达模型数据统一管理。
图2‑4 绑定数据对象
3 如何使用数据字典
MWORKS.Sysplorer数据字典入口位置以及数据字典界面功能如下所示:
图3‑1 数据字典面板界面
启动后的数据字典默认是独立非模态窗口,用户可以根据使用习惯选择将其停靠在右下角,如上图所示。
接下来,将基于永磁同步电机FOC模型,介绍如何通过MWORKS.Sysplorer的数据字典功能,实现对模型数据的管理。
3.1 新建数据字典
加载永磁同步电机FOC模型,点击新建字典按钮,确定后完成新建字典并自动与FOC模型绑定,面板其它功能开启。
图3‑2 新建字典
3.2 关联数据字典
加载永磁同步电机FOC模型后,还可以通过数据字典面板的关联字典功能,选择已存在的数据字典文件进入预览,预览确定后即可关联,数据字典面板其它功能也会开启。
图3‑3 关联数据字典文件预览
3.3添加数据对象
永磁同步电机FOC模型新建或关联数据字典后,将模型参数信息保存到数据字典中一般采用以下两种方式:一是通过模块参数设置界面自动添加到数据字典;二是在数据字典面板手动添加后,在参数设置界面使用。下图是将FOC模型中的HSMO系统中QPLL子系统下的PID模块中的比例环节的比例环节系数和积分环节的积分系数绑定数据对象,应用于数据字典中。
图3‑4 添加数据对象
3.4 导入/导出数据
模型绑定数据字典后,可以通过数据字典的导入/导出功能,快速导入其它modd数据字典文件内容至当前数据字典或将当前数据字典内容导出另存为modd数据字典文件。还支持导入/导出Excel格式数据字典文件,用户需要将既存的Excel数据字典修改成MWORKS.Sysplorer支持的Excel格式,即可导入。
下图是FOC模型导入其它数据字典文件界面,确定后勾选变量导入FOC模型的数据字典中。
图3‑5 导入数据字典
4 数据字典应用结果
永磁同步电机FOC模型中,将Clarke模块的输入上下限参数添加到数据字典中,设置参数。
图4‑1 Clarke输入限定初始设置
设置完成后进行仿真,结果如下所示:
图4‑2 Clarke输入限定初始设置仿真结果
在数据字典中调整上下限参数:
图4‑3 Clarke输入限定修改
修改后仿真,结果如下所示:
图4‑4 Clarke输入限定修改后仿真结果
添加所有数据字典的变量后,对FOC模型进行仿真。电机的输出结果如下所示,与预期一致。
图4‑5 FOC模型仿真结果
5 数据字典脚本
此外,考虑到很多用户有大量的既有数据字典资产,通常都以Excel格式保存,MWORKS.Sysplorer中还提供了基于Python的API提供给用户脚本编程能力,让用户将既有资产软件中FOC模型Excel格式的数据字典转换生成数据字典文件。
5.1 构建脚本
MWORKS.Sysplorer数据字典支持导入/导出Excel格式的数据字典,但需要用户手动将Excle格式修改成MWORKS.Sysplorer支持的格式,耗时且易出错。因此,用户可以借助MWORKS.Sysplorer提供的API进行脚本编程,将既有的Excel数据转化成内置的数据字典文件。脚本构建步骤主要分为以下六步:
1)创建自定义函数,读取文件
图5‑1 自定义函数
图5‑2 自定义函数
2)获取表格文件中的信息
图5‑3 读取数据
3)创建数据字典对象
图5‑4 创建数据字典对象
4)添加数据字典记录
图5‑5 添加数据字典记录
5)保存数据字典文件
图5‑6 保存数据字典文件
6)调用自定义函数
图5‑7 调用自定义函数
5.2执行脚本
运行MWORKS.Sysplorer,点击工具-运行脚本,启动Python编辑器,在编辑器中编辑脚本或打开已存在脚本文件,编辑完成后执行脚本。
图5‑8 Python编辑器
执行脚本后生成数据字典文件。
图5‑9 生成结果
5.3 验证脚本
使用数据字典-关联字典由脚本生成的数据字典文件,结果如下所示:
图5‑10 结果展示
6 总结
本文简述了数据字典的概念和用途。基于永磁同步电机FOC模型,介绍如何为模型新建或关联数据字典,在建模过程中如何向数据字典中添加变量,快速导入其它数据字典内容,并展示了模型应用数据字典后的仿真结果。还介绍了如何通过脚本命令,将其它软件中Excel格式的数据字典转换成 MWORKS.Sysplorer 的数据字典文件。
数据字典作用除了本文所述外,对生成的嵌入式代码的表现形式,可读性等也有相应用途。我们将在下期《基于MWORKS.Sysplorer的电子控制器应用案例-永磁同步电机实机控制》中为您讲解,敬请期待!
了解更多MWORKS信息,欢迎关注1月8日同元软控MWORKS 2023产品发布会!