Como ajustar um controlador PID para um processo não linear


9

Eu tenho um processo térmico não linear (a radiação não linear se torna cada vez mais presente à medida que a temperatura aumenta) com a qual eu gostaria de ajustar um controlador PID. Eu gostaria de controlar a temperatura com a maior precisão possível.

Planejei dividir a faixa de temperatura em N faixas pseudo-lineares (a serem definidas) e para cada uma dessas faixas de temperatura: ajuste um modelo de primeira ordem usando uma pequena etapa de temperatura e calcule os parâmetros PID para se adequar a esse modelo. Os parâmetros do PID seriam alterados automaticamente, dependendo da temperatura do processo *.

Meu problema é o seguinte: considere o ponto de verificação de 70 ° C, por exemplo. O watt P já está fluindo para atingir essa temperatura. Vou injetar dP watt para aumentar a temperatura em 1 ° C. Anotarei o tempo constante e o ganho em estado estacionário será de 1 / dP ° C / W. [Por favor, reserve um momento para pensar se isso está certo?] Finalmente, ajustarei o PID para essa planta para obter os parâmetros para essa faixa de temperatura e passarei para as outras faixas.

Agora, suponha que o processo atinja 70 ° C. Os novos parâmetros são carregados e o contador integral é redefinido. O erro pode ser de 1 ° C, mas a energia necessária é muito maior do que aquela para atingir 21 ° C, é certo que o controlador exigirá menos de P watt. Isso significa que a temperatura cairá muito antes que o termo integral exija P watt, e somente então o dP watt adicional levará o processo a 71 ° C (e certamente excederá). Quanto maior o P for comparado ao dP, pior será.

Parece que os aquecedores devem ser acionados com a soma da saída do controlador e a energia necessária para permanecer na "temperatura de referência" atual (por exemplo, 70 ° C). Mas os controladores de prateleira não oferecem isso, então deve haver outra maneira.

o que estou perdendo? Qual é o caminho certo?

*: Efetivamente ganha agendamento .


1
O controlador PID é geralmente destinado a sistemas lineares. É robusto o suficiente para controlar alguns sistemas não lineares e também para algum ponto operacional "quase linear". Se não for o caso, diferentes técnicas podem ser usadas para linearizar a planta controlada (consulta "linearização de realimentação" ou introduzir alguns loops internos)
Eugene Sh.

Obrigado por seu comentário. É isso que estou tentando alcançar: use um controlador PID em uma faixa "quase linear" de temperaturas. Eu já olhei em volta com essas palavras-chave, mas sem muita sorte.
user42875

1
Em vez de treinar vários modelos, você pode alimentar o valor de entrada através de uma função 'linearizante' antes de passá-lo ao controlador PID e treiná-lo com base nisso?
Nick Johnson

1
Sua abordagem parece boa para mim. Você vai ajustar o ganho e a constante de tempo, dependendo da temperatura. Você terá que pensar no que acontece nos pontos de cruzamento. Você criou algo que não está funcionando tão bem quanto você gostaria? Um loop de controle pode ocultar muita não linearidade. E talvez você fique bem sem ser extravagante.
quer

Por que a radiação não é linear? Se o forno vazar a temperatura, a perda de energia será linear Q = mc * delta_T. Se o seu sistema está apenas vazando, quase todas as constantes permanecem, como tempo morto, tempo de subida, exceto que o ganho diminui. Você poderia fazer da variável Kp Kp (T_actual) uma função linear de Kp_initial e Kp_final.
Marko Buršič 30/10/2015

Respostas:


11

Como ajustar um controlador PID para um processo não linear?

Você não Você lineariza o processo e o controlador PID trabalha com os valores lineares.

Ao "linearizar o processo", não pretendo realmente tornar o processo linear. Isso geralmente não pode ser feito devido à física. No entanto, você pode colocar algo não linear entre a saída do controlador PID e a entrada do processo, para que a saída PID controle linearmente o processo do ponto de vista do controlador PID.

Esse linearizador não precisa ser muito preciso, pois está dentro do loop de feedback. Seu objetivo é dar a aparência de ganho aproximadamente constante em toda a faixa dinâmica de controle. Uma maneira simples e geral é uma função baseada em tabela linear por partes. 16 ou 32 segmentos geralmente são suficientes para qualquer coisa, exceto processos não lineares muito elevados.

O pior exemplo que encontrei foi controlar a corrente através de um tubo de elétrons, alterando a força com que o filamento do cátodo era acionado. A função da temperatura do cátodo para a corrente do feixe de elétrons é altamente não linear e o sistema que controla a corrente do filamento do cátodo também é um pouco não linear. Nesse caso, era muito difícil prever toda essa bagunça, então usei um procedimento de calibração durante a produção que percorreu os valores de controle da unidade de filamento, mediu a corrente do feixe para cada um e calculou uma tabela de pesquisa de 32 segmentos a partir dela. Funcionou muito bem e conseguimos ajustar o controlador PID da corrente do feixe para obter uma boa resposta em toda a faixa.

Sem uma função de linearização na frente do processo, você precisa ajustar o controlador PID para obter estabilidade no ponto de ganho incremental mais alto do processo. Isso então resulta em um comportamento muito amortecido em outros pontos.

Adicionado

Nada na sua pergunta atualizada diz nada sobre por que o método acima ainda não é uma boa ideia e aplicável. Você diz que está usando um controlador analógico. Minha primeira reação é "Os anos 80 se foram, não faça isso". No entanto, o controlador PID e o linearizador da planta podem ser independentes.

Aparentemente, a entrada da planta é de potência e a saída é de temperatura. Meça a temperatura típica do estado estacionário em vários níveis de potência. A partir disso, é possível calcular a função que converte "energia" linearizada em entrada de energia real da planta. O controlador PID analógico provavelmente está colocando uma tensão proporcional à energia. Tudo o que você precisa fazer é inserir uma caixa preta alinhada com a tensão que faz a medida linear da conversão real do nível de potência.

Normalmente você faria isso com um microcontrolador que tenha um A / D embutido. Fazer esta pesquisa de tabela e interpolação linear entre pontos é trivial. Em seguida, ele gera o resultado de uma maneira que eventualmente é convertida em tensão. Como a planta é lenta em comparação com um microcontrolador, isso pode ser tão fácil quanto filtrar e tamponar uma saída PWM. Ou você pode dirigir um D / A diretamente, embora isso não pareça necessário neste caso.

De acordo com o tema dos anos 80 do seu controlador, você pode fazer isso com A / D, memória e D / A para uma sensação retrô.

De qualquer forma, o controlador PID agora está controlando efetivamente uma planta linear, tanto quanto ela sabe, e ajustá-la para um bom desempenho deve ser possível.

Fazer uma transformação linear por partes na entrada da planta em um só lugar é mais fácil do que ajustar 3 valores dentro do controlador PID na faixa de saída. O último é um argumento, enquanto o primeiro aborda o problema diretamente. Também é muito mais fácil medir os dados para a função linearizante do que determinar os ganhos de P, I e D em vários pontos. Mesmo se você tiver feito isso, ainda terá problemas transitórios, pois os ganhos corretos não são aplicados imediatamente à situação. Mais uma vez, "ganhar agendamento" é uma farsa.


Muito interessante, obrigado por apresentar a abordagem do linearizador. No entanto, estou usando controladores de hardware conectados diretamente a relés, então, infelizmente, tenho que ganhar agendamento. Minha abordagem de identificação está correta? Parece que não é.
user42875

Eu editei minha pergunta para esclarecer meu problema - os dois últimos parágrafos em particular. (ainda, +1)
user42875 30/10/2015

Perguntei ao fabricante dos controladores se posso inserir uma tabela de consulta com interpolação linear antes da saída - se isso puder ser feito, definitivamente vou optar por essa opção, mesmo que isso signifique que vou ter que esquecer o ferramentas de ajuste habituais baseadas na função de transferência e outras. É elegante. Caso contrário, terei de fazer o agendamento de ganhos muito tedioso, mas aparentemente não há nada errado com minha abordagem, que é o que eu queria verificar.
user42875

2

Lembre-se de que, ao linearizar um modelo, você assume efetivamente que o modelo não linear y = f (x) é substituído por y = A * (x-x0) + B. Observe que x0 é o ponto de linearização. Quando você introduz intervalos para x, você termina com vários A, B e x0. De qualquer forma, a entrada do seu controlador será um erro em relação ao ponto de linearização atual. No entanto, você ainda desloca o sinal de entrada (com B); mesmo que o erro seja 0 em relação ao ponto de linearização atual, você continuará transmitindo um sinal.

No seu exemplo, mesmo que o erro seja 0 graus (no ponto de ajuste de 70 graus), o controlador ainda emitirá uma potência maior que 0.


Obrigado. Eu acho que você gosta de algo, mas eu realmente não entendo. Em termos gerais, estou usando controladores PID básicos (analógicos), dos quais posso alterar os termos P, I, D em função da temperatura. Eu sei que, ao mesmo tempo, resolvido a 70 ° C, a potência não será zero, mesmo que o erro seja zero. É o acerto que me preocupa: estou basicamente colocando o controlador a 70 ° C e, como são t = 0s, o termo integral levará algum tempo para ser ativado, então terei uma queda terrível. Parece que meu método está errado.
user42875

(O controlador irá exigir muito pouca energia no início, abaixo da potência necessária para permanência a 70 ° C)
user42875

Eu editei minha pergunta para esclarecer - os dois últimos parágrafos em particular.
user42875

É difícil dar conselhos sem mais detalhes sobre o seu processo, mas parece que você tem um sistema bastante instável em torno de 70 graus e que nessa temperatura a maior parte do controle ocorre devido à compensação intragral (o I no PID)?
Pål-Kristian Engstad

70 ° C é apenas um exemplo, provavelmente terei 6 faixas de temperatura diferentes para sintonizar. Em termos gerais, estou controlando a temperatura dentro de uma garrafa térmica aquecendo a superfície externa.
user42875

2

Uma abordagem ao controle não-linear com controladores PID, amplamente utilizada na indústria, é chamada de 'programação de ganho'.

O problema de controle não linear é dividido em uma série de regiões lineares o suficiente e os parâmetros apropriados são usados ​​para cada região.


É isso que estou tentando alcançar, como pode ser lido na minha pergunta ("Os parâmetros do PID seriam alterados automaticamente dependendo da temperatura do processo *" "*: efetivamente é o ganho de agendamento.")
user42875
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.