コンポーネント バリアント — 直列 RLC 分岐
次の例では、単一の抵抗、インダクタ、またはコンデンサ、あるいはこれらの要素の直列の組み合わせを実装する直列 RLC コンポーネントを示します。このコンポーネントでは、条件セクションを使用して制御ロジックを実装します。
import foundation.electrical.electrical; % electrical domain class definition
import foundation.electrical.elements.*; % electrical elements
component SeriesRLC
nodes
p = electrical; % +:left
n = electrical; % -:right
end
nodes(Access=protected, ExternalAccess=none)
rl = electrical; % internal node between r and l
lc = electrical; % internal node between l and c
end
parameters
R = {0, 'Ohm'};
L = {0, 'H'};
C = {inf, 'F'};
end
if R > 0
components
r = resistor(R=R);
end
connections
connect(p, r.p);
connect(r.n, rl);
end
else
connections
connect(p, rl); % short circuit p--rl
end
end
if L > 0
components
l = inductor(l=L);
end
connections
connect(rl, l.p);
connect(l.n, lc);
end
else
connections
connect(rl, lc); % short circuit rl--lc
end
end
if value(C, 'F') < inf
components
c = capacitor(c=C);
end
connections
connect(lc, c.p);
connect(c.n, n);
end
else
connections
connect(lc, n); % short circuit lc--n
end
end
end[R]、[L]、および [C] パラメーターは、それぞれ 0、0、および inf に初期化されます。ブロックのユーザーが非ゼロの抵抗、非ゼロのインピーダンス、または有限の静電容量を指定すると、適切な分岐がアクティブになります。アクティブな分岐は、適切なメンバー コンポーネントを宣言し、それを直列に接続します。それぞれの else 句は、適切なノードをショートサーキットします。

内部ノード rl および lc は、メンバー コンポーネントを接続する役割を果たしますが、コンポーネントの外部からアクセスできないようにする必要があります。Access 属性を protected または private に設定します。これらのノードがブロック アイコンで表示されないよう、ExternalAccess 属性は none です。