INÍCIO > Fórum > Terminais de operador (Weintek) > Controle de fornos para tratamentos térmicos
- Este tópico tem 6 respostas, 2 participantes e foi atualizado pela última vez anos 6 atrás da Stephen.
-
autorPublique
-
Fevereiro 10, 2016 em 3: 32 pm #35937Stephenparticipante
Estou procurando algumas sugestões para verificar se fui comissionado. Gostaria de entender se é viável apenas com um painel de operação (estava pensando em um MT6050iP) e algum possível "truque" utilizável.
Eu tenho dois fornos com um controlador de temperatura PID instalado que pode ser conectado via MODBUS RTU no 485. Via modbus posso ler a temperatura atual e definir os vários parâmetros, como setpoint, PID, potência máxima. Tenho que automatizar programas de aquecimento parametrizáveis. Os programas são basicamente de dois tipos:
Primeiro:
1) Acende a temperatura A com potência máxima X
2) à temperatura manter durante C minutos
3) Acende-se à temperatura D com potência máxima Y
4) à temperatura D segure por E minutos
5) Acende a temperatura F com potência máxima Z
6) Articulação de temperatura F segure para minutos G
7) FimSegundo (que nada mais é do que uma parte do primeiro):
1) Acende a temperatura A com potência máxima X
2) à temperatura manter durante C minutos
3) FimMinha idéia era usar um único painel e conectar os dois controladores de temperatura em um barramento 485. Em seguida, gerencie os parâmetros com as receitas e a passagem entre as etapas com macro e agendador. Os dois fornos devem ser capazes de operar de forma independente e com início manual ou pré-programado em um momento específico.
Fevereiro 10, 2016 em 5: 23 pm #39359Sergio BertanaAdministrador do fórumSim, claro que é possível gerenciar uma macro de tempo cíclico que executa todas as operações para você, talvez usando uma máquina de estado com o operador Selecione o caso.
Select Case [variable]
Case [value]
[Statements]
breakend Select
Fazer seu ciclo me parece a melhor solução. Claro que você terá duas macros distintas, mas perfeitamente idênticas, que se referem às variáveis modbus lidas pelos dois controladores PID. Para ler os registros use o operando GetData escrever o operando SetData.
Novembro 7, 2017 em 3: 50 pm #40009StephenparticipanteEu retomo este antigo post. O projeto está funcionando bem há um bom tempo em um MT6070iP (EB8000). No entanto, os operadores acabaram de relatar algumas anomalias. A primeira anomalia está relacionada ao seguinte pedaço de macro:
sub CalcTimer(unsigned int time)
unsigned int minutes, seconds
minutes = time / 600
seconds = (time % 600) / 10
SetData(minutes, "Local HMI", "F2_MINREM", 1)
SetData(seconds, "Local HMI", "F2_SECREM", 1)
end subUm valor em décimos de segundo é passado para o sub e este procedimento o grava em dois registros que representam minutos e segundos. Meu descuido foi usar "unsigned int" para "minutos" e "segundos", então "SetData" grava dois registradores adjacentes e não aquele que eu esperava. Isso me torna registros sujos usados para outras coisas, felizmente apenas para exibição. Minha ideia é simplesmente declarar minutos curtos, segundos não assinados, mas gostaria de entender se há algum possível problema de truncamento. Ou seja, a macro realizaria o cálculo em uma variável de 32 bits e, em seguida, truncaria para 16 (o que seria bom para mim), ou truncaria a variável de 32 bits para realizar o cálculo na de 16?
Outra questão muito estranha está relacionada com este pedaço de código:
unsigned int tick, prevtick, interval, elapsed, remaining
GetData(prevtick, "Local HMI", LW, 9030, 1)
interval = record[hold] * 600<
elapsed = 0while elapsed <= interval
GetData(tick, "Local HMI", LW, 9030, 1)
elapsed = tick - prevtickif elapsed > interval then<
remaining = 0
else
remaining = interval - elapsed
end ifCalcTimer(remaining)
DELAY(250)
wendO operador pressiona uma tecla que ativa a macro que contém este código. A macro passa um certo tempo e atualiza dois registros que exibem uma contagem regressiva. Este código funciona perfeitamente. Entretanto, se eu deixar o painel ligado por mais de um mês, quando o operador ativa a macro, acontece que o loop while sai imediatamente (certamente um loop é feito porque o valor inicial correto da contagem regressiva é exibido). O intervalo geralmente inicializa em 30 minutos (30 * 600). Isso acontece até eu desligar o painel e ligá-lo novamente. Nesse ponto, tudo volta a funcionar corretamente. Não consigo entender o que isso pode afetar. Há algum bug conhecido no painel de gerenciamento do LW-9030 (unidade de tempo do sistema de 32 bits: 0.1 segundo)?
Novembro 23, 2017 em 10: 12 am #40010Sergio BertanaAdministrador do fórumPrimeiro ponto
Seria correto usar curto, mas tenha cuidado com todas as operações que ocorrerão no 16bit.Segundo ponto
Para uma verificação precisa, seria necessária toda a macro, mas, como sugestão, poderia verificar-se que o excesso de LW9030 na contagem retorna ao 0.Novembro 23, 2017 em 10: 30 am #40012Stephenparticipante1 - Posso fazer os cálculos nas variáveis em 32 e truncá-los em 16. Existe um comando específico para truncamento ou posso apenas atribuir o valor de uma variável de 32 bits a um 16?
2 - Também posso postar o resto da macro mas nenhum valor de tempo ou LW9030 são tocados, tudo é feito no loop que postei. Eu pergunto se existem bugs conhecidos no firmware porque é bastante anômalo. No manual do LW9030, é referido como tempo do sistema de 32 bits em décimos de segundo. Deve, portanto, chegar a zero após 4294967295 décimos de segundo, cerca de 13 anos, não depois de alguns meses. Além disso, mesmo LW9030 estourou a contagem retornando a 0, o comportamento indicaria que após o estouro LW9030 permanecerá em zero sem aumentar mais, porque mesmo se eu interromper a macro e executá-la novamente, o mesmo problema permanece, desde que eu não desligue o painel e ligue novamente.
Novembro 24, 2017 em 8: 50 am #40013Sergio BertanaAdministrador do fórumPara o ponto 1, é possível executar todos os cálculos para 32bit, no final é possível passar o resultado em variável para 16 bit que trunca o restante.
Para o ponto 2, assim que encontro um momento, verifico o comportamento do LW9030.Abril 11, 2018 em 10: 33 am #40075StephenparticipanteEntrei em contato com Weintek que, após meses de testes, me confirmou que havia um bug no firmware relacionado ao LW9030.
-
autorPublique
- Você deve estar logado para responder a este tópico.