delay in Simulink Matlab function block
17 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I want to do something very simple, but since I've failed to find a way, I turn to you :-)
I use a Matlab function block in a Simulink model.
I have an input (PumpOn) which switches on, and off (0-1) When it switches on, I want to wait (delay), then change the output to AirExDCInvO2.
I want to keep that output for the same time (delay), then set the output back to zero.
The time I want to wait, is simulated time, not real time.
The model should keep simulating, while the delay is active.
I have tried to use pause, but I think it only pauses simulation. I have tried a timer, but timer is not supported in the Matlab fcn code generation.
The code from the matlab function block is shown below.
Thanks for reading :-)
Hans
function y = InvalidO2Control(PumpOn, delay, AirExDCInvO2)
y = 0;
if PumpOn == 1 %pump is switched on
pause(delay) % Let the pump run for a while, before doing anything
y = AirExDCInvO2; % set the output (open valve)
pause(delay) % let the valve be open for a while, while pump is still running
y = 0; % close the valve ( pump continues to run)
end
end
0 件のコメント
回答 (1 件)
Fangjun Jiang
2018 年 12 月 6 日
It looks like the Delay block in Simulink could meet your need.
3 件のコメント
Fangjun Jiang
2018 年 12 月 7 日
Keep in mind that MATLAB Function block is just like any other Simulink block. It is running at every simulation step. What you need is to have a persistent variable to serve as the timer/counter and then decide the output based on the timer/counter value.
Fangjun Jiang
2018 年 12 月 7 日
Or, if you have the Stateflow toolbox, use absolute time temporal logic
web(fullfile(docroot, 'stateflow/examples/using-absolute-time-temporal-logic.html'))
参考
カテゴリ
Help Center および File Exchange で Event Functions についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!