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

modecharts | modes | transitions | initial