Электрическая деталь — идеальный конденсатор

Следующий файл, ideal_capacitor.ssc, реализует компонент под названием ideal_capacitor.

Раздел объявления компонента содержит:

  • Два электрических узла, p и n, для + и – терминалы, соответственно.

  • Один параметр, C, со значением по умолчанию 1 F, задавая емкость.

  • Через и переменные Across, текущий i и напряжение v, чтобы быть соединенным с электрическими доменными переменными Through и Across позже в файле.

    Переменный v, как объявляют, с высоким приоритетом инициализации, гарантирует начальное напряжение 0 V.

Раздел branches устанавливает отношение между переменной Through компонента и узлами компонента (и поэтому доменной переменной Through). Оператор i : p.i -> n.i указывает, что ток через конденсатор вытекает из узла p к узлу n.

Раздел уравнения запускается с построения assert, которое проверяет, что значение емкости больше, чем нуль. Если параметры блоков установлены неправильно, assert инициировал ошибку времени выполнения.

Первое уравнение, v == p.v - n.v, устанавливает отношение между переменной Across компонента и узлами компонента (и поэтому доменной переменной Across). Это задает напряжение через конденсатор как различие между напряжениями узла.

Второе уравнение задает конденсаторное действие: I = C*dV/dt, то есть, текущий вывод равняется емкости, умноженной на производную времени входного напряжения.

component ideal_capacitor
% Ideal Capacitor
% Models an ideal (lossless) capacitor. The output current I is related
% to the input voltage V by I = C*dV/dt where C is the capacitance.

  nodes
    p = foundation.electrical.electrical; % +:top
    n = foundation.electrical.electrical; % -:bottom
  end

  parameters
    C = { 1, 'F' };   % Capacitance
  end

  variables
    i = { 0, 'A' }; % Current
    v = {value = { 0, 'V' }, priority = priority.high}; % Voltage
  end

  branches
    i : p.i -> n.i; % Current through from node p to node n
  end

  equations
    assert(C > 0)
    v == p.v - n.v; % Voltage across between node p and node n
    i == C*v.der;   % Equation defining the capacitor action
  end
end