主要内容gydF4y2Ba

编程建模基础gydF4y2Ba

您可以执行大多数Simulink金宝appgydF4y2Ba®gydF4y2Ba在MATLAB中编程建模基础知识gydF4y2Ba®gydF4y2Ba命令窗口,例如创建模型,向模型中添加块,设置参数。这些示例展示了其中一些命令以及如何使用它们。gydF4y2Ba

加载模型gydF4y2Ba

加载模型会将其带入内存,但不会在Simulink Editor中打开以进行编辑。金宝app加载模型之后,就可以以编程的方式使用它了。只有在打开模型时,才可以使用Si金宝appmulink Editor编辑模型。gydF4y2Ba

要加载系统,请使用gydF4y2Baload_systemgydF4y2Ba命令。例如,加载gydF4y2BavdpgydF4y2Ba模型,在MATLAB命令提示符下输入:gydF4y2Ba

load_system (vdp)gydF4y2Ba

创建模型并指定参数设置gydF4y2Ba

您可以编写一个函数来创建模型并使用您喜欢的设置。例如,这个函数创建了一个绿色背景的模型,并使用ode3求解器:gydF4y2Ba

创建一个新的空Simulink模型% new_model(' modelname ')创建一个名称为' modelname 金宝app'的新模型。如果没有'MODELNAME' %参数,新模型将命名为'my_untitled'。如果nargin == 0 modelname = 'my_untitled';创建并打开模型open_system(new_system(modelname));设置默认屏幕颜色set_param(modelname,'ScreenColor','green');%设置默认求解器set_param(modelname,' solver ','ode3');%保存模型save_system(modelname);gydF4y2Ba

打开模型时以编程方式加载变量gydF4y2Ba

如果您将一个变量分配为块参数值,则必须在模型中定义该变量的值。看到gydF4y2Ba创建模型gydF4y2Ba.方法以编程方式定义变量gydF4y2BaPreloadFcngydF4y2Ba使用gydF4y2Baset_paramgydF4y2Ba函数。使用如下形式的函数:gydF4y2Ba

set_param(“mymodel”、“PreloadFcn”、“表达”)gydF4y2Ba

表达式gydF4y2Ba是MATLAB搜索路径上的MATLAB命令或MATLAB脚本。这个命令设置模型gydF4y2BaPreloadFcngydF4y2Ba回调到您指定的值。保存模型以保存设置。gydF4y2Ba

例如,在MATLAB脚本中定义变量时gydF4y2Baloadvar.mgydF4y2Ba对于模型gydF4y2Bamodelname.slxgydF4y2Ba,使用此命令:gydF4y2Ba

set_param(“modelname”、“PreloadFcn”、“loadvar”)gydF4y2Ba
为变量赋值gydF4y2BaKgydF4y2Ba的值gydF4y2Ba15gydF4y2Ba,使用此命令:gydF4y2Ba

set_param (' modelname ', ' PreloadFcn ', ' K = 15 ')gydF4y2Ba

保存模型后,gydF4y2BaPreloadFcngydF4y2Ba回调在下次打开模型时执行。gydF4y2Ba

以编程方式添加和连接块gydF4y2Ba

这个例子展示了如何使用函数以编程方式添加块和连接块。将块添加到模型后,您可以使用三种不同的方法来连接它们:路由行、端口句柄和端口id。路由线允许您指定所有连接线段端点的精确(x,y)坐标。端口句柄和端口id允许连接线阻塞端口,而不需要知道端口位置坐标。gydF4y2Ba

创建并打开名为'的空白模型'gydF4y2BamymodelgydF4y2Ba”。gydF4y2Ba

添加块,包括子系统块。使用gydF4y2Ba位置gydF4y2Ba数组中的gydF4y2Baset_paramgydF4y2Ba函数设置块的大小和位置。使用(x,y)坐标设置块的左上和右下角。gydF4y2Ba

add_block(模金宝app型/资源/正弦波,mymodel / Sine1);set_param(“mymodel / Sine1”、“位置”,(140、80180120));add_block(模金宝app型/资源/脉冲发生器,mymodel / Pulse1);set_param(“mymodel / Pulse1”、“位置”,[140200180240]);add_block('金宝appsimulink/Ports &子系统/子系统','mymodel/Subsystem1');set_param(“mymodel / Subsystem1”、“位置”,[315120395200]);add_block(模金宝app型/水槽/范围,“mymodel / Scope1”);set_param(“mymodel / Scope1”、“位置”,[535140575180]);gydF4y2Ba

内部gydF4y2BaSubsystem1gydF4y2Ba,删除之间的默认连接gydF4y2Ba三机一体gydF4y2Ba而且gydF4y2Ba着干活gydF4y2Ba.另外,通过复制和重命名添加第二个输入端口gydF4y2Ba三机一体gydF4y2Ba从块库。gydF4y2Ba

delete_line(‘mymodel / Subsystem1’、‘In1/1’,‘Out1/1’);add_block(模金宝app型/资源/ In1, mymodel / Subsystem1 In2);gydF4y2Ba

重新定位内部的输入和输出端口块gydF4y2BaSubsystem1gydF4y2Ba.gydF4y2Ba

set_param(“mymodel / Subsystem1 In1”,“位置”,[50 50、90、70]);set_param(“mymodel / Subsystem1 In2”,“位置”,(50130、90150));set_param(“mymodel / Subsystem1 /着干活”、“位置”,(500、80540100));gydF4y2Ba

插入并定位gydF4y2Ba添加gydF4y2Ba块内gydF4y2BaSubsystem1gydF4y2Ba.gydF4y2Ba

add_block(“金宝app数学仿真软件/操作/添加”,“mymodel / Subsystem1 / Add1”);set_param(“mymodel / Subsystem1 Add1”,“位置”,(250、80290120));gydF4y2Ba

接下来,添加线条来连接模型中的所有块。首先连接gydF4y2BaSine1gydF4y2Ba而且gydF4y2BaPulse1gydF4y2Ba使用路由行的块。gydF4y2Ba

求(x,y)坐标gydF4y2BaSine1gydF4y2Ba输出端口。gydF4y2Ba

Sine1_Port = get_param('mymodel/Sine1','PortConnectivity')gydF4y2Ba

sinine1_port = struct with fields:类型:'1'位置:[185 100]SrcBlock: [] SrcPort: [] DstBlock: [1×0 double] DstPort: [1×0 double]gydF4y2Ba

get_paramgydF4y2Ba显示端口位置为[185 100]。gydF4y2Ba

求(x,y)坐标gydF4y2BaPulse1gydF4y2Ba输出端口。gydF4y2Ba

Pulse1_Port = get_param('mymodel/Pulse1','PortConnectivity')gydF4y2Ba

Pulse1_Port = struct with fields:类型:'1'位置:[185 220]SrcBlock: [] SrcPort: [] DstBlock: [1×0 double] DstPort: [1×0 double]gydF4y2Ba

get_paramgydF4y2Ba显示端口位置为[185 220]。gydF4y2Ba

连接的输出gydF4y2BaSine1gydF4y2Ba的第一个输入gydF4y2BaSubsystem1gydF4y2Ba使用三段路由线路。gydF4y2Ba

Add_line ('mymodel', [185 100;275 100]);Add_line ('mymodel', [275 100;275 140]);Add_line ('mymodel', [275 140;310 140]);gydF4y2Ba

连接的输出gydF4y2BaPulse1gydF4y2Ba的第二个输入gydF4y2BaSubsystem1gydF4y2Ba使用三段路由线路。gydF4y2Ba

Add_line ('mymodel', [185 220;275 220]);Add_line ('mymodel', [275 220;275 180]);Add_line ('mymodel', [275 180;310 180]);gydF4y2Ba

使用gydF4y2Baget_paramgydF4y2Ba获取正在连接的块的端口句柄。然后使用块端口句柄连接输出gydF4y2BaSubsystem1gydF4y2Ba的输入gydF4y2BaScope1gydF4y2Ba.gydF4y2Ba

SubsysPortHandles = get_param('mymodel/Subsystem1','PortHandles');ScopePortHandles = get_param('mymodel/Scope1','PortHandles');add_line (mymodel, SubsysPortHandles.Outport(1)……ScopePortHandles.Inport (1));gydF4y2Ba

使用端口名称和id连接gydF4y2BaAdd1gydF4y2Ba块内gydF4y2BaSubsystem1gydF4y2Ba子系统的输入和输出。金宝appSimulink使用最直接的路径连接端口。gydF4y2Ba

add_line(‘mymodel / Subsystem1’、‘In1/1’,‘Add1/1’);add_line(‘mymodel / Subsystem1’、‘In2/1’,‘Add1/2’);add_line(‘mymodel / Subsystem1’、‘Add1/1’,‘Out1/1’);gydF4y2Ba

以编程方式注释出或注释穿过块gydF4y2Ba

要以编程方式查看或更改块的注释状态,请使用gydF4y2Baget_paramgydF4y2Ba而且gydF4y2Baset_paramgydF4y2Ba命令。gydF4y2Ba

  • 查看一个块的注释状态:gydF4y2Ba

    get_param (gcb,“评论”);gydF4y2Ba

  • 注释掉一个块:gydF4y2Ba

    set_param (gcb,“评论”,“上”);gydF4y2Ba

  • 通过一个块注释:gydF4y2Ba

    set_param (gcb,“评论”,“通过”);gydF4y2Ba

  • 取消注释块:gydF4y2Ba

    set_param (gcb,“评论”,“关闭”);gydF4y2Ba

以编程方式命名信号gydF4y2Ba

  1. 选择信号线的信号源块。gydF4y2Ba

  2. 使用gydF4y2Baget_paramgydF4y2Ba将当前选定块的端口句柄分配给变量gydF4y2BapgydF4y2Ba.使用gydF4y2Baget_paramgydF4y2Ba将连接到该端口的线路的句柄分配给变量gydF4y2BalgydF4y2Ba.将信号线名称设置为gydF4y2Ba“s9”gydF4y2Ba.gydF4y2Ba

p = get_param(gcb,' portandles ') l = get_param(p. outport,'Line') set_param(l,'Name','s9')gydF4y2Ba

自动安排模型布局gydF4y2Ba

您可以使用gydF4y2Ba金宝appSimulink.BlockDiagram.arrangeSystemgydF4y2Ba命令来布局模型。这个命令将输入块对齐在左边,输出块对齐在右边,输入和输出之间的列中的模型元素对齐。该命令一次只影响一层。gydF4y2Ba

您可以使用gydF4y2Ba金宝appSimulink.BlockDiagram.routeLinegydF4y2Ba命令来路由模型的现有行。对现有线路进行路由可以提高线路的路由质量,并避免线路与模型中的其他线路和障碍的重叠。gydF4y2Ba

虽然您可以在任何开放模型中使用这些命令,但它们对于以编程方式构建的模型尤其有用。有关示例,请参见gydF4y2Ba以编程方式排列填充模型gydF4y2Ba.gydF4y2Ba

在多个窗口中打开同一个模型gydF4y2Ba

打开模型时,该模型将出现在Simulink Editor窗口中。金宝app例如,如果您打开了一个模型,然后又打开了第二个模型,那么第二个模型将出现在第二个窗口中。gydF4y2Ba

若要在两个Simulink编辑器窗口中打开相同的模型,请在M金宝appATLAB命令提示符处输入gydF4y2Baopen_systemgydF4y2Ba命令并使用gydF4y2Ba窗口gydF4y2Ba论点。例如,如果你有gydF4y2BavdpgydF4y2Ba模型打开后,要打开另一个实例gydF4y2BavdpgydF4y2Ba模型中,输入:gydF4y2Ba

open_system (vdp,“窗口”)gydF4y2Ba

使用高亮显示定位图元素gydF4y2Ba

要突出显示开放模型中的块、行、端口或注释,请使用gydF4y2Bahilite_systemgydF4y2Ba.gydF4y2Ba

以编程方式指定颜色gydF4y2Ba

您可以使用gydF4y2Baset_paramgydF4y2Ba命令在MATLAB命令行或MATLAB程序中设置参数,以确定图表的背景色以及图表元素的背景色和前景色。下表总结了控制方框图颜色的参数。gydF4y2Ba

参数gydF4y2Ba 决定了gydF4y2Ba

ScreenColorgydF4y2Ba

框图背景gydF4y2Ba

写成BackgroundColorgydF4y2Ba

块和注释背景gydF4y2Ba

ForegroundColorgydF4y2Ba

块和注释前景gydF4y2Ba

将color参数设置为命名颜色或RGB值。gydF4y2Ba

  • 命名的颜色:gydF4y2Ba“自动”gydF4y2Ba,gydF4y2Ba“黑”gydF4y2Ba,gydF4y2Ba“白色”gydF4y2Ba,gydF4y2Ba“红色”gydF4y2Ba,gydF4y2Ba“绿色”gydF4y2Ba,gydF4y2Ba“蓝”gydF4y2Ba,gydF4y2Ba“青色”gydF4y2Ba,gydF4y2Ba“红色”gydF4y2Ba,gydF4y2Ba“黄色”gydF4y2Ba,gydF4y2Ba“灰色”gydF4y2Ba,gydF4y2Ba“lightBlue”gydF4y2Ba,gydF4y2Ba“橙”gydF4y2Ba,gydF4y2Ba暗绿色的gydF4y2Ba

  • RGB值:gydF4y2Ba“(r, g, b)”gydF4y2Ba

    在哪里gydF4y2BargydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BabgydF4y2Ba颜色的红色、绿色和蓝色组件是否归一化到范围内gydF4y2Ba0.0gydF4y2Ba来gydF4y2Ba1.0gydF4y2Ba.gydF4y2Ba

例如,将当前所选系统或子系统的背景色设置为浅绿色:gydF4y2Ba

set_param(gcs,'ScreenColor','[0.3, 0.9, 0.5]')gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba

相关的话题gydF4y2Ba