Main Content

symWriteSSC

新規 Simscape コンポーネントの作成

説明

symWriteSSC(newComponentName,templateComponentName,eqns) は、既存のコンポーネント templateComponentName をテンプレートとして使用し、eqns を追加して、新規の Simscape™ コンポーネント newComponentName を作成します。そのため、新規のコンポーネントは、テンプレート コンポーネントから取得された既存の方程式と、追加された方程式の両方をもつことになります。

symWriteSSC(newComponentName,templateComponentName,eqns,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。

すべて折りたたむ

既存のコンポーネントをテンプレートとして使用し、方程式を追加して、新規の Simscape コンポーネントを作成します。

現在のフォルダーに Simscape コンポーネント spring.ssc があるとします。

type('spring.ssc');
component spring < foundation.mechanical.rotational.branch

parameters
    spr_rate = { 10, 'N*m/rad' };
end

variables
    phi = { value = { 0, 'rad'}, priority = priority.high };
end

function setup
    if spr_rate <= 0
        pm_error('simscape:GreaterThanZero','Spring rate' )
    end
end

equations
    w == phi.der;
    t == spr_rate*phi;
end

end

新規方程式を作成する際、これから使用するコンポーネントのパラメーター名や変数名をもつシンボリック変数を作成します。さらに、シンボリック変数 u を作成して、回転バネのエネルギーを表します。

syms spr_rate phi u

エネルギー u を定義する方程式を作成します。

eq = u == spr_rate*phi^2/2;

新規のコンポーネント myRotationalSpring.ssc は、コンポーネント spring.ssc のコピーに回転バネのエネルギーを定義する方程式を追加したものになります。

symWriteSSC('myRotationalSpring.ssc','spring.ssc',eq)
Warning: Equations contain undeclared variables 'u'. 
> In symWriteSSC (line 94) 

symWriteSSC はコンポーネント myRotationalSpring.ssc を作成します。

type('myRotationalSpring.ssc');
component myRotationalSpring

parameters
    spr_rate = { 10, 'N*m/rad' };
end

variables
    phi = { value = { 0, 'rad'}, priority = priority.high };
end

function setup
    if spr_rate <= 0
        pm_error('simscape:GreaterThanZero','Spring rate' )
    end
end

equations
    w == phi.der;
    t == spr_rate*phi;
    u == phi^2*spr_rate*(1.0/2.0);
end

end

テンプレート コンポーネントとは異なるタイトルおよび説明テキストをもつ Simscape コンポーネントを作成します。

現在のフォルダーに Simscape コンポーネント spring.ssc があるとします。このコンポーネントにはタイトルまたは説明テキストがありません。

type('spring.ssc');
component spring < foundation.mechanical.rotational.branch

parameters
    spr_rate = { 10, 'N*m/rad' };
end

variables
    phi = { value = { 0, 'rad'}, priority = priority.high };
end

function setup
    if spr_rate <= 0
        pm_error('simscape:GreaterThanZero','Spring rate' )
    end
end

equations
    w == phi.der;
    t == spr_rate*phi;
end

end

新規方程式を作成する際、これから使用するコンポーネントのパラメーター名や変数名をもつシンボリック変数を作成します。さらに、シンボリック変数 u を作成して、回転バネのエネルギーを表します。

syms spr_rate phi u

エネルギー u を定義する方程式を作成します。

eq = u == spr_rate*phi^2/2;

コンポーネント spring.ssc に基づいて、新規のコンポーネント myRotationalSpring.ssc を作成します。方程式 eq、"Rotational Spring" というタイトルおよび数行の説明テキストを新規のコンポーネントに追加します。

symWriteSSC('myRotationalSpring.ssc','spring.ssc',eq,...
'H1Header','% Rotational Spring',...
'HelpText',{'% The block represents an ideal mechanical rotational linear spring.',...
            '% Connections R and C are mechanical rotational conserving ports.'...
            '% The block positive direction is from port R to port C. This means'...
            '% that the torque is positive if it acts in the direction from R to C.'})
Warning: Equations contain undeclared variables 'u'. 
> In symWriteSSC (line 94) 

symWriteSSC はコンポーネント myRotationalSpring.ssc を作成します。

type('myRotationalSpring.ssc');
component myRotationalSpring
% Rotational Spring
% The block represents an ideal mechanical rotational linear spring.
% Connections R and C are mechanical rotational conserving ports.
% The block positive direction is from port R to port C. This means
% that the torque is positive if it acts in the direction from R to C.

parameters
    spr_rate = { 10, 'N*m/rad' };
end

variables
    phi = { value = { 0, 'rad'}, priority = priority.high };
end

function setup
    if spr_rate <= 0
        pm_error('simscape:GreaterThanZero','Spring rate' )
    end
end

equations
    w == phi.der;
    t == spr_rate*phi;
    u == phi^2*spr_rate*(1.0/2.0);
end

end

入力引数

すべて折りたたむ

作成する Simscape コンポーネントの名前。一重引用符で囲まれたファイル名として指定します。ファイルには拡張子 .ssc が付いていなければなりません。ファイル拡張子を指定しない場合、symWriteSSC によって .ssc であると仮定されます。絶対パスを指定しない場合は、symWriteSSC によって現在のフォルダーに新規のコンポーネントが作成されます。

例: 'MyNewComponent.ssc'

テンプレートとなる Simscape コンポーネントの名前。一重引用符で囲まれたファイル名として指定します。ファイルには拡張子 .ssc が付いていなければなりません。ファイル拡張子を指定しない場合、symWriteSSC によって .ssc であると仮定されます。コンポーネントは MATLAB® パス上または現在のフォルダーになければなりません。

例: 'TemplateComponent.ssc'

シンボリック方程式。行ベクトルとして指定します。

例: [ y(t) == diff(x(t), t), m*diff(y(t), t, t) + b*y(t) + k*x(t) == F]

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は関係ありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: symWriteSSC('myComp.ssc','template.ssc',eq,'H1Header','% New title','HelpText',{'% Description of the','% new component'})

タイトル。% で始まる文字 (char 型) の行ベクトルとして指定します。最初の文字が % ではない場合、symWriteSSC によって % が追加されます。

テンプレート コンポーネントにタイトルが指定されている場合に H1Header を使用すると、新規のコンポーネントには H1Header によって指定されたタイトルが使用されます。テンプレート コンポーネントにタイトルが指定されている場合に H1Header を使用せずに symWriteSSC を呼び出すと、新規のコンポーネントにはテンプレート コンポーネントと同じタイトルが使用されます。

例: 'H1Header','% New title'

説明テキスト。文字の行ベクトルの cell 配列として指定します。それぞれの行ベクトルは % で始めなければなりません。最初の文字が % ではない場合、symWriteSSC によって % が追加されます。

テンプレート コンポーネントに説明テキストが指定されている場合に HelpText を使用すると、新規のコンポーネントには HelpText によって指定されたテキストのみが使用されます。この場合、symWriteSSC は、テンプレート コンポーネントの説明テキストを新規のコンポーネントにコピーしません。テンプレート コンポーネントにタイトルが指定されている場合に HelpText を使用せずに symWriteSSC を呼び出すと、新規のコンポーネントにはテンプレート コンポーネントと同じ説明テキストが使用されます。

例: 'HelpText',{'% Description of the','% new component'}

バージョン履歴

R2016a で導入