Main Content

Componente eléctrico: condensador ideal

El siguiente archivo, ideal_capacitor.ssc, implementa un componente denominado ideal_capacitor.

La sección de la declaración del componente incluye:

  • Dos nodos eléctricos, p y n, para los terminales + y –, respectivamente.

  • Un parámetro, C, con un valor predeterminado de 1 F, que especifica la capacitancia.

  • Las variables Through y Across, corriente i y tensión v, que se van a conectar a las variables Through y Across del dominio eléctrico más adelante en el archivo.

    La variable v está declarada con una prioridad alta de inicialización, para garantizar la tensión inicial de 0 V.

La sección branches establece la relación entre la variable Through del componente y los nodos del componente (y, por lo tanto, de la variable Through del dominio). La instrucción i : p.i -> n.i indica que la corriente a través del condensador fluye desde el nodo p hasta el nodo n.

La sección de ecuaciones comienza con un constructo assert, que comprueba que el valor de la capacitancia es mayor que cero. Si el parámetro de bloque está establecido de manera incorrecta, assert se genera un error en tiempo de ejecución.

La primera ecuación, v == p.v - n.v, establece la relación entre la variable Across del componente y los nodos del componente (y, por lo tanto, la variable Across del dominio). Define la tensión a lo largo del condensador como la diferencia entre las tensiones de los nodos.

La segunda ecuación define la acción del condensador: I = C*dV/dt, es decir, la corriente de salida es igual a la capacitancia multiplicada por la derivada del tiempo de la tensión de entrada.

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