Inicio > Foro > Terminales de operador (Weintek) > Control de hornos para tratamientos térmicos
- Este tema tiene 6 respuestas, 2 participantes y se actualizó por última vez Hace años 6 da Stefano.
-
autorPublicación
-
Febrero 10, 2016 en 3: 32 pm #35937Stefanopartícipe
Estoy buscando algunas sugerencias para comprobar que me encargaron. Me gustaría entender si es factible solo con un panel de operador (estaba pensando en un MT6050iP) y algún posible "truco" utilizable.
Tengo dos hornos con un controlador de temperatura PID instalado que se puede interconectar a través de MODBUS RTU en 485. A través de Modbus puedo leer la temperatura actual y configurar los diversos parámetros, como punto de ajuste, PID, potencia máxima. Tengo que automatizar los programas de calefacción parametrizables. Los programas son básicamente de dos tipos:
primero:
1) Se calienta hasta la temperatura A con la potencia máxima X
2) a la temperatura mantenida durante C minutos
3) Calienta hasta la temperatura D con la potencia máxima Y
4) a temperatura D mantenga durante E minutos
5) Calienta hasta la temperatura F con la potencia máxima Z
6) Temperatura Joint F hold por G minutos
7) FinalSegundo (que no es otro que parte del primero):
1) Se calienta hasta la temperatura A con la potencia máxima X
2) a la temperatura mantenida durante C minutos
3) FinalMi idea era usar un solo panel y conectar los dos controladores de temperatura en un bus 485. Luego administre los parámetros con las recetas y la transición entre los pasos con macro y planificador. Los dos hornos deben poder funcionar de manera independiente y con arranque manual o preprogramados en un momento específico.
Febrero 10, 2016 en 5: 23 pm #39359Sergio BertanaAdministrador del foroSí, por supuesto, es posible que pueda administrar una macro de tiempo cíclico que realice todas las operaciones por usted, tal vez usando una máquina de estado con el operador Seleccionar caso.
Select Case [variable]
Case [value]
[Statements]
breakend Select
Hacer tu ciclo me parece la mejor solución. Por supuesto, tendrá dos macros distintas pero perfectamente idénticas que se referirán a las variables modbus leídas por los dos controladores PID. Para leer los registros use el operando GetData escribir el operando SetData.
Noviembre 7, 2017 en 3: 50 pm #40009StefanopartícipeReanudo este antiguo post. El proyecto ha funcionado bien durante bastante tiempo en un MT6070iP (EB8000). Sin embargo, los operadores me acaban de informar un par de anomalías. La primera anomalía se relaciona con la siguiente pieza 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 subSe pasa un valor en décimas de segundo al sub y este procedimiento lo escribe en dos registros que representan minutos y segundos. Mi descuido fue usar "unsigned int" para "minutos" y "segundos", por lo que "SetData" escribe dos registros adyacentes y no el que esperaba. Esto va a los registros sucios que se usan para otras cosas, afortunadamente solo en pantalla. Mi idea es simplemente declarar minutos cortos, segundos sin firmar, pero me gustaría entender si hay algún posible problema de truncamiento. Es decir, ¿la macro realizaría el cálculo en una variable de 32 bits y luego lo truncaría a 16 (lo que estaría bien para mí), o truncaría la variable de 32 bits para realizar el cálculo en la de 16?
Otra pregunta muy extraña está relacionada con este fragmento 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)
wendEl operador presiona una tecla que activa la macro que contiene este código. La macro pasa un cierto tiempo y actualiza dos registros que muestran una cuenta atrás. Esta pieza de código funciona perfectamente. Sin embargo, si dejo el panel encendido por más de un mes, cuando el operador activa la macro sucede que el bucle while sale inmediatamente (seguramente se realiza un bucle porque se muestra el valor inicial correcto de la cuenta atrás). El intervalo normalmente se inicializa a los 30 minutos (30 * 600). Esto sucede hasta que apago el panel y lo vuelvo a encender. En ese momento todo vuelve a funcionar correctamente. No puedo entender lo que podría afectar. ¿Hay algún error conocido en el panel en la gestión del LW-9030 (unidad de tiempo del sistema de 32 bits: 0.1 segundos)?
Noviembre 23, 2017 en 10: 12 am #40010Sergio BertanaAdministrador del foroPrimer punto
Sería correcto usar el método abreviado, pero cuidado con todas las operaciones que tendrían lugar en 16bit.Segundo punto
Para una verificación precisa, se necesitaría toda la macro, pero como sugerencia se pudo verificar que LW9030 se desborde en el conteo regresando a 0.Noviembre 23, 2017 en 10: 30 am #40012Stefanopartícipe1 - ¿Puedo hacer los cálculos de las variables en 32 y luego truncarlas en 16. ¿Existe un comando específico para el truncamiento o puedo simplemente asignar el valor de una variable de 32 bits a 16?
2 - También puedo publicar el resto de la macro pero no se tocan los valores de tiempo o LW9030, todo se hace en el bucle que publiqué. Pregunto si hay errores conocidos en el firmware porque es bastante anómalo. En el manual del LW9030 se hace referencia a la hora del sistema de 32 bits en décimas de segundo. Por lo tanto, debería llegar a cero después de 4294967295 décimas de segundo, aproximadamente 13 años, no después de un par de meses. Además, incluso LW9030 desbordó el conteo volviendo a 0, el comportamiento indicaría que después del desbordamiento LW9030 permanece en cero sin aumentar más, porque incluso si interrumpo la macro y la ejecuto nuevamente, el mismo problema permanece mientras no apague el panel y vuelva a encenderlo.
Noviembre 24, 2017 en 8: 50 am #40013Sergio BertanaAdministrador del foroPara el punto 1 es posible realizar todos los cálculos a 32bit, al final es posible pasar el resultado en variable al bit 16 que trunca el resto.
Para el punto 2, tan pronto como encuentro un momento, compruebo el comportamiento del LW9030.Abril 11, 2018 en 10: 33 am #40075StefanopartícipeMe puse en contacto con Weintek que, después de meses de verificación, me confirmó que había un error en el firmware relacionado con el LW9030.
-
autorPublicación
- Debe iniciar sesión para responder a este tema.