Main Content

Componente mecánico: muelle

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

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

  • Dos nodos rotacionales, r y c (para la varilla y la carcasa, respectivamente).

  • Parámetro k, con un valor predeterminado de 10 N*m/rad, que especifica la tasa de elasticidad del muelle.

  • Variables Through y Across, el par motor t y la velocidad angular w, que se van a conectar a las variables Through y Across del dominio de rotación más adelante en el archivo.

  • Variable interna theta, con un valor predeterminado de 0 rad, que especifica el ángulo relativo, es decir, la deformación del muelle.

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 t : r.t -> c.t indica que el par motor a través del muelle actúa desde el nodo r hasta el nodo c.

La sección de ecuaciones comienza con un constructo assert, que comprueba que la tasa de elasticidad del muelle 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, w == r.w - c.w, 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 velocidad angular a lo largo del muelle como la diferencia entre las velocidades angulares de los nodos.

Las dos ecuaciones siguientes definen la acción del muelle:

  • t = k * theta, es decir, el par motor es igual a la tasa de elasticidad del muelle por la deformación del muelle.

  • w = theta.der, es decir, la velocidad angular es igual a la derivada de tiempo de la deformación del muelle.

component spring
  nodes
    r = foundation.mechanical.rotational.rotational;
    c = foundation.mechanical.rotational.rotational;
  end
  parameters
    k = { 10, 'N*m/rad' };
  end
  variables
    theta = { 0, 'rad' };
    t = { 0, 'N*m' };        % torque through
    w = { 0, 'rad/s' };      % velocity across
  end
  branches
    t : r.t -> c.t; % torque through from node r to node c
  end
  equations
    assert(k>0)     % spring rate must be greater than zero
    w == r.w - c.w; % velocity across between node r and node c
    t == k * theta;
    w == theta.der;
  end
end