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