Следующий пример реализует компонент, подобный включенной подсистеме Simulink® (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
.