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

Похожие темы