Переключатель с гистерезисом

Блок Switch в библиотеке Simscape™ Foundation реализует переключатель, управляемый внешним физическим сигналом. Блок использует if-else оператор. Если внешний физический сигнал в порте управления больше порога, то переключатель закрывается, в противном случае переключатель открыт.

Этот пример реализует переключатель с гистерезисом, примененным к пороговому уровню переключения. Гистерезис действует, чтобы предотвратить быстрое ложное переключение, когда сигнал управления шумит.

Переключатель имеет два различных режима работы, показанных на схеме. Если внешний физический сигнал в порте управления больше верхнего порога, переключатель закрывается. Если сигнал ниже нижнего порога, переключатель открыт.

Следующий компонент реализует логику в схеме с помощью графика mode.

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

График режимов m1 задает два режима, CLOSED и OPEN. Каждый режим имеет equations раздел, в котором перечислены все применимые уравнения. The transitions раздел определяет переходы между рабочими режимами на основе предикатных условий:

  • Переключатель переходит от CLOSED на OPEN когда сигнал управления падает ниже нижнего порога, T_open.

  • Переключатель переходит от OPEN на CLOSED когда сигнал управления поднимается выше верхнего порога, T_closed.

The initial раздел задает начальный режим работы на основе предикатного условия:

  • Если предикат true (то есть Initial Mode значение параметров меньше или равно 0), то OPEN режим активен в начале симуляции.

  • Если предикат не равен true, то CLOSED mode (первый режим, перечисленный в modes section) активен в начале симуляции.

Примечание

Параметр Initial Mode использует перечисление:

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

Чтобы компонент работал, как описано, этот перечисление должно быть в отдельном switching.m файл. Файл может быть расположен либо на MATLAB® путь или пакет, импортированный в компонент. В целом перечисления очень полезны в графики режима, потому что они позволяют вам задать дискретный набор допустимых значений параметров. Для получения дополнительной информации см. «Перечисления».

Чтобы проверить правильность поведения компонента, разверните его в Simscape Component блоке. Создайте простую экспериментальную модель, как показано, со всеми блоками, используя значения параметров по умолчанию.

Симулируйте модель со значениями по умолчанию.

Следующий Initial Mode значения параметров Switch is open. Это перечисленное значение вычисляется как 0, что делает предикат в initial раздел true. Поэтому в начале симуляции переключатель открыт, и через R1 резистора не течёт ток. Когда значение сигналов управления достигает 0,5 (Upper threshold значения параметров), переключатель закрывается, и ток через ветвь, основанный на других значениях параметров, 1A. Когда сигнал управления падает ниже 0 (Lower threshold значения параметров), переключатель открывается.

Теперь измените значение параметров Initial Mode на Switch is closed и моделируйте модель. Перечисленное значение оценивается как 1, предикатное условие в initial раздел больше не является true, и поэтому первый режим, перечисленный в modes раздел активен. В начале симуляции переключатель закрывается, и он остается закрытым, пока сигнал управления не упадет ниже 0.

См. также

| | |

Похожие темы