MATLAB 帮助中心
(不推荐)向 Simulink 模型添加信号线
不推荐使用 add_line。请改用 Simulink.connectBlocks (自 R2024b 起)。有关更新代码的信息,请参阅版本历史记录。
add_line
Simulink.connectBlocks
handle = add_line(sys,out,in)
h = add_line(sys,out,in,autorouting=autoOption)
h = add_line(sys,points)
handle = add_line(sys,out,in) 在指定的模型或子系统中添加信号线,用于连接指定的输出端口和指定的输入端口。不支持将多个输入端口连接到同一个输出端口。端口必须未连接且必须位于模型层次结构中的同一位置,即位于顶层或同一组件中。您要连接的每对端口必须兼容。
handle
sys
out
in
此语法创建从端口到端口的最直接传送路径,例如斜线或穿过其他模块的信号线。
示例
h = add_line(sys,out,in,autorouting=autoOption) 连接模块,指定是否绕过其他模块布线。
h
autoOption
h = add_line(sys,points) 添加一条按照 (x,y) 坐标 points 绘制的信号线,坐标的原点是尚未调整画布大小时 Simulink® 编辑器画布的左上角位置。如果信号线的任一端距离某相应端口不超过五个像素,则该函数将该信号线连接到该端口。信号线可以包含多个线段。
points
全部折叠
假设您有已加载的名为 myModel 的模型。该模型包含一个名为 myBlock1 的 Gain 模块和一个具有两个输入端口的名为 myBlock2 的 Scope 模块。将 Gain 模块的输出端口连接到 Scope 模块的底部输入端口。
myModel
myBlock1
myBlock2
确定输出端口的端口路径。端口路径是模块名称后跟斜杠和端口号。由于 Gain 模块只有一个输出端口,因此端口号为 1。
1
out = "myBlock1/1";
确定输入端口的端口路径。Scope 模块有两个端口。如果将指针悬停在端口上,您可以看到底部端口的端口号是 2。
2
in = "myBlock2/1";
连接端口。
sys = "myModel"; add_line(sys,out,in);
获取模型的句柄。
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 模块的输入端口。
mySubsystem
sysPath = "myModel/mySubsystem"; sys = get_param(sysPath,"Handle");
获取 If 模块的所有端口句柄。
hIf = get_param(sysPath+"/myBlock1","PortHandles");
获取 If 模块的输出端口句柄。
out = hIf.Outport;
hScope = get_param(sysPath+"/myBlock2","PortHandles");
获取 Scope 模块的输入端口句柄。
in = hScope.Inport;
使用一个命令连接这些模块。
假设您有一个已加载的名为 myModel 的模型,其中包含名为 myBlock1 的 Sine Wave 模块、名为 myBlock2 的 Gain 模块和名为 myBlock3 的 Sum 模块。Sine Wave 模块连接到 Gain 模块。从该信号线建立分支,并将 Sine Wave 模块连接到 Sum 模块。
myBlock3
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);
连接这些模块。信号线建立分支以创建指定的连接。
假设您有一个已加载的名为 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"
示例: "myModel/mySubsystem"
"myModel/mySubsystem"
数据类型: double | string | character vector
double
string
character vector
要连接的模块输出端口,指定为下列值之一:
端口句柄或端口句柄数组
将 "PortHandles" 与 get_param 结合使用可获取句柄。
"PortHandles"
get_param
端口路径或端口路径数组
端口路径是端口所连接的模块的名称后跟斜杠和端口号或名称,例如 "myBlock/1"。对于条件执行子系统模块和 Integrator 模块,请使用端口名称。有关详细信息,请参阅Get Handles and Paths。
"myBlock/1"
将端口句柄格式化为数值标量或数值数组。将端口路径格式化为字符串、字符向量或字符向量元胞数组。如果您指定数组,则 out 数组必须与 in 数组具有相同的维度。
有关获取句柄和路径的信息,请参阅Get Handles and Paths。
示例: h.Outport(1)
h.Outport(1)
示例: "myBlock/1"
示例: {'myBlock1/1','myBlock2/1'}
{'myBlock1/1','myBlock2/1'}
大多数模块端口的编号方式为从上到下或从左到右。有关各种模块方向的端口顺序的描述,请参阅标识旋转或翻转模块上的端口位置。
移动 Subsystem 模块上的端口可能会更改端口号。有关详细信息,请参阅移动端口。
数据类型: double | array of doubles | string | character vector | cell array of character vectors
array of doubles
cell array of character vectors
要连接的模块输入端口,指定为下列值之一:
将端口句柄格式化为数值标量或数值数组。将端口路径格式化为字符串、字符向量或字符向量元胞数组。如果您指定数组,则 in 数组必须与 out 数组具有相同的维度。
"off"
"on"
"smart"
绕过其他模块的自动布线的类型:
"off" - 无自动布线
"on" - 自动布线
"smart" - 自动布线,可利用画布上的闲置空间,避免与其他信号线和标签重叠
数据类型: string | character vector
要绘制信号线的端点,指定为至少 2×2 的矩阵。每绘制一个线段,就新增一行。以 (x,y) 坐标形式指定各点,原点是尚未调整画布大小时 Simulink 编辑器的左上角位置。
示例: [100 300; 200 300; 200 300; 200 500]
[100 300; 200 300; 200 300; 200 500]
数据类型: numeric array
numeric array
函数创建的信号线,以句柄形式返回。
目前没有删除 add_line 函数的计划。然而,与 add_line 函数相比,Simulink.connectBlocks 函数具有以下优势:
您可以连接模型层次结构中不同层级的模块。
您可以连接在任何可用端口上的模块(而不是指定要连接哪些端口)。
Simulink.connectBlocks | delete_line | add_block | delete_block | set_param | get_param
delete_line
add_block
delete_block
set_param
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处