Matlab function in Simulink

Hello,
I have problem with MATLAB function in Simulink - after Run values are always zero, while other parts of code (built in PID controller) are working quite good.
function PWMout = myPID(valTarget,valPres, kp, ki, kd, Td, Ts,errorPrev,...
PIDoutMax, PIDoutMin, errorTolerance)
upperBound = PIDoutMax - (PIDoutMax*(1-errorTolerance));
lowerBound = PIDoutMin - (PIDoutMin*(1-errorTolerance));
errPres = valTarget - valPres;
Pout = kp*(errPres - errorPrev);
Iout = ki*errPres;
Dout = kd*(Td/Ts)*(errPres - (2*errorPrev) + ...
+ errorPrev);
PIDoutTemp = Pout + Iout + Dout;
PWMout = PIDoutTemp;
errorPrev = errPres;
end

7 个评论

Try adding a breakpoint inside the function to see whether what is causing the output to remain zero. https://www.mathworks.com/help/matlab/matlab_prog/set-breakpoints.html
ps19
ps19 2020-10-3
编辑:ps19 2020-10-3
Yes I know about debugging but code is in Subsystem/MATLAb function block and when I will add breakpoint it didn`t stop on it - it didn't matter which place in code of subsystem.
Can you attach the model?
ps19
ps19 2020-10-3
编辑:ps19 2020-10-5
Yes no problem. In attachment
I tried running the model. The brakpoint is working and it does give non zero value in PWMout.
It`s started working, I created new model recreated block by block, something must have been crashed in some configuration stage.
Btw, look at persistent variables. You will need that to properly save PID values from the last step inside the function block.

请先登录,再进行评论。

回答(0 个)

类别

帮助中心File Exchange 中查找有关 Programmatic Model Editing 的更多信息

产品

版本

R2020a

提问:

2020-10-3

Community Treasure Hunt

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

Start Hunting!

Translated by