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