Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Interruptor con histéresis

El bloque Switch de la biblioteca de Simscape™ Foundation implementa un interruptor controlado por una señal física externa. El bloque utiliza una instrucción if-else. Si la señal física externa en el puerto de control supera el umbral, el interruptor está cerrado; en caso contrario, está abierto.

Este ejemplo implementa un interruptor con histéresis aplicado en el nivel de umbral de conmutación. La histéresis actúa para evitar una conmutación de espurios rápida cuando la señal de control tiene ruido.

El interruptor tiene dos modos de funcionamiento distintos, que se muestran en el diagrama. Si la señal física externa en el puerto de control supera el umbral superior, el interruptor está cerrado. Si la señal está por debajo del umbral inferior, el interruptor está abierto.

El siguiente componente implementa la lógica en el diagrama utilizando un gráfico de modo.

component delayed_switch
% Switch with Hysteresis

inputs
    u = { 0.0, '1' };
end

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

parameters
    R_closed = { 0.01, 'Ohm' };   % Closed resistance R_closed
    G_open   = { 1e-8, '1/Ohm' }; % Open conductance G_open
    T_closed = { 0.5, '1' };      % Upper threshold
    T_open   = { 0, '1' };        % Lower threshold
    InitMode = switching.open;    % Initial Mode
end

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

branches
    i : p.i -> n.i;
end

% Validate parameter values
equations
            assert( T_closed >= T_open, 'Upper threshold must be higher than Lower threshold' );
end

modecharts(ExternalAccess = observe)
    m1 = modechart
        modes
            mode CLOSED
                equations
                    v == p.v - n.v;
                    v == i*R_closed;
                end
            end
            mode OPEN
                equations
                    v == p.v - n.v;
                    v == i/G_open;
                end
            end
        end
        transitions
            CLOSED -> OPEN : u < T_open;
            OPEN -> CLOSED : u > T_closed;
        end
        initial
            OPEN : InitMode <= 0;
        end
    end

end

end

La gráfico de modo m1 define dos modos: CLOSED y OPEN. Cada modo tiene una sección equations que enumera todas las ecuaciones pertinentes. La sección transitions define las transiciones entre los modos de funcionamiento, basándose en condiciones de predicado:

  • El interruptor pasa de CLOSED a OPEN cuando la señal de control cae por debajo del umbral inferior T_open.

  • El interruptor pasa de OPEN a CLOSED cuando la señal de control supera el umbral superior T_closed.

La sección initial especifica el modo de funcionamiento inicial, basándose en una condición de predicado:

  • Si el predicado es verdadero (es decir, el valor del parámetro Initial Mode es menor que o igual a 0), el modo OPEN está activo cuando comienza la simulación.

  • Si el predicado no es verdadero, el modo CLOSED (el primer modo enumerado en la sección modes) está activo cuando comienza la simulación.

Nota

El parámetro Initial Mode utiliza una enumeración:

classdef switching < int32
   enumeration
     open (0)
     closed (1)
   end
   methods(Static)
       function map = displayText()
         map = containers.Map;
         map('open') = 'Switch is open';
         map('closed') = 'Switch is closed';
       end
   end
 end

Para que el componente funcione como se describe, esta enumeración tiene que estar en un archivo switching.m separado. El archivo puede ubicarse en la ruta de MATLAB® o en un paquete importado al componente. En general, las enumeraciones resultan muy prácticas en los gráficos de modo, ya que permiten especificar un conjunto discreto de valores de parámetros aceptables. Para obtener más información, consulte Enumerations.

Para verificar el correcto comportamiento del componente, despliéguelo en un bloque Simscape Component. Cree un modelo de prueba sencillo, con todos los bloques utilizando los valores de los parámetros predeterminados, como se muestra.

Simule el modelo con los valores predeterminados.

El valor del parámetro Initial Mode es Switch is open. Este valor enumerado se evalúa en 0, lo que convierte el predicado de la sección initial en verdadero. Por lo tanto, cuando comienza la simulación, el interruptor está abierto y la corriente no fluye por la resistencia R1. Cuando la señal de control cae por debajo de 0.5 (el valor del parámetro Upper threshold), el interruptor se cierra y la corriente que pasa por la ramificación, basada en los parámetros de los demás valores, es 1 A. Cuando la señal de control cae por debajo de 0 (el valor del parámetro Lower threshold), el interruptor se abre.

Ahora, cambie el valor del parámetro Initial Mode a Switch is closed y simule el modelo. El valor enumerado se evalúa en 1, la condición de predicado de la sección initial ya no es verdadera, por lo que está activo el primer modo enumerado en la sección modes. Cuando comienza la simulación, el interruptor se cierra y permanece cerrado hasta que la señal de control cae por debajo de 0.

Consulte también

| | |

Temas relacionados