PID implementation using code
조회 수: 7(최근 30일)
I have implemented a PID controller using simulink pid block for a system. I was trying to implement the same thing using a PID code (formula) in a matlab function block and compare the performances. However, I am getting differences in both the cases. Unable to figure out where exactly is the problem.
For simulink block I have implemented antiwindup, similarly I have done it in the code.
PID code as in the matlab function is as below:
function y = fcn(error,kp,ki)
dt = sampletime;
persistent integral newintegral
integral = 0;
newintegral = 0;
newintegral = integral + (error*dt);
output = kp*error + ki * integral;
integral = newintegral;
y = output;
Is there anything that I am implementing wrong in the code? Requesting some help/direction.
Sam Chak 2022년 11월 25일
Wouldn't it be simpler if you obtain the signal directly from the Integrator block, and then feed it into the MATLAB function block? Something like this
function y = fcn(err, errint, Kp, Ki)
where err is the error signal and errint is the intergral of error signal.