MATLAB Answers

Initializing Simulink Model (Run a function once)

13 views (last 30 days)
Amr on 27 Dec 2020
Answered: Amr on 30 Dec 2020
I have a model where I get output from an Aurduino Uno board. In this model, I have to make some sort of initialization (to calculate offset and calibrate readings). Typically, this will be done using a loop function that runs only once. Since I couldn't find a way to do that I used MATLAB Function block and made the signal go through before being fed to the model. The function is as follows:
function y = fcn(u)
u_calc = 0;
for i = 1:10
u_calc = u_calc + u;
u_calc = u_calc/10;
y = u-u_calc;
Basucally there is no way to make the loop conditionally run once, since I can't just set an "if" condition + a flag beacuse of the flag variable scope. How can I get around this? Or is there another approach to perform such task?
Your help is much appreciated.

Accepted Answer

Amr on 30 Dec 2020
Well, the best work around I came to find was to use a flag with a condition to either start calculating the offset of not. The flag is set on a suitable scope by using Data Store Memory block. I got it to be something like this:

More Answers (2)

saiful azimi
saiful azimi on 30 Dec 2020
Maybe you can refer to this:

saiful azimi
saiful azimi on 30 Dec 2020
Can you give some details on what model do you use for Arduino UNO? Do you use MATLAB code or Simulink?
  1 Comment
Amr on 30 Dec 2020
The model is for a complete control/tuning system. But to simplify, the part I am concerned with is like the following:
The readings from Sensor X needs to be calibrated on start. I want the program to be initialized by calculating the offset, then using this offset to calibrate future readings. It is simple with the Arduino IDE since I will just calculate the offset in the "setup" loop, but how can I do that in simulink?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!