プログラムによるモデル化の基礎
モデルの作成、モデルへのブロックの追加、パラメーターの設定など、Simulink®の基本なモデル化操作のほとんど®コマンドウィンドウをして実行する。は,,ののうちのの一部のコマンドととそれらのののコマンドコマンド
モデルの読み込み
モデルを読み込むと、モデルがメモリに格納されますが、Simulink エディターで編集用には開きません。モデルを読み込んだ場合は、モデルをプログラムで操作できます。Simulink エディターを使用してモデルを編集できるのは、モデルを開いた場合だけです。
システムを読み込むには、LOAD_SYSTEM
コマンドを使用します。たとえば、VDP
モデルを読み込むには、MATLAB コマンド プロンプトで次のように入力します。
LOAD_SYSTEM('vdp')
モデルの作成とパラメーター設定の指定
モデルを作成して目的の設定を指定する関数を記述することができます。たとえば、次の関数では、背景が緑色で ode3 ソルバーを使用するモデルが作成されます。
函数new_model(modelName)%new_model创建一个新的,空的simulink model%new_mo万博1manbetxdel('modelName')创建一个新模型,其中name'modelname''。如果没有“ modelName”%参数,新模型就会命名为“ my_untitled”。如果nargin == 0 modelName ='my_untitled';end%创建并打开模型open_system(new_system(modelName));%设置默认屏幕颜色set_param(modelName,'ScreenColor','green');%set默认求解器set_param(modelName,'solver','ode3');%保存模型save_system(modelName);
モデルを际のによる変数の読み込み
ブロックパラメーターの値として変数を割り当てる場合、モデルで変数の値を定義しなければなりません。モデルの作成を参照てください。关数set_param
で预载体
コールバックを使用することで、変数をプログラムで定義することができます。この関数の形式を次に示します。
set_param('mymodel','preloadfcn','expression')
expression
matlabの検索パスにあるあるあるコマンドコマンドコマンドまたはまたはスクリプトスクリプトスクリプト。このコマンドにより,指定したたののの预载体
コールバックが設定されます。モデルを保存すると設定が保存されます。
たとえば、MATLAB スクリプトloadvar.m
でモデルmodelname.slx
に対する変数定义は,次のを使用します。
set_param('modelname','PreloadFcn','loadvar')
K
に値15
を割り当てるは次のを使用します。
set_param('modelname','PreloadFcn','K=15')
モデルを保存すると、次にモデルを開いたときに预载体
コールバックが実行されます。
プログラムによるブロックの追加と接続
例で关数を使用てブロックの追加やブロックのをプログラムプログラムプログラムででで行う行う行う行う方法方法について示しますますます。。モデルモデルモデルにににブロックををを追加追加追加しししたたたたたたたでで,,,指定しそれらし。ルーティング指定指定ライン,すべての接続セグメントののの(x,x,y)座标座标座标座标座标座标座标できできますも接続を端子に接続でき。。
'mymodel
'という名前空モデル作成して开き。。
ブロックをます(サブシステム含む含む)。。set_param
で位置
配列を使用して、ブロックのサイズと位置を設定します。(x,y) 座標を使用してブロックの左上隅と右下隅を設定します。
add_block('simulink/Sources/Sine Wave','mymodel/Sine1'); set_param('mymodel/Sine1','position',[140,80,180,120]); add_block('simulink/Sources/Pulse Generator','mymodel/Pulse1'); set_param('mymodel/Pulse1','position',[140,200,180,240]); add_block('simulink/Ports & Subsystems/Subsystem','mymodel/Subsystem1'); set_param('mymodel/Subsystem1','position',[315,120,395,200]); add_block('simulink/Sinks/Scope','mymodel/Scope1'); set_param('mymodel/Scope1','position',[535,140,575,180]);
Subsystem1
内の在1
とOut1
の間の既定の接続を削除します。また、ブロック ライブラリの在1
をコピーして名前を変更することにより、2 番目の入力端子を追加します。
delete_line('mymodel/Subsystem1','In1/1','Out1/1'); add_block('simulink/Sources/In1','mymodel/Subsystem1/In2');
Subsystem1
内の端子と内部出力端子位置を変更し。。
set_param('mymodel/Subsystem1/In1','position',[50,50,90,70]); set_param('mymodel/Subsystem1/In2','position',[50,130,90,150]); set_param('mymodel/Subsystem1/Out1','position',[500,80,540,100]);
Subsystem1
内にAdd
ブロックをして配置。。
add_block('万博1manbetxsimulink/Math operations/add','mymodel/subsystem1/add1');set_param('mymodel/subsystem1/add1','tocation',[250,80,290,120]);
次に、モデル内のすべてのブロックを接続する線を追加します。ルーティング指定ラインを使用して正弦1
ブロックとPulse1
ブロックをすることから。。
正弦1
出力端子の (x,y) 座標を調べます。
正弦1_Port = get_param('mymodel/Sine1','PortConnectivity')
Sine1_port =带字段的结构:类型:'1'位置:[185 100] srcblock:[] srcport:[] dstblock:[1×0 double] dstport:[1×0 double]
get_param
は,端子の位置が [185 100] であることを示しています。
Pulse1
出力端子の (x,y) 座標を調べます。
pulse1_port = get_param('mymodel/pulse1','portConnectivity')
Pulse1_Port = struct with fields: Type: '1' Position: [185 220] SrcBlock: [] SrcPort: [] DstBlock: [1×0 double] DstPort: [1×0 double]
get_param
は,端子の位置が [185 220] であることを示しています。
ルーティング指定ののつのつのを使用し,,正弦1
の出力をSubsystem1
の最初入力に接続。。
add_line('mymodel', [185 100; 275 100]); add_line('mymodel', [275 100; 275 140]); add_line('mymodel', [275 140; 310 140]);
ルーティング指定ののつのつのを使用し,,Pulse1
の出力をSubsystem1
2番目番目に接続します。。
add_line('mymodel',[185 220; 275 220]);add_line('mymodel',[275 220; 275 180]);add_line('mymodel',[275 180; 310 180]);
get_param
を使用して接続するブロック端子のハンドルを取得します。次にブロック端子のハンドルを使用してSubsystem1
の出力をScope1
の入力に接続します。
subsysporthandles = get_param('mymodel/subsystem1','porthandles');scopeporthandles = get_param('mymodel/scope1','porthandles');add_line('mymodel',subsysporthandles.outport(1),... scopeporthandles.inport(1));
端子名と端子 ID を使用してSubsystem1
内のadd1
simulinkは。はははははは端子の接続に最も直接万博1manbetx的的パスパスを使用使用
add_line('mymodel/Subsystem1','In1/1','Add1/1'); add_line('mymodel/Subsystem1','In2/1','Add1/2'); add_line('mymodel/Subsystem1','Add1/1','Out1/1');
プログラムによるのコメントアウトスルースルー
コメント化されたブロックの状態をプログラムで表示または変更するには、get_param
コマンドとset_param
コマンドを使用します。
コメント化されたブロックの状態を表示:
get_param(gcb,'commented');
ブロックをコメントアウト:
set_param(gcb,'commented','on');
ブロックをスルー:
set_param(gcb,'commented','through');
ブロックを解除:
set_param(gcb,'评论','off');
プログラムによる信号の名前の設定
信号线ソースブロックを选択し。。
get_param
を使用して、現在選択しているブロックの端子ハンドルを変数 p に代入します。get_param
を使用して、その端子に接続されたラインのハンドルを変数 l に代入します。その後、信号線の名前を's9'
に設定します。
p = get_param(gcb,'PortHandles') l = get_param(p.Outport,'Line') set_param(l,'Name','s9')
モデル レイアウトの自動調整
Simulink.BlockDiagram.arrangeSystem
コマンドを使用して,モデルをレイアウトできます。このコマンドは,入力ブロックを左側,出力ブロックを右側、モデル要素を入力と出力の間の列に並べます。このコマンドは、一度に 1 つの層のみに影響します。
万博1manbetxsimulink.blockdiagram.routeline
コマンド使用,モデルの既存ラインをルーティングできます。のラインラインををルーティングルーティングルーティングするすることでで,ラインラインののルートルートの品质品质が向上向上ししし,ががががを回避でき。
このコマンドは開かれている任意のモデルで使用できますが、プログラムによってビルドしたモデルで特に役立ちます。例については、プログラムによってされた调整调整を参照してください。
同じモデル复数のウィンドウ开く开く
モデルを開くと、Simulink エディターのウィンドウにそのモデルが表示されます。たとえば、1 つのモデルが開いている場合、2 番目のモデルを開くと、そのモデルは 2 番目のウィンドウに表示されます。
同じモデルを 2 つの Simulink エディター ウィンドウに表示するには、MATLAB コマンド プロンプトで、window
引数を使用してopen_system
コマンドを入力します。たとえば、VDP
モデルを開いている状態でVDP
モデルのをもうもうつには次のを入力します。
open_system('vdp','window')
強調表示を使用したブロック線図要素の特定
開いているモデル内のブロック、ライン、端子または注釈を強調表示するには、hilite_system
を使用し。
プログラミングでのの指定
MATLAB コマンド ラインで、または MATLAB プログラムで、set_param
コマンドを使用すると、ブロック線図の背景色とブロック線図の要素の背景色および前景色を定義するパラメーターを設定できます。次の表は、ブロック線図の色を制御するパラメーターをまとめたものです。
パラメーター | 決定する対象 |
---|---|
|
ブロック線図の背景 |
|
ブロックおよび注釈背景 |
|
ブロックおよび注釈前景 |
色パラメーターを名前のついた色または RGB 値に設定します。
名前のた色:
'自动的'
,'black'
,'white'
,'red'
,'green'
,'蓝色的'
,'青色'
,'品红'
,'yellow'
,'gray'
,'lightBlue'
,'orange'
,'深绿色'
RGB 値:
'[r,g,b]'
ここで、
r
、g
およびb
は,0.0
から1.0
の范囲化れた色の绿および青成分。。
たとえば,は现在选択てシステムまたはサブの背景色色を薄い薄い绿色にに设定。
set_param(gcs,'ScreenColor','[0.3, 0.9, 0.5]')
参考
LOAD_SYSTEM
|open_system
|new_system
|save_system
|add_line
|delete_line
|add_block
|delete_block
|set_param
|get_param
|gcb
|万博1manbetxsimulink.blockdiagram.routeline
|hilite_system