Você está na página 1de 9

02/01/2017 TutoriaisdecontroleparaMATLABeSimulinkPosiodomotor:DesigndocontroladorPID

Dicas Efeitos SearchControlTutorials


Dica SOBRE BASICS HARDWARE NDICE PRXIMA

INTRODUO CONTROLEDECRUZEIRO

SISTEMA

MODELAGEM DCPosiodomotor:PIDController
ANLISE Design

ComandosMATLABusadosnestetutorialso:tf,etapa,ofeedback
AOCONTROLE

PID
Contedo
LOCODARAIZ
Controleproporcional
FREQNCIA
ControlePI

ESTADOESPAO ControlePID

DIGITAL
Apartirdoproblemaprincipal,afunodetransfernciaemmalhaaberta

doMotorCCdadacomosesegue.

SIMULINK
(1)
MODELAGEM

AOCONTROLE Aestruturadosistemadecontroletemaformamostradanafiguraabaixo.

Para a configurao do problema original e a derivao das equaes

acima,consulteoDCMotorPosio:ModelingSystempgina.

Paraumarefernciadepassode1radian,oscritriosdedesignsoos

seguintes.

Tempodeestabilizaoinferiora0,040segundos

Superaoinferiora16%

http://ctms.engin.umich.edu/CTMS/index.php?example=MotorPosition&section=ControlPID 1/9
02/01/2017 TutoriaisdecontroleparaMATLABeSimulinkPosiodomotor:DesigndocontroladorPID

Nenhum erro de estado estacionrio, mesmo na presena de uma

entradadeperturbaodedegrau

Agora vamos projetar um controlador PID e adicionlo ao sistema.

Primeirocrieumnovomfileedigiteosseguintescomandos(consulteo

principalproblemaparaosdetalhesdeobteressescomandos).

J=3,2284E6;

B=3,5077E6;

K=0,0274;

R=4;

L=2,75E6;

s=tf('s');

P_motor=K/(s*((J*s+b)*(L*s+R)+K^2));

LembresedequeafunodetransfernciaparaumcontroladorPIDtem

aseguinteforma.

(2)

Controleproporcional

Vamosprimeirotentarusarumcontroladorproporcionalcomoganhoque

variade1a21.UmavariedadedemodelosdeLTI , cada um com um

ganhoproporcionaldiferente,podeserconstrudousandoumparaloop.

Asfunesdetransfernciadecircuitofechadopodesergeradousandoo

gabarito de comando. Adicione o seguinte cdigo ao final de seu m

arquivoeexecutlonajaneladecomandoMATLAB:

Kp=1;

parai=1:3

C(:,:,i)=pid(Kp);

Kp=Kp+10;

fim

Sys_cl=feedback(C*P_motor,1);

Agora vamos ver como as respostas passo so. Adicione o seguinte

cdigo ao final de seu marquivo e executeo novamente na janela de

comando.Vocdevegerarogrficomostradonafiguraabaixo.

T=0:0,001:0,2;

(Sys_cl(:,:,1),sys_cl(:,:,2),sys_cl(:,:,3),t)

ylabel('Posio,\theta(radianos)')

http://ctms.engin.umich.edu/CTMS/index.php?example=MotorPosition&section=ControlPID 2/9
02/01/2017 TutoriaisdecontroleparaMATLABeSimulinkPosiodomotor:DesigndocontroladorPID

ttulo("RespostaaumarefernciadePassocomdiferentesvaloresdeK_p'

legenda('K_p=1','K_p=11','K_p=21')

Vamostambmconsiderararespostadosistemaaumdistrbiodefase.

Nestecaso,vamosassumirumarefernciadezeroeolharparaaforma

como o sistema responde perturbao por si s. O gabarito de

comandopodeaindaserutilizadaparagerarafunodetransfernciade

circuitofechadoemquehaindaofeedbacknegativo,noentanto,agora

somenteafunodetransfernciadaplantaP(s)estnocaminhopara

a frente e o controlador C ( s ) considerada No caminho de

realimentao. Consulte novamente o diagrama de blocos na parte

superiordestapginaparaveraestruturadosistema.Adicioneoseguinte

aofinaldeseumarquivoeexecutlonajaneladecomando.Vocdeve
gerarogrficomostradonafiguraabaixo.

Dist_cl=feedback(P_motor,C);

Passo(dist_cl(:,:,1),dist_cl(:,:,2),dist_cl(:,:,3),t)
ylabel('Posio,\theta(radianos)')

ttulo("RespostaaumaperturbaoPassocomdiferentesvaloresdeK_p'
legenda('K_p=1','K_p=11','K_p=21')

http://ctms.engin.umich.edu/CTMS/index.php?example=MotorPosition&section=ControlPID 3/9
02/01/2017 TutoriaisdecontroleparaMATLABeSimulinkPosiodomotor:DesigndocontroladorPID

As parcelas acima mostram que o sistema no tem erro de estado


estacionrioemrespostaaopassodereferncia,porsis,noimportaa

escolhadeganhoproporcionalKp.Istodevidoaofatodequeaplanta
temumintegrador,isto,osistemadotipo1.Noentanto,osistematem

um erro de estado estacionrio significativo quando a perturbao


adicionada. Especificamente, a resposta devida referncia e

perturbaoaplicadasimultaneamenteigualsomadosdoisgrficos
mostrados acima. Isso decorre da propriedade da superposio que

mantm para sistemas lineares. Portanto, para ter zero erro de estado
estacionrionapresenadeumaperturbao,precisamosdarespostade

perturbao para decaimento a zero. Quanto maior for o valor de Kp o


menor erro de estado estacionrio devido perturbao, mas nunca

chegaazero.Almdisso,utilizandoosvalorescadavezmaioresdeKp
temoefeitoadversodeaumentodaultrapassagemeliquidartempocomo

pode ser visto a partir da trama de referncia passo. Lembrese da DC


Motor Posio: Modeling System pgina que a adio de um termo

integral ir eliminar o erro de estado estacionrio e um termo derivado


podereduzirasuperaoetempoderepouso.

ControlePI

VamosprimeirotentarumcontroladorPIparaselivrardoerrodeestado

estacionriodevidoperturbao.VamosdefinirKp=21etesteganhos
integrais Ki variando de 100 a 500. Alterar o seu marquivo para o

seguinte e correr na janela de comando. Voc deve gerar uma figura


comoamostradaabaixo.

Kp=21;

Ki=100;

http://ctms.engin.umich.edu/CTMS/index.php?example=MotorPosition&section=ControlPID 4/9
02/01/2017 TutoriaisdecontroleparaMATLABeSimulinkPosiodomotor:DesigndocontroladorPID

parai=1:5
C(:,:,i)=pid(Kp,Ki);

Ki=Ki+200;
fim

Sys_cl=feedback(C*P_motor,1);

T=0:0,001:0,4;
(Sys_cl(:,:,1),sys_cl(:,:,2),sys_cl(:,:,3),t)

ylabel('Posio,\theta(radianos)')
ttulo("RespostaaumarefernciadePassocomK_p=21ediferentesvalores

legenda('K_i=100','K_i=300','K_i=500')

Agora vamos ver o que aconteceu com a resposta de perturbao de

passo.Altereosseguintescomandosnoseumfileevolteaexecutarna
janela de comandos. Voc deve gerar um grfico como o mostrado na

figuraabaixo.

Dist_cl=feedback(P_motor,C);
Passo(dist_cl(:,:,1),dist_cl(:,:,2),dist_cl(:,:,3),t)

ylabel('Posio,\theta(radianos)')
ttulo("RespostaaumaperturbaoPassocomK_p=21ediferentesvaloresd

legenda('K_i=100','K_i=300','K_i=500')

http://ctms.engin.umich.edu/CTMS/index.php?example=MotorPosition&section=ControlPID 5/9
02/01/2017 TutoriaisdecontroleparaMATLABeSimulinkPosiodomotor:DesigndocontroladorPID

O controle integral reduziu o erro de estado estacionrio para zero,

mesmo quando uma perturbao de passo est presente Que foi o

objetivo de adicionar o termo integral. Para a resposta etapa de


referncia, de todos os reponses semelhante com a quantidade de

oscilaoaumentandoligeiramentecomoKifeitomaior.Noentanto,a

resposta devida perturbao altera significativamente como o ganho

integral Ki alterada. Especificamente, quanto maior for o valor de Ki


empregues,maisrpidooerrodecaiparazero.IremosescolherKi=500,

porqueoerrodevidoperturbaodecairapidamenteparazero,mesmo

searespostarefernciatemumtempomaislongoemaisdecantao

ultrapassagem. Vamos tentar reduzir o tempo de estabilizao e


superaoadicionandoumtermoderivativoaocontrolador.

ControlePID

Adicionar um termo derivativo ao controlador significa que agora temos

todos os trs termos do controlador PID. Iremos investigar derivado

ganhosKdvariando0,050,25.Volteparaomarquivoefaaasseguintes

alteraes.Executandoomarquivoalteradoirgerarumgrficocomoo
mostradoabaixo.

Kp=21;

Ki=500;

Kd=0,05;

parai=1:3

C(:,:,i)=pid(Kp,Ki,Kd);

Kd=Kd+0,1;

fim

http://ctms.engin.umich.edu/CTMS/index.php?example=MotorPosition&section=ControlPID 6/9
02/01/2017 TutoriaisdecontroleparaMATLABeSimulinkPosiodomotor:DesigndocontroladorPID

Sys_cl=feedback(C*P_motor,1);

T=0:0,001:0,1;
(Sys_cl(:,:,1),sys_cl(:,:,2),sys_cl(:,:,3),t)

ylabel('Posio,\theta(radianos)')

ttulo("RespostaaumarefernciadePassocomK_p=21,K_i=500ediferen

legenda('K_d=0,05','K_d=0,15','K_d=0,25')

Vamos ver o que aconteceu com a resposta de perturbao de etapa,

altereosseguintescomandosnoseuarquivomeexecutenovamentena

linhadecomando.

Dist_cl=feedback(P_motor,C);

T=0:0,001:0,2;
Passo(dist_cl(:,:,1),dist_cl(:,:,2),dist_cl(:,:,3),t)

ylabel('Posio,\theta(radianos)')

ttulo("RespostaaumaperturbaoPassocomK_p=21,K_i=500evaloresd

legenda('K_d=0,05','K_d=0,15','K_d=0,25')

http://ctms.engin.umich.edu/CTMS/index.php?example=MotorPosition&section=ControlPID 7/9
02/01/2017 TutoriaisdecontroleparaMATLABeSimulinkPosiodomotor:DesigndocontroladorPID

ParecequequandoKd=0,15,podemossatisfazerasnossasexigncias

doprojeto.Paradeterminarascaractersticasprecisasdarespostapasso
que voc pode usar o menu do boto direito do enredo resposta ao

degrau,ouvocpodeusarocomandoMATLABstepinfocomomostrado

abaixo.

Stepinfo(sys_cl(:,:,2))

Ans

RiseTime:0,0046
SettlingTime:0,0338

SettlingMin:0,9183

SettlingMax:1.1211

Sobrecarga:12.1139
Undershoot:0

Pico:1,1211

TempodePeak:0,0121

Doquefoiditoacima,vemosquearespostaaumarefernciadepasso

tem um tempo de assentamento de aproximadamente 34ms (<40ms),

overshoot de 12% (<16%) e nenhum erro de estado estacionrio.


Adicionalmente, a resposta de perturbao de passo tambm no tem

erro de estado estacionrio. Ento agora sabemos que se usarmos um

controladorPIDcom

Kp=21,Ki=500,eKd=0,15,

Todososnossosrequisitosdedesignserosatisfeitos.

http://ctms.engin.umich.edu/CTMS/index.php?example=MotorPosition&section=ControlPID 8/9
02/01/2017 TutoriaisdecontroleparaMATLABeSimulinkPosiodomotor:DesigndocontroladorPID

PublicadocomMATLAB7.14

TodososcontedoslicenciadossobumalicenaCreativeCommonsAttribution
ShareAlike4.0International.

http://ctms.engin.umich.edu/CTMS/index.php?example=MotorPosition&section=ControlPID 9/9

Você também pode gostar