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