CONTROLO DA VELOCIDADE DE UM SISTEMA SERVO
Luís Miguel Mota Ferreira - 1080500 Tiago José Mamede Silva Marques - 1080550
Departamento de Engenharia Electrotécnica Instituto Superior de Engenharia do Porto 2012
iii
Índice ÍNDICE .......................................................................................................................................................... IV ÍNDICE DE FIGURAS ................................................................................................................................... V ÍNDICE DE TABELAS ................................................................................................................................ IX 1.
OBJECTIVOS ....................................................................................................................................... 11
2.
INTRODUÇÃO ..................................................................................................................................... 12
3.
2.1.
SISTEMA SERVO .............................................................................................................................. 12
2.2.
MODELO MATEMÁTICO ................................................................................................................... 15
2.3.
CONTROLADOR PID ........................................................................................................................ 17
2.4.
SINTONIA BASEADA EM HEURÍSTICAS............................................................................................. 21
EXPERIÊNCIAS REALIZADAS ........................................................................................................ 31 3.1.
GUIÃO 1 .......................................................................................................................................... 31
3.2.
GUIÃO 2 .......................................................................................................................................... 71
REFERÊNCIAS DOCUMENTAIS .............................................................................................................. 84 ANEXO A. CÓDIGO MATLAB PARA A DETERMINAÇÃO DOS PARÂMETROS DE SINTONIA DOS CONTROLADORES PID ATRAVÉS DA HEURÍSTICA DE Z-A ................................................. 85
iv
Índice de Figuras Figura 1
Diagrama do sistema servo ........................................................................................................ 12
Figura 2
Modelo em malha fechada do sistema servo, no SIMULINK ................................................... 13
Figura 3
Modelo em malha aberta do sistema servo, no SIMULINK ...................................................... 14
Figura 4
Modelo do servo com controlador difuso, no SIMULINK ........................................................ 14
Figura 5
Modelo matemático do motor DC ............................................................................................. 16
Figura 6
Esquema de um controlador PID ............................................................................................... 17
Figura 7
Exemplo do impacto dos ganhos proporcionais num sistema ................................................... 18
Figura 8
Exemplo do impacto de um ganho integrativo num sistema ..................................................... 20
Figura 9
Esquematização dos parâmetros de sintonia em malha aberta................................................... 22
Figura 10
Esquematização dos parâmetros da sintonia em malha fechada ................................................ 24
Figura 11
Esquemático de um sistema difuso ............................................................................................ 26
Figura 12
Exemplo de um universo de trabalho de um controlador difuso ............................................... 28
Figura 13
Processo de desfuzificação ........................................................................................................ 30
Figura 14
Gráfico obtido no sistema servo para um ganho critico de 0.0856 ............................................ 32
Figura 15
Parâmetros de saída da função id_zn_mf observados no MATLAB ......................................... 34
Figura 16
Parâmetros devolvidos pela função de sintonização zn2 no MATLAB .................................... 35
Figura 17
Resposta do sistema para um controlador do tipo P em malha fechada .................................... 36
Figura 18
Resposta do sistema para um controlador do tipo PI em malha fechada ................................... 37
Figura 19
Resposta do sistema para um controlador do tipo PID em malha fechada ................................ 37
Figura 20
Resposta para metade do ganho proporcional num controlador P em malha fechada ............... 39
Figura 21
Resposta para o dobro do ganho proporcional num controlador do tipo P em malha fechada .. 39
Figura 22
Resposta para metade do ganho integrativo num controlador PI em malha fechada ................. 40
Figura 23
Resposta para o dobro do ganho integrativo num controlador PI em malha fechada ................ 40
Figura 24
Resposta para metade do ganho derivativo num controlador PID em malha fechada ............... 41
Figura 25
Resposta para o dobro do ganho derivativo num controlador PID em malha fechada .............. 41
Figura 26
Resposta do sistema servo para uma entrada de 1 rad/s ............................................................ 43
Figura 27
Saída da função id_zn_ma observada no MATLAB ................................................................. 45
Figura 28
Representação da aproximação linear e da resposta do sistema servo em malha aberta ........... 46
Figura 29
Parâmetros devolvidos pela função de sintonização zn1 no MATLAB .................................... 47
Figura 30
Resposta do sistema para um controlador do tipo P em malha aberta ....................................... 48
Figura 31
Resposta do sistema para um controlador do tipo PI em malha aberta ...................................... 49
Figura 32
Resposta do sistema para um controlador do tipo PID em malha aberta ................................... 49
Figura 33
Resposta para metade do ganho proporcional num controlador do tipo P em malha aberta . 51
Figura 34
Resposta para o dobro do ganho proporcional num controlador do tipo P em malha aberta ..... 51
v
Figura 35
Resposta para metade do ganho integrativo num controlador do tipo PI em malha aberta .... 52
Figura 36
Resposta para o dobro do ganho integrativo num controlador do tipo PI em malha aberta ... 52
Figura 37
Resposta para metade do ganho derivativo num controlador do tipo PID em malha aberta .. 53
Figura 38
Resposta para o dobro do ganho derivativo num controlador do tipo PID em malha aberta ..... 53
Figura 39
Resposta do sistema para os valores proporcionais obtidos em malha fechada e malha aberta . 55
Figura 40
Resposta do sistema para os valores integrativos obtidos em malha fechada e malha aberta .... 55
Figura 41
Resposta do sistema para os valores proporcionais obtidos em malha fechada e malha aberta . 56
Figura 42
Modelo do sistema servo no SIMULINK utilizando uma função de primeira ordem com atraso 57
Figura 43
Resposta do sistema simulado para um controlador P ............................................................... 58
Figura 44
Resposta do sistema simulado para um controlador PI .............................................................. 58
Figura 45
Resposta do sistema simulado para um controlador PID ........................................................... 59
Figura 46
Resposta do sistema simulado para um controlador P com metade do ganho proporcional .. 60
Figura 47
Resposta do sistema simulado para um controlador P com o dobro do ganho proporcional . 60
Figura 48
Resposta do sistema simulado para um controlador PI com metade do ganho integral ............. 61
Figura 49
Resposta do sistema simulado para um controlador PI com o dobro do ganho integral ............ 61
Figura 50
Resposta do sistema simulado para um controlador PID com metade do ganho derivativo .. 62
Figura 51
Resposta do sistema simulado para um controlador PID com o dobro do ganho derivativo . 62
Figura 52
Saída da função calc_ov no MATLAB ...................................................................................... 64
Figura 53
Resposta do sistema observada para um aumento da acção de controlo derivativa no PID ....... 65
Figura 54
Estatísticas da nova resposta obtidas através do MATLAB após aumento do ganho
derivativo 65 Figura 55
Resposta observada para uma diminuição da acção de controlo proporcional ........................... 66
Figura 56
Estatísticas da nova resposta obtida no MATLAB apos a diminuição do ganho proporcional 67
Figura 57
Parâmetros de saída da função za no MATLAB ........................................................................ 68
Figura 58
Resposta do sistema servo para o controlador PI sintonizado através da heurística Z-A ........... 69
Figura 59
Resposta do sistema servo para o controlador PID sintonizado através da heurística Z-A ........ 70
Figura 60
Função de pertença da entrada valor do erro, para o controlador difuso de 49 regras ............... 73
Figura 61
Funções de pertença da entrada variação do erro, para o controlador difuso de 49 regras .... 73
Figura 62
Função de pertença da saída para o controlador difuso de 49 regras ......................................... 74
Figura 63
Sistema de controlo difuso no MATLAB .................................................................................. 75
Figura 64
Resposta de saída do sistema simulado com todos os ganhos a 1 .............................................. 76
Figura 65
Resposta de saída do sistema simulado melhorada para o controlador de 49 regras .................. 77
Figura 66
Resposta de saída do sistema servo modular para o controlador de 49 regras (1) ...................... 78
Figura 67
Resposta de saída do sistema servo modular para o controlador de 49 regras (2) ...................... 79
Figura 68
Funções de pertença dos conjuntos da entrada, erro, para o controlador difuso de 9 regras ...... 80
Figura 69
Função de pertença dos conjuntos da entrada, variação do erro, para o controlador difuso de
9 regras
80
vi
Figura 70
Função de pertença dos conjuntos da saída para o controlador difuso de 9 regras .................... 81
Figura 71
Resposta de saída do sistema simulado melhorada para o controlador de 9 regras ................... 82
Figura 72
Resposta de saída do sistema servo modular para o controlador de 9 regras (1) ....................... 82
Figura 73
Resposta de saída do sistema servo modular para o controlador de 9 regras (2) ....................... 83
vii
viii
Índice de Tabelas Tabela 1
Resumo das acções dos ganhos de um controlador PID num sistema ......................... 21
Tabela 2
Resumo das regras de sintonização para a heurística de Z-N em malha aberta ........... 23
Tabela 3
Resumo das regras de sintonização para as regras de Z-N em malha fechada ............. 24
Tabela 4
Resumo dos valores dos coeficientes a e b para o controlador PI ................................ 25
Tabela 5
Resumo dos valores dos coeficientes a e b para o controlador PID ............................. 26
Tabela 6
Resumo dos parâmetros de sintonização ...................................................................... 36
Tabela 7
Resumo dos parâmetros de sintonização alterados para malha fechada ...................... 38
Tabela 8
Resumo dos parâmetros de sintonização ...................................................................... 48
Tabela 9
Resumo dos parâmetros de sintonização alterados para malha aberta ......................... 50
Tabela 10
Parâmetros do controlador PID actualizados ............................................................... 65
Tabela 11
Parâmetros do controlador PID actualizados ............................................................... 66
Tabela 12
Resumo dos parâmetros sintonizados através da heurística de Z-A............................. 69
Tabela 13
Regras difusas para o controlador de 49 regras ............................................................ 74
Tabela 14
Regras Difusas para o controlador de 9 regras ............................................................. 81
ix
1. OBJECTIVOS Neste relatório irão ser descritos os dois trabalhos práticos realizados nas aulas PL de Sistemas de Controlo Avançado. O primeiro trabalho tem como objectivo primário o controlo de velocidade de um sistema servo utilizando um controlador PID. Este sistema irá ser sujeito a inúmeros testes sendo depois analisadas as diversas respostas. Além do resultado final que será apresentado, fazem parte dos objectivos secundários: a análise, modelação, e identificação do sistema servo e aplicação das regras de Ziegler-Nichols em malha aberta e fechada. O segundo trabalho realizado consiste em controlar o sistema servo usando lógica difusa. Perceber e aplicar os conceitos associados aos sistemas de inferência difusa e implementálo através do MATLAB/Simulink. Analisar os sistemas difusos e perceber as implicações e vantagens/desvantagens de um controlo deste tipo.
11
2. INTRODUÇÃO Neste capítulo será feita uma breve descrição das tecnologias utilizadas e dos conceitos teóricos envolvidos na criação deste relatório.
2.1.
SISTEMA SERVO
Figura 1
Diagrama do sistema servo
12
O sistema servo consiste em vários módulos, montados numa régua metálica e ligados entre si através de pequenos acopladores. Os módulos são ligados em cadeia. O motor DC com o gerador taquimétrico aparece no topo da frente e o sistema de engrenagens com o disco de saída no topo de trás da régua metálica, conforme mostra a Figura 1. O motor DC pode ser acoplado com os seguintes módulos: módulo de inércia, módulo de travagem magnética, módulo de folga (i.e., backlash) e módulo de engrenagens (N = 100) com disco de saída. O deslocamento angular do veio do motor é medido através de um codificador incremental. O codificador pode ser colocado entre dois quaisquer módulos para medir o ângulo de rotação. O tacogerador está ligado directamente ao motor e gera uma tensão proporcional à velocidade angular.
Na realização destas duas experiências foi usada a seguinte configuração:
Motor DC com gerador de taquimétrico;
Módulo de inércia;
Módulo de codificador incremental;
Módulo de engrenagens com disco de saída.
A comunicação com o sistema é feita com o auxílio do MATLAB/SIMULINK. Para isso foi utilizado o modelo em tempo real dado na Figura 2.
Figura 2
Modelo em malha fechada do sistema servo, no SIMULINK
13
Este modelo é utilizado para os testes em malha fechada, mas que pode ser adaptado tanto para malha aberta (Figura 3), como para controlador difuso (Figura 4).
Figura 3
Figura 4
Modelo em malha aberta do sistema servo, no SIMULINK
Modelo do servo com controlador difuso, no SIMULINK
Depois de compilado, o módulo está pronto a ser utilizado.
Executados todos os testes, é necessário guardar os dados. Os valores obtidos serão guardados na variável VelCrtl colocada no espaço de trabalho do MATLAB, e que se encontra definida no osciloscópio (“Reference & Velocity Control”).
14
t = VelCtrl.time; ref = VelCtrl.signals(1).values(:,2); vel = VelCtrl.signals(1).values(:,1);
Com os comandos mencionados é possível decompor, no MATLAB, a variável VelCtrl nas variáveis de saída t, ref e vel para poderem ser analisados. Também se pode visualizar o gráfico da resposta ao degrau, correndo a rotina com os seguintes comandos:
plot(t,ref,'b') hold on plot(t,vel,'r') xlabel('tempo (s)') title('Entrada de referência (azul) - Velocidade (vermelho)')
2.2.
MODELO MATEMÁTICO
Na figura 5 ilustra-se o modelo linear do sistema com que estamos a trabalhar. Despreza-se tanto a indutância da armadura do motor como quaisquer atritos e a saturação.
15
Figura 5
Modelo matemático do motor DC
Sendo:
, a tensão aplicada;
, a corrente da armadura;
, a velocidade angular do rotor;
R, a resistência do enrolamento da armadura;
J, o momento de inércia das partes rotativas;
B, o coeficiente de atrito devido ao atrito viscoso;
, a força contra-electromotriz (f.c.e.m.); , o binário electromecânico.
Função de transferência do sistema:
16
2.3.
CONTROLADOR PID
Figura 6
Esquema de um controlador PID
O controlador PID é a forma mais comum de controlo por realimentação. Devido à sua simplicidade e excelente performance em muitas aplicações, estes controladores são usados em 95% dos processos industriais de malha-fechada [1]. Tal utilização deve-se ao facto de ser facilmente implementável, de baixo custo, versátil e capaz de alterar os comportamentos transitórios e de regime permanente dos processos sob controlo. Actualmente, a maioria dos processos automatizados que utilizam PLC’s (Programmable Logic Controller), possuem malhas de controlo de algoritmos PID, sendo responsabilidade dos engenheiros/técnicos a tarefa de sintonia dos parâmetros dos controladores. A sua adaptação às novas mudanças na tecnologia permitiu o aumento de recursos adicionais tais como o ajuste automático, a programação dos ganhos e a adaptação contínua. Muito resumidamente, este tipo de controlador calcula o erro entre o valor medido (set point) e o valor desejado, e tenta minimizá-lo ajustando as entradas que controlam o processo como sugere a figura 6. O cálculo da acção do controlador envolve, separadamente, três constantes: a proporcional (P), a integral (I), e a derivativa (D). A soma destes três componentes dá-nos a saída,
17
, do controlador e o seu algoritmo (1).
(
∫
)
Nos parágrafos seguintes irão ser analisados os efeitos provocados por cada uma das destas constantes e tipo de controlo que elas exercem.
2.3.1.
GANHO PROPORCIONAL
Figura 7
Exemplo do impacto dos ganhos proporcionais num sistema
Para se estabelecer um controlo proporcional é necessário que variar
e
, fazendo
. Neste tipo de controlo verifica-se que com o aumento do ganho proporcional, o
erro diminui. Analisando (2) pode-se comprovar isso mesmo, pois para um erro pequeno, se a constante Kp tiver um valor baixo o controlo irá ser praticamente inexistente não sendo possível colmatar o erro que ainda existe.
18
Por outro lado, um valor demasiado alto pode criar uma maior oscilação no sistema devido ao excesso de controlo quando o erro é baixo, não sendo possível que este estabilize. As conclusões retiradas da análise de (2) podem ser observadas na figura 7.
2.3.2.
GANHO INTEGRAL
Adicionando a parte integrativa, passa-se a ter um controlador do tipo Proporcional Integral – PI. Irá ser considerado o ganho proporcional constante, variando apenas a constante de tempo integral – Ti. A saída associada a este tipo de controlador passará a ser (3).
(
∫
)
A acção da parte integrativa aumenta com a diminuição de Ti porque o ganho desta componente é dado por (4).
.
A grande vantagem da adição da constante integrativa é a eliminação do erro do valor final. Porém todos os erros anteriores são aumentados, causando um grande overshoot se a sua acção for elevada, ou seja, Ti baixo.
19
Figura 8
Exemplo do impacto de um ganho integrativo num sistema
Enquanto que a parte proporcional considera o valor de e(t) em cada momento, o termo integrativo considera a “história” do erro, por quanto e quanto tempo esteve afastado do ponto final. É de notar que na Figura 8, o integral de cada porção a sombreado tem o mesmo sinal que o erro. Assim o soma do integral cresce quando e(t) é positivo e diminui quando é negativo.
2.3.3.
GANHO DERIVATIVO
Por último, e com a adição da componente derivativa, obtém-se uma saída do controlador, u(t), igual ao do PID (1). A derivada do erro do processo é calculada através do declive do erro ao longo do tempo e depois multiplicada pelo ganho derivativo Kd (5).
20
Esta componente pode ser analisada com a previsão dos erros futuros, pois ao calcular o declive do erro, ou seja, o ritmo de alteração provocado pelo controlador no sistema, o ganho derivativo torna essas mesmas mudanças mais lentas, o que por consequência torna também mais lenta a saída do controlador. Na prática, o controlo derivativo permite reduzir o overshoot provocado pelo ganho integrativo, e melhora a estabilidade do sistema. No entanto, também existem desvantagens no uso desta componente. Pode-se verificar não só um aumento no tempo de resposta do sistema se este ganho for demasiado grande, como também a destabilização do sistema, pois a derivada do sinal amplifica o ruído. Por isso mesmo são mais usadas aproximações a diferenciadores com larguras de banda limitadas. Em resumo a tabela 1 mostra o impacto do aumento dos diversos ganhos num sistema:
Tabela 1
Resumo das acções dos ganhos de um controlador PID num sistema
Parâmetros Tempo de subida
2.4.
Overshoot
Tempo de estabilização
Erro final
Estabilidade
Kp
Diminui
Aumenta
Ligeira mudança
Diminui
Degrada
Ki
Diminui
Aumenta
Aumenta
Elimina
Degrada
Kd
Alteração mínima
Diminui
Diminui
Não altera
Melhora se Kd pequeno
SINTONIA BASEADA EM HEURÍSTICAS
Para sintonizar um controlador é necessário ajustar todos os ganhos em causa de acordo com a resposta pretendida. A estabilidade é requisito quase obrigatório, mas à parte disso, existem sistemas com diferentes comportamentos, diferentes requisitos, etc. Existem vários métodos de sintonia de um controlador mas não conclusões sobre qual é o melhor, pois cada um deles pode ser eficiente para um sistema específico. Apenas é
21
possível concluir que alguns são melhor que outros na rejeição de perturbações e/ou robustez [2]. Apesar de grande variedade de formas de sintonia, apenas se irão aqui retractar dois métodos heurísticos pois são estes os aplicados na primeira experiência realizada relativa a controladores PID.
2.4.1.
MÉTODO DE SINTONIA ZIEGLER-NICHOLS
Zegler e Nicholis (1942) propuseram um método baseado na resposta do processo a uma excitação em degrau (malha-aberta) e regra de sintonia baseado no ganho crítico Kcrítico e no período crítico Pcrítico (malha-fechada). Na primeira experiência foram usadas estas duas formas de sintonia que irão ser explicadas de seguida. O primeiro, sintonia do controlador por malha aberta, pode ser visto como método tradicional baseado em modulação e controlo, onde se assume um modelo matemático de 1ª ordem com atraso de transporte para o sistema. Inicialmente é aplicado um degrau ao sistema. Um exemplo de resposta pode ser o da Figura 9.
Figura 9
Esquematização dos parâmetros de sintonia em malha aberta
22
Depois de registada a saída, o passo seguinte será calcular o ponto de maior declive positivo, ou seja, o ponto máximo da derivada. Achado o respectivo ponto e a sua derivada (m), usa-se a equação de uma recta (6) para saber em que ponto esta se intersecta com o eixo dos yy (b).
A partir da equação é possível traçar a recta ao longo do gráfico e saber em que ponto, no tempo, se intersecta tanto com o valor inicial como o valor final. Na figura 9, o valor de L interpreta-se como o atraso do sistema, T simboliza a constante de tempo do sistema, e K o ganho do sistema calculado pela entre a origem e o valor final do sistema em regime permanente. Com estes valores o processo irá ser modulado para a equação (7) que deverá produzir uma resposta idêntica ao sistema real.
Através destes valores calculados pode-se sintonizar os tipos de controlador encontrados na tabela 2, sabendo que a R é o declive da recta tangente pois (8). Será necessário recorrer a (7) e (8), para calcular os ganhos das componentes integrativa e derivativa, para os controladores PI e PID, respectivamente.
Tabela 2
Resumo das regras de sintonização para a heurística de Z-N em malha aberta
Tipo de controlador
Kp
Ti
Td
P
0
PI
0
PID
2L
23
0.5L
O segundo método, sintonia de controlador em malha-fechada, é baseado nas características da resposta transitória do processo para a determinação dos parâmetros Kp, Ti e Td.
Figura 10 Esquematização dos parâmetros da sintonia em malha fechada
No início, o controlo do sistema é feito com um controlador proporcional. Procede-se então ao aumento gradual do valor da acção de controlo proporcional até achar o valor do ganho para qual o sistema entra numa oscilação estável. Este ganho é o ganho crítico (chamado de Ku ou Kc), e o período da onda é o período crítico (chamado de Pu ou Pc). Por último são calculados os parâmetros pretendidos de acordo com as fórmulas da tabela 3 e do tipo de controlo que se pretende exercer.
Tabela 3
Resumo das regras de sintonização para as regras de Z-N em malha fechada
Tipo de controlador
Kp
Ti
Td
P
0
PI
0
PID
24
2.4.2.
MÉTODO DE SINTONIA DE ZHUANG-ATHERTON
Em 1993, Zhuang e Atherton conceberam um método prático para a sintonia de controladores PI e PID. Esta optimização é baseada no critério de integral do erro. São utilizados alguns índices de desempenho para a avaliação da sintonia dos controladores, como por exemplo: integral do erro quadrático (ISE), integral do erro quadrático multiplicado pelo tempo (ISTE), etc.
Os parâmetros de sintonia são obtidos quando o modelo do processo é dado por uma função de transferência de primeira ordem com um tempo de atraso expresso por (9).
Para o controlo PI, os ganhos são determinados através das fórmulas (10) e (11).
( )
( )
Onde para os diferentes valores L/T, os coeficientes (a, b) são definidos de acordo com a tabela 4. Tabela 4
Resumo dos valores dos coeficientes a e b para o controlador PI
25
Para o controlador PID, os seus ganhos são determinados usando as formulas (10), (11) e ainda (12).
( )
Por fim, dependendo do tipo de índice de desempenho a usar verifica-se na tabela 5 o valor dos coeficientes (a, b).
Tabela 5
2.4.3.
Resumo dos valores dos coeficientes a e b para o controlador PID
CONTROLADOR DIFUSO
Figura 11 Esquemático de um sistema difuso
26
Fuzzy significa algo confuso, impreciso, vago, e por isso mesmo é usado este conceito para exprimir ideias que não são passíveis de ser descritas por outras lógicas. As grandezas deste tipo de controlo podem ter diferentes valores e fronteiras, de um sujeito para o outro, como quente, morno, frio, alto, baixo, etc. A incerteza pode ser tratada de várias formas, uma dessas formas é a lógica difusa.
A lógica difusa foi sofrendo várias mudanças ao longo tempo, mas o seu verdadeiro nascimento surgiu com um matemático chamado Lotfi A. Zadeh, professor da Universidade de Berkeley em 1965. Ele introduziu a ideia de fuzzy como uma tentativa de imitar o controlo humano. Nesta lógica, tudo é, ou é permitido ser, parcial; tudo é, ou é permitido ser, impreciso; tudo é, ou é permitido ser, granular; tudo é, ou é permitido ser, baseado na percepção [4]. A introdução dos dados e dos conhecimentos em sistemas que usam esta lógica difusa é mais fácil e próxima da experiência quotidiana, e os seus resultados demonstram a verdadeira incerteza que temos.
Dentro dos tipos de controladores que existem apenas irá ser estudado o controlador de Mamdani. Este é o mais conhecido e usado. Não existem muitas diferenças entre os controladores difusos, mas no controlo exercido pelo de Mamdani as regras são colocadas num único nível, pelo que não acontece encadeamento. Isto significa que apenas existe a diferença entre os diversos tipos controladores difusos no processo de desfuzificação e que todo o resto do processo é partilhado por todos os outros controladores. Nos controladores difusos, ou seja, os que utilizam lógica difusa, é necessário definir os conjuntos ou as chamadas variáveis linguísticas, que serão atribuídos no intervalo [0,1]. O valor do conjunto num ponto será o seu grau de pertença (membership). Ao longo do universo de trabalho cada conjunto terá diferentes graus de pertença, ou seja, serão criadas funções de pertença para cada variável que se estabelece. Estas podem ter diferentes formas como triangular ou rectangular, entre outras. Na figura 12, observam-se três conjuntos num universo de trabalho em que se compara valores de alturas.
27
Figura 12 Exemplo de um universo de trabalho de um controlador difuso
Cada variável e função atribuída, respectivamente, são criadas por um sujeito que lhe atribui um significado linguístico e um contexto, que pode não ser dado por outro. O que confere ao processo de criação de variáveis um elevado grau de subjectividade.
Até aqui foi descrita a transformação que os dados sofrem até se tornarem dados difusos fuzificação. O passo seguinte do controlador fuzzy representado na figura 11 é a elaboração das operações que irão exercer o controlo sobre o processo. Controlo este que é baseado em regras, denominadas por inferência difusa, do tipo SE X ENTÃO Y, sendo X referente às entradas do controlador e Y às saídas. O número e tipo de regras irão ser, respectivamente, definidos pelo número de conjuntos e entradas que são criados. A cada entrada do controlador criada são-lhe atribuídos conjuntos difusos como já foi analisado acima. A quantidade de conjuntos no universo de trabalho é proporcional à precisão do controlador. O sistema, depois do processo de fuzificação, analisa as regras para saber o tipo de acção a exercer. As regras baseiam-se numa condição, verdadeira ou falsa, que compara o estado das entradas do controlador, estado esse, que é representado pelos conjuntos difusos. Uma das vantagens destes sistemas é permitirem mais que uma só entrada ou saída de dados. Por exemplo, caso sejam duas entradas e uma saída, as regras passaram a ser SE X E Z ENTÃO Y ou SE X OU Z ENTÃO Y, dependo do operador e considerando que se pretende incluir as duas variáveis na regra.
28
Relativamente as saídas, acontece um processo contrário ao da fuzificação, a desfuzificação, ou seja, Y será um determinado conjunto difuso no espaço de acção do controlador, sendo as funções de cada um definidas também pelo utilizador. A única diferença relativamente à fuzificação, é que este processo terá que levar em conta as regras já elaboradas e encontrar a resposta de saída que corresponde ao colapso de todas as regras.
Na figura 13, é possível resumir o processo da desfuzificação e como este vai ser afectado pelos processos precedentes.
O operador escolhido em cada regra afecta a saída final. Se o operador for AND, o valor de pertença atribuído ao conjunto de saída será o mais baixo. Se o operador for OR, o valor de pertença atribuído ao conjunto de saída será o mais alto. Estas afirmações são apenas válidas se forem usados os parâmetros predefinidos, como na segunda experiência realizada.
Depois de achada a resposta a cada regra é necessário soma-las e encontrar o ponto que corresponde à saída. Na gama de valores que compõe a acção a realizar no sistema é calculado esse ponto. Existem 5 métodos de colapsagem suportados no MATLAB: centroid, bissector, middle of maximum, largest of maximum, e smallest of maximum. Mas apenas irá ser abordado o primeiro e mais usado, centroid ou centro de massa, pois será o utilizado na segunda experiência. Tal como o nome indica o ponto do colapsagem usado será o centro da área.
29
Figura 13 Processo de desfuzificação
30
3.
EXPERIÊNCIAS REALIZADAS
Foram propostos dois guiões onde eram descritas várias experiências a executar no sistema servo.
3.1.
GUIÃO 1
São apresentadas de seguida as principais conclusões e resultados retirados da execução do primeiro guião cujo objectivo principal passou pelo controlo da velocidade do dito sistema através da utilização de um controlador PID.
3.1.1.
SINTONIA DO CONTROLADOR PID EM MALHA-FECHADA
Na primeira experiência foram utilizadas as heurísticas de Ziegler-Nichols em malha fechada para fazer a sintonia do referido controlador. Como já foi mencionado anteriormente, o processo de sintonia tem como resultado final as constantes Kp, Kd e Ki que serão posteriormente aplicadas no sistema de controlo do servo para observar a melhor resposta possível deste a um degrau na entrada de referência.
31
O primeiro passo na sintonização do controlador utilizando a heurística de Z-N é a determinação do ganho crítico (Kc). Para achar este ganho foram feitas alterações ao sistema de controlo do servo, nomeadamente a utilização em malha fechada de um controlador apenas com ganho proporcional. Este ganho foi então incrementado gradualmente até que fossem observáveis oscilações por parte do motor com período e amplitude constantes. A figura 14 representa a velocidade do motor e o degrau de entrada em função do tempo observado para um ganho crítico de 0.0856.
Figura 14 Gráfico obtido no sistema servo para um ganho critico de 0.0856
A partir dos dados retirados da experiência foi possível recorrer ao MATLAB para determinar o segundo parâmetro necessário à sintonia do controlador, o Pc ou período critico. Foi desenvolvida uma função que através dos vectores da velocidade e do tempo retirados do gráfico da figura 14 apresenta como saída o Kc e o Pc. É mostrado de seguida o código da função mencionada.
function [Kc, Pc] = id_zn_mf(t, vel, Kc) % Obtenção dos parâmetros Kc e Pc aplicando as % regras de Ziegler-Nichols em malha fechada bloquear = 0; n = 1;
32
max = zeros(18,1); total = 0; for i=2:length(vel) a = vel(i-1); b = vel(i); if(vel(i) >= 0) if(bloquear == 0) if(b < a && vel(i) > 0) max(n)= i; n = n + 1; bloquear = 1; end end if(b > a) bloquear = 0; end end i = i + 1; end for i=6:length(max) sub = t(max(i))-t(max(i-1)); total = total + sub; end Pc = total/(length(max) - 5); Kc = 0.0856; end
Esta função começa por percorrer o vector da velocidade à procura dos pontos máximos, armazenando a sua localização no novo vector “max”. Terminada esta fase, procede-se ao cálculo do período crítico através da consulta do vector do tempo nas localizações especificadas no novo vector, ou seja, desta forma é retirado o instante temporal onde acontece a amplitude máxima das oscilações. Sabendo estes tempos é possível fazer a subtracção entre dois máximos consecutivos com o intuito de determinar o período crítico. Como é possível ver na figura 14, apenas a partir do sexto pico as oscilações se tornam visivelmente constantes, optou-se então por descartar todos os períodos anteriores a este ponto. No fim desta função o período critico devolvido trata-se então da média dos períodos calculados entre cada um dos máximos. Na figura 15 é possível observar os parâmetros de saída da função.
33
Figura 15 Parâmetros de saída da função id_zn_mf observados no MATLAB
Com os parâmetros Kc e Pc determinados tornou-se possível sintonizar o controlador PID através da aplicação das regras de Z-N em malha fechada mostradas na tabela 3 e das equações (13). Estas equações representam a estrutura alternativa do PID e auxiliam no calculo dos parâmetros do PID uma vez que as regras de Z-N devolvem as constantes de tempo integrativos e derivativos e no modelo real do sistema devem se inseridos os ganhos constantes de cada acção de controlo.
Para tal foi elaborada uma nova função em MATLAB que recebesse o ganho e o período crítico e devolvesse os parâmetros do controlador (Kp, Ki e Kd) e também a sua função de transferência. A função em questão permite também inserir uma opção que controla o tipo de sintonização executada, isto é, se são determinados os parâmetros para um controlador apenas proporcional (P), proporcional-integrativo (PI) ou proporcional-integrativoderivativo (PID). O código desta função encontra-se em baixo.
function [Kp, Ki, Kd, Gc] = zn2(Kc, Pc, op) % % Sintonia dos controladores PID usando % as regras de Ziegler-Nichols em malha fechada
34
% s=tf('s'); switch op case 1 disp('Controlador P') Kp = 0.5*Kc; Ti = inf; Ki = Kp/Ti; Td = 0; Kd = Td * Kp; Gc = Kp; case 2 disp('Controlador PI') Kp = 0.45*Kc; Ti = (1/1.2*Pc; Ki = Kp/Ti; Td = 0; Kd = Td * Kp; Gc = Kp*(1+(1/(Ti*s))); case 3 disp('Controlador PID') Kp = 0.6*Kc; Ti = (1/2*Pc; Ki = Kp/Ti; Td = (1/8)*Pc; Kd = Td * Kp; Gc = Kp*(1+(1/(Ti*s))+Td*s); end end
Na figura 16 são mostradas as saídas do MATLAB para as três sintonizações possíveis descritas anteriormente, respectivamente para um controlador do tipo P, do tipo PI e do tipo PID.
Figura 16 Parâmetros devolvidos pela função de sintonização zn2 no MATLAB
35
Tabela 6
Resumo dos parâmetros de
A tabela 6 apresenta um resumo dos
sintonização
valores obtidos no MATLAB (figura 16)
Tipo de controlador
para a sintonização do controlador. Estes
P
PI
PID
valores são inseridos posteriormente no
Kp
0.0428
0.0385
0.0514
sistema servo para observar a sua resposta.
Ki
0
0.0621
0.1380
Kd
0
0
0.0048
Parâmetros
Os três gráficos (um para cada tipo de controlador) são apresentados de seguida.
Figura 17 Resposta do sistema para um controlador do tipo P em malha fechada
36
Figura 18 Resposta do sistema para um controlador do tipo PI em malha fechada
Figura 19 Resposta do sistema para um controlador do tipo PID em malha fechada
Através desta primeira experiência foi possível verificar o impacto das três acções de um controlador PID num sistema. Na figura 17, onde é apresentado o resultado gráfico da saída de um sistema controlado apenas por uma componente proporcional é visível um erro em regime permanente. Isto
37
acontece pois o valor da referida componente não é elevada o suficiente para eliminar o erro, o que implica uma ausência de controlo no sistema. Na figura 18, é adicionada uma componente integrativa ao controlador. Esta nova adição foi responsável por eliminar o erro em regime permanente da saída, mas à custa de uma maior instabilidade e de um maior overshoot Isto acontece pois este parâmetro acumula a soma de todos os erros anteriores, ao contrário da parte proporcional onde o erro é apenas considerado em cada instante. Na figura 19, a adição da terceira componente, a derivativa, promoveu uma redução do overshoot e bastante mais estabilidade ao sistema sem afectar o valor final da saída. Isto deve-se ao facto da acção de controlo derivativa contrariar os termos proporcionais e integrativos quando a saída se encontra a variar rapidamente.
Como experiência adicional para a heurística de Z-N em malha fechada foi proposta a alteração dos parâmetros de sintonização resumidos na tabela 6 para cada um dos diferentes controladores com o objectivo de estudar o impacto no sistema dos mesmos, nomeadamente:
Tabela 7
Resumo dos parâmetros de sintonização alterados para malha fechada
Parâmetros
Tipo de controlador P
Kp
Ki
Kd
x2
0,0856
/2
0,0214
PI
x2
0,1242
/2
0,03105
PID
x2
0,0096
/2
0,0024
São apresentados de seguida as simulações efectuadas no sistema servo para os valores mencionados na tabela 7.
38
Figura 20 Resposta para metade do ganho proporcional num controlador P em malha fechada
Figura 21 Resposta para o dobro do ganho proporcional num controlador do tipo P em malha fechada
39
Figura 22 Resposta para metade do ganho integrativo num controlador PI em malha fechada
Figura 23 Resposta para o dobro do ganho integrativo num controlador PI em malha fechada
40
Figura 24 Resposta para metade do ganho derivativo num controlador PID em malha fechada
Figura 25 Resposta para o dobro do ganho derivativo num controlador PID em malha fechada
Com estas novas simulações foi possível verificar o impacto do aumento e diminuição de cada um dos ganhos num controlador PID.
41
Relativamente ao controlador proporcional, a redução para metade retirou ainda mais controlo ao sistema em relação ao valor sintonizado através das heurísticas cujo resultado foi apresentado na figura 17. A ausência do referido controlo fez com que o sistema ficasse incapacitado de compensar o erro em regime permanente existente. No teste com o dobro do ganho proporcional foi comprovado que também não é benéfico que esta componente seja muito elevada, pois cria um estado de excesso de controlo fazendo com que o sistema não consiga atingir a estabilidade. Na figura que representa o gráfico desta experiencia o sistema encontra-se a oscilar próximo do estado crítico. Na redução para metade da componente integrativa relativamente ao observado na figura 18, continuou-se a verificar a eliminação total do erro em regime permanente, com o benefício adicional de que o tempo de estabilização foi reduzido bem como o overshoot. É possível concluir que a componente integrativa cujo objectivo principal é complementar a componente proporcional na eliminação do erro deve ter um valor que lhe permita atingir este objectivo sem comprometer a resposta do sistema. No caso do aumento para o dobro da componente integrativa, é notada uma elevada instabilidade no sistema. Como já foi mencionado a componente integrativa faz a soma dos erros anteriores do sistema, sendo que esta soma aumenta quando o erro é positivo e diminui quando é negativo. Devido à instabilidade do sistema não pode haver esta compensação, isto é, o overshoot negativo continuou a adicionar à soma enquanto o overshoot positivo fazia a sua diminuição, fazendo com que o sistema entre em oscilação constante indefinidamente. Para o dobro do ganho derivativo há um amortecimento mais acentuado do overshoot relativamente à registada na figura 19 onde foram experimentados os valores da sintonização. O maior valor desta componente tornou as variações do sistema mais lentas permitindo que este se adapte melhor ao valor final pretendido. Outro dos aspectos que merecem analise nesta experiencia são as respostas do sistema servo apresentadas na figura 24 e 22, respectivamente controlador PI com metade do ganho integrativo e controlador PID com metade do ganho derivativo. É possível visualizar na figura 24 que apesar da adição da componente derivativa ao controlador a resposta tornouse mais instável, com um overshoot e tempo de estabilização maiores que na figura 22. É possível concluir que tal acontece devido ao elevado valor da componente integrativa
42
obtida através da sintonização para o controlador PID (o seu valor é mais do dobro daquele que foi obtido para o controlador PI). Apesar de o controlador PID possuir a componente derivativa, esta a metade do valor não é suficiente para amortecer a resposta do sistema.
3.1.2.
SINTONIA DO CONTROLADOR PID EM MALHA-ABERTA
Na segunda experiência proposta serão também utilizadas as heurísticas de Z-N para sintonizar o controlador PID mas desta vez através do uso das regras em malha aberta. Na heurística mencionada, o primeiro passo é utilizar o modelo do sistema servo em malha aberta semelhante ao da figura 14 para visualizar a resposta deste a um degrau unitário de entrada. A figura 26 representa a resposta mencionada.
Figura 26 Resposta do sistema servo para uma entrada de 1 rad/s
Como mencionado neste relatório, na heurística de Z-N em malha aberta é necessário determinar os parâmetros K, L e T a partir dos dados da figura 26. Estes parâmetros
43
correspondem à função de transferência de primeira ordem com atraso que produz, quando implementada, uma resposta aproximada ao sistema real. Para determinar os parâmetros foi elaborada uma função em MATLAB que recebe os vectores u e vel e retorna o K, L e T bem como a função de transferência. A função mencionada é apresentada de seguida.
function [K, L, T, G] = id_zn_ma(u, vel) % % Identificação da curva de resposta % ao degrau do sistema servo % somaK = zeros(301,1); derivada = zeros(1001,1); n = 1; for i=700:length(vel) somaK(n) = vel(i,2); n = n + 1; i = i + 1; end K = mean(somaK); derivada = diff(vel(:,2))./diff(vel(:,1)); [declive pos_declive] = max(derivada); derivada_eixo_x = vel(pos_declive,1); derivada_eixo_y = vel(pos_declive,2); intersecao_eixo_y = derivada_eixo_y - declive*derivada_eixo_x; intersecao_eixo_x = -intersecao_eixo_y/declive; L = intersecao_eixo_x; valor_em_x_intersecao_com_K = (K - intersecao_eixo_y)/declive; T = valor_em_x_intersecao_com_K - L; s=tf('s'); G=(K*exp(-L*s))/(T*s+1); end
O primeiro parâmetro a ser calculado nesta função é o K que se trata do valor final da velocidade para o qual a saída do sistema tende em regime permanente. Uma vez que a resposta do sistema mostrada na figura 26 apenas fica visivelmente estável na segunda metade do tempo de simulação, optou-se por apenas usar os dados para o cálculo deste parâmetro a partir do ponto referido. Por consequência é feita uma média de todos os valores do vector vel a partir da posição 700 (sendo que o comprimento total do vector é 1501), determinando assim o parâmetro K.
44
Seguidamente é calculado o L que é definido como o atraso do sistema. Como se pode ver na figura 9, o L é considerado o valor na qual a recta tangente ao ponto de inflexão da função se intersecta com o eixo t. O primeiro passo para o cálculo deste parâmetro é então a determinação do ponto de inflexão. Como é conhecido da matemática um ponto de inflexão numa função acontece no ponto máximo da sua derivada, pelo que através do MATLAB procede-se à derivação ponto a ponto da função em questão através da expressão diff. Sabendo assim a posição desse ponto e o seu valor é possível através de uma equação da recta determinar as intersecções com os eixos das coordenadas, nomeadamente com o referido eixo t. Por fim é calculado o parâmetro T, que se trata da constante de tempo do sistema. Através da figura 9 é possível ver que este parâmetro é a diferença entre dois tempos, nomeadamente o tempo em que acontece a intersecção da recta tangente como o K e o tempo em que acontece a intersecção da mesma recta com o eixo t, ou seja, o valor do parâmetro L.
Figura 27 Saída da função id_zn_ma observada no MATLAB
Através dos parâmetros calculados com a função id_zn_ma é possível desenhar a aproximação linear à resposta do sistema servo para malha aberta. O código utilizado no MATLAB para executar a representação gráfica mencionada é o seguinte.
45
%% Esboçar a resposta em malha aberta e a aproximação linear tempo=vel(:,1); velocidade=vel(:,2); plot(tempo,velocidade,'b', [0 L L+T tempo(end)], [0 0 K K], 'r') title('ZN - Resposta em Malha Aberta') ylabel('Velocidade'); xlabel('Tempo'); legend('Sinal Exacto','Aproximação Linear')
Figura 28 Representação da aproximação linear e da resposta do sistema servo em malha aberta
Com os parâmetros K, L e T determinados tornou-se possível sintonizar o controlador PID através da aplicação das regras de Z-N em malha aberta apresentadas na tabela 2 e também das equações (13). Para tal foi elaborada uma nova função em MATLAB que através desses parâmetros, devolvesse os valores das acções de controlo do controlador (Kp, Ki e Kd) e também a sua função de transferência. A função em questão permite também inserir uma opção que controla o tipo de sintonização executada, isto é, se são determinados os parâmetros para um controlador apenas proporcional (P), proporcional-integrativo (PI) ou proporcional-integrativo-derivativo (PID). O código desta função encontra-se em baixo.
function [Kp, Ki, Kd, Gc] = zn1(K, L, T, op) % % Sintonia dos controladores PID usando % as regras de Ziegler-Nichols em malha aberta
46
% s = tf('s'); R = K/T; switch op case 1 disp('Controlador P') Kp = 1/(R*L); Ti = inf; Ki = Kp/Ti; Td = 0; Kd = Td * Kp; Gc = Kp; case 2 disp('Cotrolador PI') Kp = 0.9/(R*L); Ti = (L/0.3); Ki = Kp/Ti; Td = 0; Kd = Td * Kp; Gc = Kp*(1+(1/(Ti*s))); case 3 disp('Controlador PID') Kp = 1.2/(R*L); Ti = (2*L); Ki = Kp/Ti; Td = (0.5)*L; Kd = Td * Kp; Gc = Kp*(1+(1/(Ti*s))+Td*s); end end
Na figura 29 são mostradas as saídas do MATLAB para as três sintonizações possíveis descritas anteriormente, respectivamente para um controlador do tipo P, do tipo PI e do tipo PID.
Figura 29 Parâmetros devolvidos pela função de sintonização zn1 no MATLAB
47
Resumo dos parâmetros de
A tabela 8 apresenta um resumo dos
sintonização
valores obtidos no MATLAB (figura 29)
Tipo de controlador
para a sintonização do controlador. Tal
P
PI
PID
como na experiencia em malha fechada
Kp
0,0363
0,0326
0,0435
estes valores são inseridos posteriormente
Ki
0
0,0535
0,1188
no sistema servo para observar a sua
Kd
0
0
0,004
resposta. Os três gráficos (um para cada
Tabela 8
Parâmetros
tipo de controlador) são apresentados de seguida.
Figura 30 Resposta do sistema para um controlador do tipo P em malha aberta
48
Figura 31 Resposta do sistema para um controlador do tipo PI em malha aberta
Figura 32 Resposta do sistema para um controlador do tipo PID em malha aberta
49
De modo análogo à experiencia em malha fechada, foi proposta como experiência adicional para a heurística de Z-N em malha aberta, a alteração dos parâmetros de sintonização resumidos na tabela 8 para cada um dos diferentes controladores com o objectivo de estudar o impacto no sistema dos mesmos, nomeadamente:
Controlador P – efectuar os testes no sistema para metade e para o dobro do ganho proporcional;
Controlador PI – efectuar os testes no sistema para metade e para o dobro do ganho integrativo, mantendo o proporcional;
Controlador PID – efectuar os testes no sistema para metade e para o dobro do ganho derivativo, mantendo o proporcional e o integrativo.
Tabela 9
Resumo dos parâmetros de sintonização alterados para malha aberta
Parâmetros
Tipo de controlador P
Kp
Ki
Kd
x2
0,0726
/2
0,01815
PI
x2
0,107
/2
0,02675
PID
x2
0,008
/2
0,002
São apresentados de seguida as simulações efectuadas no sistema servo para os valores mencionados na tabela 9.
50
Figura 33 Resposta para metade do ganho proporcional num controlador do tipo P em malha aberta
Figura 34 Resposta para o dobro do ganho proporcional num controlador do tipo P em malha aberta
51
Figura 35 Resposta para metade do ganho integrativo num controlador do tipo PI em malha aberta
Figura 36 Resposta para o dobro do ganho integrativo num controlador do tipo PI em malha aberta
52
Figura 37 Resposta para metade do ganho derivativo num controlador do tipo PID em malha aberta
Figura 38 Resposta para o dobro do ganho derivativo num controlador do tipo PID em malha aberta
53
3.1.3.
COMPARAÇÃO DAS HEURÍSTICAS UTILIZADAS
Neste ponto será feita uma análise sobre os resultados obtidos nos dois pontos anteriores, nomeadamente a sintonização do controlador PID através das regras de Z-N em malha fechada e malha aberta.
Nestes dois pontos foram utilizados dois métodos diferentes para atingir um objectivo, sendo esse a referida sintonização do controlador. Relativamente aos métodos de aquisição dos dados para realizar a sintonia isto foi possível graças à versatilidade do servo, que permite que o seu modelo de controlo em tempo real seja alterado à descrição do utilizador. Foi assim possível estudar dois sistemas que podem ser implementados num vasto número de aplicações. Num caso prático, a heurística em malha aberta pode ser utilizada para achar os parâmetros de sintonia de um sistema sem realimentação onde se planeia implementar uma malha de controlo no futuro. Este método permite elaborar uma aproximação linear a partir de um modelo real não linear, e que pode ser utilizado posteriormente para calcular os valores das acções de controlo através de métodos de cálculo usados em sistemas lineares. Por consequência, não há garantia que ao aplicar o controlo, o sistema se comporte conforme desejado. No caso da heurística em malha fechada os cálculos para os valores de sintonia são efectuados a partir de uma resposta na qual o sistema se encontra imediatamente acima do funcionamento desejável, ou seja, em oscilação constante. Ao observar as repostas do sistema na secção 3.1.1 e 3.1.2 pode-se concluir que os valores calculados dos parâmetros não devem ser considerados um valor final, pelo que numa situação real estes devem ser sempre alvo de afinação. Relativamente a estes valores de sintonização que se encontram na tabela 6 e 8, era de esperar a diferença entre ambos, pois tanto os dados do sistema como as heurísticas aplicadas são distintos.
54
Seguidamente são apresentados três gráficos onde são sobrepostas as respostas obtidas para os valores sintonizados através dos dois métodos, nomeadamente as respostas do controlador P, PI e PID.
Figura 39 Resposta do sistema para os valores proporcionais obtidos em malha fechada e malha aberta
Figura 40 Resposta do sistema para os valores integrativos obtidos em malha fechada e malha aberta
55
Figura 41 Resposta do sistema para os valores proporcionais obtidos em malha fechada e malha aberta
Analisando os gráficos é possível tecer conclusões sobre as regras de sintonia das duas heurísticas. Nos gráficos do controlador P o valor ligeiramente maior do parâmetro proporcional na malha fechada faz com que este sistema tenha capacidade também para eliminar ligeiramente mais o erro do que o controlador P em malha aberta. No controlador PI o maior valor integrativo resultante da sintonização em malha fechada degradou a estabilidade do sistema, pois o maior overshoot fez com que a soma do erro provocado pelo parâmetro integral aumentasse, aumentando também por consequência o tempo de estabilização. No controlador PID é aparente o menor tempo de estabelecimento do sistema sintonizado em malha aberto devido à acção do parâmetro derivativo sobre a componente integrativa.
56
3.1.4.
SIMULAÇÃO DO SISTEMA SERVO
Neste ponto do guião o objectivo passou pela criação de um modelo no MATLAB/SIMULINK que permitisse testar os parâmetros sintonizados através das heurísticas em malha aberta de Z-N. O modelo em questão é representado na figura 42 e é composto por:
Uma entrada em degrau;
Um controlador PID;
Um bloco de saturação para restringir o controlo do PID;
Um scope;
Uma função transferência e um atraso (transport delay).
O servo é modulado pela função transferência de primeira ordem com o atraso, sendo que os parâmetros que definem esta função, nomeadamente o K, L e T, são retirados da secção 3.1.2 com a ajuda da função id_zn_ma elaborada no MATLAB.
Figura 42 Modelo do sistema servo no SIMULINK utilizando uma função de primeira ordem com atraso
Tal como já mencionado neste relatório a função de transferência é responsável por modular uma aproximação ao sistema real, pelo que os parâmetros K e T nomeadamente o valor final e a constante de tempo de sistema devem ser introduzidos no bloco Transfer Fcn e o parâmetro L, o atraso do sistema, é introduzido no Transport Delay.
57
Após a elaboração do modelo este foi testado usando os parâmetros sintonizados através da heurística de Z-N em malha aberta representados na tabela 8. São apresentados de seguida os três gráficos, um para cada tipo de controlador.
Figura 43 Resposta do sistema simulado para um controlador P
Figura 44 Resposta do sistema simulado para um controlador PI
58
Figura 45 Resposta do sistema simulado para um controlador PID
Em todas as simulações efectuadas, é possível observar as diferenças existentes entre os gráficos retirados do modelo no MATLAB e os gráficos retirados do sistema real. Sendo o modelo elaborado baseado numa função de transferência de primeira ordem com atraso que tenta simular o sistema servo através de uma aproximação linear os resultados obtidos através das simulações nunca serão coincidentes com os gráficos observados na secção 3.1.2.
59
Adicionalmente de modo análogo à secção 3.1.2, foram testados no modelo os parâmetros de controlo da tabela 9, onde as constantes proporcional, integrativa e derivativa variavam para o dobro e para metade do seu valor, respectivamente nos controladores P, PI e PID. Os gráficos destes testes são apresentados de seguida.
Figura 46 Resposta do sistema simulado para um controlador P com metade do ganho proporcional
Figura 47 Resposta do sistema simulado para um controlador P com o dobro do ganho proporcional
60
Figura 48 Resposta do sistema simulado para um controlador PI com metade do ganho integral
Figura 49 Resposta do sistema simulado para um controlador PI com o dobro do ganho integral
61
Figura 50 Resposta do sistema simulado para um controlador PID com metade do ganho derivativo
Figura 51 Resposta do sistema simulado para um controlador PID com o dobro do ganho derivativo
62
3.1.5.
ANÁLISE E CORRECÇÃO DO OVERSHOOT
Neste ponto foi efectuado um estudo sobre o sistema servo controlado através de um PID sintonizado com as regras da heurística de Z-N em malha fechada. A resposta do sistema à sintonização mencionada pode ser encontrada na figura 19. Numa primeira fase procedeuse ao cálculo do overshoot desta resposta. Foi elaborada uma função em MATLAB que recebe os vectores t e vel e retorna o valor do overshoot em percentagem. O código desta função é mostrado de seguida.
function Mp = calc_ov (t, vel) % % Cálculo do overshoot da resposta % de saída % somaK = zeros(801,1); n = 1; for i=700:length(vel) somaK(n) = vel(i,1); n = n + 1; i = i + 1; end K = mean(somaK); [max_point_y max_point_x] = max(vel); Mp = ((max_point_y-K)/K)*100; end
É chamado de overshoot à primeira oscilação de uma função que ultrapassa o valor final pretendido. Com isto em mente, a função elaborada começa por percorrer o vector vel a partir de uma posição onde a resposta seja visivelmente estável, isto é, coincida com o degrau de entrada de referência sem erro em regime permanente. É feita uma média dos valores no vector a partir do ponto mencionado e considerado esse como o valor final K.
63
Seguidamente usa-se a expressão max para achar o valor em xx e yy onde a velocidade foi máxima. Por fim é feito o cálculo do overshoot utilizando a equação (14).
A saída da função calc_ov no MATLAB é apresentada na figura 52.
Figura 52 Saída da função calc_ov no MATLAB
Seguidamente foi proposta uma nova simulação do controlador PID no modelo do servo em tempo real tendo por objectivo a diminuição do overshoot para menos de 20% através da alteração dos parâmetros de sintonização obtidos das regras de Z-N em malha fechada. Tendo por base conhecimentos adquiridos à priori e que permitiram a criação da tabela 1, os parâmetros mais indicados para serem alterados eram já conhecidos no inicio da simulação. Começou-se por procurar aumentar o valor da componente derivativa mantendo as restantes constantes, tendo sido obtido um factor de 3.2, isto é, a multiplicação do parâmetro derivativo obtida através da sintonização por 3.2 fez com que a resposta do sistema observada apresentasse um overshoot imediatamente inferior ao pretendido. A resposta do sistema para o valor mencionado é apresentada na figura 53.
64
Tabela 10 Parâmetros do controlador PID actualizados
Parâmetros
sintonização actualizados que foram
Tipo de controlador
introduzidos no controlador PID do
PID
modelo do servo para observar a
Kp
0,0514
Ki
0,138
Kd
0,01536
Figura 53
A tabela 10 apresenta os valores de
resposta da figura 53.
Resposta do sistema observada para um aumento da acção de controlo derivativa no PID
Figura 54 Estatísticas da nova resposta obtidas através do MATLAB após aumento do ganho derivativo
65
A componente derivativa tem impacto no overshoot pois esta analisa o ritmo da alteração do sistema provocado pelo controlador PID, tornando o ritmo da saída do controlador mais lento com o custo de tornar toda a resposta mais sensível a ruido e de aumentar o tempo de subida. Uma saída mais lenta, conforme mencionado, faz com que esta tenha mais tempo para se adaptar ao valor final pretendido quando próximo deste. Foi executada ainda uma segunda simulação no sistema servo, desta vez promovendo a alteração da componente proporcional. Na simulação foi verificado que uma divisão do valor desta componente por um factor de 1.5 enquanto se mantinha a componente derivativa anteriormente simulada, diminuía não só o overshoot como aumentava a estabilidade do sistema através da diminuição o tempo de estabelecimento. A figura 55 demonstra a simulação mencionada.
Tabela 11 Parâmetros do controlador PID actualizados
Parâmetros
A tabela 11 apresenta os valores de sintonização actualizados que foram
Tipo de controlador
introduzidos no controlador PID do
PID
modelo do servo para observar a
Kp
0,0343
Ki
0,138
Kd
0,01536
resposta da figura 55.
Figura 55 Resposta observada para uma diminuição da acção de controlo proporcional
66
Na figura 56 é observável a diminuição do overshoot e do tempo de estabelecimento.
Figura 56 Estatísticas da nova resposta obtida no MATLAB apos a diminuição do ganho proporcional
Uma constante proporcional elevada, pode provocar excesso de controlo num sistema onde erro seja baixo, fazendo com que este não atinja a estabilidade. Por outro lado um ganho proporcional muito pequeno pode fazer com que o controlo seja reduzido e por consequência o sistema não consiga compensar o erro que ainda existe. Um equilíbrio no valor acção de controlo proporcional é importante para atingir o melhor desempenho do sistema.
3.1.6.
SINTONIA DO CONTROLADOR ATRAVÉS DAS REGRAS DE Z-A
A sexta experiência do primeiro guião compreende novamente a sintonia do controlador PID, mas desta vez através de uma heurística diferente, a de Zhaung e Atherton. Tal como a sintonização através das regras de Z-N em malha aberta, também as heurísticas de Z-A utilizam o modelo de primeira ordem com atraso, tal como especificado nas equações (7) e (9). Então, para a determinação dos parâmetros Kp, Ki e Kd é necessário recorrer à
67
experiencia realizada em malha aberta no sistema servo da secção 3.1.2 e utilizar os parâmetros K, L e T ai determinados. Seguidamente os parâmetros de sintonia do controlador são calculados com o auxílio de uma função elaborada no MATLAB através das equações (10) e (11) e da tabela 4 para o controlador PI e das equações (10), (11) e (12) e da tabela 5 para o controlador PID. O índice de desempenho utilizado para achar os parâmetros de sintonia foi o ISTE. Deve ser notado que as regras de Z-A apenas calculam os parâmetros dos controladores PI e PID uma vez que esta heurística e baseada no critério de integral do erro. O código da função MATLAB mencionada é apresentado em anexo A. A figura 57 mostra os valores para a sintonização dos controladores devolvidos pelo MATLAB.
Figura 57 Parâmetros de saída da função za no MATLAB
Um resumo dos valores da figura 57 pode ser encontrado na tabela 12.
68
Tabela 12 Resumo dos parâmetros sintonizados através da heurística de Z-A
Parâmetros
Tipo de controlador PI
PID
Kp
0.0223
0.0311
Ki
0.0173
0.0248
Kd
0
0.0026
Os valores da tabela 12 foram posteriormente inseridos no modelo em tempo real do sistema servo para que pudesse ser observada a sua resposta aos novos parâmetros de sintonia. As figuras 58 e 59 representam as respostas mencionados.
Figura 58 Resposta do sistema servo para o controlador PI sintonizado através da heurística Z-A
69
Figura 59 Resposta do sistema servo para o controlador PID sintonizado através da heurística Z-A
Com a sintonização através das heurísticas de Z-A foi possível observar melhores respostas do sistema servo ao degrau de entrada relativamente aquelas que foram observadas através da sintonização com as heurísticas de Z-N em malha aberta, nomeadamente nas figuras 31 e 32. Analisando as tabelas 8 e 12, que contem o resumo dos parâmetros de sintonização dos controladores é possível verificar as suas diferenças. Tanto no controlador PI como o PID os valores sintonizados através da heurística de Z-A apresentam um menor valor relativamente à heurística de Z-N. Relativamente ao controlador PI o menor valor proporcional promove um maior erro em regime permanente do sistema, erro este que é eliminado pelo componente integrativo, que como possui um valor reduzido não degrada a resposta de modo tão acentuado como os valores da tabela 8. Os valores de sintonização do controlador PID originaram também uma resposta satisfatória uma vez que o valor reduzido da componente integrativa permitiu que o amortecimento proporcionado pela componente derivativa diminuísse o overshoot o que permitiu que o sistema estabilizasse mais rapidamente.
70
3.2.
GUIÃO 2
São apresentadas de seguida as principais conclusões e resultados retirados da execução do segundo guião cujo objectivo principal passou pelo controlo da velocidade do sistema servo através da utilização de um controlador difuso.
Foram estabelecidas desde o início um conjunto de especificações para a resposta do servo, nomeadamente:
Erro em regime permanente nulo (eSS = 0);
Sobre elongação (overshoot) inferior a 10%;
Tempo de estabelecimento inferior a 4 segundos (ts < 4s);
O tipo de controlador difuso usado foi o de Mamdani. A grande vantagem deste controlador sobre o de Sugeno é a complexidade inerente ao processo de fuzificação. Enquanto no controlador de Mamdani a sua saída é obtida através da união das áreas correspondente à resposta de cada regra, e depois usado um método de colapsagem para passar a um valor numérico; No de Sugeno tem-se como saída um polinómio de grau n em função das variáveis de entrada, sendo n, normalmente, igual a 0 ou 1 pois o aumento da complexidade não é justificado pelos resultados obtidos. Além de que, neste tipo de controladores, são usadas uma enorme quantidade de regras, por exemplo para aproximar constantemente o sistema do valor pretendido. Esta diferença foi a base da nossa escolha. No controlador de Mamdani é permitido um controlo bastante mais simples e muito mais intuito, sem no entanto exibir maus resultados. Tanto que é bastante usado em processos especializados. Primeiramente era necessário desenvolver um sistema de controlo difuso, com recurso ao MATLAB, considerando o modelo do sistema definido por uma função de primeira ordem com atraso, igual a (14). Sendo
e
71
.
Não foi criado só um mas dois controladores difusos, um de 3 e outro com 7 variáveis linguísticas, com o objectivo de comparar as diferenças entre um controlo com mais conjuntos e consequentemente mais regras difusas. As entradas de ambos os controladores serão o erro e a variação do erro da resposta de saída do sistema e a saída, o binário aplicado ao mesmo.
Para o segundo controlador foram então criadas sete variáveis para cada entrada e saída, o nome dessas variáveis linguísticas são as seguintes:
NB (Negative Big)
NM (Negative Medium)
NS (Negative Small),
Z (Zero)
PS (Positive Small)
PM (Positive Medium)
PB (Positive Big)
A cada um destes conjuntos foi atribuída uma função de pertença caracterizada pelo significado atribuído a esta variável. Baseada numa lógica intuitiva, como já foi mencionado, foram atribuídos intervalos a cada um dos conjuntos nos vários universos de trabalho. Pode-se referir o caso do erro como forma de demonstrar este processo. Foi atribuído o valor de pertença de 1 aos conjuntos NB e PB, nos intervalos [-40;-15] e [15;40], respectivamente, pois nestes intervalos os erros ainda são bastante altos.
72
Os intervalos utilizados nas entradas foram definidos tendo por base a analise o sistema em questão. Para a entrada do erro, como o erro máximo é o erro inicial, ou seja, 40. Do lado negativo, foi colocado um valor máximo de -40, pois, apesar de ser pouco provável que o erro chegue a este valor, neste tipo de controladores é aconselhável garantir a simetria no espaço de trabalho. Para a entrada da variação do erro, o intervalo colocado foi [-150;150]. Estes valores surgiram duma análise realizada aos gráficos da resposta de saída do primeiro trabalho. A máxima diferença encontrada entre dois pontos foi de 0.015. Como o valor do steptime utilizado para os testes no MATLAB é de 0.01 foi obtido o valor máximo para a variação do erro de 150.
Figura 60 Função de pertença da entrada valor do erro, para o controlador difuso de 49 regras
Figura 61 Funções de pertença da entrada variação do erro, para o controlador difuso de 49 regras
73
Figura 62 Função de pertença da saída para o controlador difuso de 49 regras
Variação do erro
As regras difusas aplicadas no nosso controlador estão representadas na tabela 13:
NB NM NS Z PS PM PB
NB NB NB NB NB NB NB NM
NM NB NB NB NB NB NM NS
NS NB NB NB NB NM NS Z
Erro Z NM NM NS Z PS PM PM
PS Z PS PM PB PB PB PB
PM PS PM PB PB PB PB PB
PB PM PB PB PB PB PB PB
Tabela 13 Regras difusas para o controlador de 49 regras
Para as simulações no SIMULINK foi implementado o seguinte diagrama de bloco como forma de implementar o controlo difuso e simular o sistema servo:
74
Figura 63 Sistema de controlo difuso no MATLAB
Neste modelo do servo, além dos blocos imprescindíveis como o degrau de entrada, o controlador de lógica difusa, a função transferência do servo, etc; foram ainda adicionados ganhos a cada um das entradas e um bloco de saturação para limitar a nossa saída. As funções de pertença dos conjuntos de cada entrada foram desenvolvidas com o intuito de criar um controlador difuso que efectua-se um controlo fino de modo a conseguir uma melhor resposta do sistema. Inicialmente, todos os ganhos do sistema foram colocados a 1. A resposta produzida (figura 64) garantia duas das condições pretendidas, erro em regime permanente nulo e tempo de estabelecimento abaixo dos 4s, mas com um overshoot próximo dos 30%. Além disso é claro pela figura 64 que a reposta é pouco estável. Foi então necessário alterar o valor dos ganhos do sistema.
75
Figura 64 Resposta de saída do sistema simulado com todos os ganhos a 1
Estes ganhos permitem controlar o valor de entrada no controlador, multiplicando a constante definida pelo valor à saída da realimentação ou do bloco derivativo, consoante a entrada. Um ganho abaixo 1, torna o valor de entrada mais pequeno, e, consequentemente, mais próximo de zero. Dependendo do ramo, isto pode significar menor erro ou menor variação do erro. Um ganho acima de 1 tem o comportamento oposto, ou seja, provocam valores do erro ou variação do erro maiores que na realidade. O processo explicitado anteriormente pode ser bastante útil. No caso de primeira resposta obtida com o MATLAB, foi descrita acima como tendo um overshoot demasiado elevado. Para isso optou-se por aumentar o ganho do valor do erro para que o controlador exercer-se maior controlo para erros mais baixos. Alterado o ganho para 2, a resposta permitiu, como esperado, baixar o overshoot mas não o suficiente. Para além disso o sistema continuava bastante instável. Decidiu-se então baixar o ganho da variação do erro, isto porque apesar da resposta do sistema ser mais lenta, pois o valor do erro real irá ser mais pequeno, permite que o controlo não seja tão exigente quando o erro é próximo de zero. Depois de várias tentativas, com ganhos de 2 para o erro, de 0.2 para a variação do erro, e de 1 para a saída, foi obtida uma reposta de saída do sistema simulado no MATLAB, representada pela figura 65, com as característica inicialmente exigidas.
76
Figura 65 Resposta de saída do sistema simulado melhorada para o controlador de 49 regras
Guardando o gráfico como array numa variável à escolha, que neste caso foi data, é possível saber as características de resposta usando o comando stepinfo:
RiseTime: 1.1820 SettlingTime: 1.8281 Overshoot: 0.1577
No terceiro ponto deste trabalho, era pretendido que o controlador difuso desenvolvido fosse testado no sistema servo. Depois de adaptado o modelo de controlo PID para o sistema do controlador difuso e colocados os parâmetros da simulação do MATLAB, foi testado o controlador. A resposta do sistema real foi bastante diferente da simulada. Embora não houvesse erro em regime permanente, a sobreelongação era bastante maior, tal como o tempo de estabelecimento. Seguindo os mesmos conceitos aplicados na simulação do MATLAB, começou-se por alterar o ganho correspondente ao erro. Como era de esperar, este ganho não poderia ser demasiado alto pois o sistema adoptava um estilo instável. Foi definido o valor máximo de 2.5 para o ganho do erro. Mas ainda não era suficiente para a sair cumprir os requisitos
77
pedidos. Decidiu-se então baixar o valor do ganho da variação do erro. Depois de várias tentativas chegou-se aos ganhos de 2.5, 0.095 e 1, para o erro, variação do erro e saída, respectivamente. A resposta de saída do sistema servo pode ser observada na figura 66, e as suas características são:
RiseTime: 0.8126 SettlingTime: 2.6246 Overshoot: 0.6760
Figura 66 Resposta de saída do sistema servo modular para o controlador de 49 regras (1)
Analisando melhor a figura 66, observa-se que existe um controlo excessivo quando o erro está próximo de zero. Ou seja, ter-se-á que diminuir não só o ganho da variação do erro, mas também o do erro, pois não existe forma de compensar o controlo provocado pelo elevado ganho do mesmo quando o sistema está perto do valor pretendido. Tendo em conta que foram baixados os ganhos das duas componentes, é espectável que o tempo de subida seja maior. Sendo assim, chegou-se ao valor dos ganhos de 1.5, 0.045 e 1, para o erro, variação do erro e saída, respectivamente. A resposta do sistema encontra-se representada pela figura 67, e as suas características são:
78
RiseTime: 1.1028 SettlingTime: 3.4016 Overshoot: 4.2777
Figura 67 Resposta de saída do sistema servo modular para o controlador de 49 regras (2)
Usando os mesmos métodos do controlo difuso de 7 conjuntos, foi criado um controlador de apenas 3 variáveis linguísticas. Os conjuntos criados são N (Negative), Z (Zero) e P (Positive). As funções de pertença atribuídas a cada um dos conjuntos são as expostas nas figuras 68, 69 e 70. O aspecto destas funções baseiam-se em testes levados a cabo para melhorar o desempenho do controlador por forma a obter uma resposta de saída aceitável.
79
Figura 68 Funções de pertença dos conjuntos da entrada, erro, para o controlador difuso de 9 regras
Figura 69 Função de pertença dos conjuntos da entrada, variação do erro, para o controlador difuso de 9 regras
80
Figura 70 Função de pertença dos conjuntos da saída para o controlador difuso de 9 regras
As regras difusas aplicadas neste controlador estão representadas na tabela 14:
Variação do erro
Tabela 14 Regras Difusas para o controlador de 9 regras
N Z P
N N N N
Erro Z N Z P
P P P P
Ajustando os ganhos de modo a obter a melhor resposta possível, foi obtida no MATLAB a saída demonstrada pela figura 71, com ganhos de 1.2, 0.45 e 1, para o erro, variação do erro e saída, respectivamente.
81
Figura 71 Resposta de saída do sistema simulado melhorada para o controlador de 9 regras
Seguindo o procedimento efectuado para o controlador anterior, foi testado o controlador difuso no sistema servo. Depois de ajustados os ganhos, chegou-se à resposta de saída representada na figura 72, sendo as suas características:
RiseTime: 0.7846 SettlingTime: 2.8377 Overshoot: 6.7855
Figura 72 Resposta de saída do sistema servo modular para o controlador de 9 regras (1)
82
Numa segunda tentativa de melhorar a resposta do sistema foram achados os ganhos de 3.3, 0.365 e 1, para os ganhos do erro, variação do erro e saída respectivamente. A saída encontra-se representada na figura 73, com as seguintes características:
RiseTime: 0.8108 SettlingTime: 3.4156 Overshoot: 6.1068
Figura 73 Resposta de saída do sistema servo modular para o controlador de 9 regras (2)
Existem grandes diferenças no que toma ao controlador difuso sobre o PID. No que toca ao controlo, podem se enumerar algumas: o facto, de os sistemas difusos permitirem mais que uma entrada ou saída, o que não acontece nos controladores PID; o seu desempenho pode ser rapidamente melhorado com a adição de novas regras e variáveis; tem vantagem sobre os controladores PID, pois possibilitam um controlo mais eficiente em sistemas não lineares. São bastante mais versáteis, pois podem ser utilizados em múltiplos sistemas, como, por exemplos, processos de baixo custo, onde estes controladores oferecem bons resultados. Podem também funcionar em paralelo com outros controladores de modo a adicionar uma camada extra de inteligência.
83
Referências Documentais [1] - Astrom K. J. and Hagglund T. H., “New tuning methods for PID controllers”, Proceedings of the 3rd European Control Conference, 1995
[2] - http://www.ece.ualberta.ca/~marquez/journal_publications_files/papers/tan_cce_06.pdf
[3] – Marcos Manala, “Projectos de Controle Convencional e Adaptativo Aplicados ao Sistema Térmico de uma Bancada de Ensaios de Cabos Conutores”, 2004
[4] – Lofti A. Zadeh, “Fuzzy Logic Systems: Origin, Concepts, and Trends”, 2004 [5] – http://www.feng.pucrs.br/~gacs/new/disciplinas/psc_CN/apostilas/Aula6_2007II.pdf
[6] – http://newton.ex.ac.uk/teaching/CDHW/Feedback/ControlTypes.html
84
Anexo A. Código MATLAB para a determinação dos parâmetros de sintonia dos controladores PID através da heurística de Z-A
function [Kp, Ki, Kd] = za(K, L, T, op) teste = L/T; switch op case 1 disp('Controlador PI') if(teste a1 = b1 = a2 = b2 = Kp Ti Ki Td Kd
= = = = =
end if(teste a1 = b1 = a2 = b2 = a3 = Kp Ti Ki Td Kd
= = = = =
1) 0.786; -0.559; 0.883; -0.158; 0.385; (a1/K)*(L/T)^b1; T/(a2+b2*(L/T)); Kp/Ti; 0; Td * Kp;
end case 2 disp('Controlador PID') if(teste a1 = b1 = a2 = b2 = a3 = b3 =
1) 1.142; -0.579; 0.919; -0.172; 0.384; 0.839; (a1/K)*(L/T)^b1; T/(a2+b2*(L/T)); Kp/Ti; a3*T*(L/T)^b3; Td * Kp;
end end end
86