Dir_x ... direction bit for H-Bridge
UMx....Voltage for DC motor which is later on converted into a PWM Signal (0..1) -> (0..12)V
e1I.... Error for integral value of PI Controller
reset...to reset the controller errors when starting the simulation/measurement
AntiWindUp....freeze the integral value when reaching the maximum voltage
IMx_d...desired current
IMx....measured current
par...parameter-file
function [UMx,Dir_X] = PICurrentControl(resetI,IMx_d,IMx,AntiWind,par)
persistent e1I
if isempty(e1I)
e1I=0;
end
persistent e1
if isempty(e1)
e1=0;
end
persistent Ux
if isempty(Ux)
Ux=0;
end
if (resetI)
e1I=0;
end
%Calculate Control Deviation
e1=abs(IMx_d)-abs(IMx);
%1..AntiWindup on, 0..of
if(AntiWind)
if (Ux < 12 && Ux > -12)
e1I=e1I+0.01*e1;
else
e1I=e1I;
end
else
e1I=e1I+0.01*e1;
end
if(IMx_d == 0)
Ux = 0;
e1I = 0;
else
Ux = par(1)*e1 + par(2)*e1I;
end
UMx = abs(Ux);
if (sign(IMx_d) >=0)
Dir_X = false;
else Dir_X = true;
end