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

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

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

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

Примечание

Параметр 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 верным. Поэтому в начале симуляции переключатель открыт и никакие электрические токи через резистор R1. Когда значение управляющего сигнала достигает 0.5 (значение параметров Upper threshold), завершения переключателя и ток посредством ответвления, на основе других значений параметров, 1 А. Когда управляющий сигнал падает ниже 0 (значение параметров Lower threshold), переключатель открывается.

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

Похожие темы