如果编辑现有的库块,则需要确保在使用库块的旧版本保存模型时,更改不会破坏模型。库块中的编辑类型可以包括:库路径更改、库块名称更改、参数的添加、删除或重命名。
转发表有助于维护库块的兼容性,并确保模型继续工作。可以使用转发表在旧库块和新库块之间创建映射,而不会丢失任何数据或功能。在转发表中指定旧库块到新库块的映射后,到旧库块的链接会在模型加载时自动更新。例如,如果重命名或移动库中的块,则可以使用转发表更新具有到旧库块链接的模型。转发表的执行场景如下:
当模型关闭并重新打开时。
当AN.add_block.
或replace_block
命令执行。
请注意
无法使用转发表更新已破坏或禁用链接的模型。
打开一个上锁的库。
在图书馆窗口中,在图书馆选项卡上,单击锁定库.库现在可以解锁进行编辑了。
在造型选项卡上,单击图书馆属性.的图书馆属性将打开对话框。
点击转发表标签。
点击(添加新条目)按钮。在转发表中添加了一个新行。
在老块路径和新的块路径列。要获取块的路径,请选择模型中的块并单击.
在里面版本列,您可以选择为库块指定版本号。
如果旧块名称和新块名称相同,则转发表将自动填充版本号。库版本的初始值(图书处
)是从模型版本(ModelVersion
),在创建库链接时。对库块的任何后续更新都将更新库版本以匹配库的模型版本。
请注意
版本号必须是一个数值。
当旧的和新的块路径相同时,版本号必须是这种格式
.例如,在重命名库块时。
版本号不能有多个点表示法。例如,版本号1.3
是可接受的,而且版本号1.3.1
是不能接受的。
当您使用转发表将一个库块从一个库移动到另一个库时,版本号格式并不重要。
在里面转换函数列,您可以指定MATLAB®用于纠正旧链接和新链接之间参数数据不匹配的文件。为新库块转换旧链接参数数据使您能够加载旧链接并保留参数数据。有关更多信息,请参见转换函数.
如果未指定转换功能,则转换功能列显示没有转型当你拯救图书馆的时候。
要应用更改并关闭对话框,请单击好吧.在转发表中创建旧路径到新路径的映射。当您打开包含到库链接的模型时,到旧库块的链接将自动更新。
填充转发表后,您可以使用表上方的搜索栏来过滤其内容。当转发表有太多条目时,此过滤器特别有用。您可以按升序或降序对表中的列进行排序。您还可以通过它们的值组分组每个列。
用户定义的转发表的示例如图所示:
当您为旧块和新块指定相同的库块名称和路径时,转发表自动填充版本号。对于具有相同名称和路径的第一个条目,旧块的版本号以0开始,块的新版本被设置为库的模型版本。控件下可以查看库的模型版本历史转发表的标签。
当特定于实例的参数(InstanceData
)在旧的和新图书馆块中发生了变化。
在这个例子中,
块路径块一个
改变从仙女镇李坝社区
来LibB
.
块名称块X
更改块Y
而库路径保持不变。
块名称块米
变成块N
.指定一个转换函数来处理特定于实例的更改。
块版本和特定于实例的参数块L
.
在命令行中,您可以创建一个简单的转发表,指定旧位置以及在库中移动的块的新位置或另一个库。您可以通过设置其与库将转发表与库相关联ForwardingTable
两个元素单元阵列的小区数组的参数,每个元阵列指定已移动的块的旧路径。例如,创建转发表的语法并将其分配给名为的库Lib1
是:
set_param(‘Lib1’,‘ForwardingTable’,{{Lib1 /,‘Lib2 /}{‘Lib1 / B’,‘Lib1 / C’}});
在哪里:
Lib1
是与转发表相关联的库。
堵塞一个
转移到Lib1
来Lib2
.
堵塞B
重命名为C
在同一个图书馆。
链接块实例与调用的特定于实例的参数相关联InstanceData
.创建库块版本时,可以从InstanceData
.
中参数的不匹配可以通过转换函数来纠正InstanceData
因此,新的和旧图书馆链接因此确保图书馆链接继续工作。
您可以在路径上使用MATLAB文件定义一个变换函数,然后在转换函数列的转发表.
转发表中定义的新块路径将覆盖变换函数中定义的值。如果新块路径是一个动态值,它会根据某些条件发生变化,那么新块路径只能使用转换函数定义。
转换函数的语法必须是:
函数outdata = TransformationFCN(indata)
在哪里:
indata.
是一个田野的结构转发itableentry.
和InstanceData
, 和转发itableentry.
也是一种结构。
outData
是一个田野的结构newinstanceata.
和newblockpath.
.
一般的变换函数可以定义许多局部函数。该函数根据旧块名称和版本调用适当的局部函数。您可以使用它将多个局部函数组合成一个单一的变换函数,以避免在MATLAB路径上有许多变换函数。
考虑到这一点比较常数在仿真软件金宝app®图书馆。您必须在不更改名称和块路径的情况下创建该块的版本,但要将参数添加到新的库块中。
的两个版本中的参数差异比较常数块。
旧版 | 新版本 |
---|---|
堵塞{BlockType参考的名字“比较\ nto常量”港口[1,1]位置[210, 60, 250, 100]SourceBlock“fixpt_lib_4 /逻辑&比较/对比\旅游公司常量”SourceType“固定点相比来常量”relop“==”常量“3.0”} |
堵塞{BlockType参考的名字“比较\ nto常量”SID“15”港口[1,1]位置[125, 50, 155, 80]zorder.-5图书处“1.271”SourceBlock“金宝appsimulink /逻辑和而\ nOperations /比较\常量”SourceType“相比来常量”relop“<=”常量“3.0”仰卧床“布尔”ZeroCross在} |
新版本的比较常数块有其他参数(仰卧床
和ZeroCross
)与之相关。对于这种情况,转换功能必须确保附加参数InstanceData
设置为旧图书馆链接工作。
的转换函数比较常数块添加仰卧床
参数,值为uint8
.
功能[outData] = TransformationCompConstBlk(inData)NewBlockPath ='';库块路径中的百分比没有变化outData。NewInstanceData = [];instanceData = inData.InstanceData;%从instandata获取字段类型'name'[ParameterNames{1:长度(instanceData)}] = instanceData.Name;如果(〜ismember('outdataTypestr', ParameterNames))%veryataTypest参数不存在于旧链路中。添加它并设置值UINT8instanceData(+ 1)结束。Name ='outdataTypestr';instanceData(结束)。值=“uint8”;结尾outData。NewInstanceData = instanceData;
如果重命名蒙版参数,则必须确保使用旧参数名称的现有Matlab脚本继续工作。为确保兼容性,可以为掩码参数名称创建别名(备用名称)。别名允许您更改库块中的掩码参数的名称,而无需在现有模型中重新创建链接到块。
考虑包含一个屏蔽块编辑参数。掩码参数名称编辑参数是P1
.
MaskObj = 金宝appSimulink.Mask.get (gcb));hEdit = MaskObj.getParameter ('p1');hEdit =%MaskParameter具有属性:类型:“编辑”TypeOptions: {0×1 cell}'p1'提示:'p1'价值:' 0 '评估:“上”可调:“上”NeverSave:'离开'隐藏:'离开'启用:“上”可见:“上”提示:“上”打回来:''别名:''
请注意,编辑Mask参数没有任何别名名称。要为蒙版参数添加别名名称,可以为此设置值别名
蒙版参数属性。
maskobj.alias ='pa'
您可以使用掩码参数名称或别名对掩码参数执行函数调用。例如,在这种情况下,您可以使用set_param (gcb,“p1”,10)
(掩码参数名称)set_param(gcb,'pa,'10)
(掩码参数别名)来设置编辑面具参数。