SlideShare uma empresa Scribd logo
Relatório do Primeiro Trabalho Prático da Unidade Curricular
Controlo Inteligente
Identificação e Controlo Adaptativo de um
Processo Térmico
Monte da Caparica, 12 de janeiro de 2022
Elaborado por:
Alice Dias, aluna N.º 57572
Índice
1. Introdução....................................................................................................................3
2. Conceitos.....................................................................................................................5
2.1. Identificação de sistemas .....................................................................................5
2.1.1. Propriedades dos dados recolhidos ..................................................................5
2.1.2. Estrutura ARX..................................................................................................6
2.1.3. Identificação recursiva .....................................................................................7
2.1.4. Validação do modelo........................................................................................7
2.2. Controlador por colocação de pólos ....................................................................8
2.3. Controlador adaptativo.......................................................................................10
3. Desenvolvimento e teste............................................................................................11
3.1. Recolha de dados do sistema .............................................................................11
3.2. Seleção dos parâmetros a utilizar da estrutura ARX .........................................11
3.3. Identificação recursiva.......................................................................................14
3.4. Controlador não adaptativo................................................................................15
3.5. Controlador adaptativo.......................................................................................17
4. Implementação no sistema real .................................................................................20
4.1. Diferenças entre o código utilizado para simulações e o código utilizado para
testes ao processo.................................................................................................................20
4.2. Resultados obtidos .............................................................................................21
4.3. Discussão dos resultados....................................................................................24
5. Conclusões ................................................................................................................25
Referências Bibliográficas ..................................................................................................26
Anexos.................................................................................................................................27
Anexo I – Código do MATLAB utilizado para recolher os dados do sistema ...............27
Anexo II – Código do MATLAB utilizado para realizar a identificação recursiva........27
Anexo III – Função do MATLAB utilizada para determinar os pólos ...........................28
Anexo IV – Função do MATLAB utilizada para determinar a convolução entre os
polinómios............................................................................................................................29
Anexo V – Função do MATLAB utilizada para sintonizar o controlador por colocação
de pólos sem efeito integral .................................................................................................29
Anexo VI – Código do MATLAB utilizado para simular o controlador não adaptativo
projetado (para a referência pedida) ....................................................................................30
2
Anexo VII – Código do MATLAB utilizado para simular o controlador adaptativo
projetado (para a referência pedida) ....................................................................................31
Anexo VIII – Live Script do MATLAB utilizado determinar matriz de transformação
utilizada para determinar os parâmetros do controlador adaptativo ....................................33
Anexo IX – Código do MATLAB utilizado para testar o controlador não adaptativo
projetado ..............................................................................................................................33
Anexo X – Código do MATLAB utilizado para testar o controlador adaptativo
projetado ..............................................................................................................................34
3
1. Introdução
Este trabalho prático, que é realizado no âmbito da disciplina de Controlo Inteligente, tem
como principal objetivo realizar o controlo por colocação de pólos de um sistema dinâmico
cuja modelização é realizada de forma empírica, denominando-se assim identificação.
O sistema a ser estudado é um processo laboratorial térmico denominado PCT 37-100, da
Feedback, que é utilizado como plataforma de teste para controladores e posterior análise do
seu desempenho. Este sistema é composto por um ventilador, uma resistência que permite
aquecer o ar, um transdutor de temperatura (termístor) de resposta linear (face à tensão) para
temperaturas em 30°C e 60°C e um tubo por onde o ar aquecido circula, como se pode ver na
Figura 1.
Figura 1 – Processo laboratorial térmico PCT 37 – 100.
O PCT 37-100 permite modificar a velocidade de rotação do ventilador, tendo uma escala
com 11 posições de velocidade de rotação (de 0 a 10). Também tem 3 posições para o sensor,
início, meio e fim do tubo, o que permite conferir diferentes tempos de atraso ao processo.
No entanto, neste trabalho laboratorial irá trabalhar-se a uma velocidade constante na posição
intermédia 5 e o sensor estará na posição intermédia do tubo.
Para ser possível determinar os parâmetros do controlador de forma que o sistema em anel
fechado do sistema apresente os pólos desejados, é necessário realizar a identificação do
sistema. Isto implica executar os seguintes passos:
1. Especificação dos ensaios a realizar;
2. Aquisição de dados experimentais.
3. Seleção de uma estrutura de modelos que faça sentido face ao sistema estudado;
4. Estimação dos parâmetros de acordo com a estrutura de modelo selecionada;
5. Validação do modelo.
O primeiro passo é dado no enunciado deste trabalho: a entrada do sistema é a tensão
aplicada à resistência que aquece o ar, a saída do sistema é a temperatura no sensor (que é
proporcional à tensão no termístor) e a velocidade de amostragem tanto na entrada como na
saída do sistema será de 80 milissegundos. Os restantes passos da identificação são
apresentados no ponto 3 deste trabalho.
A modelação de um sistema a partir de dados empíricos é um processo iterativo como o
esquematizado na Figura 2. Como se pode ver, poderia ter que se escolher uma estrutura de
modelos diferente da escolhida inicialmente se não se considerar que o modelo é válido.
4
Também se poderia optar por realizar os ensaios de forma diferente, recolhendo dados de
variáveis diferentes. No entanto, neste trabalho laboratorial o tipo de ensaio é o dado pelo
enunciado e a estrutura de modelos a utilizar será a estrutura ARX. A parte iterativa utilizada
neste processo laboratorial corresponderá à escolha dos parâmetros do polinómio de forma ao
modelo não ser excessivamente complexo, mas reproduzir o comportamento do sistema
ensaiado com um erro reduzido.
Figura 2 – Processo iterativo de identificação de um sistema [1].
A estrutura deste documento consiste em apresentar no ponto 2 os conceitos teóricos
relacionados com a identificação e realização do controlador (adaptativo e não adaptativo). O
ponto 3 corresponde à parte prática, desde a identificação em si do sistema estudado até ao
projeto e teste do controlador não adaptativo. Já no ponto 4 é apresentada a informação
relativa ao teste do controlador adaptativo projetado no sistema real, ou seja, no processo
PCT 37-100, sendo feita a discussão dos resultados obtidos. Por fim, apresentam-se as
conclusões obtidas com a realização deste trabalho.
5
2. Conceitos
Neste ponto do relatório serão explicados os principais conceitos teóricos por detrás da
realização deste trabalho laboratorial.
2.1. Identificação de sistemas
Como foi referido na introdução, a modelação do sistema através da recolha de dados
experimentais denomina-se identificação e é um processo iterativo representado na Figura 2 e
constituído pelos 5 estados seguintes:
1. Especificação dos ensaios a realizar;
2. Aquisição de dados experimentais.
3. Seleção de uma estrutura de modelos que faça sentido face ao sistema estudado;
4. Estimação dos parâmetros de acordo com a estrutura de modelo selecionada;
5. Validação do modelo.
2.1.1. Propriedades dos dados recolhidos
As propriedades dos dados recolhidos na fase de ensaio serão utilizados posteriormente na
estimação dos parâmetros, pelo que são muito importantes para a qualidade do modelo
obtido, sendo que se considera que o conjunto de dados não é “informativo” caso a entrada
não seja persistentemente excitante.
Para um sinal u ser designado de “persistentemente excitante” (PE) de ordem n é
necessário verificar duas condições: a existência de 𝑅(𝜏) e a verificação de que R é uma
matriz definida positiva, sendo que é possível fazer estas determinações a partir das Equações
2.1 e 2.2.
𝑅(𝜏) = 𝑙𝑖𝑚
𝑁→∞
1
𝑁
∑ 𝑢(𝑘)𝑢(𝑘 − 𝜏), 𝜏 = 0, … , 𝑛 − 1
𝑁
𝑘=1 Equação 2.1
𝑅 = 𝑙𝑖𝑚
𝑁→∞
1
𝑁
𝑅𝑁 = [
𝑅(0)
𝑅(1)
⋮
𝑅(𝑛 − 1)
𝑅(1)
𝑅(2)
⋮
𝑅(𝑛 − 2)
⋯
⋯
⋱
⋯
𝑅(𝑛 − 1)
𝑅(𝑛 − 2)
⋮
𝑅(0)
] Equação 2.2
A matriz de autocorrelação pode ser obtida pela expressão da Equação 2.3, sendo que a
solução da equação normal é única se a característica desta matriz for máxima (n).
𝑅𝑁 = 𝛷𝑇
𝛷 = (
∑ 𝑢2
(𝑘 − 1)
𝑁
𝑘=𝑛+1 ⋯ ∑ 𝑢(𝑘 − 1)𝑢(𝑘 − 𝑛)
𝑁
𝑘=𝑛+1
⋮ ⋱ ⋮
∑ 𝑢(𝑘 − 1)𝑢(𝑘 − 𝑛)
𝑁
𝑘=𝑛+1 ⋯ ∑ 𝑢2
(𝑘 − 𝑛)
𝑁
𝑘=𝑛+1
) Equação 2.3
onde Φ = [
𝜑𝑇
(1)
⋮
𝜑𝑇
(𝑁)
]
6
2.1.2. Estrutura ARX
A estrutura “AutoRegressiva com excitação eXógena”, mais conhecida como estrutura
ARX, é um método simples e eficiente de estimação polinomial que consiste na resolução de
equações de regressão linear na forma analítica.
Figura 3 – Diagrama de blocos representativo da estrutura ARX.
Uma das grandes vantagens que esta estrutura apresenta consiste em a sua ser solução ser
única, ou seja, os modelos com esta estrutura são globalmente identificáveis. Já a principal
desvantagem que este modelo apresenta deve-se às perturbações fazerem parte da dinâmica
do sistema, o que representa que estes modelos consideram que a resposta do sistema face à
excitação e a resposta do sistema face a perturbações compartilham o mesmo conjunto de
pólos o tempo todo. Ora isto não corresponde ao sistema real. No entanto, é possível reduzir
esta desvantagem tendo uma boa relação sinal-ruído.
Considera-se que a perturbação aplicada ao sistema é ruído branco Gaussiano discreto, ou
seja, considera-se que a perturbação é um processo estocástico com densidade espectral
constante, consistindo em uma sucessão de variáveis aleatórias independentes igualmente
distribuídas, de média nula e variância 𝜎2
. Quando a perturbação não é ruído branco, o
acoplamento entre a dinâmica (determinística) do sistema e a dinâmica estocástica pode
enviesar a estimação do modelo ARX, pelo que é aconselhável utilizar um modelo com
ordem mais elevada do que o modelo real (tendo em atenção que aumentar a ordem do
modelo pode alterar a dinâmica deste, inclusive a estabilidade).
O preditor da estrutura de dados ARX é dado pela expressão da Equação 2.4, onde 𝜑
corresponde ao vetor de regressão e 𝜃 ao vetor de parametrização.
{
𝑦
̂(𝑘) = 𝜑𝑇(𝑘)𝜃
𝜑𝑇(𝑘) = [−𝑦(𝑘 − 1) … −𝑦(𝑘 − 𝑛𝑎) 𝑢(𝑘 − 1) … 𝑢(𝑘 − 𝑛𝑏)]
𝜃 = [𝑎1 … 𝑎𝑛𝑎 𝑏1 … 𝑏𝑛𝑏]𝑇
Equação 2.4
O polinómio associado a esta estrutura é caracterizado por três parâmetros diferentes: 𝑛𝑎
que corresponde à ordem do polinómio 𝐴(𝑞−1), 𝑛𝑏 que corresponde à ordem do polinómio
𝐵(𝑞−1) e 𝑛𝑘 que é o atraso do sistema, ou seja, é a ordem do primeiro coeficiente não nulo
do polinómio B.
𝐵(𝑞−1
)
𝐴(𝑞−1)
=
𝑏1𝑞−1
+ 𝑏2𝑞−2
+ ⋯ + 𝑏𝑛𝑏
𝑞−𝑛𝑏
1 + 𝑎1𝑞−1 + 𝑎2𝑞−2 + ⋯ + 𝑎𝑛𝑎
𝑞−𝑛𝑎
1
𝐴(𝑞−1)
=
1
1 + 𝑎1𝑞−1 + 𝑎2𝑞−2 + ⋯ + 𝑎𝑛𝑎
𝑞−𝑛𝑎
𝑢(𝑘)
𝑒(𝑘)
𝑦(𝑘)
7
2.1.3. Identificação recursiva
Como as observações neste trabalho laboratorial surgem sequencialmente em tempo real,
faz sentido proceder a uma identificação em linha. Isso significa que a matriz de covariância
no instante k, 𝑃(𝑘), e o vetor de parametrização no mesmo instante, 𝜃
̂(𝑘), deverão ser
obtidos recursivamente a partir dos valores no instante passado.
Na Equação 2.5 apresenta-se a expressão do vetor de parametrização obtido
iterativamente, tendo sido esta expressão deduzida recorrendo ao método dos mínimos
quadrados recursivos. Nesta expressão 𝜀(𝑘) corresponde ao erro de modelação no instante k.
𝜃
̂(𝑘) = 𝜃
̂(𝑘 − 1) + 𝑃(𝑘)𝜑(𝑘)𝜀(𝑘), com Equação 2.5
𝜀(𝑘) = 𝑦(𝑘) − 𝑦
̂(𝑘|𝜃
̂(𝑘 − 1) = 𝑦(𝑘) − 𝜑𝑇
𝜃
̂(𝑘 − 1)
Outro aspeto a ter em conta na obtenção da matriz de covariância está relacionado com o
tipo de dinâmica do sistema. Caso o sistema a identificar seja variante, há que ter em
consideração esse aspeto, reinicializando a matriz de covariância (𝑃(𝑘) = 𝑃(0)) quando
houver uma reconfiguração abrupta do sistema e incorporando um fator de esquecimento λ
sempre que haja uma alteração suave de parâmetros. Este fator de esquecimento,
compreendido entre 0,95 e 1, deve ser tal que o método dos mínimos quadrados contenha
apenas as observações mais relevantes para a descrição do sistema tendo em conta a janela de
amostras relevantes, podendo ser determinado pela expressão apresentada na Equação 2.6,
onde 𝑁𝑘 é o número de amostras consideradas relevantes.
𝑁𝑘 =
1
1−𝜆
⇔ 𝜆 = 1 −
1
𝑁𝑘
Equação 2.6
Tendo em conta o que foi referido, a matriz de covariância pode ser obtida a partir de
valores passados da mesma (𝑃(𝑘 − 1)) recorrendo à expressão da Equação 2.7, onde 𝕀𝑛
corresponde à matriz identidade de ordem n, 𝜆 ao fator de esquecimento e 𝜑 ao vetor de
regressão. Esta matriz é proporcional à covariância do erro de estimação, é positiva e
influencia a qualidade do modelo obtido.
𝑃(𝑘) =
𝑃(𝑘−1)
𝜆
[𝕀𝑛 −
𝜑(𝑘)𝜑𝑇(𝑘)𝑃(𝑘−1)
𝜆+𝜑𝑇(𝑘)𝑃(𝑘−1)𝜑(𝑘)
] Equação 2.7
As expressões recursivas para obter o vetor de parametrização (Equação 2.5) e para a
matriz de covariância (Equação 2.7) precisam ser inicializadas. Quanto ao vetor de
parametrização, como existe estimativa inicial através da estrutura ARX, deve conter os
parâmetros estimados (ver Equação 2.4). A matriz de covariância deve ser inicializada como
uma matriz diagonal (quadrada) da dimensão do vetor de parametrização, sendo que se esta
matriz 𝑃(0) tiver valores elevados há uma elevada incerteza em 𝜃(0).
2.1.4. Validação do modelo
Antes de se utilizar determinado modelo para projetar um controlador é essencial validar o
modelo, ou seja, avaliar se o modelo representa de forma adequado o comportamento
dinâmico do sistema a identificar. Os dois processos de validação a ser utilizados neste
trabalho consistem na validação cruzada e na análise dos resíduos.
8
A validação cruzada consiste em utilizar um determinado critério, como, por exemplo, a
média do somatório do quadrado do erro de predição, para comparar o desempenho do
modelo para um conjunto de dados diferentes dos dados de estimação. Caso a ordem de
grandeza da medida de desempenho utilizada for a mesma para os dados de estimação e de
validação então o modelo pode ser considerado aceitável. Caso contrário será necessário
procurar outro modelo, seja modificando a ordem dos polinómios ou selecionando outro tipo
de estrutura.
A Equação 2.8 descreve o critério utilizado como medida de desempenho do modelo face
aos dados, sendo este a média do somatório do quadrado do erro de predição, onde 𝜀
corresponde ao erro de predição, N ao número de amostras utilizadas, 𝑦 o valor real na saída
e 𝑦
̂ o valor da saída previsto pelo modelo.
𝑉(𝜃, 𝑍𝑁) =
1
𝑁
∑ 𝜀2
(𝑘)
𝑁
𝑘=1 =
1
𝑁
∑ [𝑦(𝑘) − 𝑦
̂(𝑘|𝜃
̂)]
2
𝑁
𝑘=1 Equação 2.8
Os resíduos entre as saídas do sistema e do modelo, cuja expressão é apresentada na
Equação 2.9, deverão apresentar-se como um ruído branco e deverão ser independentes da
entrada para que o modelo descreva adequadamente o sistema, sendo importante avaliar que
isto acontece antes de validar o modelo.
𝜀(𝑘, 𝜃
̂𝑁) = 𝑦(𝑘) − 𝑦
̂(𝑘|𝜃
̂𝑁) Equação 2.9
A condições prática para que os resíduos possam ser considerados uma sucessão de
variáveis independentes consiste em verificar que o módulo da covariância normalizada dos
resíduos é inferior a um valor tal que o modelo apresente um nível de confiança de 95%,
como se pode ver na Equação 2.10, onde 𝑅
̂𝜀(𝜏) corresponde à covariância e 𝑅
̂𝜀
̅̅̅(𝜏) à
covariância normalizada. Este nível de confiança corresponde a um intervalo de [−
1,96
√𝑁
:
1,96
√𝑁
]
para uma distribuição assintótica normal de cada componente.
|𝑅
̂𝜀
̅̅̅(𝜏)| ≤
1,96
√𝑁
; 𝜏 ≥ 1, onde Equação 2.10
𝑅
̂𝜀
̅̅̅(𝜏) =
𝑅
̂𝜀(𝜏)
𝑅
̂𝜀(0)
=
1
𝑁
∑ 𝜀(𝑘)𝜀(𝑘 + 𝜏)
𝑁−𝜏
𝑘=1
1
𝑁
∑ 𝜀2(𝑘)
𝑁
𝑘=1
2.2. Controlador por colocação de pólos
O controlador por colocação de pólos é caracterizado pelo seu projeto ser assente na
determinação dos parâmetros do controlador de tal forma que o sistema em anel fechado
apresente os pólos desejados. Neste trabalho pretende-se projetar um controlador deste tipo
sem que haja efeito integral nem cancelamento de zeros.
Considere-se um controlador a controlar um sistema identificado através da estrutura
ARX e cujo diagrama de blocos está representado na Figura 4, então a expressão que
descreve o controlador será dada pela Equação 2.11.
𝐹(𝑞−1)𝑢(𝑘) = 𝐻(𝑞−1)𝑟(𝑘) − 𝐺(𝑞−1)𝑦(𝑘), onde Equação 2.11
9
{
𝐻(𝑞−1
) = ℎ0 + ℎ1𝑞−1
+ ℎ2𝑞−2
+ ⋯ + ℎ𝑛ℎ
𝑞−𝑛ℎ
𝐹(𝑞−1
) = 1 + 𝑓1𝑞−1
+ 𝑓2𝑞−2
+ ⋯ + 𝑓𝑛𝑓
𝑞−𝑛𝑓
𝐺(𝑞−1
) = 𝑔0 + 𝑔1𝑞−1
+ 𝑔2𝑞−2
+ ⋯ + 𝑔𝑛𝑔
𝑞−𝑛𝑔
Figura 4 - Diagrama de blocos do controlador.
O projeto deste controlador consiste em determinar os coeficientes dos polinómios
𝐻(𝑞−1
), 𝐹(𝑞−1
) e 𝐺(𝑞−1
), tal que 𝐴𝑚(𝑞−1) apresente os pólos para o sistema em anel
fechado que façam com que este apresente a dinâmica pretendida. O polinómio característico
𝐴𝑚(𝑞−1) com ordem 𝑛𝛼 pode ser expresso pela Equação 2.12.
𝐴𝑚(𝑞−1) = 1 + 𝛼1𝑞−1
+ 𝛼2𝑞−2
+ ⋯ + 𝛼𝑛𝛼
𝑞−𝑛𝛼 Equação 2.12
Transformando o diagrama de blocos apresentado na Figura 4 numa expressão, obtém-se a
função de transferência em anel fechado em função dos polinómios 𝐴(𝑞−1) e 𝐵(𝑞−1) do
sistema e dos polinómios 𝐻(𝑞−1
), 𝐹(𝑞−1
) e 𝐺(𝑞−1
) do controlador, como se pode ver na
Equação 2.13.
𝑦(𝑘) =
𝐵
̃(𝑞−1)
𝐴
̃(𝑞−1)
𝑟(𝑘)
onde Equação 2.13
𝐵
̃(𝑞−1)
𝐴
̃(𝑞−1)
=
𝐵(𝑞−1)𝐻(𝑞−1)
𝐴(𝑞−1)𝐹(𝑞−1) + 𝐵(𝑞−1)𝐺(𝑞−1)
A Equação de Diophantine (ou identidade de Bezout) permite relacionar os pólos
pretendidos com os coeficientes do controlador, como se pode ver na Equação 2.14, onde d
corresponde ao atraso puro (delay). Esta equação só irá apresentar solução única caso A e B
não tenham fatores comuns.
𝐴𝑚(𝑞−1) = 𝐴(𝑞−1)𝐹(𝑞−1) + 𝑞−𝑑
𝐵
̅(𝑞−1)𝐺(𝑞−1) Equação 2.14
com 𝐵
̅(𝑞−1) = 𝑞+𝑑
𝐵(𝑞−1) = 𝑞+𝑑
(𝑏1𝑞−1
+ 𝑏2𝑞−2
+ ⋯ + 𝑏𝑛𝑏
𝑞−𝑛𝑏)
O primeiro passo consiste em determinar a ordem dos polinómios do controlador, de tal
forma que este não apresente efeito integral e de forma a não haver cancelamento de zeros.
Este passo é realizado determinando 𝑑, 𝑛𝑓 e 𝑛𝑔 através do sistema apresentado na Equação
2.15.
10
{
𝑑 = 𝑛𝑘 − 1
𝑛𝑓 = 𝑛𝑏 − 1 + 𝑑
𝑛𝑔 = 𝑛𝑎 − 1
Equação 2.15
Seguidamente é necessário determinar a ordem do polinómio característico, através da
Equação 2.16.
𝑛𝛼 = 𝑚𝑎𝑥 (𝑛𝑎 + 𝑛𝑓, 𝑛𝑏 + 𝑛𝑔) Equação 2.16
Para um erro em regime final nulo o ganho estático terá de ser unitário, sendo que esta é a
razão da colocação do polinómio 𝐻(𝑞−1) em cascata. Este polinómio tem ordem zero, sendo
igual ao seu coeficiente ℎ0, o que permite escolher um valor que transforme o ganho estático
do sistema em anel fechado unitário. Esse valor é obtido através da Equação 2.17 quando
substituído o atraso 𝑞−1
por 1.
ℎ0 =
𝐴(𝑞−1)𝐹(𝑞−1) + 𝑞−1
𝐵
̅(𝑞−1)𝐺(𝑞−1)
𝐵(𝑞−1)
com Equação 2.17
𝑞−1
= 1
Os restantes coeficientes do controlador terão de ser determinados por inspeção,
comparando o polinómio 𝐴𝑚(𝑞−1) desejado com o segundo membro da Equação 2.14, ou
seja, com o denominador da função de transferência expresso em termos dos coeficientes de
𝐴(𝑞−1), 𝐵(𝑞−1), 𝐹(𝑞−1) e 𝐺(𝑞−1).
2.3. Controlador adaptativo
Controladores com parâmetros fixos apenas fazem sentido para sistemas lineares e
invariantes, pelo que não são apropriados para o sistema deste trabalho. Assim sendo a
solução consiste em projetar um controlador adaptativo, ou seja, um controlador constituído
por parâmetros ajustáveis e munido de mecanismos que o permitem alterar a sua dinâmica de
forma a fazer face a modificações ocorridas num dado ambiente, na dinâmica do processo
e/ou nas características de eventuais perturbações
Como a dinâmica do sistema estudado não é previsível, não é aconselhável ajustar os
parâmetros do controlador a partir de uma tabela de ganhos, sendo que a solução deverá
passar por projetar um controlador adaptativo autosintonizável, onde os parâmetros do
modelo são atualizados em-linha, recorrendo ao processo explicado no ponto 2.1.3 deste
relatório.
11
3. Desenvolvimento e teste
3.1. Recolha de dados do sistema
Para ser possível determinar os polinómios A e B relativos ao modelo ARX (ver 2.1.2), foi
necessário recolher dois conjuntos de dados com a resposta do sistema a uma excitação
específica em tempo discreto. Um dos conjuntos destina-se à estimação dos parâmetros do
modelo, o conjunto 𝑍𝑒
𝑁
= {𝑌𝑒(𝑘), 𝑈𝑒(𝑘)}. O outro conjunto, 𝑍𝑣
𝑁
= {𝑌𝑣(𝑘), 𝑈𝑣(𝑘)},
destina-se à validação do modelo.
Considerando um tempo de amostragem de 80 milissegundos, o sensor inserido na posição
intermédia e com um caudal de ar nominal constante, recolheu-se 500 amostras da resposta
do sistema a dois sinais pseudoaleatórios com amplitudes compreendidas entre 2 e 5 volts a
partir da função idinput() do MATLAB. O código utilizado para recolher estas amostras é
apresentado no Anexo I.
Na Figura 5 é apresentada a resposta do sistema no tempo obtidos no ensaio e relativos aos
dados de estimação.
Figura 5 – Representação no tempo dos dados de estimação obtidos no ensaio.
3.2. Seleção dos parâmetros a utilizar da estrutura ARX
Utilizando o conjunto de dados para estimação, recorreu-se à aplicação
systemIdentification lançada a partir do MATLAB para comparar o ajuste, a autocorrelação
entre os resíduos da saída e correlação entre entrada e saída da estrutura ARX para vários
valores dos parâmetros 𝑛𝑎, 𝑛𝑏e 𝑛𝑘. Pretende-se obter uma estrutura que se ajuste bem aos
dados de estimação recolhidos e cuja análise dos resíduos permita obter um nível de
confiança de 95% (para a maior parte dos instantes k).
Na Tabela 1 apresenta-se o valor dos melhores ajustes para diversos modelos ARX obtido
a partir do da função model output do systemIdentification após se ter retirado a parte
12
transiente dos dados. Também é realizada a validação cruzada, comparando o ajuste do
modelo aos dados de validação.
Tabela 1 – Ajuste de modelos ARX aos dados para diferentes parâmetros.
Modelo
Parâmetros do polinómio
Melhor ajuste
(best fit)
Melhor ajuste
aos dados de
validação
𝑛𝑎 𝑛𝑏 𝑛𝑘
ARX
1 1 1 82,87% 83,38%
2 1 1 80,91% 80,76%
2 2 1 83,03% 82,93%
3 2 1 84,58% 84,58%
3 3 1 84,51% 84,58%
2 4 1 85,47% 85,65%
4 3 1 86,62% 86,77%
Quanto à validação cruzada, pretende-se obter um modelo em que o melhor ajuste aos
dados de estimação seja da mesma ordem do ajuste aos dados de validação. Todos os
modelos apresentados cumprem essa especificação, sendo que o ARX(3,2,1) é o que melhor
cumpre este requisito visto que os ajustes são iguais.
Como se pode ver na Figura 6, obteve-se a autocorrelação entre os resíduos da saída e a
correlação entre os resíduos da entrada e saída do sistema para diferentes parâmetros desta
estrutura. Estes gráficos foram obtidos selecionando “Model resids” na aplicação de
identificação de sistemas, onde o intervalo de confiança a 95% é balizado por duas retas
horizontais.
Figura 6 – Autocorrelação entre os resíduos da saída (em cima) e correlação entre os resíduos da entrada e
da saída do sistema (em baixo) para modelos ARX com parâmetros diferentes utilizando os dados de estimação:
ARX(4,3,1), ARX(3,2,1), ARX(3,3,1), ARX(2,2,1), ARX(1,1,1), ARX(2,1,1).
13
O aumento dos parâmetros aumenta a complexidade do modelo, em virtude de aumentar a
ordem dos polinómios. Complexidade implica gastos e, no caso de controlo adaptativo,
recursos de processamento. Desta forma é importante encontrar um compromisso entre a
qualidade e complexidade do modelo. Isto fez com que não se considerasse estruturas cuja
soma da ordem dos polinómios A e B fosse superior a 6. No entanto, serão comparadas as
métricas da estrutura ARX(4,3,1) com as duas estruturas cuja autocorrelação entre os
resíduos da saída foram consideradas aceitáveis, ARX(2,4,1) e ARX(3,3,1). Na Figura 7 é
apresentada a comparação dos ajustes entre estas três estruturas.
Figura 7 – “Model output” das estruturas ARX(4,3,1), ARX(2,4,1) e ARX(3,3,1)
Na Figura 8 é apresentada a comparação da análise dos resíduos para as três estruturas que
foram pré-selecionadas anteriormente.
Figura 8 – Autocorrelação entre os resíduos da saída (em cima) e correlação entre os resíduos da entrada e
da saída do sistema (em baixo) para o modelo ARX(4,3,1) a vermelho, para o modelo ARX(3,3,1) a rosa e para
o modelo ARX(2,4,1) a azul.
Como se pode ver na Figura 8, a estrutura ARX(3,3,1) está fora do intervalo de confiança
para mais instantes que as restantes estruturas. Também é possível verificar que a diferença
da qualidade da estrutura ARX(4,3,1) com a qualidade de ARX(2,4,1) relativamente à análise
de resíduos não é muito significativa. Por isto, embora a estrutura cuja soma da ordem do
numerador com a ordem do denominador é 7 apresente melhores resultados desta análise do
que a estrutura ARX(2,4,1), a diferença não justifica o aumento da soma da ordem dos
polinómios A e B.
Tendo-se escolhido a estrutura ARX(2,4,1) transportou-se esta para o Workspace do
MATLAB, obtendo-se os dados apresentados na Figura 9.
14
Figura 9 – Descrição do modelo ARX(2,4,1) apresentada em MATLAB.
Assim sendo, a expressão que descreve o modelo ARX selecionado é apresentado na
Equação 3.1.
𝐵(𝑞−1
)
𝐴(𝑞−1)
=
0,0954𝑞−1
+ 0,0342𝑞−2
− 0,0616𝑞−3
− 0,0290𝑞−4
1 − 1,6189𝑞−1 + 0,6506𝑞−2
3.3. Identificação recursiva
As Equações 2.5 a 2.7 permitiram realizar uma identificação recursiva, ou seja, a
determinação dos parâmetros instante a instante, como se pode ver na Figura 10, onde é
apresentada a função que realiza esta identificação. Esta função recebe o vetor de
parametrização e a matriz de covariância no instante anterior, o valor da saída do sistema e o
vetor de regressão no próprio instante e o fator de esquecimento. Devolve o erro de
parametrização, o vetor de parametrização e a matriz de covariância no instante atual.
Figura 10 – Código MATLAB da função que realiza a identificação recursiva.
Como se pode ver no Anexo II, inicializou-se o vetor de parametrização com os
parâmetros dos polinómios A e B recorrendo à função getpvec() e iniciou-se a matriz de
covariância como a matriz identidade multiplicada por 5.
Ao fim de 495 iterações obteve-se o vetor de parametrização e os polinómios A e B
apresentados na Figura 11.
Equação 3.1
15
Figura 11 – Resultados da identificação recursiva para 495 iterações.
3.4. Controlador não adaptativo
Pretende-se sintonizar o controlador por colocação de pólos recorrendo ao modelo obtido
no ponto 3.2 deste trabalho, pelo que primeiro é necessário determinar o grau dos vários
polinómios que caracterizam o controlador a partir do sistema apresentado na Equação 2.15.
Determinou-se que o atraso puro, d, é nulo (porque 𝑛𝑘é igual a um), que o polinómio 𝐺(𝑞−1
)
é de ordem um e que o polinómio 𝐹(𝑞−1
) é de terceira ordem, como se pode ver no sistema
apresentado na Equação 3.2.
{
𝑑 = 𝑛𝑘 − 1 = 1 − 1 = 0
𝑛𝑓 = 𝑛𝑏 − 1 + 𝑑 = 4 − 1 + 0 = 3
𝑛𝑔 = 𝑛𝑎 − 1 = 2 − 1 = 1
Equação 3.2
Tendo a dimensão dos polinómios que fazem parte do controlador, determinou-se que a
ordem do polinómio característico 𝐴𝑚(𝑞−1
) é cinco, isto recorrendo à equação 2.16
(max(2 + 3, 4 + 1) = 5). Isto significa que serão necessários 5 pólos para obter o polinómio
característico.
Para um sistema discreto ser estável é necessário que todos os seus pólos estejam contidos
no círculo unitário, sendo tão mais dominantes como mais próximos do círculo.
Considerando como especificação um tempo de estabelecimento (settling time) de 1 segundo
e uma sobrelevação (overshoot) de 1% com uma tolerância de 1%, determinou-se 5 pólos
utilizando a função apresentada no Anexo III, sendo esses pólos apresentados na Figura 12.
Figura 12 – Determinação do polinómio característico assumindo a existência de 5 pólos: dois associados
às especificações referidas e 3 pólos não dominantes (mais próximos da origem).
Recorrendo à função poly do MATLAB aplicada ao vetor constituído pelos pólos do
sistema (que correspondem aos zeros do polinómio característico), determinou-se os
coeficientes do polinómio 𝐴𝑚(𝑞−1
) que será considerado neste trabalho, como se pode ver na
Equação 3.3.
𝐴𝑚(𝑞−1) = 1 − 1,8157𝑞−1
+ 1,1912𝑞−2
− 0,3325𝑞−3
+ 0,0414𝑞−4
− 0,0019𝑞−5
16
Equação 3.3
Para determinar os polinómios F e G recorreu-se à função sconv cedida pelo docente da
disciplina e apresentada no Anexo IV deste documento, sendo que o polinómio característico
do sistema em anel fechado (Equação 3.3) é a soma da covariância entre os polinómios A e F
com a covariância entre os polinómios B e G. Apresentando os polinómios F e G coeficientes
considerados simbólicos em MATLAB
Utilizando a Equação 2.17, determinou-se o único coeficiente do polinómio H. A
implementação em MATLAB da multiplicação dos polinómios apresentados quando 𝑞−1
é 1
foi realizada recorrendo à função sum() que soma todos os elementos de um vetor, visto que
os polinómios são representados sob a forma de vetor constituído pelos seus coeficientes.
Recorrendo aos resultados apresentados na Equação 3.4, implementou-se a função
MATLAB que sintoniza o controlador em função do vetor de parametrização e dos pólos
desejados para o sistema em anel fechado (denominada tuning(,)) que determina os
polinómios F, G e H. Esta função é apresentada no Anexo V.
Para os polinómios A e B apresentados na Equação 3.1 e os 5 pólos apresentados na
Figura 12, os parâmetros do controlador são os apresentados na Equação 3.4.
{
𝐻(𝑞−1
) = 2,1137
𝐹(𝑞−1) = 1 − 2,9813𝑞−1
− 3,1771𝑞−2
− 0,9854𝑞−3
𝐺(𝑞−1) = 29,1783 − 22,0622𝑞−1
Equação 3.4
Como definido pelo enunciado, o sinal de referência é constituído por uma sucessão de
ondas quadradas de amplitude {2,0; 4,0; 3,0; 4,5; 2,0} volts, cada uma com uma duração de
200 amostras, o que corresponde a um vetor coluna com 1000 amostras, 200 com o valor 2,0,
seguidas de 200 com valor 4,0, seguidas de 200 amostras com amplitude 3,0, seguidas de 200
amostras com amplitude 4,5 e finalizado com as 200 últimas linhas de amplitude 2,0. Isto é
possível observar no início do código MATLAB apresentado no Anexo VI, que corresponde
ao código utilizado para realizar a simulação do controlador não adaptativo.
Na Figura 13 é apresentada a resposta simulada do sistema em anel fechado, assim como a
atuação do controlador (não adaptativo) para 1000 amostras.
Figura 13 – Resposta do sistema em anel fechado (simulada) e atuação do controlador não adaptativo.
17
Na Figura 14 é apresentada a mesma resposta da Figura 13, mas pormenorizando a
resposta quando há variação do valor da referência.
Figura 14 – Simulação da resposta do sistema: controlador não adaptativo.
É possível verificar que a resposta (a azul) segue a referência (a cor-de-laranja)
apresentando apenas uma pequena sobrelevação.
3.5. Controlador adaptativo
Para a realização da simulação do controlador adaptativo é necessário inicializar o vetor de
parametrização tendo em conta as amostras recolhidas para estimação (realizando a
identificação iterativa desde a amostra recolhida corresponde ao máximo entre a ordem do
polinómio A e a soma da ordem do polinómio B com o atraso até à última amostra dos dados
de estimação, num total de 495 amostras), o que resultou no vetor apresentado na Figura 11.
Depois da inicialização do vetor de parametrização, inicializou-se a matriz de covariância
como 5 vezes a matriz identidade de dimensão 6 por 6, o fator de esquecimento como 0,98
(considerou que o número de amostras relevantes é de 50) e considerou-se os mesmos pólos
utilizados para o controlador não adaptativo, como se pode ver no código apresentado no
Anexo VII.
Na Figura 15 é apresentada a resposta simulada do sistema em anel fechado, assim como a
atuação do controlador (adaptativo) para 1000 amostras. Já na Figura 16 é apresentada a
mesma resposta, mas em mais pormenor.
18
Figura 15 – Resposta do sistema em anel fechado e atuação do controlador adaptativo.
Figura 16 – Simulação da resposta do sistema: controlador adaptativo.
Na Figura 17 são apresentados os resultados da média do erro quadrático na identificação
em-linha realizada no controlador adaptativo e da média do erro quadrático na identificação
19
feita em diferido utilizando as amostras de estimação, sendo que se verifica que a última tem
uma ordem de grandeza muito mais elevada que a primeira, como seria de esperar.
Figura 17 – Média (à esquerda) e soma (à direita) do erro quadrático na identificação em linha realizada
no controlador adaptativo e erro quadrático utilizado na identificação realizada em diferido.
20
4. Implementação no sistema real
4.1. Diferenças entre o código utilizado para simulações e o código
utilizado para testes ao processo
A aplicação das funções de teste dos controladores referidas no ponto anterior apresentam
algumas limitações quando aplicadas ao sistema real. Por exemplo, não é possível determinar
a covariância de duas matrizes recorrendo à função MATLAB sconv fornecida pelo professor
e apresentada no Anexo IV. Para solucionar este problema foi necessário arranjar uma forma
alternativa para determinar os parâmetros do controlador em-linha, conforme os valores das
matrizes A e B instante a instante.
Na Equação 4.1 encontra-se a expressão que o polinómio característico do sistema em anel
fechado deverá apresentar, sendo que os coeficientes 𝛼1, … , 𝛼5 dependem dos pólos que se
irá escolher para este sistema.
𝐴𝑚(𝑞−1) = 1 + 𝛼1𝑞−1
+ 𝛼2𝑞−2
+ 𝛼3𝑞−3
+ 𝛼4𝑞−4
+ 𝛼5𝑞−5
Equação 4.1
Na Equação 4.2 apresenta-se os polinómios 𝐻(𝑞−1
), 𝐹(𝑞−1
) e 𝐺(𝑞−1
) sem substituição
dos valores dos coeficientes.
{
𝐻(𝑞−1
) = ℎ0
𝐹(𝑞−1
) = 1 + 𝑓1𝑞−1
+ 𝑓2𝑞−2
+ 𝑓3𝑞−3
𝐺(𝑞−1
) = 𝑔0 + 𝑔1𝑞−1
Equação 4.2
Como se pode ver no código apresentado no Anexo VIII, igualou-se a soma da covariância
de A com F com a covariância de B com G de forma simbólica, obtendo-se as 5 equações
apresentadas na Figura 18, onde eq1 corresponde à matriz para o coeficiente de 𝑞−1
, eq2
corresponde à matriz para o coeficiente de 𝑞−2
e assim sucessivamente até ao quinto
coeficiente.
Figura 18 – Resultados MATLAB das equações genéricas entre os diversos coeficientes.
21
Utilizando as equações apresentadas na Figura 18, determinou-se uma expressão matricial
que permite determinar os parâmetros do controlador em cada iteração, como se pode ver na
Equação 4.3.
(
1 0 0 𝑏1 0
𝑎1 1 0 𝑏2 𝑏1
𝑎2
0
0
𝑎1
𝑎2
0
1
𝑎1
𝑎2
𝑏3
𝑏4
0
𝑏2
𝑏3
𝑏4) (
𝑓1
𝑓2
𝑓3
𝑔0
𝑔1)
=
(
𝛼1 − 𝑎1
𝛼2 − 𝑎2
𝛼3
𝛼4
𝛼5 )
⇒ Equação 4.3
𝑃𝑎𝑟𝑎𝑚𝑒𝑡𝑟𝑜𝑠𝐶𝑜𝑛𝑡𝑟𝑜𝑙𝑎𝑑𝑜𝑟 =
(
𝑓1
𝑓2
𝑓3
𝑔0
𝑔1)
=
(
1 0 0 𝑏1 0
𝑎1 1 0 𝑏2 𝑏1
𝑎2
0
0
𝑎1
𝑎2
0
1
𝑎1
𝑎2
𝑏3
𝑏4
0
𝑏2
𝑏3
𝑏4)
−1
(
𝛼1 − 𝑎1
𝛼2 − 𝑎2
𝛼3
𝛼4
𝛼5 )
No Anexo V é apresentado como comentário o código correspondente à forma matricial
apresentadas.
No Anexo IX é apresentado o código para teste do processo para o controlador não
adaptativo e no Anexo X é apresentado o código para teste do controlador adaptativo. Como
se pode ver em ambos os códigos, para além da existência de funções específicas para
interagir com o processo PCT 37-100, tal como usbinit() para inicializar a placa de aquisição,
usbwrite(U,0) para excitar o sistema com uma tensão U e usbread(0) para ler o valor da saída
do sistema, outra diferença a assinalar entre os códigos para simulação e os códigos para teste
correspondem a tentar simplificar ao máximo os dados, inserindo diretamente os valores ao
invés de fazer leituras de ficheiros externos e evitando o uso de algumas funções tais como
sconv.
4.2. Resultados obtidos
Realizou-se tentativas de testes no sistema real em três ocasiões, sendo que em nenhuma
se obteve uma resposta e uma atuação estável no teste do sistema de controlo não adaptativo,
como se pode ver nas Figuras 19 e 20, onde se encontram as representações gráficas da
resposta e atuação no processo PCT 37-100 para o sistema de controlo não adaptativo
projetado neste trabalho. Na última tentativa utilizou-se o código apresentado no Anexo IX,
onde se utilizou diretamente os coeficientes dos polinómios F, G e H determinados na
simulação do controlador não adaptativo.
Como se pode ver na Figura 19, o comportamento tanto da resposta como da atuação
realizada pelo sistema de controlo é extremamente oscilatório. Para além disso, a média desta
oscilação não está centrada na referência: quando a referência corresponde a 2 volts, a média
encontra-se acima da referência; quando a referência apresenta um valor mais elevado, como
4 ou 4,5 volts, a média apresenta um valor abaixo da referência cerca de 1 volt. Para além
disso a atuação encontra-se a flutuar entre 0 e 5 volts, sendo estes os limites impostos à
atuação devido a condições operacionais na testagem do sistema. Isto significa que a atuação
ainda seria mais instável se não se tivesse imposto estas condições. O comportamento nas
últimas 200 amostras (para uma referência de 2 volts) é diferente do comportamento nas
restantes 800 amostras, com um período mais elevado entre oscilações da atuação.
22
Figura 19 – Teste do controlador não adaptativo no processo real.
Na Figura 20 também é apresentado a variação do erro durante o teste realizado,
apresentando este um comportamento oscilatório entre -2 e 2 volts. Determinou-se que a
soma do erro quadrático neste teste foi de 1398,5, valor muito mais elevado do que o obtido
na simulação deste mesmo sistema de controlo (0,4025).
Figura 20 – Teste do controlador não adaptativo no processo real: a vermelho a referência, a azul a
resposta do sistema e a amarelo o erro apresentado.
23
Quanto aos resultados do teste ao controlador não adaptativo, primeiro pensou-se que seria
um erro do código utilizado no teste. Mas, depois de todos os testes realizados ao processo,
penso que se pode concluir que este controlador, ou seja, o controlador não adaptativo
projetado, não poderia ser aplicado a um processo real. Isto acontece devido à diferença de
comportamento entre o processo real e o modelo considerado para representar o processo.
Para resolver este problema ter-se-ia que fazer outro modelo para o controlador não
adaptativo.
Como se pode ver na Figura 21, o teste do controlador adaptativo foi realizado com
relativo sucesso, apresentando apenas uma sobre-elevação elevada nas transições da
referência (principalmente quando o teste se inicia).
Figura 21 – Teste do controlado adaptativo no processo real.
Utilizando os resultados apresentados graficamente na Figura 21 determinou-se alguns
parâmetros de desempenho deste sistema de controlo no teste realizado: verifica-se que soma
do quadrado do erro é de 26,1516 e média do erro de -0,0377.
Figura 22 – Parâmetros de desempenho do sistema de controlo adaptativo projetado: média e soma do erro
quadrático.
24
4.3. Discussão dos resultados
Como se pode ver na Tabela 2, o sistema de controlo adaptativo, tanto em termos dos
testes como em termos de simulação, apresenta um muito menor erro que o sistema de
controlo não adaptativo. No entanto, em termos de média do erro quadrático e do somatório
do erro quadrático, verifica-se que a diferença entre o erro do controlador adaptativo e o erro
do controlador não adaptativo é muito mais acentuada na simulação do que nos testes
realizados ao processo real.
Tabela 2 – Comparação dos sistemas de controlo implementados.
Sistema de controlo não adaptativo Sistema de controlo adaptativo
Soma do quadrado
do erro
Média do quadrado
do erro
Soma do quadrado
do erro
Média do quadrado
do erro
Simulação 0,4025 8,0496 × 10−4
2,0934 × 10−28
2,0934 × 10−31
Teste 1,3985 × 103 1,3985 1,059282 × 102 1,059282 × 10−1
Na Figura 23 é apresentada a evolução do erro do controlador não adaptativo (a azul) e a
evolução do erro do controlador adaptativo (a laranja), em volts, ao longo das 1000 amostras
consideradas nas simulações.
Figura 23 – Evolução do erro apresentado nas simulações do sistema de controlo não adaptativo a azul e
do sistema de controlo adaptativo a laranja.
Na Figura 24 é apresentada a evolução do erro do controlador não adaptativo (a azul) e a
evolução do erro do controlador adaptativo (a laranja), em volts, ao longo das 1000 amostras
utilizadas nos testes realizados no processo real.
25
Figura 24 – Evolução do erro apresentado nos testes do sistema de controlo não adaptativo a azul e do
sistema de controlo adaptativo a laranja.
Como se pode visualizar nas Figuras 23 e 24, o comportamento nos testes é muito mais
oscilatório em termos de erro (relembrando que o teste do controlador não adaptativo
apresentou um comportamento mesmo instável). Mas nota-se um muito pior desempenho
para as primeiras amostras após a mudança de valor da referência, onde o erro apresenta um
pico elevado tanto nos testes como nas simulações realizadas.
5. Conclusões
Uma conclusão importante a retirar deste trabalho é a observação do quão diferente é o
processo real relativamente ao que é estimado por regressão linear. Em todas as simulações
realizadas obteve-se sempre um muito melhor comportamento do sistema do que o verificado
no respetivo teste real. Até se verificou (no controlador não adaptativo) que um sistema que
apresenta um ótimo comportamento em termos de simulação pode apresentar um
comportamento instável no processo real. Isto seria um problema muito grave se este não
fosse um projeto didático.
Pode-se concluir que para o processo estudado o controlo adaptativo apresenta um
desempenho consideravelmente melhor que o controlo não adaptativo, apresentando um
somatório do erro quadrático muito inferior.
Para o trabalho ficar concluído dever-se-ia retornar ao passo 3 do processo de
identificação do sistema (correspondente à escolha da estrutura ARX a utilizar) e realizar
novamente os passos seguintes até atingir o teste do sistema de controlo, fazendo verificação
da resposta do sistema real ao novo controlador não adaptativo. Quando se obtivesse uma
resposta satisfatória para o controlador não adaptativo, utilizar o mesmo modelo no
controlador adaptativo, de forma a poder comparar o desempenho dos dois sistemas de
controlo.
26
Referências Bibliográficas
[1] Gil, Paulo. Introdução à Identificação de Sistemas Lineares. PhD, 2017.
[2] Silva, Rui Neves. Controlo de Sistemas Dinâmicos, 2008.
[3] Gil, Paulo. “Identificação e Controlo Adaptativo”. PhD, 2021. Apresentação em
PowerPoint.
27
Anexos
Anexo I – Código do MATLAB utilizado para recolher os dados do
sistema
% Controlo Inteligente
% School year: 2021-2022
% getdataset.m
% Collecting 2 datasets from a system
% {Ue,Ye} and {Uv,Yv}
clear all, close, clc
Ue= idinput(500,'PRBS',[0 0.2],[2.0 5.0]); % Estimation input
Uv= idinput(500,'PRBS',[0 0.1],[2.0 5.0]); % Validation validation
Ts = 0.08; % Sampling time [s]
usbinit % DAQ initialisation
disp('Estimation dataset acquisition')
for index = 1:length(Ue)
usbwrite(Ue(index),0)
pause(Ts)
Ye(index,1) = usbread(0);
end
usbwrite(0,0) % Cooling down
pause(5)
clc % Clear screen
disp('Validation dataset acquisition')
for index = 1:length(Uv)
usbwrite(Uv(index),0)
pause(Ts)
Yv(index,1)= usbread(0);
end
usbwrite(0,0)
save dataset.mat Ue Ye Uv Yv -mat
Anexo II – Código do MATLAB utilizado para realizar a identificação
recursiva
clear
close all
clc
load dataset
load('arx241.mat')
A = polydata(arx241);
na = length(A)-1; % na = 2
theta = getpvec(arx241, 1); % vetor de parametrização para o instante
inicial (k = 1)
B = [0 theta(3) theta(4) theta(5) theta(6)];
dimARX = length(theta); % número de parâmetros
28
nb = dimARX-na; % nb = 4
nk = 1;
N = length(Ue); % dimensão das amostras
lambda = 1-1/N; % factor de esquecimento
pk = eye(dimARX)*5; % incialização da matriz de covariância
% vetores e matrizes utilzados para guardar os valores ao longo do
tempo
Ni = max(na, nb+nk);
phi_matrix = zeros(dimARX, N-Ni); % incialização de uma matriz com os
vectores de regressão em cada instante como uma coluna
epsilon = zeros(N-Ni, 1); % incialização de um vetor com o erro em
cada instante
theta_matrix = zeros(dimARX, N-Ni);
theta_matrix(:,1) = theta;
i = 2;
% identificação em linha
for index = Ni : N
phik = [-Ye(index - 1); -Ye(index - 2); Ue(index - 1); Ue(index -
2); Ue(index - 3); Ue(index - 4)];
phi_matrix(:,index) = phik;
[epsilon_k, theta, pk] = thetarec(theta, pk, Ye(index), phik,
lambda);
theta_matrix(:,i) = theta;
i = i+1;
epsilon(index) = epsilon_k;
end
polos = det5Polos(1,1,1);
[F, G, H] = tuning(theta, polos);
Anexo III – Função do MATLAB utilizada para determinar os pólos
function [polos] = det5Polos(settlingTime, tolerancia, overshoot)
Tamostragem = 0.08;
Dmin =
(abs(((log(overshoot/100))^2)/((log(overshoot/100))^2+pi^2)))^(1/2);
ts_min = -log(tolerancia/100)/settlingTime; % ts_min = D * wn
wn = ts_min/Dmin;
real = -Dmin * wn; % real = D * wn
imag = wn*sqrt(Dmin^2-1);
polo1 = real + imag;
polo2 = real - imag;
polo3 = 5*real;
polo4 = 5*real;
polo5 = 5*real;
29
polos = [exp(polo1*Tamostragem) exp(polo2*Tamostragem)
exp(polo3*Tamostragem) exp(polo4*Tamostragem) exp(polo5*Tamostragem)];
end
Anexo IV – Função do MATLAB utilizada para determinar a
convolução entre os polinómios
function w = sconv(u,v)
% CONV Nonnumeric convolution.
% W = CONV(U,V) is the convolution of symbolic vectors U and V.
% length(w) = length(u)+length(v)-1
% w(k) = sum(u(j)*v(k+1-j)), j = max(1,k+1-length(v):min(k,length(u))
% EXAMPLE
% syms a b c d
% u = [a b c d];
% v = [3 1 4 1 5 9];
%sconv(u,v).'
% Form Toeplitz matrix from v.
m = length(u);
n = length(v);
p = m+n-1;
T = [v(:); zeros(m,1)]*ones(1,m);
T = reshape(T(1:m*p),p,m);
% Convolve
w = T*u(:);
% Return row vector if appropriate
if size(u,2) > size(u,1)
w = w.';
end
Anexo V – Função do MATLAB utilizada para sintonizar o controlador
por colocação de pólos sem efeito integral
function [F, G, H] = tuning(theta,polos)
Am = poly(polos);
alfa1 = Am(2);
alfa2 = Am(3);
alfa3 = Am(4);
alfa4 = Am(5);
alfa5 = Am(6);
a1 = theta(1);
a2 = theta(2);
b1 = theta(3);
b2 = theta(4);
b3 = theta(5);
b4 = theta(6);
A = [1 a1 a2];
B = [0 b1 b2 b3 b4];
syms f1 f2 f3 g0 g1;
30
F = [1 f1 f2 f3];
G = [g0 g1];
Af = sconv(A,F) + sconv(B,G);
eqns = [Af(2) == alfa1, Af(3) == alfa2, Af(4) == alfa3, Af(5) ==
alfa4, Af(6) == alfa5];
S = solve(eqns,[f1,f2,f3,g0,g1]);
f1_ = vpa(S.f1);
f2_ = vpa(S.f2);
f3_ = vpa(S.f3);
g0_ = vpa(S.g0);
g1_ = vpa(S.g1);
F = [ 1 double(f1_) double(f2_) double(f3_) ];
G =[ double(g0_) double(g1_) ];
% M = [1 0 0 b1 0; a1 1 0 b2 b1; a2 a1 1 b3 b2; 0 a2 a1 b4 b3; 0 0 a2 0
b4];
% T = [(alfa1-a1); (alfa2-a2); alfa3; alfa4; alfa5];
% MatrizParametros = M^(-1)*T;
% f1 = MatrizParametros(1);
% f2 = MatrizParametros(2);
% f3 = MatrizParametros(3);
% g0 = MatrizParametros(4);
% g1 = MatrizParametros(5);
% F = [1 f1 f2 f3];
% G = [g0 g1];
% h0 = (A*F+B*G)/B
h0 = (sum(A)*sum(F)+ sum(B)*sum(G))/(sum(B));
H = h0;
% roots( sconv(A,F) + sconv(B,G) );
end
Anexo VI – Código do MATLAB utilizado para simular o controlador
não adaptativo projetado (para a referência pedida)
% Código da simulação do controlador NA
clear, close, clc
load('dataset.mat')
% sinal de referencia
Ref = [2.0*ones(200,1); 4.0*ones(200,1); 3.0*ones(200,1); 4.5*ones(200,1);
2.0*ones(200,1)];
Nref = length(Ref);
u = zeros(Nref, 1);
y = zeros(Nref, 1);
Ts = 0.08 ; % intervalo de amostragem 80 ms
na = 2; nb = 4; nk = 1;
A = [1.0000 -1.6189 0.6506];
B = [ 0 0.0954 0.0342 -0.0616 -0.0290 ];
theta = [A(2); A(3); B(2); B(3); B(4); B(5)]; % vetor de parametrização
31
para o instante inicial
dimARX = length(theta);
Ni = max(na,nb+nk);
N = length(Ue);
epsilon = zeros(N-Ni, 1);
lambda = 1-1/50; % factor de esquecimento
pk = 5*eye(dimARX); % incialização da matriz de covariância
dimARX = length(theta);
[A, B] = detAB(theta);
[polos] = det5Polos(1, 1, 1);
[F, G, H] = tuning(theta,polos);
disp("Em modo controlo!");
for index = Ni: Nref
% Função do controlador
u(index,1) = controlador(F(2), F(3), F(4), G(1), G(2), H(1),
Ref(index), u(index-1,1), u(index-2,1), u(index-3,1), y(index,1), y(index-
1,1));
% Saturação da excitação
u(index,1) = max(min(u(index,1),5),0);
y(index+1,1) = - theta(1)*y(index,1) - theta(2)*y(index-1,1) +
theta(3)*u(index,1)+ theta(4)*u(index-1,1) + theta(5)*u(index-2,1) +
theta(6)*u(index-3,1);
end
subplot(2,1,1), plot(y(Ni:end)),hold on, plot(Ref)
title("Resposta do sistema em anel fechado")
ylabel("Saída"), xlabel("Amostra")
subplot(2,1,2), plot(u(Ni:end))
title("Actuação")
ylabel("Acção de controlo"), xlabel("Amostra")
Anexo VII – Código do MATLAB utilizado para simular o controlador
adaptativo projetado (para a referência pedida)
% Script da simulação do controlador Adaptativo
clear, close, clc
load('dataset.mat')
% sinal de referencia
Ref = [2.0*ones(200,1); 4.0*ones(200,1); 3.0*ones(200,1); 4.5*ones(200,1);
2.0*ones(200,1)];
Nref = length(Ref);
u = zeros(Nref, 1);
y = zeros(Nref, 1);
na = 2; nb = 4; nk = 1;
A = [1.0000 -1.6189 0.6506];
B = [ 0 0.0954 0.0342 -0.0616 -0.0290 ];
theta = [A(2); A(3); B(2); B(3); B(4); B(5)]; % vetor de parametrização
32
para o instante inicial
Ni = max(na,nb+nk);
dimARX = 6;
N = length(Ue);
lambda = 1-1/50; % factor de esquecimento
pk = 5*eye(dimARX); % incialização da matriz de covariância
quadradoErroA = zeros(N-Ni, 1);
quadradoErroNA = zeros(N-Ni, 1);
for index = Ni : N
phik = [-Ye(index - 1); -Ye(index - 2); Ue(index - 1); Ue(index - 2);
Ue(index - 3); Ue(index - 4)];
[epsilon_k, theta, pk] = thetarec(theta, pk, Ye(index), phik, lambda);
quadradoErroNA(index) = epsilon_k^2;
end
[polos] = det5Polos(1, 1, 1);
[A, B] = detAB(theta);
[F, G, H] = tuning(theta,polos);
disp("Em modo controlo!");
for index = Ni : Nref
phik = [-y(index-1,1); -y(index-2,1); u(index-1,1); u(index-2,1);
u(index-3,1); u(index-4,1)];
[epsilon_k, theta, pk] = thetarec(theta, pk, y(index,1), phik,
lambda);
quadradoErroA(index) = epsilon_k^2;
u(index,1) = controlador(F(2), F(3), F(4), G(1), G(2), H(1),
Ref(index), u(index-1,1), u(index-2,1), u(index-3,1), y(index,1), y(index-
1,1));
u(index,1) = max(min(u(index,1),5),0); % Saturação da excitação
[0, 5]V
y(index+1,1) = - theta(1)*y(index,1) - theta(2)*y(index-1,1) +
theta(3)*u(index,1)+ theta(4)*u(index-1,1) + theta(5)*u(index-2,1) +
theta(6)*u(index-3,1);
end
subplot(2,1,1), plot(y(Ni:end)),hold on, plot(Ref)
title('Resposta do sistema em anel fechado')
ylabel('Saída'), xlabel('Amostra')
subplot(2,1,2), plot(u(Ni:end))
title('Actuação')
ylabel('Acção de controlo'), xlabel('Amostra')
33
Anexo VIII – Live Script do MATLAB utilizado determinar matriz de
transformação utilizada para determinar os parâmetros do
controlador adaptativo
syms f1 f2 f3 g0 g1 a1 a2 b1 b2 b3 b4 alfa1 alfa2 alfa3 alfa4 alfa5;
F = [1 f1 f2 f3];
G = [g0 g1];
A_sim = [1 a1 a2];
B_sim = [0 b1 b2 b3 b4];
Am_sim = [1 alfa1 alfa2 alfa3 alfa4 alfa5];
Af_sim = sconv(A_sim,F) + sconv(B_sim,G);
Af2_sim = Af_sim(2:end);
Am2_sim = Am_sim(2:end);
eq1 = Am2_sim(1) == Af2_sim(1);
eq2 = Am2_sim(2) == Af2_sim(2);
eq3 = Am2_sim(3) == Af2_sim(3);
eq4 = Am2_sim(4) == Af2_sim(4);
eq5 = Am2_sim(5) == Af2_sim(5);
Anexo IX – Código do MATLAB utilizado para testar o controlador não
adaptativo projetado
% Script de teste do controlador NA
clear all, close all, clc
na = 2;
nb = 4;
nk = 1;
% sinal de referencia
Ref = [2.0*ones(200,1); 4.0*ones(200,1); 3.0*ones(200,1); 4.5*ones(200,1);
2.0*ones(200,1)];
Nref = length(Ref);
u = zeros(Nref, 1);
y = zeros(Nref, 1);
Ts = 0.08 ; % intervalo de amostragem 80 ms
F = [1.0000 -2.9390 -3.1282 -0.9711];
G = [28.7444 -21.7211];
H = 2.1153;
usbinit;
Ni = 5;
disp('Em modo controlo!');
for index = Ni:length(Ref)
y(index,1)= usbread(0);
tic % Inicia cronómetro
if index <= max(na,nb+nk)
u(index,1) = Ref(index);
else
u(index,1) = controlador(F(2), F(3), F(4), G(1), G(2), H(1),
Ref(index), u(index-1,1), u(index-2,1), u(index-3,1), y(index,1), y(index-
1,1)); % Função do controlador
end
u(index,1) = max(min(u(index,1),5),0); % Saturação da excitação
usbwrite(u(index,1),0);
34
Dt= toc; % Stop cronómetro
pause(Ts-Dt)
end
usbwrite(0,0);
save expdata_naoadap.mat Ref u y -mat
Anexo X – Código do MATLAB utilizado para testar o controlador
adaptativo projetado
% Script de teste do controlador Adaptativo
clear all, close all, clc
usbinit % Inicialização da placa de aquisição
% sinal de referencia
Ref = [2.0*ones(200,1); 4.0*ones(200,1); 3.0*ones(200,1); 4.5*ones(200,1);
2.0*ones(200,1)];
Nref = length(Ref);
u = zeros(Nref, 1);
y = zeros(Nref, 1);
Ts = 0.08 ; % intervalo de amostragem 80 ms
na = 2; nb = 4; nk = 1;
% A = [1.0000 -1.6189 0.6506];
% B = [ 0 0.0954 0.0342 -0.0616 -0.0290 ];
% theta = [A(2); A(3); B(2); B(3); B(4); B(5)]; % vetor de parametrização
para o instante inicial
theta = [ -1.5652; 0.6123; 0.0990; 0.0313; -0.0489; -0.0269]; % obtido em
diferido
Ni = max(na,nb+nk);
dimARX = length(theta);
[polos] = det5Polos(1, 1, 1);
lambda = 1-1/50; % factor de esquecimento
pk = 5*eye(dimARX); % incialização da matriz de covariância
disp('Em modo controlo!')
for index = 1:length(Ref)
y(index,1) = usbread(0);
tic % Inicia cronómetro
if index <= Ni
u(index,1) = Ref(index);
else
phik = [-y(index-1,1); -y(index-2,1); u(index-1,1); u(index-2,1);
u(index-3,1); u(index-4,1)];
[epsilon_k, theta, pk] = thetarec(theta, pk, y(index,1), phik,
lambda); % Adaptação em-linha dos parâmetros do modelo;
[A, B] = detAB(theta);
[F, G, H] = tuning(theta, polos); % Parâmetros do controlador
u(index,1) = controlador(F(2), F(3), F(4), G(1), G(2), H(1),
Ref(index), u(index-1,1), u(index-2,1), u(index-3,1), y(index,1), y(index-
35
1,1));
end
u(index,1) = max(min(u(index,1),5),0); % Saturação da excitação [0,
5]V
usbwrite(u(index),0);
Dt= toc; % Stop cronómetro
pause(Ts-Dt);
end
usbwrite(0,0)
save expdata_adap.mat Ref u y -mat

Mais conteúdo relacionado

Semelhante a TP1CI_57572.pdf

Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Rodrigo Almeida
 
A cadeia de Markov na análise de convergência do algoritmo genético quando...
A cadeia de Markov na análise de convergência do algoritmo genético quando...A cadeia de Markov na análise de convergência do algoritmo genético quando...
A cadeia de Markov na análise de convergência do algoritmo genético quando...
vcsouza
 
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Giovani Barili
 
Pendulo invertido com lógica Fuzzy
Pendulo invertido com lógica FuzzyPendulo invertido com lógica Fuzzy
Pendulo invertido com lógica Fuzzy
David Luna Santos
 
Monografia sobre Inteligência artificial para comparar algoritmos de treiname...
Monografia sobre Inteligência artificial para comparar algoritmos de treiname...Monografia sobre Inteligência artificial para comparar algoritmos de treiname...
Monografia sobre Inteligência artificial para comparar algoritmos de treiname...
Fabiano Rates
 
Monografia fabiano rates
Monografia fabiano ratesMonografia fabiano rates
Monografia fabiano rates
Fabiano Rates
 
8.controle de-processo
8.controle de-processo8.controle de-processo
8.controle de-processo
Maria Lucia Machado Moraes
 
Controle de-processo
Controle de-processoControle de-processo
Controle de-processo
Luciano Bittencourt de Abreu
 
PROJETO DE ESTABILIZADORES DE SISTEMAS ELÉTRICOS DE POTÊNCIA UTILIZANDO CONTR...
PROJETO DE ESTABILIZADORES DE SISTEMAS ELÉTRICOS DE POTÊNCIA UTILIZANDO CONTR...PROJETO DE ESTABILIZADORES DE SISTEMAS ELÉTRICOS DE POTÊNCIA UTILIZANDO CONTR...
PROJETO DE ESTABILIZADORES DE SISTEMAS ELÉTRICOS DE POTÊNCIA UTILIZANDO CONTR...
UFPA
 
MSA - Análise dos sistemas de medição
MSA - Análise dos sistemas de mediçãoMSA - Análise dos sistemas de medição
MSA - Análise dos sistemas de medição
Carlos Ernesto Natali
 
Relatorio base so
Relatorio base soRelatorio base so
Relatorio base so
berenguer1979
 
análise de falhas
análise de falhasanálise de falhas
análise de falhas
Hiroshi Okawati
 
Livro analise de dados amostrais complexos
Livro analise de dados amostrais complexosLivro analise de dados amostrais complexos
Livro analise de dados amostrais complexos
Diogo Freire
 
monografia_andre_paro
monografia_andre_paromonografia_andre_paro
monografia_andre_paro
Andre Luiz Catini Paro
 
SistemasOperacionais-peter-jandl-jr.pdf
SistemasOperacionais-peter-jandl-jr.pdfSistemasOperacionais-peter-jandl-jr.pdf
SistemasOperacionais-peter-jandl-jr.pdf
JoelManuel8
 
Estruturas dados
Estruturas dadosEstruturas dados
Estruturas dados
Lizandra Santos
 
Estruturas dados
Estruturas dadosEstruturas dados
Estruturas dados
Adelando Nunes
 
18.ago esmeralda 15.00_321_cpfl paulista
18.ago esmeralda 15.00_321_cpfl paulista18.ago esmeralda 15.00_321_cpfl paulista
18.ago esmeralda 15.00_321_cpfl paulista
itgfiles
 
Rede Neural MLP para reconhecimento de Faces
Rede Neural MLP para reconhecimento de FacesRede Neural MLP para reconhecimento de Faces
Rede Neural MLP para reconhecimento de Faces
Adilmar Dantas
 
Notas sobre Sistemas Operacionais
Notas sobre Sistemas Operacionais Notas sobre Sistemas Operacionais
Notas sobre Sistemas Operacionais
Daniel Brandão
 

Semelhante a TP1CI_57572.pdf (20)

Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
 
A cadeia de Markov na análise de convergência do algoritmo genético quando...
A cadeia de Markov na análise de convergência do algoritmo genético quando...A cadeia de Markov na análise de convergência do algoritmo genético quando...
A cadeia de Markov na análise de convergência do algoritmo genético quando...
 
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
 
Pendulo invertido com lógica Fuzzy
Pendulo invertido com lógica FuzzyPendulo invertido com lógica Fuzzy
Pendulo invertido com lógica Fuzzy
 
Monografia sobre Inteligência artificial para comparar algoritmos de treiname...
Monografia sobre Inteligência artificial para comparar algoritmos de treiname...Monografia sobre Inteligência artificial para comparar algoritmos de treiname...
Monografia sobre Inteligência artificial para comparar algoritmos de treiname...
 
Monografia fabiano rates
Monografia fabiano ratesMonografia fabiano rates
Monografia fabiano rates
 
8.controle de-processo
8.controle de-processo8.controle de-processo
8.controle de-processo
 
Controle de-processo
Controle de-processoControle de-processo
Controle de-processo
 
PROJETO DE ESTABILIZADORES DE SISTEMAS ELÉTRICOS DE POTÊNCIA UTILIZANDO CONTR...
PROJETO DE ESTABILIZADORES DE SISTEMAS ELÉTRICOS DE POTÊNCIA UTILIZANDO CONTR...PROJETO DE ESTABILIZADORES DE SISTEMAS ELÉTRICOS DE POTÊNCIA UTILIZANDO CONTR...
PROJETO DE ESTABILIZADORES DE SISTEMAS ELÉTRICOS DE POTÊNCIA UTILIZANDO CONTR...
 
MSA - Análise dos sistemas de medição
MSA - Análise dos sistemas de mediçãoMSA - Análise dos sistemas de medição
MSA - Análise dos sistemas de medição
 
Relatorio base so
Relatorio base soRelatorio base so
Relatorio base so
 
análise de falhas
análise de falhasanálise de falhas
análise de falhas
 
Livro analise de dados amostrais complexos
Livro analise de dados amostrais complexosLivro analise de dados amostrais complexos
Livro analise de dados amostrais complexos
 
monografia_andre_paro
monografia_andre_paromonografia_andre_paro
monografia_andre_paro
 
SistemasOperacionais-peter-jandl-jr.pdf
SistemasOperacionais-peter-jandl-jr.pdfSistemasOperacionais-peter-jandl-jr.pdf
SistemasOperacionais-peter-jandl-jr.pdf
 
Estruturas dados
Estruturas dadosEstruturas dados
Estruturas dados
 
Estruturas dados
Estruturas dadosEstruturas dados
Estruturas dados
 
18.ago esmeralda 15.00_321_cpfl paulista
18.ago esmeralda 15.00_321_cpfl paulista18.ago esmeralda 15.00_321_cpfl paulista
18.ago esmeralda 15.00_321_cpfl paulista
 
Rede Neural MLP para reconhecimento de Faces
Rede Neural MLP para reconhecimento de FacesRede Neural MLP para reconhecimento de Faces
Rede Neural MLP para reconhecimento de Faces
 
Notas sobre Sistemas Operacionais
Notas sobre Sistemas Operacionais Notas sobre Sistemas Operacionais
Notas sobre Sistemas Operacionais
 

Último

AE02 - FORMAÇÃO SOCIOCULTURAL E ÉTICA II UNICESUMAR 52/2024
AE02 - FORMAÇÃO SOCIOCULTURAL E ÉTICA II UNICESUMAR 52/2024AE02 - FORMAÇÃO SOCIOCULTURAL E ÉTICA II UNICESUMAR 52/2024
AE02 - FORMAÇÃO SOCIOCULTURAL E ÉTICA II UNICESUMAR 52/2024
Consultoria Acadêmica
 
Dimensionamento de eixo. estudo de caso.pdf
Dimensionamento de eixo. estudo de caso.pdfDimensionamento de eixo. estudo de caso.pdf
Dimensionamento de eixo. estudo de caso.pdf
RodrigoQuintilianode1
 
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL ENGENHARIA DA SUSTENTABILIDADE UNIC...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL ENGENHARIA DA SUSTENTABILIDADE UNIC...AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL ENGENHARIA DA SUSTENTABILIDADE UNIC...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL ENGENHARIA DA SUSTENTABILIDADE UNIC...
Consultoria Acadêmica
 
MAQUINAS-EQUIPAMENTOS-E-FERRAMENTAS.pptx
MAQUINAS-EQUIPAMENTOS-E-FERRAMENTAS.pptxMAQUINAS-EQUIPAMENTOS-E-FERRAMENTAS.pptx
MAQUINAS-EQUIPAMENTOS-E-FERRAMENTAS.pptx
Vilson Stollmeier
 
Introdução ao GNSS Sistema Global de Posicionamento
Introdução ao GNSS Sistema Global de PosicionamentoIntrodução ao GNSS Sistema Global de Posicionamento
Introdução ao GNSS Sistema Global de Posicionamento
GeraldoGouveia2
 
AE03 - MATERIAIS DA CONSTRUÇÃO MECÂNICA UNICESUMAR 52/2024
AE03 - MATERIAIS DA CONSTRUÇÃO MECÂNICA UNICESUMAR 52/2024AE03 - MATERIAIS DA CONSTRUÇÃO MECÂNICA UNICESUMAR 52/2024
AE03 - MATERIAIS DA CONSTRUÇÃO MECÂNICA UNICESUMAR 52/2024
Consultoria Acadêmica
 
Workshop Gerdau 2023 - Soluções em Aço - Resumo.pptx
Workshop Gerdau 2023 - Soluções em Aço - Resumo.pptxWorkshop Gerdau 2023 - Soluções em Aço - Resumo.pptx
Workshop Gerdau 2023 - Soluções em Aço - Resumo.pptx
marcosmpereira
 
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL INDÚSTRIA E TRANSFORMAÇÃO DIGITAL ...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL  INDÚSTRIA E TRANSFORMAÇÃO DIGITAL ...AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL  INDÚSTRIA E TRANSFORMAÇÃO DIGITAL ...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL INDÚSTRIA E TRANSFORMAÇÃO DIGITAL ...
Consultoria Acadêmica
 

Último (8)

AE02 - FORMAÇÃO SOCIOCULTURAL E ÉTICA II UNICESUMAR 52/2024
AE02 - FORMAÇÃO SOCIOCULTURAL E ÉTICA II UNICESUMAR 52/2024AE02 - FORMAÇÃO SOCIOCULTURAL E ÉTICA II UNICESUMAR 52/2024
AE02 - FORMAÇÃO SOCIOCULTURAL E ÉTICA II UNICESUMAR 52/2024
 
Dimensionamento de eixo. estudo de caso.pdf
Dimensionamento de eixo. estudo de caso.pdfDimensionamento de eixo. estudo de caso.pdf
Dimensionamento de eixo. estudo de caso.pdf
 
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL ENGENHARIA DA SUSTENTABILIDADE UNIC...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL ENGENHARIA DA SUSTENTABILIDADE UNIC...AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL ENGENHARIA DA SUSTENTABILIDADE UNIC...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL ENGENHARIA DA SUSTENTABILIDADE UNIC...
 
MAQUINAS-EQUIPAMENTOS-E-FERRAMENTAS.pptx
MAQUINAS-EQUIPAMENTOS-E-FERRAMENTAS.pptxMAQUINAS-EQUIPAMENTOS-E-FERRAMENTAS.pptx
MAQUINAS-EQUIPAMENTOS-E-FERRAMENTAS.pptx
 
Introdução ao GNSS Sistema Global de Posicionamento
Introdução ao GNSS Sistema Global de PosicionamentoIntrodução ao GNSS Sistema Global de Posicionamento
Introdução ao GNSS Sistema Global de Posicionamento
 
AE03 - MATERIAIS DA CONSTRUÇÃO MECÂNICA UNICESUMAR 52/2024
AE03 - MATERIAIS DA CONSTRUÇÃO MECÂNICA UNICESUMAR 52/2024AE03 - MATERIAIS DA CONSTRUÇÃO MECÂNICA UNICESUMAR 52/2024
AE03 - MATERIAIS DA CONSTRUÇÃO MECÂNICA UNICESUMAR 52/2024
 
Workshop Gerdau 2023 - Soluções em Aço - Resumo.pptx
Workshop Gerdau 2023 - Soluções em Aço - Resumo.pptxWorkshop Gerdau 2023 - Soluções em Aço - Resumo.pptx
Workshop Gerdau 2023 - Soluções em Aço - Resumo.pptx
 
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL INDÚSTRIA E TRANSFORMAÇÃO DIGITAL ...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL  INDÚSTRIA E TRANSFORMAÇÃO DIGITAL ...AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL  INDÚSTRIA E TRANSFORMAÇÃO DIGITAL ...
AE03 - ESTUDO CONTEMPORÂNEO E TRANSVERSAL INDÚSTRIA E TRANSFORMAÇÃO DIGITAL ...
 

TP1CI_57572.pdf

  • 1. Relatório do Primeiro Trabalho Prático da Unidade Curricular Controlo Inteligente Identificação e Controlo Adaptativo de um Processo Térmico Monte da Caparica, 12 de janeiro de 2022 Elaborado por: Alice Dias, aluna N.º 57572
  • 2.
  • 3. Índice 1. Introdução....................................................................................................................3 2. Conceitos.....................................................................................................................5 2.1. Identificação de sistemas .....................................................................................5 2.1.1. Propriedades dos dados recolhidos ..................................................................5 2.1.2. Estrutura ARX..................................................................................................6 2.1.3. Identificação recursiva .....................................................................................7 2.1.4. Validação do modelo........................................................................................7 2.2. Controlador por colocação de pólos ....................................................................8 2.3. Controlador adaptativo.......................................................................................10 3. Desenvolvimento e teste............................................................................................11 3.1. Recolha de dados do sistema .............................................................................11 3.2. Seleção dos parâmetros a utilizar da estrutura ARX .........................................11 3.3. Identificação recursiva.......................................................................................14 3.4. Controlador não adaptativo................................................................................15 3.5. Controlador adaptativo.......................................................................................17 4. Implementação no sistema real .................................................................................20 4.1. Diferenças entre o código utilizado para simulações e o código utilizado para testes ao processo.................................................................................................................20 4.2. Resultados obtidos .............................................................................................21 4.3. Discussão dos resultados....................................................................................24 5. Conclusões ................................................................................................................25 Referências Bibliográficas ..................................................................................................26 Anexos.................................................................................................................................27 Anexo I – Código do MATLAB utilizado para recolher os dados do sistema ...............27 Anexo II – Código do MATLAB utilizado para realizar a identificação recursiva........27 Anexo III – Função do MATLAB utilizada para determinar os pólos ...........................28 Anexo IV – Função do MATLAB utilizada para determinar a convolução entre os polinómios............................................................................................................................29 Anexo V – Função do MATLAB utilizada para sintonizar o controlador por colocação de pólos sem efeito integral .................................................................................................29 Anexo VI – Código do MATLAB utilizado para simular o controlador não adaptativo projetado (para a referência pedida) ....................................................................................30
  • 4. 2 Anexo VII – Código do MATLAB utilizado para simular o controlador adaptativo projetado (para a referência pedida) ....................................................................................31 Anexo VIII – Live Script do MATLAB utilizado determinar matriz de transformação utilizada para determinar os parâmetros do controlador adaptativo ....................................33 Anexo IX – Código do MATLAB utilizado para testar o controlador não adaptativo projetado ..............................................................................................................................33 Anexo X – Código do MATLAB utilizado para testar o controlador adaptativo projetado ..............................................................................................................................34
  • 5. 3 1. Introdução Este trabalho prático, que é realizado no âmbito da disciplina de Controlo Inteligente, tem como principal objetivo realizar o controlo por colocação de pólos de um sistema dinâmico cuja modelização é realizada de forma empírica, denominando-se assim identificação. O sistema a ser estudado é um processo laboratorial térmico denominado PCT 37-100, da Feedback, que é utilizado como plataforma de teste para controladores e posterior análise do seu desempenho. Este sistema é composto por um ventilador, uma resistência que permite aquecer o ar, um transdutor de temperatura (termístor) de resposta linear (face à tensão) para temperaturas em 30°C e 60°C e um tubo por onde o ar aquecido circula, como se pode ver na Figura 1. Figura 1 – Processo laboratorial térmico PCT 37 – 100. O PCT 37-100 permite modificar a velocidade de rotação do ventilador, tendo uma escala com 11 posições de velocidade de rotação (de 0 a 10). Também tem 3 posições para o sensor, início, meio e fim do tubo, o que permite conferir diferentes tempos de atraso ao processo. No entanto, neste trabalho laboratorial irá trabalhar-se a uma velocidade constante na posição intermédia 5 e o sensor estará na posição intermédia do tubo. Para ser possível determinar os parâmetros do controlador de forma que o sistema em anel fechado do sistema apresente os pólos desejados, é necessário realizar a identificação do sistema. Isto implica executar os seguintes passos: 1. Especificação dos ensaios a realizar; 2. Aquisição de dados experimentais. 3. Seleção de uma estrutura de modelos que faça sentido face ao sistema estudado; 4. Estimação dos parâmetros de acordo com a estrutura de modelo selecionada; 5. Validação do modelo. O primeiro passo é dado no enunciado deste trabalho: a entrada do sistema é a tensão aplicada à resistência que aquece o ar, a saída do sistema é a temperatura no sensor (que é proporcional à tensão no termístor) e a velocidade de amostragem tanto na entrada como na saída do sistema será de 80 milissegundos. Os restantes passos da identificação são apresentados no ponto 3 deste trabalho. A modelação de um sistema a partir de dados empíricos é um processo iterativo como o esquematizado na Figura 2. Como se pode ver, poderia ter que se escolher uma estrutura de modelos diferente da escolhida inicialmente se não se considerar que o modelo é válido.
  • 6. 4 Também se poderia optar por realizar os ensaios de forma diferente, recolhendo dados de variáveis diferentes. No entanto, neste trabalho laboratorial o tipo de ensaio é o dado pelo enunciado e a estrutura de modelos a utilizar será a estrutura ARX. A parte iterativa utilizada neste processo laboratorial corresponderá à escolha dos parâmetros do polinómio de forma ao modelo não ser excessivamente complexo, mas reproduzir o comportamento do sistema ensaiado com um erro reduzido. Figura 2 – Processo iterativo de identificação de um sistema [1]. A estrutura deste documento consiste em apresentar no ponto 2 os conceitos teóricos relacionados com a identificação e realização do controlador (adaptativo e não adaptativo). O ponto 3 corresponde à parte prática, desde a identificação em si do sistema estudado até ao projeto e teste do controlador não adaptativo. Já no ponto 4 é apresentada a informação relativa ao teste do controlador adaptativo projetado no sistema real, ou seja, no processo PCT 37-100, sendo feita a discussão dos resultados obtidos. Por fim, apresentam-se as conclusões obtidas com a realização deste trabalho.
  • 7. 5 2. Conceitos Neste ponto do relatório serão explicados os principais conceitos teóricos por detrás da realização deste trabalho laboratorial. 2.1. Identificação de sistemas Como foi referido na introdução, a modelação do sistema através da recolha de dados experimentais denomina-se identificação e é um processo iterativo representado na Figura 2 e constituído pelos 5 estados seguintes: 1. Especificação dos ensaios a realizar; 2. Aquisição de dados experimentais. 3. Seleção de uma estrutura de modelos que faça sentido face ao sistema estudado; 4. Estimação dos parâmetros de acordo com a estrutura de modelo selecionada; 5. Validação do modelo. 2.1.1. Propriedades dos dados recolhidos As propriedades dos dados recolhidos na fase de ensaio serão utilizados posteriormente na estimação dos parâmetros, pelo que são muito importantes para a qualidade do modelo obtido, sendo que se considera que o conjunto de dados não é “informativo” caso a entrada não seja persistentemente excitante. Para um sinal u ser designado de “persistentemente excitante” (PE) de ordem n é necessário verificar duas condições: a existência de 𝑅(𝜏) e a verificação de que R é uma matriz definida positiva, sendo que é possível fazer estas determinações a partir das Equações 2.1 e 2.2. 𝑅(𝜏) = 𝑙𝑖𝑚 𝑁→∞ 1 𝑁 ∑ 𝑢(𝑘)𝑢(𝑘 − 𝜏), 𝜏 = 0, … , 𝑛 − 1 𝑁 𝑘=1 Equação 2.1 𝑅 = 𝑙𝑖𝑚 𝑁→∞ 1 𝑁 𝑅𝑁 = [ 𝑅(0) 𝑅(1) ⋮ 𝑅(𝑛 − 1) 𝑅(1) 𝑅(2) ⋮ 𝑅(𝑛 − 2) ⋯ ⋯ ⋱ ⋯ 𝑅(𝑛 − 1) 𝑅(𝑛 − 2) ⋮ 𝑅(0) ] Equação 2.2 A matriz de autocorrelação pode ser obtida pela expressão da Equação 2.3, sendo que a solução da equação normal é única se a característica desta matriz for máxima (n). 𝑅𝑁 = 𝛷𝑇 𝛷 = ( ∑ 𝑢2 (𝑘 − 1) 𝑁 𝑘=𝑛+1 ⋯ ∑ 𝑢(𝑘 − 1)𝑢(𝑘 − 𝑛) 𝑁 𝑘=𝑛+1 ⋮ ⋱ ⋮ ∑ 𝑢(𝑘 − 1)𝑢(𝑘 − 𝑛) 𝑁 𝑘=𝑛+1 ⋯ ∑ 𝑢2 (𝑘 − 𝑛) 𝑁 𝑘=𝑛+1 ) Equação 2.3 onde Φ = [ 𝜑𝑇 (1) ⋮ 𝜑𝑇 (𝑁) ]
  • 8. 6 2.1.2. Estrutura ARX A estrutura “AutoRegressiva com excitação eXógena”, mais conhecida como estrutura ARX, é um método simples e eficiente de estimação polinomial que consiste na resolução de equações de regressão linear na forma analítica. Figura 3 – Diagrama de blocos representativo da estrutura ARX. Uma das grandes vantagens que esta estrutura apresenta consiste em a sua ser solução ser única, ou seja, os modelos com esta estrutura são globalmente identificáveis. Já a principal desvantagem que este modelo apresenta deve-se às perturbações fazerem parte da dinâmica do sistema, o que representa que estes modelos consideram que a resposta do sistema face à excitação e a resposta do sistema face a perturbações compartilham o mesmo conjunto de pólos o tempo todo. Ora isto não corresponde ao sistema real. No entanto, é possível reduzir esta desvantagem tendo uma boa relação sinal-ruído. Considera-se que a perturbação aplicada ao sistema é ruído branco Gaussiano discreto, ou seja, considera-se que a perturbação é um processo estocástico com densidade espectral constante, consistindo em uma sucessão de variáveis aleatórias independentes igualmente distribuídas, de média nula e variância 𝜎2 . Quando a perturbação não é ruído branco, o acoplamento entre a dinâmica (determinística) do sistema e a dinâmica estocástica pode enviesar a estimação do modelo ARX, pelo que é aconselhável utilizar um modelo com ordem mais elevada do que o modelo real (tendo em atenção que aumentar a ordem do modelo pode alterar a dinâmica deste, inclusive a estabilidade). O preditor da estrutura de dados ARX é dado pela expressão da Equação 2.4, onde 𝜑 corresponde ao vetor de regressão e 𝜃 ao vetor de parametrização. { 𝑦 ̂(𝑘) = 𝜑𝑇(𝑘)𝜃 𝜑𝑇(𝑘) = [−𝑦(𝑘 − 1) … −𝑦(𝑘 − 𝑛𝑎) 𝑢(𝑘 − 1) … 𝑢(𝑘 − 𝑛𝑏)] 𝜃 = [𝑎1 … 𝑎𝑛𝑎 𝑏1 … 𝑏𝑛𝑏]𝑇 Equação 2.4 O polinómio associado a esta estrutura é caracterizado por três parâmetros diferentes: 𝑛𝑎 que corresponde à ordem do polinómio 𝐴(𝑞−1), 𝑛𝑏 que corresponde à ordem do polinómio 𝐵(𝑞−1) e 𝑛𝑘 que é o atraso do sistema, ou seja, é a ordem do primeiro coeficiente não nulo do polinómio B. 𝐵(𝑞−1 ) 𝐴(𝑞−1) = 𝑏1𝑞−1 + 𝑏2𝑞−2 + ⋯ + 𝑏𝑛𝑏 𝑞−𝑛𝑏 1 + 𝑎1𝑞−1 + 𝑎2𝑞−2 + ⋯ + 𝑎𝑛𝑎 𝑞−𝑛𝑎 1 𝐴(𝑞−1) = 1 1 + 𝑎1𝑞−1 + 𝑎2𝑞−2 + ⋯ + 𝑎𝑛𝑎 𝑞−𝑛𝑎 𝑢(𝑘) 𝑒(𝑘) 𝑦(𝑘)
  • 9. 7 2.1.3. Identificação recursiva Como as observações neste trabalho laboratorial surgem sequencialmente em tempo real, faz sentido proceder a uma identificação em linha. Isso significa que a matriz de covariância no instante k, 𝑃(𝑘), e o vetor de parametrização no mesmo instante, 𝜃 ̂(𝑘), deverão ser obtidos recursivamente a partir dos valores no instante passado. Na Equação 2.5 apresenta-se a expressão do vetor de parametrização obtido iterativamente, tendo sido esta expressão deduzida recorrendo ao método dos mínimos quadrados recursivos. Nesta expressão 𝜀(𝑘) corresponde ao erro de modelação no instante k. 𝜃 ̂(𝑘) = 𝜃 ̂(𝑘 − 1) + 𝑃(𝑘)𝜑(𝑘)𝜀(𝑘), com Equação 2.5 𝜀(𝑘) = 𝑦(𝑘) − 𝑦 ̂(𝑘|𝜃 ̂(𝑘 − 1) = 𝑦(𝑘) − 𝜑𝑇 𝜃 ̂(𝑘 − 1) Outro aspeto a ter em conta na obtenção da matriz de covariância está relacionado com o tipo de dinâmica do sistema. Caso o sistema a identificar seja variante, há que ter em consideração esse aspeto, reinicializando a matriz de covariância (𝑃(𝑘) = 𝑃(0)) quando houver uma reconfiguração abrupta do sistema e incorporando um fator de esquecimento λ sempre que haja uma alteração suave de parâmetros. Este fator de esquecimento, compreendido entre 0,95 e 1, deve ser tal que o método dos mínimos quadrados contenha apenas as observações mais relevantes para a descrição do sistema tendo em conta a janela de amostras relevantes, podendo ser determinado pela expressão apresentada na Equação 2.6, onde 𝑁𝑘 é o número de amostras consideradas relevantes. 𝑁𝑘 = 1 1−𝜆 ⇔ 𝜆 = 1 − 1 𝑁𝑘 Equação 2.6 Tendo em conta o que foi referido, a matriz de covariância pode ser obtida a partir de valores passados da mesma (𝑃(𝑘 − 1)) recorrendo à expressão da Equação 2.7, onde 𝕀𝑛 corresponde à matriz identidade de ordem n, 𝜆 ao fator de esquecimento e 𝜑 ao vetor de regressão. Esta matriz é proporcional à covariância do erro de estimação, é positiva e influencia a qualidade do modelo obtido. 𝑃(𝑘) = 𝑃(𝑘−1) 𝜆 [𝕀𝑛 − 𝜑(𝑘)𝜑𝑇(𝑘)𝑃(𝑘−1) 𝜆+𝜑𝑇(𝑘)𝑃(𝑘−1)𝜑(𝑘) ] Equação 2.7 As expressões recursivas para obter o vetor de parametrização (Equação 2.5) e para a matriz de covariância (Equação 2.7) precisam ser inicializadas. Quanto ao vetor de parametrização, como existe estimativa inicial através da estrutura ARX, deve conter os parâmetros estimados (ver Equação 2.4). A matriz de covariância deve ser inicializada como uma matriz diagonal (quadrada) da dimensão do vetor de parametrização, sendo que se esta matriz 𝑃(0) tiver valores elevados há uma elevada incerteza em 𝜃(0). 2.1.4. Validação do modelo Antes de se utilizar determinado modelo para projetar um controlador é essencial validar o modelo, ou seja, avaliar se o modelo representa de forma adequado o comportamento dinâmico do sistema a identificar. Os dois processos de validação a ser utilizados neste trabalho consistem na validação cruzada e na análise dos resíduos.
  • 10. 8 A validação cruzada consiste em utilizar um determinado critério, como, por exemplo, a média do somatório do quadrado do erro de predição, para comparar o desempenho do modelo para um conjunto de dados diferentes dos dados de estimação. Caso a ordem de grandeza da medida de desempenho utilizada for a mesma para os dados de estimação e de validação então o modelo pode ser considerado aceitável. Caso contrário será necessário procurar outro modelo, seja modificando a ordem dos polinómios ou selecionando outro tipo de estrutura. A Equação 2.8 descreve o critério utilizado como medida de desempenho do modelo face aos dados, sendo este a média do somatório do quadrado do erro de predição, onde 𝜀 corresponde ao erro de predição, N ao número de amostras utilizadas, 𝑦 o valor real na saída e 𝑦 ̂ o valor da saída previsto pelo modelo. 𝑉(𝜃, 𝑍𝑁) = 1 𝑁 ∑ 𝜀2 (𝑘) 𝑁 𝑘=1 = 1 𝑁 ∑ [𝑦(𝑘) − 𝑦 ̂(𝑘|𝜃 ̂)] 2 𝑁 𝑘=1 Equação 2.8 Os resíduos entre as saídas do sistema e do modelo, cuja expressão é apresentada na Equação 2.9, deverão apresentar-se como um ruído branco e deverão ser independentes da entrada para que o modelo descreva adequadamente o sistema, sendo importante avaliar que isto acontece antes de validar o modelo. 𝜀(𝑘, 𝜃 ̂𝑁) = 𝑦(𝑘) − 𝑦 ̂(𝑘|𝜃 ̂𝑁) Equação 2.9 A condições prática para que os resíduos possam ser considerados uma sucessão de variáveis independentes consiste em verificar que o módulo da covariância normalizada dos resíduos é inferior a um valor tal que o modelo apresente um nível de confiança de 95%, como se pode ver na Equação 2.10, onde 𝑅 ̂𝜀(𝜏) corresponde à covariância e 𝑅 ̂𝜀 ̅̅̅(𝜏) à covariância normalizada. Este nível de confiança corresponde a um intervalo de [− 1,96 √𝑁 : 1,96 √𝑁 ] para uma distribuição assintótica normal de cada componente. |𝑅 ̂𝜀 ̅̅̅(𝜏)| ≤ 1,96 √𝑁 ; 𝜏 ≥ 1, onde Equação 2.10 𝑅 ̂𝜀 ̅̅̅(𝜏) = 𝑅 ̂𝜀(𝜏) 𝑅 ̂𝜀(0) = 1 𝑁 ∑ 𝜀(𝑘)𝜀(𝑘 + 𝜏) 𝑁−𝜏 𝑘=1 1 𝑁 ∑ 𝜀2(𝑘) 𝑁 𝑘=1 2.2. Controlador por colocação de pólos O controlador por colocação de pólos é caracterizado pelo seu projeto ser assente na determinação dos parâmetros do controlador de tal forma que o sistema em anel fechado apresente os pólos desejados. Neste trabalho pretende-se projetar um controlador deste tipo sem que haja efeito integral nem cancelamento de zeros. Considere-se um controlador a controlar um sistema identificado através da estrutura ARX e cujo diagrama de blocos está representado na Figura 4, então a expressão que descreve o controlador será dada pela Equação 2.11. 𝐹(𝑞−1)𝑢(𝑘) = 𝐻(𝑞−1)𝑟(𝑘) − 𝐺(𝑞−1)𝑦(𝑘), onde Equação 2.11
  • 11. 9 { 𝐻(𝑞−1 ) = ℎ0 + ℎ1𝑞−1 + ℎ2𝑞−2 + ⋯ + ℎ𝑛ℎ 𝑞−𝑛ℎ 𝐹(𝑞−1 ) = 1 + 𝑓1𝑞−1 + 𝑓2𝑞−2 + ⋯ + 𝑓𝑛𝑓 𝑞−𝑛𝑓 𝐺(𝑞−1 ) = 𝑔0 + 𝑔1𝑞−1 + 𝑔2𝑞−2 + ⋯ + 𝑔𝑛𝑔 𝑞−𝑛𝑔 Figura 4 - Diagrama de blocos do controlador. O projeto deste controlador consiste em determinar os coeficientes dos polinómios 𝐻(𝑞−1 ), 𝐹(𝑞−1 ) e 𝐺(𝑞−1 ), tal que 𝐴𝑚(𝑞−1) apresente os pólos para o sistema em anel fechado que façam com que este apresente a dinâmica pretendida. O polinómio característico 𝐴𝑚(𝑞−1) com ordem 𝑛𝛼 pode ser expresso pela Equação 2.12. 𝐴𝑚(𝑞−1) = 1 + 𝛼1𝑞−1 + 𝛼2𝑞−2 + ⋯ + 𝛼𝑛𝛼 𝑞−𝑛𝛼 Equação 2.12 Transformando o diagrama de blocos apresentado na Figura 4 numa expressão, obtém-se a função de transferência em anel fechado em função dos polinómios 𝐴(𝑞−1) e 𝐵(𝑞−1) do sistema e dos polinómios 𝐻(𝑞−1 ), 𝐹(𝑞−1 ) e 𝐺(𝑞−1 ) do controlador, como se pode ver na Equação 2.13. 𝑦(𝑘) = 𝐵 ̃(𝑞−1) 𝐴 ̃(𝑞−1) 𝑟(𝑘) onde Equação 2.13 𝐵 ̃(𝑞−1) 𝐴 ̃(𝑞−1) = 𝐵(𝑞−1)𝐻(𝑞−1) 𝐴(𝑞−1)𝐹(𝑞−1) + 𝐵(𝑞−1)𝐺(𝑞−1) A Equação de Diophantine (ou identidade de Bezout) permite relacionar os pólos pretendidos com os coeficientes do controlador, como se pode ver na Equação 2.14, onde d corresponde ao atraso puro (delay). Esta equação só irá apresentar solução única caso A e B não tenham fatores comuns. 𝐴𝑚(𝑞−1) = 𝐴(𝑞−1)𝐹(𝑞−1) + 𝑞−𝑑 𝐵 ̅(𝑞−1)𝐺(𝑞−1) Equação 2.14 com 𝐵 ̅(𝑞−1) = 𝑞+𝑑 𝐵(𝑞−1) = 𝑞+𝑑 (𝑏1𝑞−1 + 𝑏2𝑞−2 + ⋯ + 𝑏𝑛𝑏 𝑞−𝑛𝑏) O primeiro passo consiste em determinar a ordem dos polinómios do controlador, de tal forma que este não apresente efeito integral e de forma a não haver cancelamento de zeros. Este passo é realizado determinando 𝑑, 𝑛𝑓 e 𝑛𝑔 através do sistema apresentado na Equação 2.15.
  • 12. 10 { 𝑑 = 𝑛𝑘 − 1 𝑛𝑓 = 𝑛𝑏 − 1 + 𝑑 𝑛𝑔 = 𝑛𝑎 − 1 Equação 2.15 Seguidamente é necessário determinar a ordem do polinómio característico, através da Equação 2.16. 𝑛𝛼 = 𝑚𝑎𝑥 (𝑛𝑎 + 𝑛𝑓, 𝑛𝑏 + 𝑛𝑔) Equação 2.16 Para um erro em regime final nulo o ganho estático terá de ser unitário, sendo que esta é a razão da colocação do polinómio 𝐻(𝑞−1) em cascata. Este polinómio tem ordem zero, sendo igual ao seu coeficiente ℎ0, o que permite escolher um valor que transforme o ganho estático do sistema em anel fechado unitário. Esse valor é obtido através da Equação 2.17 quando substituído o atraso 𝑞−1 por 1. ℎ0 = 𝐴(𝑞−1)𝐹(𝑞−1) + 𝑞−1 𝐵 ̅(𝑞−1)𝐺(𝑞−1) 𝐵(𝑞−1) com Equação 2.17 𝑞−1 = 1 Os restantes coeficientes do controlador terão de ser determinados por inspeção, comparando o polinómio 𝐴𝑚(𝑞−1) desejado com o segundo membro da Equação 2.14, ou seja, com o denominador da função de transferência expresso em termos dos coeficientes de 𝐴(𝑞−1), 𝐵(𝑞−1), 𝐹(𝑞−1) e 𝐺(𝑞−1). 2.3. Controlador adaptativo Controladores com parâmetros fixos apenas fazem sentido para sistemas lineares e invariantes, pelo que não são apropriados para o sistema deste trabalho. Assim sendo a solução consiste em projetar um controlador adaptativo, ou seja, um controlador constituído por parâmetros ajustáveis e munido de mecanismos que o permitem alterar a sua dinâmica de forma a fazer face a modificações ocorridas num dado ambiente, na dinâmica do processo e/ou nas características de eventuais perturbações Como a dinâmica do sistema estudado não é previsível, não é aconselhável ajustar os parâmetros do controlador a partir de uma tabela de ganhos, sendo que a solução deverá passar por projetar um controlador adaptativo autosintonizável, onde os parâmetros do modelo são atualizados em-linha, recorrendo ao processo explicado no ponto 2.1.3 deste relatório.
  • 13. 11 3. Desenvolvimento e teste 3.1. Recolha de dados do sistema Para ser possível determinar os polinómios A e B relativos ao modelo ARX (ver 2.1.2), foi necessário recolher dois conjuntos de dados com a resposta do sistema a uma excitação específica em tempo discreto. Um dos conjuntos destina-se à estimação dos parâmetros do modelo, o conjunto 𝑍𝑒 𝑁 = {𝑌𝑒(𝑘), 𝑈𝑒(𝑘)}. O outro conjunto, 𝑍𝑣 𝑁 = {𝑌𝑣(𝑘), 𝑈𝑣(𝑘)}, destina-se à validação do modelo. Considerando um tempo de amostragem de 80 milissegundos, o sensor inserido na posição intermédia e com um caudal de ar nominal constante, recolheu-se 500 amostras da resposta do sistema a dois sinais pseudoaleatórios com amplitudes compreendidas entre 2 e 5 volts a partir da função idinput() do MATLAB. O código utilizado para recolher estas amostras é apresentado no Anexo I. Na Figura 5 é apresentada a resposta do sistema no tempo obtidos no ensaio e relativos aos dados de estimação. Figura 5 – Representação no tempo dos dados de estimação obtidos no ensaio. 3.2. Seleção dos parâmetros a utilizar da estrutura ARX Utilizando o conjunto de dados para estimação, recorreu-se à aplicação systemIdentification lançada a partir do MATLAB para comparar o ajuste, a autocorrelação entre os resíduos da saída e correlação entre entrada e saída da estrutura ARX para vários valores dos parâmetros 𝑛𝑎, 𝑛𝑏e 𝑛𝑘. Pretende-se obter uma estrutura que se ajuste bem aos dados de estimação recolhidos e cuja análise dos resíduos permita obter um nível de confiança de 95% (para a maior parte dos instantes k). Na Tabela 1 apresenta-se o valor dos melhores ajustes para diversos modelos ARX obtido a partir do da função model output do systemIdentification após se ter retirado a parte
  • 14. 12 transiente dos dados. Também é realizada a validação cruzada, comparando o ajuste do modelo aos dados de validação. Tabela 1 – Ajuste de modelos ARX aos dados para diferentes parâmetros. Modelo Parâmetros do polinómio Melhor ajuste (best fit) Melhor ajuste aos dados de validação 𝑛𝑎 𝑛𝑏 𝑛𝑘 ARX 1 1 1 82,87% 83,38% 2 1 1 80,91% 80,76% 2 2 1 83,03% 82,93% 3 2 1 84,58% 84,58% 3 3 1 84,51% 84,58% 2 4 1 85,47% 85,65% 4 3 1 86,62% 86,77% Quanto à validação cruzada, pretende-se obter um modelo em que o melhor ajuste aos dados de estimação seja da mesma ordem do ajuste aos dados de validação. Todos os modelos apresentados cumprem essa especificação, sendo que o ARX(3,2,1) é o que melhor cumpre este requisito visto que os ajustes são iguais. Como se pode ver na Figura 6, obteve-se a autocorrelação entre os resíduos da saída e a correlação entre os resíduos da entrada e saída do sistema para diferentes parâmetros desta estrutura. Estes gráficos foram obtidos selecionando “Model resids” na aplicação de identificação de sistemas, onde o intervalo de confiança a 95% é balizado por duas retas horizontais. Figura 6 – Autocorrelação entre os resíduos da saída (em cima) e correlação entre os resíduos da entrada e da saída do sistema (em baixo) para modelos ARX com parâmetros diferentes utilizando os dados de estimação: ARX(4,3,1), ARX(3,2,1), ARX(3,3,1), ARX(2,2,1), ARX(1,1,1), ARX(2,1,1).
  • 15. 13 O aumento dos parâmetros aumenta a complexidade do modelo, em virtude de aumentar a ordem dos polinómios. Complexidade implica gastos e, no caso de controlo adaptativo, recursos de processamento. Desta forma é importante encontrar um compromisso entre a qualidade e complexidade do modelo. Isto fez com que não se considerasse estruturas cuja soma da ordem dos polinómios A e B fosse superior a 6. No entanto, serão comparadas as métricas da estrutura ARX(4,3,1) com as duas estruturas cuja autocorrelação entre os resíduos da saída foram consideradas aceitáveis, ARX(2,4,1) e ARX(3,3,1). Na Figura 7 é apresentada a comparação dos ajustes entre estas três estruturas. Figura 7 – “Model output” das estruturas ARX(4,3,1), ARX(2,4,1) e ARX(3,3,1) Na Figura 8 é apresentada a comparação da análise dos resíduos para as três estruturas que foram pré-selecionadas anteriormente. Figura 8 – Autocorrelação entre os resíduos da saída (em cima) e correlação entre os resíduos da entrada e da saída do sistema (em baixo) para o modelo ARX(4,3,1) a vermelho, para o modelo ARX(3,3,1) a rosa e para o modelo ARX(2,4,1) a azul. Como se pode ver na Figura 8, a estrutura ARX(3,3,1) está fora do intervalo de confiança para mais instantes que as restantes estruturas. Também é possível verificar que a diferença da qualidade da estrutura ARX(4,3,1) com a qualidade de ARX(2,4,1) relativamente à análise de resíduos não é muito significativa. Por isto, embora a estrutura cuja soma da ordem do numerador com a ordem do denominador é 7 apresente melhores resultados desta análise do que a estrutura ARX(2,4,1), a diferença não justifica o aumento da soma da ordem dos polinómios A e B. Tendo-se escolhido a estrutura ARX(2,4,1) transportou-se esta para o Workspace do MATLAB, obtendo-se os dados apresentados na Figura 9.
  • 16. 14 Figura 9 – Descrição do modelo ARX(2,4,1) apresentada em MATLAB. Assim sendo, a expressão que descreve o modelo ARX selecionado é apresentado na Equação 3.1. 𝐵(𝑞−1 ) 𝐴(𝑞−1) = 0,0954𝑞−1 + 0,0342𝑞−2 − 0,0616𝑞−3 − 0,0290𝑞−4 1 − 1,6189𝑞−1 + 0,6506𝑞−2 3.3. Identificação recursiva As Equações 2.5 a 2.7 permitiram realizar uma identificação recursiva, ou seja, a determinação dos parâmetros instante a instante, como se pode ver na Figura 10, onde é apresentada a função que realiza esta identificação. Esta função recebe o vetor de parametrização e a matriz de covariância no instante anterior, o valor da saída do sistema e o vetor de regressão no próprio instante e o fator de esquecimento. Devolve o erro de parametrização, o vetor de parametrização e a matriz de covariância no instante atual. Figura 10 – Código MATLAB da função que realiza a identificação recursiva. Como se pode ver no Anexo II, inicializou-se o vetor de parametrização com os parâmetros dos polinómios A e B recorrendo à função getpvec() e iniciou-se a matriz de covariância como a matriz identidade multiplicada por 5. Ao fim de 495 iterações obteve-se o vetor de parametrização e os polinómios A e B apresentados na Figura 11. Equação 3.1
  • 17. 15 Figura 11 – Resultados da identificação recursiva para 495 iterações. 3.4. Controlador não adaptativo Pretende-se sintonizar o controlador por colocação de pólos recorrendo ao modelo obtido no ponto 3.2 deste trabalho, pelo que primeiro é necessário determinar o grau dos vários polinómios que caracterizam o controlador a partir do sistema apresentado na Equação 2.15. Determinou-se que o atraso puro, d, é nulo (porque 𝑛𝑘é igual a um), que o polinómio 𝐺(𝑞−1 ) é de ordem um e que o polinómio 𝐹(𝑞−1 ) é de terceira ordem, como se pode ver no sistema apresentado na Equação 3.2. { 𝑑 = 𝑛𝑘 − 1 = 1 − 1 = 0 𝑛𝑓 = 𝑛𝑏 − 1 + 𝑑 = 4 − 1 + 0 = 3 𝑛𝑔 = 𝑛𝑎 − 1 = 2 − 1 = 1 Equação 3.2 Tendo a dimensão dos polinómios que fazem parte do controlador, determinou-se que a ordem do polinómio característico 𝐴𝑚(𝑞−1 ) é cinco, isto recorrendo à equação 2.16 (max(2 + 3, 4 + 1) = 5). Isto significa que serão necessários 5 pólos para obter o polinómio característico. Para um sistema discreto ser estável é necessário que todos os seus pólos estejam contidos no círculo unitário, sendo tão mais dominantes como mais próximos do círculo. Considerando como especificação um tempo de estabelecimento (settling time) de 1 segundo e uma sobrelevação (overshoot) de 1% com uma tolerância de 1%, determinou-se 5 pólos utilizando a função apresentada no Anexo III, sendo esses pólos apresentados na Figura 12. Figura 12 – Determinação do polinómio característico assumindo a existência de 5 pólos: dois associados às especificações referidas e 3 pólos não dominantes (mais próximos da origem). Recorrendo à função poly do MATLAB aplicada ao vetor constituído pelos pólos do sistema (que correspondem aos zeros do polinómio característico), determinou-se os coeficientes do polinómio 𝐴𝑚(𝑞−1 ) que será considerado neste trabalho, como se pode ver na Equação 3.3. 𝐴𝑚(𝑞−1) = 1 − 1,8157𝑞−1 + 1,1912𝑞−2 − 0,3325𝑞−3 + 0,0414𝑞−4 − 0,0019𝑞−5
  • 18. 16 Equação 3.3 Para determinar os polinómios F e G recorreu-se à função sconv cedida pelo docente da disciplina e apresentada no Anexo IV deste documento, sendo que o polinómio característico do sistema em anel fechado (Equação 3.3) é a soma da covariância entre os polinómios A e F com a covariância entre os polinómios B e G. Apresentando os polinómios F e G coeficientes considerados simbólicos em MATLAB Utilizando a Equação 2.17, determinou-se o único coeficiente do polinómio H. A implementação em MATLAB da multiplicação dos polinómios apresentados quando 𝑞−1 é 1 foi realizada recorrendo à função sum() que soma todos os elementos de um vetor, visto que os polinómios são representados sob a forma de vetor constituído pelos seus coeficientes. Recorrendo aos resultados apresentados na Equação 3.4, implementou-se a função MATLAB que sintoniza o controlador em função do vetor de parametrização e dos pólos desejados para o sistema em anel fechado (denominada tuning(,)) que determina os polinómios F, G e H. Esta função é apresentada no Anexo V. Para os polinómios A e B apresentados na Equação 3.1 e os 5 pólos apresentados na Figura 12, os parâmetros do controlador são os apresentados na Equação 3.4. { 𝐻(𝑞−1 ) = 2,1137 𝐹(𝑞−1) = 1 − 2,9813𝑞−1 − 3,1771𝑞−2 − 0,9854𝑞−3 𝐺(𝑞−1) = 29,1783 − 22,0622𝑞−1 Equação 3.4 Como definido pelo enunciado, o sinal de referência é constituído por uma sucessão de ondas quadradas de amplitude {2,0; 4,0; 3,0; 4,5; 2,0} volts, cada uma com uma duração de 200 amostras, o que corresponde a um vetor coluna com 1000 amostras, 200 com o valor 2,0, seguidas de 200 com valor 4,0, seguidas de 200 amostras com amplitude 3,0, seguidas de 200 amostras com amplitude 4,5 e finalizado com as 200 últimas linhas de amplitude 2,0. Isto é possível observar no início do código MATLAB apresentado no Anexo VI, que corresponde ao código utilizado para realizar a simulação do controlador não adaptativo. Na Figura 13 é apresentada a resposta simulada do sistema em anel fechado, assim como a atuação do controlador (não adaptativo) para 1000 amostras. Figura 13 – Resposta do sistema em anel fechado (simulada) e atuação do controlador não adaptativo.
  • 19. 17 Na Figura 14 é apresentada a mesma resposta da Figura 13, mas pormenorizando a resposta quando há variação do valor da referência. Figura 14 – Simulação da resposta do sistema: controlador não adaptativo. É possível verificar que a resposta (a azul) segue a referência (a cor-de-laranja) apresentando apenas uma pequena sobrelevação. 3.5. Controlador adaptativo Para a realização da simulação do controlador adaptativo é necessário inicializar o vetor de parametrização tendo em conta as amostras recolhidas para estimação (realizando a identificação iterativa desde a amostra recolhida corresponde ao máximo entre a ordem do polinómio A e a soma da ordem do polinómio B com o atraso até à última amostra dos dados de estimação, num total de 495 amostras), o que resultou no vetor apresentado na Figura 11. Depois da inicialização do vetor de parametrização, inicializou-se a matriz de covariância como 5 vezes a matriz identidade de dimensão 6 por 6, o fator de esquecimento como 0,98 (considerou que o número de amostras relevantes é de 50) e considerou-se os mesmos pólos utilizados para o controlador não adaptativo, como se pode ver no código apresentado no Anexo VII. Na Figura 15 é apresentada a resposta simulada do sistema em anel fechado, assim como a atuação do controlador (adaptativo) para 1000 amostras. Já na Figura 16 é apresentada a mesma resposta, mas em mais pormenor.
  • 20. 18 Figura 15 – Resposta do sistema em anel fechado e atuação do controlador adaptativo. Figura 16 – Simulação da resposta do sistema: controlador adaptativo. Na Figura 17 são apresentados os resultados da média do erro quadrático na identificação em-linha realizada no controlador adaptativo e da média do erro quadrático na identificação
  • 21. 19 feita em diferido utilizando as amostras de estimação, sendo que se verifica que a última tem uma ordem de grandeza muito mais elevada que a primeira, como seria de esperar. Figura 17 – Média (à esquerda) e soma (à direita) do erro quadrático na identificação em linha realizada no controlador adaptativo e erro quadrático utilizado na identificação realizada em diferido.
  • 22. 20 4. Implementação no sistema real 4.1. Diferenças entre o código utilizado para simulações e o código utilizado para testes ao processo A aplicação das funções de teste dos controladores referidas no ponto anterior apresentam algumas limitações quando aplicadas ao sistema real. Por exemplo, não é possível determinar a covariância de duas matrizes recorrendo à função MATLAB sconv fornecida pelo professor e apresentada no Anexo IV. Para solucionar este problema foi necessário arranjar uma forma alternativa para determinar os parâmetros do controlador em-linha, conforme os valores das matrizes A e B instante a instante. Na Equação 4.1 encontra-se a expressão que o polinómio característico do sistema em anel fechado deverá apresentar, sendo que os coeficientes 𝛼1, … , 𝛼5 dependem dos pólos que se irá escolher para este sistema. 𝐴𝑚(𝑞−1) = 1 + 𝛼1𝑞−1 + 𝛼2𝑞−2 + 𝛼3𝑞−3 + 𝛼4𝑞−4 + 𝛼5𝑞−5 Equação 4.1 Na Equação 4.2 apresenta-se os polinómios 𝐻(𝑞−1 ), 𝐹(𝑞−1 ) e 𝐺(𝑞−1 ) sem substituição dos valores dos coeficientes. { 𝐻(𝑞−1 ) = ℎ0 𝐹(𝑞−1 ) = 1 + 𝑓1𝑞−1 + 𝑓2𝑞−2 + 𝑓3𝑞−3 𝐺(𝑞−1 ) = 𝑔0 + 𝑔1𝑞−1 Equação 4.2 Como se pode ver no código apresentado no Anexo VIII, igualou-se a soma da covariância de A com F com a covariância de B com G de forma simbólica, obtendo-se as 5 equações apresentadas na Figura 18, onde eq1 corresponde à matriz para o coeficiente de 𝑞−1 , eq2 corresponde à matriz para o coeficiente de 𝑞−2 e assim sucessivamente até ao quinto coeficiente. Figura 18 – Resultados MATLAB das equações genéricas entre os diversos coeficientes.
  • 23. 21 Utilizando as equações apresentadas na Figura 18, determinou-se uma expressão matricial que permite determinar os parâmetros do controlador em cada iteração, como se pode ver na Equação 4.3. ( 1 0 0 𝑏1 0 𝑎1 1 0 𝑏2 𝑏1 𝑎2 0 0 𝑎1 𝑎2 0 1 𝑎1 𝑎2 𝑏3 𝑏4 0 𝑏2 𝑏3 𝑏4) ( 𝑓1 𝑓2 𝑓3 𝑔0 𝑔1) = ( 𝛼1 − 𝑎1 𝛼2 − 𝑎2 𝛼3 𝛼4 𝛼5 ) ⇒ Equação 4.3 𝑃𝑎𝑟𝑎𝑚𝑒𝑡𝑟𝑜𝑠𝐶𝑜𝑛𝑡𝑟𝑜𝑙𝑎𝑑𝑜𝑟 = ( 𝑓1 𝑓2 𝑓3 𝑔0 𝑔1) = ( 1 0 0 𝑏1 0 𝑎1 1 0 𝑏2 𝑏1 𝑎2 0 0 𝑎1 𝑎2 0 1 𝑎1 𝑎2 𝑏3 𝑏4 0 𝑏2 𝑏3 𝑏4) −1 ( 𝛼1 − 𝑎1 𝛼2 − 𝑎2 𝛼3 𝛼4 𝛼5 ) No Anexo V é apresentado como comentário o código correspondente à forma matricial apresentadas. No Anexo IX é apresentado o código para teste do processo para o controlador não adaptativo e no Anexo X é apresentado o código para teste do controlador adaptativo. Como se pode ver em ambos os códigos, para além da existência de funções específicas para interagir com o processo PCT 37-100, tal como usbinit() para inicializar a placa de aquisição, usbwrite(U,0) para excitar o sistema com uma tensão U e usbread(0) para ler o valor da saída do sistema, outra diferença a assinalar entre os códigos para simulação e os códigos para teste correspondem a tentar simplificar ao máximo os dados, inserindo diretamente os valores ao invés de fazer leituras de ficheiros externos e evitando o uso de algumas funções tais como sconv. 4.2. Resultados obtidos Realizou-se tentativas de testes no sistema real em três ocasiões, sendo que em nenhuma se obteve uma resposta e uma atuação estável no teste do sistema de controlo não adaptativo, como se pode ver nas Figuras 19 e 20, onde se encontram as representações gráficas da resposta e atuação no processo PCT 37-100 para o sistema de controlo não adaptativo projetado neste trabalho. Na última tentativa utilizou-se o código apresentado no Anexo IX, onde se utilizou diretamente os coeficientes dos polinómios F, G e H determinados na simulação do controlador não adaptativo. Como se pode ver na Figura 19, o comportamento tanto da resposta como da atuação realizada pelo sistema de controlo é extremamente oscilatório. Para além disso, a média desta oscilação não está centrada na referência: quando a referência corresponde a 2 volts, a média encontra-se acima da referência; quando a referência apresenta um valor mais elevado, como 4 ou 4,5 volts, a média apresenta um valor abaixo da referência cerca de 1 volt. Para além disso a atuação encontra-se a flutuar entre 0 e 5 volts, sendo estes os limites impostos à atuação devido a condições operacionais na testagem do sistema. Isto significa que a atuação ainda seria mais instável se não se tivesse imposto estas condições. O comportamento nas últimas 200 amostras (para uma referência de 2 volts) é diferente do comportamento nas restantes 800 amostras, com um período mais elevado entre oscilações da atuação.
  • 24. 22 Figura 19 – Teste do controlador não adaptativo no processo real. Na Figura 20 também é apresentado a variação do erro durante o teste realizado, apresentando este um comportamento oscilatório entre -2 e 2 volts. Determinou-se que a soma do erro quadrático neste teste foi de 1398,5, valor muito mais elevado do que o obtido na simulação deste mesmo sistema de controlo (0,4025). Figura 20 – Teste do controlador não adaptativo no processo real: a vermelho a referência, a azul a resposta do sistema e a amarelo o erro apresentado.
  • 25. 23 Quanto aos resultados do teste ao controlador não adaptativo, primeiro pensou-se que seria um erro do código utilizado no teste. Mas, depois de todos os testes realizados ao processo, penso que se pode concluir que este controlador, ou seja, o controlador não adaptativo projetado, não poderia ser aplicado a um processo real. Isto acontece devido à diferença de comportamento entre o processo real e o modelo considerado para representar o processo. Para resolver este problema ter-se-ia que fazer outro modelo para o controlador não adaptativo. Como se pode ver na Figura 21, o teste do controlador adaptativo foi realizado com relativo sucesso, apresentando apenas uma sobre-elevação elevada nas transições da referência (principalmente quando o teste se inicia). Figura 21 – Teste do controlado adaptativo no processo real. Utilizando os resultados apresentados graficamente na Figura 21 determinou-se alguns parâmetros de desempenho deste sistema de controlo no teste realizado: verifica-se que soma do quadrado do erro é de 26,1516 e média do erro de -0,0377. Figura 22 – Parâmetros de desempenho do sistema de controlo adaptativo projetado: média e soma do erro quadrático.
  • 26. 24 4.3. Discussão dos resultados Como se pode ver na Tabela 2, o sistema de controlo adaptativo, tanto em termos dos testes como em termos de simulação, apresenta um muito menor erro que o sistema de controlo não adaptativo. No entanto, em termos de média do erro quadrático e do somatório do erro quadrático, verifica-se que a diferença entre o erro do controlador adaptativo e o erro do controlador não adaptativo é muito mais acentuada na simulação do que nos testes realizados ao processo real. Tabela 2 – Comparação dos sistemas de controlo implementados. Sistema de controlo não adaptativo Sistema de controlo adaptativo Soma do quadrado do erro Média do quadrado do erro Soma do quadrado do erro Média do quadrado do erro Simulação 0,4025 8,0496 × 10−4 2,0934 × 10−28 2,0934 × 10−31 Teste 1,3985 × 103 1,3985 1,059282 × 102 1,059282 × 10−1 Na Figura 23 é apresentada a evolução do erro do controlador não adaptativo (a azul) e a evolução do erro do controlador adaptativo (a laranja), em volts, ao longo das 1000 amostras consideradas nas simulações. Figura 23 – Evolução do erro apresentado nas simulações do sistema de controlo não adaptativo a azul e do sistema de controlo adaptativo a laranja. Na Figura 24 é apresentada a evolução do erro do controlador não adaptativo (a azul) e a evolução do erro do controlador adaptativo (a laranja), em volts, ao longo das 1000 amostras utilizadas nos testes realizados no processo real.
  • 27. 25 Figura 24 – Evolução do erro apresentado nos testes do sistema de controlo não adaptativo a azul e do sistema de controlo adaptativo a laranja. Como se pode visualizar nas Figuras 23 e 24, o comportamento nos testes é muito mais oscilatório em termos de erro (relembrando que o teste do controlador não adaptativo apresentou um comportamento mesmo instável). Mas nota-se um muito pior desempenho para as primeiras amostras após a mudança de valor da referência, onde o erro apresenta um pico elevado tanto nos testes como nas simulações realizadas. 5. Conclusões Uma conclusão importante a retirar deste trabalho é a observação do quão diferente é o processo real relativamente ao que é estimado por regressão linear. Em todas as simulações realizadas obteve-se sempre um muito melhor comportamento do sistema do que o verificado no respetivo teste real. Até se verificou (no controlador não adaptativo) que um sistema que apresenta um ótimo comportamento em termos de simulação pode apresentar um comportamento instável no processo real. Isto seria um problema muito grave se este não fosse um projeto didático. Pode-se concluir que para o processo estudado o controlo adaptativo apresenta um desempenho consideravelmente melhor que o controlo não adaptativo, apresentando um somatório do erro quadrático muito inferior. Para o trabalho ficar concluído dever-se-ia retornar ao passo 3 do processo de identificação do sistema (correspondente à escolha da estrutura ARX a utilizar) e realizar novamente os passos seguintes até atingir o teste do sistema de controlo, fazendo verificação da resposta do sistema real ao novo controlador não adaptativo. Quando se obtivesse uma resposta satisfatória para o controlador não adaptativo, utilizar o mesmo modelo no controlador adaptativo, de forma a poder comparar o desempenho dos dois sistemas de controlo.
  • 28. 26 Referências Bibliográficas [1] Gil, Paulo. Introdução à Identificação de Sistemas Lineares. PhD, 2017. [2] Silva, Rui Neves. Controlo de Sistemas Dinâmicos, 2008. [3] Gil, Paulo. “Identificação e Controlo Adaptativo”. PhD, 2021. Apresentação em PowerPoint.
  • 29. 27 Anexos Anexo I – Código do MATLAB utilizado para recolher os dados do sistema % Controlo Inteligente % School year: 2021-2022 % getdataset.m % Collecting 2 datasets from a system % {Ue,Ye} and {Uv,Yv} clear all, close, clc Ue= idinput(500,'PRBS',[0 0.2],[2.0 5.0]); % Estimation input Uv= idinput(500,'PRBS',[0 0.1],[2.0 5.0]); % Validation validation Ts = 0.08; % Sampling time [s] usbinit % DAQ initialisation disp('Estimation dataset acquisition') for index = 1:length(Ue) usbwrite(Ue(index),0) pause(Ts) Ye(index,1) = usbread(0); end usbwrite(0,0) % Cooling down pause(5) clc % Clear screen disp('Validation dataset acquisition') for index = 1:length(Uv) usbwrite(Uv(index),0) pause(Ts) Yv(index,1)= usbread(0); end usbwrite(0,0) save dataset.mat Ue Ye Uv Yv -mat Anexo II – Código do MATLAB utilizado para realizar a identificação recursiva clear close all clc load dataset load('arx241.mat') A = polydata(arx241); na = length(A)-1; % na = 2 theta = getpvec(arx241, 1); % vetor de parametrização para o instante inicial (k = 1) B = [0 theta(3) theta(4) theta(5) theta(6)]; dimARX = length(theta); % número de parâmetros
  • 30. 28 nb = dimARX-na; % nb = 4 nk = 1; N = length(Ue); % dimensão das amostras lambda = 1-1/N; % factor de esquecimento pk = eye(dimARX)*5; % incialização da matriz de covariância % vetores e matrizes utilzados para guardar os valores ao longo do tempo Ni = max(na, nb+nk); phi_matrix = zeros(dimARX, N-Ni); % incialização de uma matriz com os vectores de regressão em cada instante como uma coluna epsilon = zeros(N-Ni, 1); % incialização de um vetor com o erro em cada instante theta_matrix = zeros(dimARX, N-Ni); theta_matrix(:,1) = theta; i = 2; % identificação em linha for index = Ni : N phik = [-Ye(index - 1); -Ye(index - 2); Ue(index - 1); Ue(index - 2); Ue(index - 3); Ue(index - 4)]; phi_matrix(:,index) = phik; [epsilon_k, theta, pk] = thetarec(theta, pk, Ye(index), phik, lambda); theta_matrix(:,i) = theta; i = i+1; epsilon(index) = epsilon_k; end polos = det5Polos(1,1,1); [F, G, H] = tuning(theta, polos); Anexo III – Função do MATLAB utilizada para determinar os pólos function [polos] = det5Polos(settlingTime, tolerancia, overshoot) Tamostragem = 0.08; Dmin = (abs(((log(overshoot/100))^2)/((log(overshoot/100))^2+pi^2)))^(1/2); ts_min = -log(tolerancia/100)/settlingTime; % ts_min = D * wn wn = ts_min/Dmin; real = -Dmin * wn; % real = D * wn imag = wn*sqrt(Dmin^2-1); polo1 = real + imag; polo2 = real - imag; polo3 = 5*real; polo4 = 5*real; polo5 = 5*real;
  • 31. 29 polos = [exp(polo1*Tamostragem) exp(polo2*Tamostragem) exp(polo3*Tamostragem) exp(polo4*Tamostragem) exp(polo5*Tamostragem)]; end Anexo IV – Função do MATLAB utilizada para determinar a convolução entre os polinómios function w = sconv(u,v) % CONV Nonnumeric convolution. % W = CONV(U,V) is the convolution of symbolic vectors U and V. % length(w) = length(u)+length(v)-1 % w(k) = sum(u(j)*v(k+1-j)), j = max(1,k+1-length(v):min(k,length(u)) % EXAMPLE % syms a b c d % u = [a b c d]; % v = [3 1 4 1 5 9]; %sconv(u,v).' % Form Toeplitz matrix from v. m = length(u); n = length(v); p = m+n-1; T = [v(:); zeros(m,1)]*ones(1,m); T = reshape(T(1:m*p),p,m); % Convolve w = T*u(:); % Return row vector if appropriate if size(u,2) > size(u,1) w = w.'; end Anexo V – Função do MATLAB utilizada para sintonizar o controlador por colocação de pólos sem efeito integral function [F, G, H] = tuning(theta,polos) Am = poly(polos); alfa1 = Am(2); alfa2 = Am(3); alfa3 = Am(4); alfa4 = Am(5); alfa5 = Am(6); a1 = theta(1); a2 = theta(2); b1 = theta(3); b2 = theta(4); b3 = theta(5); b4 = theta(6); A = [1 a1 a2]; B = [0 b1 b2 b3 b4]; syms f1 f2 f3 g0 g1;
  • 32. 30 F = [1 f1 f2 f3]; G = [g0 g1]; Af = sconv(A,F) + sconv(B,G); eqns = [Af(2) == alfa1, Af(3) == alfa2, Af(4) == alfa3, Af(5) == alfa4, Af(6) == alfa5]; S = solve(eqns,[f1,f2,f3,g0,g1]); f1_ = vpa(S.f1); f2_ = vpa(S.f2); f3_ = vpa(S.f3); g0_ = vpa(S.g0); g1_ = vpa(S.g1); F = [ 1 double(f1_) double(f2_) double(f3_) ]; G =[ double(g0_) double(g1_) ]; % M = [1 0 0 b1 0; a1 1 0 b2 b1; a2 a1 1 b3 b2; 0 a2 a1 b4 b3; 0 0 a2 0 b4]; % T = [(alfa1-a1); (alfa2-a2); alfa3; alfa4; alfa5]; % MatrizParametros = M^(-1)*T; % f1 = MatrizParametros(1); % f2 = MatrizParametros(2); % f3 = MatrizParametros(3); % g0 = MatrizParametros(4); % g1 = MatrizParametros(5); % F = [1 f1 f2 f3]; % G = [g0 g1]; % h0 = (A*F+B*G)/B h0 = (sum(A)*sum(F)+ sum(B)*sum(G))/(sum(B)); H = h0; % roots( sconv(A,F) + sconv(B,G) ); end Anexo VI – Código do MATLAB utilizado para simular o controlador não adaptativo projetado (para a referência pedida) % Código da simulação do controlador NA clear, close, clc load('dataset.mat') % sinal de referencia Ref = [2.0*ones(200,1); 4.0*ones(200,1); 3.0*ones(200,1); 4.5*ones(200,1); 2.0*ones(200,1)]; Nref = length(Ref); u = zeros(Nref, 1); y = zeros(Nref, 1); Ts = 0.08 ; % intervalo de amostragem 80 ms na = 2; nb = 4; nk = 1; A = [1.0000 -1.6189 0.6506]; B = [ 0 0.0954 0.0342 -0.0616 -0.0290 ]; theta = [A(2); A(3); B(2); B(3); B(4); B(5)]; % vetor de parametrização
  • 33. 31 para o instante inicial dimARX = length(theta); Ni = max(na,nb+nk); N = length(Ue); epsilon = zeros(N-Ni, 1); lambda = 1-1/50; % factor de esquecimento pk = 5*eye(dimARX); % incialização da matriz de covariância dimARX = length(theta); [A, B] = detAB(theta); [polos] = det5Polos(1, 1, 1); [F, G, H] = tuning(theta,polos); disp("Em modo controlo!"); for index = Ni: Nref % Função do controlador u(index,1) = controlador(F(2), F(3), F(4), G(1), G(2), H(1), Ref(index), u(index-1,1), u(index-2,1), u(index-3,1), y(index,1), y(index- 1,1)); % Saturação da excitação u(index,1) = max(min(u(index,1),5),0); y(index+1,1) = - theta(1)*y(index,1) - theta(2)*y(index-1,1) + theta(3)*u(index,1)+ theta(4)*u(index-1,1) + theta(5)*u(index-2,1) + theta(6)*u(index-3,1); end subplot(2,1,1), plot(y(Ni:end)),hold on, plot(Ref) title("Resposta do sistema em anel fechado") ylabel("Saída"), xlabel("Amostra") subplot(2,1,2), plot(u(Ni:end)) title("Actuação") ylabel("Acção de controlo"), xlabel("Amostra") Anexo VII – Código do MATLAB utilizado para simular o controlador adaptativo projetado (para a referência pedida) % Script da simulação do controlador Adaptativo clear, close, clc load('dataset.mat') % sinal de referencia Ref = [2.0*ones(200,1); 4.0*ones(200,1); 3.0*ones(200,1); 4.5*ones(200,1); 2.0*ones(200,1)]; Nref = length(Ref); u = zeros(Nref, 1); y = zeros(Nref, 1); na = 2; nb = 4; nk = 1; A = [1.0000 -1.6189 0.6506]; B = [ 0 0.0954 0.0342 -0.0616 -0.0290 ]; theta = [A(2); A(3); B(2); B(3); B(4); B(5)]; % vetor de parametrização
  • 34. 32 para o instante inicial Ni = max(na,nb+nk); dimARX = 6; N = length(Ue); lambda = 1-1/50; % factor de esquecimento pk = 5*eye(dimARX); % incialização da matriz de covariância quadradoErroA = zeros(N-Ni, 1); quadradoErroNA = zeros(N-Ni, 1); for index = Ni : N phik = [-Ye(index - 1); -Ye(index - 2); Ue(index - 1); Ue(index - 2); Ue(index - 3); Ue(index - 4)]; [epsilon_k, theta, pk] = thetarec(theta, pk, Ye(index), phik, lambda); quadradoErroNA(index) = epsilon_k^2; end [polos] = det5Polos(1, 1, 1); [A, B] = detAB(theta); [F, G, H] = tuning(theta,polos); disp("Em modo controlo!"); for index = Ni : Nref phik = [-y(index-1,1); -y(index-2,1); u(index-1,1); u(index-2,1); u(index-3,1); u(index-4,1)]; [epsilon_k, theta, pk] = thetarec(theta, pk, y(index,1), phik, lambda); quadradoErroA(index) = epsilon_k^2; u(index,1) = controlador(F(2), F(3), F(4), G(1), G(2), H(1), Ref(index), u(index-1,1), u(index-2,1), u(index-3,1), y(index,1), y(index- 1,1)); u(index,1) = max(min(u(index,1),5),0); % Saturação da excitação [0, 5]V y(index+1,1) = - theta(1)*y(index,1) - theta(2)*y(index-1,1) + theta(3)*u(index,1)+ theta(4)*u(index-1,1) + theta(5)*u(index-2,1) + theta(6)*u(index-3,1); end subplot(2,1,1), plot(y(Ni:end)),hold on, plot(Ref) title('Resposta do sistema em anel fechado') ylabel('Saída'), xlabel('Amostra') subplot(2,1,2), plot(u(Ni:end)) title('Actuação') ylabel('Acção de controlo'), xlabel('Amostra')
  • 35. 33 Anexo VIII – Live Script do MATLAB utilizado determinar matriz de transformação utilizada para determinar os parâmetros do controlador adaptativo syms f1 f2 f3 g0 g1 a1 a2 b1 b2 b3 b4 alfa1 alfa2 alfa3 alfa4 alfa5; F = [1 f1 f2 f3]; G = [g0 g1]; A_sim = [1 a1 a2]; B_sim = [0 b1 b2 b3 b4]; Am_sim = [1 alfa1 alfa2 alfa3 alfa4 alfa5]; Af_sim = sconv(A_sim,F) + sconv(B_sim,G); Af2_sim = Af_sim(2:end); Am2_sim = Am_sim(2:end); eq1 = Am2_sim(1) == Af2_sim(1); eq2 = Am2_sim(2) == Af2_sim(2); eq3 = Am2_sim(3) == Af2_sim(3); eq4 = Am2_sim(4) == Af2_sim(4); eq5 = Am2_sim(5) == Af2_sim(5); Anexo IX – Código do MATLAB utilizado para testar o controlador não adaptativo projetado % Script de teste do controlador NA clear all, close all, clc na = 2; nb = 4; nk = 1; % sinal de referencia Ref = [2.0*ones(200,1); 4.0*ones(200,1); 3.0*ones(200,1); 4.5*ones(200,1); 2.0*ones(200,1)]; Nref = length(Ref); u = zeros(Nref, 1); y = zeros(Nref, 1); Ts = 0.08 ; % intervalo de amostragem 80 ms F = [1.0000 -2.9390 -3.1282 -0.9711]; G = [28.7444 -21.7211]; H = 2.1153; usbinit; Ni = 5; disp('Em modo controlo!'); for index = Ni:length(Ref) y(index,1)= usbread(0); tic % Inicia cronómetro if index <= max(na,nb+nk) u(index,1) = Ref(index); else u(index,1) = controlador(F(2), F(3), F(4), G(1), G(2), H(1), Ref(index), u(index-1,1), u(index-2,1), u(index-3,1), y(index,1), y(index- 1,1)); % Função do controlador end u(index,1) = max(min(u(index,1),5),0); % Saturação da excitação usbwrite(u(index,1),0);
  • 36. 34 Dt= toc; % Stop cronómetro pause(Ts-Dt) end usbwrite(0,0); save expdata_naoadap.mat Ref u y -mat Anexo X – Código do MATLAB utilizado para testar o controlador adaptativo projetado % Script de teste do controlador Adaptativo clear all, close all, clc usbinit % Inicialização da placa de aquisição % sinal de referencia Ref = [2.0*ones(200,1); 4.0*ones(200,1); 3.0*ones(200,1); 4.5*ones(200,1); 2.0*ones(200,1)]; Nref = length(Ref); u = zeros(Nref, 1); y = zeros(Nref, 1); Ts = 0.08 ; % intervalo de amostragem 80 ms na = 2; nb = 4; nk = 1; % A = [1.0000 -1.6189 0.6506]; % B = [ 0 0.0954 0.0342 -0.0616 -0.0290 ]; % theta = [A(2); A(3); B(2); B(3); B(4); B(5)]; % vetor de parametrização para o instante inicial theta = [ -1.5652; 0.6123; 0.0990; 0.0313; -0.0489; -0.0269]; % obtido em diferido Ni = max(na,nb+nk); dimARX = length(theta); [polos] = det5Polos(1, 1, 1); lambda = 1-1/50; % factor de esquecimento pk = 5*eye(dimARX); % incialização da matriz de covariância disp('Em modo controlo!') for index = 1:length(Ref) y(index,1) = usbread(0); tic % Inicia cronómetro if index <= Ni u(index,1) = Ref(index); else phik = [-y(index-1,1); -y(index-2,1); u(index-1,1); u(index-2,1); u(index-3,1); u(index-4,1)]; [epsilon_k, theta, pk] = thetarec(theta, pk, y(index,1), phik, lambda); % Adaptação em-linha dos parâmetros do modelo; [A, B] = detAB(theta); [F, G, H] = tuning(theta, polos); % Parâmetros do controlador u(index,1) = controlador(F(2), F(3), F(4), G(1), G(2), H(1), Ref(index), u(index-1,1), u(index-2,1), u(index-3,1), y(index,1), y(index-
  • 37. 35 1,1)); end u(index,1) = max(min(u(index,1),5),0); % Saturação da excitação [0, 5]V usbwrite(u(index),0); Dt= toc; % Stop cronómetro pause(Ts-Dt); end usbwrite(0,0) save expdata_adap.mat Ref u y -mat