# 数据字典的数据类型
目前,Sysblock 支持用户自定义和使用四类模型数据信息:参数、信号、总线和枚举。并且提供了一种数据字典文件,支持用户以独立文件的形式管理模型数据信息,起到模型和数据分开管理的作用。
# 参数
打开数据字典后,切换到参数界面,单击两次新增行
按钮。
面板数据介绍如下:
标识符:模型中参数的命名,设置模型生成代码时对应的别名;用户编辑结束后,数据字典会检查标识符的正确性,并通过红色边框告知用户:
标识符为空:鼠标悬浮在上面会提示用户标识符不能为空。
标识符不符合 Modelica 语义或 C 语义:鼠标悬浮在上面会提示标识符不合法。
标识符和模型组件或嵌套模型同名:鼠标悬浮在上面会提示标识符与模型内对象同名。
标识符和数据字典其他数据同名:鼠标悬浮在上面会提示标识符与数据字典其他数据同名。
描述:可以对相应的参数进行一些注释功能描述等;
值:当用户双击值单元格时,若该数据为标量,可以直接进行输入;
若为 boolean 或枚举类型,则提供下拉框支持用户快速选择;
若该数据不满足上述情况,则提供一个带按钮的编辑框,支持用户手动输入,或弹出数值编辑器快速编辑数据值;
用户编辑结束后,数据字典会检查值的正确性,并通过红色边框告知用户:
值为空:鼠标悬浮在上面会提示值不能为空。
值和维度不匹配:鼠标悬浮在上面会提示值和维度不匹配,值的维度为 [2]。
维度:表示变量的维度;用户双击维度单元格时,弹出编辑框支持用户编辑。当用户输入 0 和正整数时,会自动设置为规范的格式。当输入 0,会认为是输入标量,即 [];当输入正整数,会认为是输入向量,即 [N]。
维度为空:鼠标悬浮在上面会提示维度不能为空。
维度格式不合法:鼠标悬浮在上面会提示维度格式不合法。支持的格式有以下:
标量:0 或 1
向量:N 或 [N] (N >= 1)
数组:[M, N, Q, …] (M,N,Q>=1, …)
值和维度不匹配:鼠标悬浮在上面会提示值和维度不匹配,值的维度为 [2],其中 [2] 为解析出来的值可能的维度。
最小值:参数最小值;
最大值:参数最大值;
单位:参数单位;
数据类型:参数数据类型,当用户双击“数据类型”单元格时,会出现可编辑的下拉框支持用户快速选择允许设置的数据类型。数据字典参数和信号允许设置的类型包括:内置类型、定点类型、数据字典总线、数据字典枚举。用户编辑结束后,数据字典会检查数据类型的正确性,并通过红色边框告知用户:
数据类型为空:鼠标悬浮在上面会提示数据类型不能为空。
数据类型不在上面允许的类型之内:鼠标悬浮在上面会提示类型
xxx不存在。。
存储类型:存储类型,这里有下拉框提供 7 种类型以供选择:
Auto:当仅使用数据字典中定义的变量为模型中的组件参数赋值时使用类型,仿真及代码生成时直接使用相应值;
ExportedGlobal:仿真时使用此变量的值,同时,模型生成的 C 代码中会包含此变量的声明、定义及初始化语句,集成 C 代码时可以访问并修改此变量;
ImportedExtern:仿真时使用此变量的值,代码生成时仅生成此变量的前置声明语句,集成 C 代码时需提供相应变量的定义代码;
ImportedExternPointer:仿真时使用此变量的值,代码生成时仅生成此变量的指针的前置声明语句,集成 C 代码时需提供相应指针的定义代码。
Macro:将变量的值用宏定义的形式定义到指定的头文件,无指定头文件则生成到
momodel.c中,算法代码中的操作基于宏名来操作。Inline:将变量的值直接以数值形式写到参数变量的定义和使用的代码中。如一个参数在数据字典中定义为 K ,那么在模型生成代码中不生成定义它的代码;生成代码使用它时,处处都以 K 表示。
ImportedMacro:代码生成时生成引入用户指定文件的指令,及对相应宏定义的判断指令。
注意
参数允许设置的存储类型有:Auto、ExportedGlobal、ImportedExtern、ImportedExternPointer、Macro、Inline、ImportedMacro。
信号允许设置的存储类型有:Auto、ExportedGlobal、ImportedExtern、ImportedExterPointer。
限定符:在代码生成时,数据类型可以用限定符(qualifier),比如 const、 volatile、 const volatile 或者自定义关键字,加以限定。
注意
参数允许设置的限定符有:None、const、volatile、const bolatile。
信号允许设置的限定符有:None、volatile。
文件名:将生成的变量指定到某个头文件中。
# 信号
打开数据字典后,切换到信号界面,单击两次新增行
按钮。
面板数据介绍请参阅参数。
# 总线
打开数据字典后,切换到总线界面,单击两次新增行
按钮。
除了添加和删除数据外,总线和枚举标签页还在工具栏中提供了以下四个功能:
添加成员:若总线、枚举树中无选中的单元格,该按钮置灰不允许单击。当选中总线、枚举节点(根节点),则在当前总线、枚举的最后添加新的成员,如下所示:
删除成员:若总线、枚举树中无选中的叶子节点(总线成员、枚举项),即使有选中的总线或枚举,该按钮仍置灰不允许单击。单击删除成员后,选中的总线成员、枚举项全部删除,如下所示:
上移成员:只有当树中有选中的非第一个成员,该按钮有效允许单击。成员上移只对其所在的总线和枚举有效,当其已经是第一个成员了,单击上移结果不变。如下所示:
注意
枚举项移动后,其枚举值可能会发生变化。
下移成员:只有当树中有选中的非最后一个成员,该按钮有效且允许单击。其效果和上移成员类似,不再赘述。
面板数据介绍如下:
标识符:模型中参数的命名,设置模型生成代码时对应的别名;用户编辑结束后,数据字典会检查标识符的正确性,并通过红色边框告知用户:
标识符为空:鼠标悬浮在上面会提示用户标识符不能为空。
标识符不符合Modelica语义或C语义:鼠标悬浮在上面会提示标识符不合法。
标识符和模型组件或嵌套模型同名:鼠标悬浮在上面会提示标识符与模型内对象同名。
标识符和数据字典其他数据同名:鼠标悬浮在上面会提示标识符与数据字典其他数据同名。
维度:表示变量的维度;用户双击维度单元格时,弹出编辑框支持用户编辑。当用户输入 0 和正整数时,会自动设置为规范的格式。当输入 0,会认为是输入标量,即 [];当输入正整数,会认为是输入向量,即 [N]。
维度为空:鼠标悬浮在上面会提示维度不能为空。
维度格式不合法:鼠标悬浮在上面会提示维度格式不合法。支持的格式有以下:
标量:0 或 1
向量:N 或 [N] (N >= 1)
数组:[M, N, Q, …] (M,N,Q>=1, …)
值和维度不匹配:鼠标悬浮在上面会提示值和维度不匹配,值的维度为 [2],其中 [2] 为解析出来的值可能的维度。
描述:可以对相应的参数进行一些注释功能描述等;
头文件:双击总线的头文件单元格时,会弹出带有按钮的编辑框支持用户编辑。您能单击按钮可以弹出文件浏览器支持用户直接选择头文件,单击确定后头文件的路径会自动写入到头文件单元格中。
头文件中结构体名:当头文件为空时,结构体名段也将清空且不允许编辑;当头文件不为空时,要求指定该头文件中,总线对应的结构体名字。
提示
如需进一步了解总线中头文件和头文件中结构体名的功能,请参阅总线中头文件和头文件中结构体名的影响。
# 枚举
打开数据字典后,切换到枚举界面,单击两次新增行
按钮。
枚举标签页工具栏的功能介绍请参阅总线。
面板数据介绍如下:
标识符:模型中参数的命名,设置模型生成代码时对应的别名;用户编辑结束后,数据字典会检查标识符的正确性,并通过红色边框告知用户:
标识符为空:鼠标悬浮在上面会提示用户标识符不能为空。
标识符不符合Modelica语义或C语义:鼠标悬浮在上面会提示标识符不合法。
标识符和模型组件或嵌套模型同名:鼠标悬浮在上面会提示标识符与模型内对象同名。
标识符和数据字典其他数据同名:鼠标悬浮在上面会提示标识符与数据字典其他数据同名。
描述:可以对相应的参数进行一些注释功能描述等;
值:双击枚举项的“值”单元格时,会弹出编辑框支持用户编辑:
值为空:清空值时,该枚举项将变为默认值(灰色字体),如下所示:

值为非整数:输入的数据不是一个整数时,编辑将失败,并且弹框告知用户 “枚举项值必须为整数”。
值与前一个枚举项值 + 1 冲突:输入的值与前一个枚举项值 + 1 冲突时,编辑将成功,但后续枚举项的值会根据用户输入进行刷新。
编辑完成:编辑完成时,后续枚举项的值会根据用户输入进行刷新。
头文件:双击枚举的头文件单元格时,会弹出带有按钮的编辑框支持用户编辑。您能单击按钮可以弹出文件浏览器支持用户直接选择头文件,单击确定后头文件的路径会自动写入到头文件单元格中。
头文件中枚举名:当头文件为空时,枚举名段也将清空且不允许编辑;当头文件不为空时,要求指定该头文件中,枚举对应的枚举名字。
提示
如需进一步了解枚举中头文件和头文件中枚举名的功能,请参阅枚举中头文件和头文件中枚举名的影响。