add_line
在 Simulink 模型中添加信号线
说明
示例
使用端口号连接模块
创建并打开一个新模型。
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')
输入参数
sys
— 要向其添加信号线的模型或子系统
字符向量
要向其添加信号线的模型或子系统,指定为字符向量。
示例: 'vdp'
示例: 'f14/Controller'
out
— 要从其连接信号线的模块输出端口
模块名称/端口号或名称 | 端口句柄 | 端口标志符的数组
要从其连接信号线的模块输出端口,指定为下列值之一:
模块名称、斜杠和端口号。对于状态端口,请使用端口名称
State
而不是端口号。要从其连接的端口句柄。
这些端口标志符中任一个的数组。
将 'PortHandles'
与 get_param
结合使用可获取句柄。
示例: 'Mu/1'
示例: 'Subsystem/2'
示例: h.Outport(1)
示例: {'Subsystem/1','Subsystem/2'}
提示
大多数模块端口的编号方式为从上到下或从左到右。有关各种模块方向的端口顺序的描述,请参阅标识旋转或翻转模块上的端口位置。
移动 Subsystem 模块上的端口可能会更改端口号。有关详细信息,请参阅移动端口。
in
— 要向其连接信号线的模块输入端口
模块名称/端口号或名称 | 端口句柄 | 端口标志符的数组
要向其连接信号线的模块输入端口,指定为下列值之一:
模块名称、斜杠和端口号。对以下端口使用端口名称而不是端口号:
使能端口 - 使用
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 模块上的端口可能会更改端口号。有关详细信息,请参阅移动端口。
autoOption
— 自动布线的类型
'off'
(默认) | 'on'
| 'smart'
绕过其他模块的自动布线的类型,指定为:
'off'
,即无自动布线'on'
,即自动布线'smart'
,即一种自动布线,可最大限度地利用画布上的闲置空间,避免与其他信号线和标签重叠
points
— 要绘制信号线的端点
矩阵
要绘制信号线的端点,指定为至少 2×2 的矩阵。每绘制一个线段,就新增一行。以 (x,y) 坐标形式指定各点,原点是尚未调整画布大小时编辑器的左上角位置。
示例: [100 300; 200 300; 200 300; 200 500]
输出参量
h
— 线图
句柄
由 add_line
创建的信号线,返回为句柄。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)