How to Make a Simulink Scheduler for a Matlab Block Function to run each 40 ms of simulation?

2 ビュー (過去 30 日間)
Hello, I am trying to make a controller for a system that must run every 40-50 ms. I am having difficulties with Stateflow because if I try to adapt the example given by Mathworks the matlab blocks runs just once.
In the picture you see the controller that I adapted from the example
this is "Edge to Function" block
and this is the simple subsystem called by Call() event
inside the matlab block there is only
j = 0;
for i = 1:10
j = j+1;
end
and here the plot of the output j, as you can see the block is triggered just once
Can you please help me to understand how to call the matlab block every 40 seconds or address me to a good stateflow scheduler tutorial? I haven't been lucky

採用された回答

Fangjun Jiang
Fangjun Jiang 2022 年 8 月 10 日
Use a Function-call Generator block, specify the sample time. Put the MATLAB Function block inside a triggered subsystem, specify the trigger as Function-call.
  3 件のコメント
Gianluca Mammone
Gianluca Mammone 2022 年 8 月 18 日
編集済み: Gianluca Mammone 2022 年 8 月 18 日
My task is to create a controller that runs every 40 Ms. The dynamic differential model of the plant is a matlab function followed by integrators that calculate the state.
This controller every 40 ms is triggered, collect the actual state (the output of the integrator which is the output of the Matlab Function Block), and gives the value of the controlled variable.
The controller is quite heavy (MPC with QP), so I am not too prone to use zero-older hold block
EDIT: I think I solved it, thank you for your patience.
One of the inputs (let's call it dx) of the triggered block was the direct output of the matlab function. Since the matlab function needed the output of the controller to run, there was this data dependency where dx was not initialized or defined.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Find more on Simulink Functions in Help Center and File Exchange

製品


リリース

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by