Tutorial de
MatLab
Por Hender Molina - Lisbeth Román
Controladores PID
Para implementar los diferentes tipos de controladores (P, PD, PI, PID) en MatLab se hace uso de la función de transferencia propia del sistema a objeto de estudio. Si dicho sistema es de la forma:

donde G(S) es la función de transferencia de la planta o proceso; mientras que C(S) es la función de transferencia del controlador.
Para el caso del controlador proporcional, C(S)=Kp, que es una constante o valor escalar. El controlador PI es C(S)=Kp + Ki/S que puede representarse como una relación ente dos polinomios. El controlador PID es C(S)=Kp + Ki/S + Kd S que se representa como:

que es de nuevo una relación entre dos polinomios. Los coeficientes decrecientes en potencias de S de estos polinomio pueden ser almacenados en vectores en MatLab. Si se multiplica el controlador C(S) por la función de transferencia del proceso o planta G(S) se formará la función de transferencia de lazo abierto. Por ejemplo un G(S) puede ser:

Para obtener la respuesta en lazo abierto ante una entrada escalón unitario tenemos:

>>Kp=50;
>>Ki=1;
>>Kd=10;
>>num=[Kd Kp Ki];
>>den=[1 10 20 0 0];
>>step(num,den)
Para obtener la respuesta de lazo cerrado en el tiempo para una entrada escalón unitario se emplea el comando cloop, el cual genera los polinomios del numerador (numc) y denominador (denc) de la función de transferencia de lazo cerrado con realimentación unitaria a partir de los polinomios de la función de transferencia de lazo abierto (num y den). Su sintaxis es: [numc,denc]=cloop(num,den,sign). El signo de la realimentación viene dado por sign. Para el ejemplo anterior, tenemos:
>>Kp=500;
>>Ki=1;
>>Kd=100;
>>num1=[Kd Kp Ki];
>>den1=[1 0];
>>num2=1;
>>den2=[1 10 20 0];
>>[numc,numd]=cloop(conv(num1,num2),conv(den1,den2),-1);
>>step(numc,denc)
Se usa el comando conv para obtener la convolución y multiplicación polinomial de dos vectores. La salida obtenida mediante el comando step se muestra a continuación:

Implementación de lazos de control PID mediante Simulink.
Ir a la página principal del tutorial de MatLab