一个万博1manbetx仿真软件®数据字典永久存储包括MATLAB在内的模型数据®变量、数据对象和数据类型,包括枚举类型。有关数据字典的基本信息,请参见什么是数据字典?.
此示例演示如何将模型使用的枚举类型迁移到数据字典中。
导入设计资料
打开一个为设计数据或模型中的块使用枚举类型的模型。
在Simuli万博1manbetxnk编辑器中,单击文件>模型属性>链接到数据字典.
在模型属性对话框,设置模型指来数据字典并点击新创建数据字典。
命名数据字典,保存它,然后单击应用.
点击添加路径,如果您看到将字典位置添加到MATLAB路径的消息。
点击好吧响应关于迁移引用变量的消息。
将出现一条消息,报告从基本工作区导入到数据字典的项的数量。
万博1manbetxSimulink报告未导入数据字典的枚举类型。
点击好吧.
在Simulink Editor中出现一个通知,报告您的模型万博1manbetx现在链接到数据字典。
导入枚举类型
只有在导入使用这些类型创建的所有设计数据之后,才能导入枚举类型的定义。当您将枚举类型导入数据字典时,Simulink将禁用包含类型定义的MATLAB文件或p文件,从而导致保留在MA万博1manbetxTLAB基本工作空间中的变量失去它们的定义。
在MATLAB命令提示符下,获取模型块中使用的枚举类型的名称。
查找模型块中使用的所有变量和枚举类型usedTypesVars = 万博1manbetxSimulink.findVars(“EnumsReporting”,“IncludeEnumTypes”,真正的);在这里,EnumsReporting是模型和的名称% usedTypesVars是Simulink的一个数组。万博1manbetxVariableUsage对象查找由MATLAB文件或p文件定义的枚举类型的索引enumTypesFile = strcmp({usedTypesVars. {)SourceType},“MATLAB文件”);查找使用函数定义的枚举类型的索引% 万博1manbetxSimulink.defineIntEnumTypeenumTypesDynamic = strcmp({usedTypesVars. {)SourceType},“动态类”);在一个数组中,表示两种枚举类型的索引| enumTypesDynamic;使用逻辑索引返回使用的枚举类型的名称enumTypeNames = {usedTypesVars(enumTypesIndex)。名称}’
enumTypeNames = 'dEnum1' 'dEnum10' 'dEnum2' 'dEnum3' 'dEnum4' 'dEnum5' 'dEnum6' 'dEnum9'
打开数据字典,并用万博1manbetxSimulink.data.Dictionary
对象。
ddConnection = 万博1manbetxSimulink.data.dictionary.open(“myEnumsDD.sldd”)
ddConnection =带有属性的字典:DataSources: {0x1 cell} HasUnsavedChanges: 0 NumberOfEntries: 3
使用importEnumTypes
方法导入模型中块使用的枚举类型。该方法保存对目标字典所做的更改,因此在使用该方法之前,请确认未保存的更改是可接受的。
[successfulMigrations, unsuccessfulMigrations] =...importEnumTypes (ddConnection enumTypeNames)
successfulMigrations = 1x6 struct array with fields: className renamedFiles unsuccessfulMigrations = 1x2 struct array with fields: className reasons
importEnumTypes
通过追加重命名枚举类定义文件.save
到文件名。例如,如果命名了原始的枚举类定义Enum1.m
, 万博1manbetxSimulink将文件重命名为Enum1.m.save
.结构unsuccessfulMigrations
报告未迁移的枚举类型。在此示例中,在模型工作区中定义了两个枚举类型实例,并可以在关闭模型后导入它们。关闭模型以导入这些枚举类型。
打开字典以查看迁移的枚举类型。
这些示例演示了如何操作数据字典中的现有枚举。
在数据字典中,创建枚举类型的副本,并重命名该副本。
查找模型使用的从具有旧名称的类型派生的枚举对象。
用从重命名类型派生的对象替换这些对象。
删除具有旧名称的类型。
使用以下方法之一。
选择字典中的枚举,并重命名一个或多个枚举成员。
如果模型引用枚举成员,则更改这些引用以匹配重命名的成员。
在模型中查找要删除的枚举成员的引用。
用替代成员替换这些引用。
从枚举中删除原始成员。
您可以在将枚举成员的值表示为MATLAB变量时更改这些值,或者使用价值
领域的万博1manbetx仿真软件。参数
对象。
在模型中查找对您想要更改其值的枚举成员的引用。
把这些参考记录下来。
更改枚举成员的值。
手动更新对模型中枚举成员的引用。
万博1manbetxSimulink.data.dictionary.EnumTypeDefinition