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