não capaz de obter qualquer saída PID adequada

G

garg29

Guest
Estou tentando projetar um controlador de temperatura para um forno com ação PID. mas a temperatura resultante não é estável e variando muito. Por favor me ajude. que método devo usar para obter Zeigler ou algum outro? Com os melhores cumprimentos, GARG
 
Quais são as suas variáveis? flutua? ints? Talvez haja um problema lá. Além disso, sua saída é em unidades de 'por cento', eu não vejo como isso é escalado para o outros parâmetros. Se o seu SetValue e PresentValue estão em unidades de temperatura, então você precisa fazer alguma escala. Barry
 
Obrigado por variáveis ​​replying.My são do tipo float. A saída foi dimensionada através da saída PWM com 100 tempo de ciclo sec. É a minha função de outra forma bem?
 
Eu ainda não tenho certeza o seu dimensionamento está correto. E quando você diz '100 tempo de ciclo sec 'você quer dizer que a taxa de atualização de seu? Se assim for, isso soa um pouco lento. E não vejo onde você define 'lastErr'. Você pode estar experimentando "windup reset '. Vamos dizer que seu SetValue é 100 (graus?) E seu PresentValue é 50. Isso significa que sua saída vai ser preso em 100. Enquanto o PresentValue sobe, o seu termo de integral (errSum) está continuamente crescendo e cada vez maiores, não há limite para isso. Agora vamos dizer que finalmente iguala PresentValue SetValue. O termo P e D prazo (assumindo que é válido) será zero, mas você ainda tem esse termo eu enorme dirigindo a saída para 100, então você está indo para manter o aquecimento. O seu erro vai negativos e, finalmente, sua saída irá para zero, mas você pode ter um grande erro na direção negativa, então o seu termo de P vai conduzir a sua saída para zero muito rapidamente, uma vez que as gotas Eu prazo. Tente colocar um limite no errSum. E olhar para as suas variáveis, enquanto o ciclo está em execução, que deve dizer-lhe muito. Barry
 
Muito obrigado pela sua resposta. eu estou enfrentando problema com o termo derivado, mesmo se o erro é de apenas 1 grau C a saída equação do termo d quando me dá valor calculado em torno de 480 que é sempre maior que 100. Eu tentei escrever esse passo de errSum limit.it é assim:
Code:
 if (errSum> (Ti * 100 / P)) = errSum Ti * 100 / P; if (errSum
 
eu estou enfrentando problema com o termo derivado, mesmo se o erro é de apenas 1 grau C a saída equação do termo d quando me dá valor calculado em torno de 480 que é sempre maior que 100.
Isso é o que quero dizer sobre o dimensionamento. Eu acho que você precisa de algo como: OutputScaled output = K * e depois aplicar os seus limites para OutputScaled.
 
Eu entendo, que o "output = 480" problema foi causado apenas por meio do cálculo da derivada de forma incorreta (não configuração lastErr). Obviamente, o should't termo derivado dependem do erro de temperatura, em vez do que é a mudança no tempo. O termo erroneamente calculada derivados acrescenta um termo P grande que faz com que o comportamento instável. Para além deste problema, o controlador deve funcionar. Anti-windup deve ser aplicado ao integrador. Que normalmente interrompe a integração quando o valor manipulado (saída) atinge o limite. Eu concordo com Barry, que o período de PWM é provavelmente um pouco longo. Eu entendo, que tem sido usada já na determinação dos parâmetros PID de acordo com Ziegler-Nichols, na medida em que o tempo adicional morto gerado por ela é refletida na paramters. Um método elegante para aplicar anti-windup juntamente com limitando o valor manipulado pode ser alcançada usando um algoritmo de velocidade para o PID. Dimensionamento deve ser correta, de acordo com o método de ajuste também.
 
Obrigado barry e FVM por me ajudar. mas ainda eu não sou capaz de conseguir uma saída estável, o meu ponto de ajuste é de 120 graus C e eu estou recebendo as variações 118-121 C graus. Este foi com PI cação e não PID. quando eu participar de derivativos em ação também, os resultados são horrible.the variação é 112-130 graus C. Com a ação apenas PI, leva muito tempo para chegar ao set-point. Mas eu ainda preciso maior controle accuracy.i deseja que a temperatura seja mantida em 120 graus C. corrigir Em relação à escala de saída (como barry diz) eu não entender o que mudanças devem ser feitas no código para fazer isso como a minha saída é escalado 0-100. Eu não entendo este "OutputScaled output = * K": triste: Eu peço que você Please Help Me. garg com os melhores cumprimentos
 
A maioria dos controladores de temperatura funcionar bem com PI, você não precisa necessariamente PID. Quanto aos resultados instáveis, eu sou incapaz de comentar, a menos que vendo um lote de temperatura real e saída do controlador (valor manipulado) de sua controladora.
 
Muito obrigado pela sua resposta. Vou tentar fornecer um lote de temperatura real e saída do controlador, mas eu não tenho um registrador de dados para isso, mas ainda vou tentar fazê-lo de alguma forma. Mas ainda que sobre a escala?? Obrigado mais uma vez para você apoio contínuo.
 
Eu já disse a minha visão de escala. O controlador deve ser operado com a mesma escala que tem sido utilizado durante a identificação de parâmetros.
 
De modo geral, maior ganho Integral tende a torná-lo menos estável (oscilar), assim como a maior P. Parece que seu sistema não é apenas afinados correctamente, ou seja, seus ganhos não são otimizados. Eu tentaria fazer o que eu ganho muito pequeno e, gradualmente, aumentar o ganho P até que se torne amplamente instável, em seguida, recuar no seu ganho de P e aumentar o ganho eu. (Isto é muito científico, mas bem-vindo ao mundo real). Dependendo do seu sistema, você nunca pode ter o desempenho desejado. Pela natureza destes sistemas, a temperatura irá variar em torno de seu ponto de ajuste um pouco. Quanta variação pode tolerar? Que tipo de distúrbios que se pode esperar (como se alguém abrir a porta do forno)? Há outros fatores que irão afetar o seu desempenho: o quão longe é o seu sensor de temperatura a partir do elemento de aquecimento? Quais são as propriedades térmicas do forno? etc Há uma certa quantidade de "arte" para o ajuste desses sistemas. Aqui está um link que pode lhe dar algumas informações e apontá-lo para uma solução [url = http://en.wikipedia.org/wiki/PID_controller] PID controller - Wikipédia, a enciclopédia livre [/url]
 
Graças FVM e Barry para ajudar me.I ter obtido a precisão de 0,1 grau C, mas o sistema leva muito tempo para chegar setpoint. i significa o tempo de subida para atingir o setpoint é muito lenta. i ter aplicado apenas PI. é esta causa problema disso? como aumentar o tempo de subida?
 
Se você aumentar o seu termo de P, você vai subir mais rápido, mas você pode ver alguns superação e de toque, mas você pode convergir para o ponto de ajuste mais rápido. É que uma troca que você está disposto a fazer?
 
você pode ser barry direita. aumentando o termo P eu possa obter os resultados mais rápido, mas isso pode ser verdade para a Máquina (Forno) em que estou testando o meu controlador PID, mas quando ele será instalado em alguns forno outras com diferentes propriedades físicas, os resultados não poderia ser apropriado . Não mente, mas eu quero projetar um controlador PID adequada. :). Mais uma coisa barry eu ainda não ter entendido a "Escala". você pode explicar em linguagem leiga bit.
 
Se eu entendi corretamente, você está testando isso em um forno, mas são, então, vai instalá-lo em um diferente? Não há um conjunto de parâmetros que irá trabalhar para todas as plantas (fornos). Você tem que ajustar o controlador para cada aplicação diferente. Na medida em que escala, eu simples significava que você estava inicialmente limitando a sua saída a 100 por cento mas as suas entradas (setvalue e presentvalue) estão em outras unidades (volts / grau?) A "escala" é apenas um ganho global (o que poderia praticamente ser incorporado em seu P e eu ganhos)
 

Welcome to EDABoard.com

Sponsor

Back
Top