Simscape Power systemsのMutual Inductance​でインダクタンス値​を動的に変更する方法

Simscape Power systemsのMutual Inductanceでインダクタンス値を動的に変更したい。
■やりたいこと
・インダクタンス値を数式で表現し、その式の変数をシミュレション実効中に変更する。
・上記、変数はあらかじめ測定しておき、MAPデータ(Lookuptable等)でシミュレーション実行中に参照する。
■モデルの場所
Simscape/Power Systems/Specialized Technology/Fundamental Blocks/Elements/Mutual Inductance

댓글 수: 2

Atsushi Matsumoto
Atsushi Matsumoto 2018년 5월 17일
既存ブロックではMutual Inductanceはポート入力でダイナミックに可変できないので、Simscape Languageを使ってブロックを自作するか、Simulinkブロック(伝達関数ブロックなど)で等価なモデルを作成するというのは解になりえますでしょうか?
Mitsuru Shibanuma
Mitsuru Shibanuma 2018년 5월 21일
回答ありがとうございます。 良いモデルがあるので、簡単に出来る方法を模索してました。 等価回路モデルを作成することを検討してみます。

댓글을 달려면 로그인하십시오.

 채택된 답변

Atsushi Matsumoto
Atsushi Matsumoto 2018년 6월 12일
편집: Atsushi Matsumoto 2018년 6월 12일

1 개 추천

Mutual Inductorブロックのソースコード(Simscape Language)はブロックパラメータウィンドウにあるリンクより見ることができます。&nbsp
それを基に、パラメータとなっているL1, L2, kのうち、動的に可変させたいパラメータをinputs項に書き換えて、カスタムコンポーネントを作成してはいかがでしょうか?(以下のサンプルではL1, L2, k全てを入力パラメータにしています。)
component vari_mutual_inductor
% Variable Mutual Inductor :
%
% V1 = L1*dI1/dt + M*dI2/dt
% V2 = L2*dI2/dt + M*dI1/dt
%
% where parameters L1 and L2 are the winding self-inductances, and
% M is the mutual inductance. M is defined in terms of the
% Coefficient of coupling k by M=k*sqrt(L1*L2). Hence the magnitude of k
% should be less than one. Negative k yields an inverted output.
% Copyright 2005-2018 The MathWorks, Inc.
inputs
L1 = { 10, 'H' }; % L1:left
L2 = { 0.1, 'H' }; % L2:right
k = 0.9; % k:left
end
nodes
p1 = foundation.electrical.electrical; % 1+:left
n1 = foundation.electrical.electrical; % 1-:left
p2 = foundation.electrical.electrical; % 2+:right
n2 = foundation.electrical.electrical; % 2-:right
end
parameters
% L1 = { 10, 'H' }; % Inductance L1
% L2 = { 0.1, 'H' }; % Inductance L2
% k = 0.9; % Coefficient of coupling
end
variables
i1 = {value = { 0, 'A' }, priority = priority.high}; % Primary current
i2 = {value = { 0, 'A' }, priority = priority.high}; % Secondary current
v1 = { 0, 'V' }; % Primary voltage
v2 = { 0, 'V' }; % Secondary voltage
end
branches
i1 : p1.i -> n1.i;
i2 : p2.i -> n2.i;
end
equations
assert(L1>0)
assert(L2>0)
assert(abs(k)<1)
v1 == p1.v - n1.v;
v2 == p2.v - n2.v;
v1 == L1*i1.der + k*sqrt(L1*L2)*i2.der;
v2 == L2*i2.der + k*sqrt(L1*L2)*i1.der;
end
end

추가 답변 (2개)

Hiroumi Mita
Hiroumi Mita 2018년 5월 16일

3 개 추천

Mutual Inductanceでインダクタンス値を動的に変更するのは困難です。
代替案として、次があります。
#1. Mutual Inductanceのインダクタンス値をMATLABワークスペース変数で定義します。
#2. シミュレーションをなんらかの条件でいったん停止し、
MATLABワークスペース変数で定義している変数を書き換えて、そ の状態からシミュレーションを継続するのはSimulinkの標準機能であるSimstateをうまく組むことでできます。

댓글 수: 1

Mitsuru Shibanuma
Mitsuru Shibanuma 2018년 5월 21일
回答ありがとうございます。 実施したいことは、制御器の過渡応答性評価で、 シミュレーションをいったん停止することでは、目的を満足できないです。 上記でMatsumotoさんが言われるとおり、自作を検討しようと思います。

댓글을 달려면 로그인하십시오.

Atsushi Matsumoto
Atsushi Matsumoto 2018년 6월 12일

1 개 추천

上記のカスタムコンポーネントを使ったモデルで、結合係数をSIN波で可変させると下図のような振る舞いとなります。モデルも添付します。参考になれば幸いです。

댓글 수: 3

Mitsuru Shibanuma
Mitsuru Shibanuma 2018년 6월 12일
回答ありがとうございます。 恐縮ですが、モデルのバージョンをSimulink 9.0以下にしていただけないでしょうか。私の環境下では中を拝見できません。
Atsushi Matsumoto
Atsushi Matsumoto 2018년 6월 14일
MATLABデスクトップにある [設定] メニューから、Simulink設定/モデルファイル の [Simulinkの新規バージョンで作成されたモデルの読み込みを禁止] を無効化して下さい。そうするとR2017b(Simulink 9.0)でも開けると思います。
Mitsuru Shibanuma
Mitsuru Shibanuma 2018년 6월 14일
開くことができました。ありがとうございます。

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Specialized Power Systems에 대해 자세히 알아보기

제품

릴리스

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!