exponenta event banner

Включенный компонент

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

Связанные примеры

Подробнее