Блок 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.

initial | modecharts | modes | transitions