主要内容

转发表

如果您编辑一个现有的库块,您将希望确保在使用较旧版本的库块保存模型时,所做的更改不会破坏模型。库块中的编辑类型可以包括:库路径更改、库块名称更改、添加、删除或重命名参数。

转发表帮助您维护库块的兼容性,并确保模型继续工作。您可以使用转发表在旧库块和新库块之间创建映射,而不会丢失任何数据或功能。在转发表中指定旧库块到新库块的映射后,到旧库块的链接将在模型加载期间自动更新。例如,如果您重命名或移动库中的一个块,则可以使用转发表来更新具有到旧库块链接的模型。转发表在以下场景下执行:

  • 当一个模型被关闭和重新打开。

  • 当一个add_blockreplace_block命令执行成功。

创建转发表

请注意

已断开或禁用链接的模型不能使用转发表更新。

  1. 打开一个上锁的图书馆。

  2. 在“库”窗口中的图书馆选项卡上,单击锁库.库现在已解锁,可以进行编辑。

  3. 建模选项卡上,单击图书馆的性质.的图书馆的性质对话框。

  4. 单击转发表选项卡。

  5. 点击(添加新条目)按钮。转发表中新增一行。

  6. 旧块路径而且新建块路径列。要获取块的路径,请在模型中选择块并单击

  7. 版本列时,您可以选择为库块指定版本号。

    如果旧块名和新块名相同,转发表自动填充版本号。库版本的初始值(LibraryVersion)由模型版本(ModelVersion)在创建库链接时的库。对库块的任何后续更新都将更新库版本以匹配库的模型版本。

    请注意

    • 版本号必须为数值。

    • 当新旧块路径相同时,版本号必须为如下格式< major_version >。< minor_version >.例如,在重命名一个库块时。

    • 版本号不能有多个点符号。例如,的版本号1.3是可以接受的,然而,版本号1.3.1是不可接受的。

    • 当使用转发表将一个库块从一个库移动到另一个库时,版本号格式并不重要。

  8. 转换函数列,可以指定MATLAB®纠正新旧链接之间参数数据不匹配的文件。为新的库块转换旧的链接参数数据使您能够加载旧的链接并保存参数数据。有关更多信息,请参见转换函数

    如果未指定转换函数,则显示“转换函数”列没有转换当你保存库的时候。

  9. 若要应用更改并关闭对话框,请单击好吧.旧路径到新路径的映射在转发表中创建。当您打开包含到库的链接的模型时,到旧库块的链接将自动更新。

填充转发表后,可以使用表上方的搜索栏筛选其内容。当转发表中有太多条目时,这个过滤器特别有用。可以按升序或降序对表中的列进行排序。还可以按值对每列进行分组。

自定义转发表示例如下所示:

当您为旧的和新的库块指定相同的库块名称和路径时,转发表将自动填充版本号。对于具有相同名称和路径的第一个条目,旧块的版本号以0开头,块的新版本被设置为库的模型版本。的目录下,可以查看该库的模型版本历史页。

当特定于实例的参数(InstanceData)在旧的和新的图书馆街区发生了变化。

在这个例子中,

  • 块路径块一个改变从仙女镇李坝社区LibB

  • 块名称块X更改块Y而库路径保持不变。

  • 块名称块米更改为块N.指定一个转换函数来处理特定于实例的更改。

  • 块版本和特定于实例的参数已更改块L

以编程方式创建转发表

在命令行中,您可以创建一个简单的转发表表,指定在库中移动或移动到另一个库的块的旧位置和新位置。您可以通过设置转发表与库相关联ForwardingTable参数指定由两元素单元格数组组成的单元格数组,每个单元格数组指定已移动的块的旧路径和新路径。例如,创建转发表并将其分配给名为Lib1是:

set_param(‘Lib1’,‘ForwardingTable’,{{Lib1 /,‘Lib2 /}{‘Lib1 / B’,‘Lib1 / C’}});

地点:

  • Lib1与转发表关联的库。

  • 一个是从Lib1Lib2

  • B重命名为C在同一个图书馆。

转换函数

链接块实例与特定于实例的参数相关联InstanceData.创建库块的版本时,参数集可以从InstanceData

函数中的参数不匹配InstanceData新旧图书馆之间的链接,从而保证了图书馆链接的持续工作。

可以在路径上使用MATLAB文件定义转换函数,然后在转换函数的列转发表

转发表中定义的新块路径将覆盖转换函数中定义的值。如果新的块路径是基于某些条件变化的动态值,那么新的块路径必须只使用转换函数定义。

转换函数的语法必须是:

函数outData = TransformationFcn(inData)

地点:

  • inData结构是否包含字段ForwardingTableEntry而且InstanceData,ForwardingTableEntry也是一种结构。

  • outData结构是否包含字段NewInstanceData而且NewBlockPath

一般的转换函数中可以定义许多局部函数。该函数根据旧的块名称和版本调用适当的本地函数。您可以使用它将多个局部函数组合为单个转换函数,以避免在MATLAB路径上有许多转换函数。

考虑到与常量比较Simulink中万博1manbetx的块®图书馆。您必须在不更改名称和块路径的情况下创建此块的版本,但必须将参数添加到较新的库块中。

的两个版本的参数差异与常量比较块。

旧版本 新版本
BlockType参考的名字而“比较\常量”港口[1]位置[210, 60, 250, 100]SourceBlock“fixpt_lib_4 /逻辑比较/对比\旅游公司常量”SourceType“定点比较常量”relop“= =”常量“3.0”
BlockType参考的名字而“比较\常量”SID“15”港口[1]位置[125, 50, 155, 80]ZOrder5LibraryVersion“1.271”SourceBlock“万博1manbetx模型/逻辑而且而\ nOperations /比较\常量”SourceType”比较常量”relop“< =”常量“3.0”OutDataTypeStr“布尔”ZeroCross

新版的与常量比较块具有其他参数(OutDataTypeStr而且ZeroCross)与之相关。对于这种情况,转换函数必须确保附加参数在InstanceData设置为使旧库链接正常工作。

的转换函数与常量比较块添加OutDataTypestr参数,值为uint8

函数[outData] = TransformationCompConstBlk(inData) outData.使用实例NewBlockPath =库块路径没有变化outData。NewInstanceData = [];instanceData = inData.InstanceData;从instanceData获取字段类型“Name”[ParameterNames{1:length(instanceData)}] = instanceData. name;如果(~ ismember (“OutDataTypeStr”, ParameterNames))% OutDataTypeStr参数在旧链接中不存在。添加它,并设置值uint8instanceData(+ 1)结束。Name =“OutDataTypeStr”;instanceData(结束)。值=“uint8”结束outData。NewInstanceData = instanceData;

创建掩码参数别名

如果重命名掩码参数,则必须确保使用旧参数名称的现有MATLAB脚本继续工作。为了保证兼容性,可以为掩码参数名称创建别名(备用名称)。Alias允许您更改库块中掩码参数的名称,而不必在现有模型中重新创建到该块的链接。

对象的掩码块编辑参数。此参数的掩码参数名编辑参数是p1

MaskObj = 万博1manbetxSimulink.Mask.get(gcb));hEdit = MaskObj.getParameter(“p1”);hEdit =%带有属性的MaskParameter:类型:“编辑”TypeOptions: {0×1 cell}“p1”提示:“p1”值:' 0 '评估:“上”可调:“上”NeverSave:“关闭”隐藏:“关闭”启用:“上”可见:“上”提示:“上”回调函数:别名:

注意编辑掩码参数没有任何别名。要为掩码参数添加别名,可以为别名掩码参数属性。

MaskObj。别名= 'pa'

您可以使用掩码参数名称或别名对掩码参数进行函数调用。例如,在这种情况下,您可以使用Set_param (gcb, 'p1, '10)(掩码参数名称)Set_param (gcb, 'pa, '10)(掩码参数别名)来设置编辑面具参数。

相关的话题