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
yn
, para los terminales + y –, respectivamente.Un parámetro,
C
, con un valor predeterminado de1 F
, que especifica la capacitancia.Las variables Through y Across, corriente
i
y tensiónv
, 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 de0 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