主要内容

add_line

R2026b

(不推荐)向 Simulink 模型添加信号线

不推荐使用 add_line。请改用 Simulink.connectBlocks (自 R2024b 起)。有关更新代码的信息,请参阅版本历史记录。

描述

handle = add_line(sys,out,in) 在指定的模型或子系统中添加信号线,用于连接指定的输出端口和指定的输入端口。不支持将多个输入端口连接到同一个输出端口。端口必须未连接且必须位于模型层次结构中的同一位置,即位于顶层或同一组件中。您要连接的每对端口必须兼容。

此语法创建从端口到端口的最直接传送路径,例如斜线或穿过其他模块的信号线。

示例

h = add_line(sys,out,in,autorouting=autoOption) 连接模块,指定是否绕过其他模块布线。

示例

h = add_line(sys,points) 添加一条按照 (x,y) 坐标 points 绘制的信号线,坐标的原点是尚未调整画布大小时 Simulink® 编辑器画布的左上角位置。如果信号线的任一端距离某相应端口不超过五个像素,则该函数将该信号线连接到该端口。信号线可以包含多个线段。

示例

示例

全部折叠

假设您有已加载的名为 myModel 的模型。该模型包含一个名为 myBlock1 的 Gain 模块和一个具有两个输入端口的名为 myBlock2 的 Scope 模块。将 Gain 模块的输出端口连接到 Scope 模块的底部输入端口。

确定输出端口的端口路径。端口路径是模块名称后跟斜杠和端口号。由于 Gain 模块只有一个输出端口,因此端口号为 1。

out = "myBlock1/1";

确定输入端口的端口路径。Scope 模块有两个端口。如果将指针悬停在端口上,您可以看到底部端口的端口号是 2。

in = "myBlock2/1";

连接端口。

sys = "myModel";
add_line(sys,out,in);

假设您有已加载的名为 myModel 的模型。该模型包含一个名为 myBlock1 的 Gain 模块和一个具有两个输入端口的名为 myBlock2 的 Scope 模块。将 Gain 模块的输出端口连接到 Scope 模块的底部输入端口。

获取模型的句柄。

sys = get_param("myModel","Handle");

获取 Gain 模块的所有端口句柄。

hGain = get_param("myModel/myBlock1","PortHandles");

获取 Gain 模块的输出端口句柄。

out = hGain.Outport;

获取 Scope 模块的所有端口句柄。

hScope = get_param("myModel/myBlock2","PortHandles");

获取 Scope 模块的底部输入端口句柄。

in = hScope.Inport(2);

连接端口。

add_line(sys,out,in);

假设前面示例中模块的位置使得 Scope 模块位于 Gain 模块的正下方。

按照前面示例中的方式连接模块。

该连接是一条与模块角点重叠的对角信号线。

删除该信号线。

delete_line(sys,out,in)

使用智能布线连接模块。

add_line(sys,out,in,autorouting="smart");

连接线是一条由正交线段组成的信号线,不与模块叠加。

假设您有一个名为 myModel 的已加载模型,它包含一个名为 mySubsystem 的 Subsystem 模块。该子系统包含一个具有两个输出端口的名为 myBlock1 的 If 模块,以及一个具有两个输入端口的名为 myBlock2 的 Scope 模块。将 If 模块的输出端口连接到 Scope 模块的输入端口。

获取模型的句柄。

sysPath = "myModel/mySubsystem";
sys = get_param(sysPath,"Handle");

获取 If 模块的所有端口句柄。

hIf = get_param(sysPath+"/myBlock1","PortHandles");

获取 If 模块的输出端口句柄。

out = hIf.Outport;

获取 Scope 模块的所有端口句柄。

hScope = get_param(sysPath+"/myBlock2","PortHandles");

获取 Scope 模块的输入端口句柄。

in = hScope.Inport;

使用一个命令连接这些模块。

add_line(sys,out,in);

假设您有一个已加载的名为 myModel 的模型,其中包含名为 myBlock1 的 Sine Wave 模块、名为 myBlock2 的 Gain 模块和名为 myBlock3 的 Sum 模块。Sine Wave 模块连接到 Gain 模块。从该信号线建立分支,并将 Sine Wave 模块连接到 Sum 模块。

获取模型的句柄。

sysName = "myModel";
sys = get_param(sysName,"Handle");

获取 Sine Wave 模块的所有端口句柄。

hSine = get_param(sysName+"/myBlock1","PortHandles");

获取 Sine Wave 模块的输出端口句柄。

out = hSine.Outport;

获取 Sum 模块的所有端口句柄。

hSum = get_param(sysName+"/myBlock3","PortHandles");

获取 Sum 模块的输入端口句柄之一。

in = hSum.Inport(1);

连接这些模块。信号线建立分支以创建指定的连接。

add_line(sys,out,in);

假设您有一个已加载的名为 myModel 的模型,其中包含名为 myBlock1 的 Constant 模块和名为 myBlock2 的 Gain 模块。使用端口坐标连接模块。

获取 Constant 模块上输出端口的端口位置。

portConnConst = get_param("myModel/myBlock1","PortConnectivity");
portPosConst = portConnConst.Position;

获取 Gain 模块上输入端口的端口位置。Gain 模块有两个端口,因此查询位置会返回两个位置。第一个位置对应输入端口。

portConnGain = get_param("myModel/myBlock2","PortConnectivity");
portPosGain = portConnGain(1).Position;

将您要连接的输出端口和输入端口的位置组合成一个矩阵,该矩阵的第一行包含输出端口的位置,第二行包含输入端口的位置。

pos = [portPosConst;portPosGain];

连接端口。

add_line("myModel",pos);

输入参数

全部折叠

包含您要连接的模块的模型或子系统。将模型指定为句柄或名称,将子系统指定为对应的 Subsystem 模块的句柄或模块路径。将句柄格式化为数值标量。将名称或路径格式化为字符串或字符向量。

有关获取句柄的信息,请参阅Get Handles and Paths。

示例: "myModel"

示例: "myModel/mySubsystem"

数据类型: double | string | character vector

要连接的模块输出端口,指定为下列值之一:

  • 端口句柄或端口句柄数组

    将 "PortHandles" 与 get_param 结合使用可获取句柄。

  • 端口路径或端口路径数组

    端口路径是端口所连接的模块的名称后跟斜杠和端口号或名称,例如 "myBlock/1"。对于条件执行子系统模块和 Integrator 模块,请使用端口名称。有关详细信息,请参阅Get Handles and Paths。

将端口句柄格式化为数值标量或数值数组。将端口路径格式化为字符串、字符向量或字符向量元胞数组。如果您指定数组,则 out 数组必须与 in 数组具有相同的维度。

有关获取句柄和路径的信息,请参阅Get Handles and Paths。

示例: h.Outport(1)

示例: "myBlock/1"

示例: {'myBlock1/1','myBlock2/1'}

提示

数据类型: double | array of doubles | string | character vector | cell array of character vectors

要连接的模块输入端口,指定为下列值之一:

  • 端口句柄或端口句柄数组

    将 "PortHandles" 与 get_param 结合使用可获取句柄。

  • 端口路径或端口路径数组

    端口路径是端口所连接的模块的名称后跟斜杠和端口号或名称,例如 "myBlock/1"。对于条件执行子系统模块和 Integrator 模块,请使用端口名称。有关详细信息,请参阅Get Handles and Paths。

将端口句柄格式化为数值标量或数值数组。将端口路径格式化为字符串、字符向量或字符向量元胞数组。如果您指定数组,则 in 数组必须与 out 数组具有相同的维度。

示例: h.Outport(1)

示例: "myBlock/1"

示例: {'myBlock1/1','myBlock2/1'}

提示

有关获取句柄和路径的信息,请参阅Get Handles and Paths。

数据类型: double | array of doubles | string | character vector | cell array of character vectors

绕过其他模块的自动布线的类型:

  • "off" - 无自动布线

  • "on" - 自动布线

  • "smart" - 自动布线,可利用画布上的闲置空间,避免与其他信号线和标签重叠

数据类型: string | character vector

要绘制信号线的端点,指定为至少 2×2 的矩阵。每绘制一个线段,就新增一行。以 (x,y) 坐标形式指定各点,原点是尚未调整画布大小时 Simulink 编辑器的左上角位置。

示例: [100 300; 200 300; 200 300; 200 500]

数据类型: numeric array

输出参量

全部折叠

函数创建的信号线,以句柄形式返回。

版本历史记录

在 R2006a 之前推出

全部折叠