В следующем примере реализуется компонент, подобный Simulink® включенная подсистема:
component EnabledComponent inputs enabled = 0; % control signal u = 0; % input signal end variables (Event=true) x = 0; % state to hold output if necessary end outputs y = 0; % output end parameters held = true; % set true for held or false for reset y_init = 0; end events when edge(held && ~(enabled>0)) x = u; % if necessary, hold input on falling edge end end equations if enabled > 0 y == u; elseif held==true y == x; else % not enabled and not held y == y_init; end end end
Компонент имеет два входа: сигнал управления enabled
и u
сигнала данных.
Операция блока зависит от значения held
параметр: если он true
, затем переменная события x
принимает значение сигнала входных данных u
на падающем ребре управляющего сигнала.
Пока управляющий сигнал имеет положительное значение, выход y
соответствует сигналу входных данных u
. Когда сигнал управления отрицателен:
Если held
является true
, порт выхода y
выводит последнее удержанное значение переменной события.
Если held
является false
, выход сбрасывается до начального значения, заданного y_init
параметр.