В следующем примере показан последовательный 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, так что эти узлы не видны на значке блока.