exponenta event banner

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

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

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

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

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

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 в разделе, в котором перечислены все применимые уравнения. transitions раздел определяет переходы между режимами работы, исходя из предикатных условий:

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

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

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

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

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

Примечание

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

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. Создайте простую тестовую модель, как показано на рисунке, со всеми блоками, использующими значения параметров по умолчанию.

Моделирование модели со значениями по умолчанию.

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

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

См. также

| | |

Связанные темы