add_line
在 Simulink 模型中添加信号线
说明
在模型或子系统 h
= add_line(sys
,out
,in
)sys
中添加一条信号线,将一个模块的输出端口 out
连接到另一个模块的输入端口 in
。此语法创建从端口到端口的最直接传送路径,例如斜线或穿过其他模块的信号线。
在下列情况下,您可以连接端口:
输入端口还没有连接。
端口彼此兼容可以连接。
端口或者都在模型层次结构的顶层,或都在同一模型组件中,例如在同一子系统中。要连接在不同组件中的模块,请使用
Simulink.connectBlocks
函数。
示例
创建并打开一个新模型。
open_system(new_system('myModel'));
添加并定位一个 Constant 模块。
add_block('simulink/Commonly Used Blocks/Constant','myModel/Constant'); set_param('myModel/Constant','position',[140,80,180,120]);
添加并定位一个 Gain 模块。
add_block('simulink/Commonly Used Blocks/Gain','myModel/Gain'); set_param('myModel/Gain','position',[220,80,260,120]);
将 Constant 模块的输出端口连接到 Gain 模块的输入端口。由于 Constant 模块只有一个输出端口,因此您可以为 Constant 模块指定的唯一端口号是 1
。由于 Gain 模块只有一个输入端口,因此您可以为 Gain 模块指定的唯一端口号是 1
。
add_line('myModel','Constant/1','Gain/1');
添加并定位 Scope 模块。
add_block('simulink/Commonly Used Blocks/Scope','myModel/Scope'); set_param('myModel/Scope','position',[300,80,340,120]);
将 Scope 模块的输入端口数量更改为 2
。
set_param('myModel/Scope','NumInputPorts','2')
将 Gain 模块的输出端口连接到 Scope 模块的第二个输入端口。由于 Gain 模块只有一个输出端口,因此您可以为 Gain 模块指定的唯一端口号是 1
。由于您要连接到 Scope 模块的第二个端口,因此请为 Scope 模块指定端口号 2
。
add_line('myModel','Gain/1','Scope/2');
打开示例。然后,打开 vdp
模型。
open_system('vdp')
删除将名为 Mu
的封装子系统模块连接到 Sum 模块的信号线。
delete_line('vdp','Mu/1','Sum/2');
从名为 Mu
的封装子系统模块和 Sum 模块中获取端口句柄。
h1 = get_param('vdp/Mu','PortHandles'); h2 = get_param('vdp/Sum','PortHandles')
h2 = struct with fields:
Inport: [324.0006 325.0006]
Outport: 326.0006
Enable: []
Trigger: []
State: []
LConn: []
RConn: []
Ifaction: []
Reset: []
Event: []
在 h2
结构体中,请注意 Inport
属性的两个句柄。
将名为 Mu
的子系统模块连接到 Gain 模块。通过对端口句柄的 Inport
和 Outport
属性进行索引来指定要连接的端口。
add_line('vdp',h1.Outport(1),h2.Inport(2));
您可以通过编程方式建立对现有信号线进行分支的连接。您可以使用 points
语法绘制线段,也可以通过指定要连接的端口绘制信号线。使用端口时,请使用自动布线来改善分支信号线的布局。
此示例说明如何使用端口连接分支信号线。
打开示例。然后,打开 vdp
模型。
open_system('vdp')
将 Scope 模块添加到 vdp
模型中。
add_block('simulink/Commonly Used Blocks/Scope','vdp/Scope1');
将 Scope 模块放置在 Outport 模块上方。
set_param('vdp/Scope1','position',[470,70,500,110]);
将名为 x1
的 Integrator 模块连接到名为 Scope1
的 Scope 模块。
add_line('vdp','x1/1','Scope1/1','autorouting','on')
该命令从名为 x1
的 Integrator 模块中对现有信号线进行分支,并将其连接到名为 Scope1
的 Scope 模块。启用自动布线时,生成的信号线会分段。
打开示例。然后,打开 vdp
模型。
open_system('vdp')
删除将名为 Mu
的封装子系统模块连接到 Sum 模块的信号线。
delete_line('vdp','Mu/1','Sum/2')
获取名为 Mu
的封装子系统模块的端口位置。Mu
有两个端口:一个输入端口和一个输出端口。
mu = get_param('vdp/Mu','PortConnectivity'); mu.Position
ans = 1×2
210 150
ans = 1×2
250 150
第一组坐标对应于输入模块。第二组对应于输出模块。
获取 Sum 模块的端口位置,该模块有三个端口:两个输入端口和一个输出端口。
s = get_param('vdp/Sum','PortConnectivity'); s.Position
ans = 1×2
310 135
ans = 1×2
310 150
ans = 1×2
345 145
第一组坐标对应于上部输入端口,第二组坐标对应于下部输入端口,第三组坐标对应于输出端口。
要将名为 Mu
的封装子系统模块连接到 Sum 模块,请指定 Subsystem 模块输出端口的坐标,然后指定 Sum 模块下部输入端口的坐标。
add_line('vdp',[250 150; 310 150])
您可以添加使用和不使用自动布线选项的信号线。
将模块添加到模型
新建一个名为 myModel
的模型。
open_system(new_system('myModel'))
关闭 HideAutomaticNames
参数。
set_param('myModel','HideAutomaticNames','off')
添加两个 Subsystem 模块和一个 Gain 模块。
add_block('simulink/Commonly Used Blocks/Subsystem','myModel/Subsystem1'); add_block('simulink/Commonly Used Blocks/Subsystem','myModel/Subsystem2'); add_block('simulink/Commonly Used Blocks/Gain','myModel/Gain');
定位模块,使 Gain 模块位于两个 Subsystem 模块之间。
set_param('myModel/Subsystem1','position',[100 100 130 130]); set_param('myModel/Gain','position',[230,100,260,130]); set_param('myModel/Subsystem2','position',[360,100,390,130]);
为每个 Subsystem 模块添加一个额外的输入端口和输出端口。
add_block('simulink/Sources/In1','myModel/Subsystem1/In2'); add_block('simulink/Commonly Used Blocks/Out1','myModel/Subsystem1/Out2'); add_block('simulink/Sources/In1','myModel/Subsystem2/In2'); add_block('simulink/Commonly Used Blocks/Out1','myModel/Subsystem2/Out2');
连接模块而不自动布线
添加信号线,将名为 Subsystem1
的 Subsystem 模块的输出端口连接到名为 Subsystem2
的 Subsystem 模块的输入端口。
add_line('myModel',{'Subsystem1/1','Subsystem1/2'},{'Subsystem2/1','Subsystem2/2'})
使用自动布线连接模块
删除这些信号线。
delete_line('myModel','Subsystem1/1','Subsystem2/1') delete_line('myModel','Subsystem1/2','Subsystem2/2')
使用 smart
自动布线选项再次添加信号线。当您使用数组连接两组输入端口和输出端口时,智能自动布线会在更加充分利用空间的前提下对它们进行并排布线。
add_line('myModel',{'Subsystem1/1','Subsystem1/2'},{'Subsystem2/1','Subsystem2/2'},'autorouting','smart')
输入参数
要向其添加信号线的模型或子系统,指定为字符向量。
示例: 'vdp'
示例: 'f14/Controller'
要从其连接信号线的模块输出端口,指定为下列值之一:
模块名称、斜杠和端口号。对于状态端口,请使用端口名称
State
而不是端口号。要从其连接的端口句柄。
这些端口标志符中任一个的数组。
将 'PortHandles'
与 get_param
结合使用可获取句柄。
示例: 'Mu/1'
示例: 'Subsystem/2'
示例: h.Outport(1)
示例: {'Subsystem/1','Subsystem/2'}
提示
大多数模块端口的编号方式为从上到下或从左到右。有关各种模块方向的端口顺序的描述,请参阅标识旋转或翻转模块上的端口位置。
移动 Subsystem 模块上的端口可能会更改端口号。有关详细信息,请参阅移动端口。
要向其连接信号线的模块输入端口,指定为下列值之一:
模块名称、斜杠和端口号。对以下端口使用端口名称而不是端口号:
使能端口 - 使用
Enable
。例如,将此端口名称用于使能子系统上的使能端口。触发端口 - 使用
Trigger
。例如,将此端口名称用于触发子系统上的触发端口。动作端口 - 使用
Ifaction
。例如,将此端口名称用于 If Action Subsystem 和 Switch Case Action Subsystem 模块上的动作端口。
要向其添加信号线的端口句柄。
这些端口标志符中任一个的数组。
使用 'PortHandles'
选项与 get_param
获取句柄。
示例: 'Mu/1'
示例: 'Subsystem/2'
示例: h.Inport(1)
示例: {'Subsystem/1','Subsystem/2'}
提示
大多数模块端口的编号方式为从上到下或从左到右。有关各种模块方向的端口顺序的描述,请参阅标识旋转或翻转模块上的端口位置。
移动 Subsystem 模块上的端口可能会更改端口号。有关详细信息,请参阅移动端口。
绕过其他模块的自动布线的类型,指定为:
'off'
,即无自动布线'on'
,即自动布线'smart'
,即一种自动布线,可最大限度地利用画布上的闲置空间,避免与其他信号线和标签重叠
要绘制信号线的端点,指定为至少 2×2 的矩阵。每绘制一个线段,就新增一行。以 (x,y) 坐标形式指定各点,原点是尚未调整画布大小时编辑器的左上角位置。
示例: [100 300; 200 300; 200 300; 200 500]
输出参量
由 add_line
创建的信号线,返回为句柄。
版本历史记录
在 R2006a 之前推出
MATLAB Command
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 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)