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 件のコメント
Ameer Hamza
2020 年 10 月 3 日
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
Ameer Hamza
2020 年 10 月 3 日
Can you attach the model?
Ameer Hamza
2020 年 10 月 4 日
I tried running the model. The brakpoint is working and it does give non zero value in PWMout.
ps19
2020 年 10 月 5 日
Ameer Hamza
2020 年 10 月 6 日
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 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!