How to initialize static variable in C caller blocks during simulation

float func_1(void)
{
static float a = 0;
a = a +1;
return a;
}
Simulation setting Fixed step size = 0.1s. Run simulation for 1 second:
  1. First simulation: a = 10
  2. Second simulation: a = 20
  3. Third simulation: a = 30
It seems that re-run simulation after ending one simulation, the "a" wil stay same as the value of the last simulation.
I understnad for global variables we can write a initilization function to initialize it. How about the static variable within the function?

 채택된 답변

Angelo Yeo
Angelo Yeo 2022년 12월 5일
편집: Angelo Yeo 2023년 12월 22일
The "C Caller" block creates temporal C and header files, compiles these and creates .dll files under the slprj folder. These .dll files hold values of static variables between simulations.
Can you go to the Model Explorer and open "Callbacks" for the model? And, in "InitFcn", please type in
clear mex
This will solve the issue with initializing static variables in C Caller blocks.
Please check attached file for a specific example.

댓글 수: 2

Hi!
It worked for me also. Thanks a lot!
Thanks a lot Angelo, worked for me too

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Simulink Functions에 대해 자세히 알아보기

제품

릴리스

R2019b

태그

질문:

2022년 3월 22일

댓글:

2024년 1월 22일

Community Treasure Hunt

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

Start Hunting!

Translated by