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 Commenti

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 il 3 Ott 2020
Modificato: ps19 il 3 Ott 2020
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 il 3 Ott 2020
Modificato: ps19 il 5 Ott 2020
Yes no problem. In attachment
I tried running the model. The brakpoint is working and it does give non zero value in PWMout.
ps19
ps19 il 5 Ott 2020
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.

Accedi per commentare.

Risposte (0)

Categorie

Prodotti

Release

R2020a

Richiesto:

il 3 Ott 2020

Commentato:

il 6 Ott 2020

Community Treasure Hunt

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

Start Hunting!

Translated by