Detención indeseada PLC

  • 18 Respuestas
  • 132 Vistas

Mariano

  • Aprendiz
  • **
  • Mensajes: 72
Detención indeseada PLC
« : octubre 06, 2018, 21:21:03 pm »
Buenas tardes Boris,

Tengo un problema de reinicio constante de un  PLC stx8091-d2 que hace de servidor para un único cliente remoto que por el momento es stx8091-d1. (Lo pasaré a D2 con el archivo que me pasaste).
El led debug parpadea en forma  normal y de repente queda encendido o apagado hasta cumplirse los 60 segundos asignados al watchdog.

La idea serìa sumar varios plc clientes más.

Adjunto proyectos cargados en el server como versión 20.0 y en el cliente como cl_casa_2

Estos plc se comunican por medio de un enlace parabólico. El puerto ethernet del server va a un modem/router y al mismo router el de la antena "access point". Son los únicos dos dispositivos conectados al router en este momento.

Desde el primer momento que se puso en servicio el sistema, se sucedieron detenciones esporádicas... (A veces se producían detenciones dos veces al día como también se ha dado el caso de no detenerse el programa en semanas) lo cual no influía en el desempeño del sistema sin dejar de ser indeseable por supuesto. Pero sucede que después de pasarlo a D2, actualizar firmware a versión 217 y cargarle las sentencias de uso de la EEPROM empezó a "detenerse el programa" en un período de tiempo indefinido que va entre los 5 y los 50 minutos según pude observar desde ayer a la mañana que estoy haciendo pruebas.

Comentarte también que el mismo proyecto lo tengo corriendo en un PLC del mismo modelo y también modificado a la versión D2 con el mismo firm 217 y programado con stx 1.9.3 en mi casa conectado a mi router. Accedo constantemente a ambos servidores (El que está en servicio y el que tengo a prueba) desde la dirección IP externa y el que está en prueba no presenta ningún problema y el otro sí.

Ya probé reiniciar reiteradas veces el modem/router y la antena y no doy con la falla.

La consulta sería como proceder para hallar el segmento de código que me está produciendo el "stop" del plc?

Había pensado en ir guardando en EEPROM números guías dentro del código pawn para acceder a él post reset y así intentar ver al menos en que punto del programa se produce la falla. Quería consultarte si tenés alguna herramienta o técnica que me pueda ayudar a aislar el problema.

Podrá caber la posibilidad de que algún problema de programación de más bajo nivel de la ejecución de sentencias o procedimientos sea responsable de estas paradas en el programa?

Este PLC está en servicio hace ya dos años y medio aproximadamente. Nunca le cambié la batería interna. Podrá ser causa del problema?

Saludos
« Última Modificación: octubre 08, 2018, 11:24:17 am por Mariano »

Mariano

  • Aprendiz
  • **
  • Mensajes: 72
Re:Detención indeseada PLC
« Respuesta #1 : octubre 08, 2018, 12:15:53 pm »
Hola Boris,

La última prueba que hice fue desconectar la antena del modem y aunque sigue bloqueándose y reseteandose por wdt. El intérvalo de tiempo entre bloqueos parece haberse prolongado desde los 5 minutos aproximadamente a los 60 minutos aproximadamente.

Será alguna cuestión vinculada a buffers llenos o interferencia entre eventos?

En el PLC que tengo encendido en laboratorio no se produce reset alguno en los tres día que está funcionando. Este está conectado al router en mi casa, pero no hay aquí antena que tenga que transmitir/recibir datos, por lo cual asumo que la ejecución del evento correspondiente @OnTcpServerRx() ha de ser mucho más rápida.

Se me hace que es un problema de interferencia o "cuelgue" de algún evento...

Saludos

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1914
  • Soporte Técnico
Re:Detención indeseada PLC
« Respuesta #2 : octubre 08, 2018, 17:30:06 pm »
La última prueba que hice fue desconectar la antena del modem y aunque sigue bloqueándose y reseteandose por wdt. El intérvalo de tiempo entre bloqueos parece haberse prolongado desde los 5 minutos aproximadamente a los 60 minutos aproximadamente.

¿Sin conexión desde afuera, ocurre también el problema?.

¿Conmutas alguna bomba, o carga con rele, contactor, etc, igualmente?.

En el PLC que tengo encendido en laboratorio no se produce reset alguno en los tres día que está funcionando. Este está conectado al router en mi casa, pero no hay aquí antena que tenga que transmitir/recibir datos, por lo cual asumo que la ejecución del evento correspondiente @OnTcpServerRx() ha de ser mucho más rápida.

En @OnTcpServerRx() proba el siguiente código en remplazo de: while((Id=TcpServerGetUnreadId()) > 0)

Código: (Pawn) [Seleccionar]
for(new Count=0; ((Id=TcpServerGetUnreadId()) > 0) && (Count < 100); Count++)
Para evitar que si por algún motivo la función TcpServerGetUnreadId() devuelve siempre mayor a cero, no se bloqueé el código en el evento y dispare el watchdog.

Ya que es la única parte que veo que es potencialmente peligrosa.

El resto de las funciones que llamás dentro dentro del evento, no generan retardos, más allá de lo normal de ejecución del procesador.

Escribir en la EEPROM genera un pequeño retardo, pero es de 5 a 10 mS por cada operación.

Se me hace que es un problema de interferencia o "cuelgue" de algún evento...

El evento solo se activa al recibir datos desde el cliente, si no los recibe, no se ejecuta.

Pero sospecho de ruido eléctrico, ya que en el laboratorio no te da problemas, y acá si.

Las cargas como bombas, ¿las controlás a través de un contactor o relé?.

Saludos!






« Última Modificación: octubre 08, 2018, 17:42:08 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1914
  • Soporte Técnico
Re:Detención indeseada PLC
« Respuesta #3 : octubre 08, 2018, 17:41:17 pm »
La consulta sería como proceder para hallar el segmento de código que me está produciendo el "stop" del plc?

Había pensado en ir guardando en EEPROM números guías dentro del código pawn para acceder a él post reset y así intentar ver al menos en que punto del programa se produce la falla. Quería consultarte si tenés alguna herramienta o técnica que me pueda ayudar a aislar el problema.

No es mala idea, pero es una falla aleatoria de ese tipo, si es como la describís, puede ocurrir en cualquier momento y siempre en distinto punto del programa.

El programa no aparenta tener algo que salga fuera de lo común.

Creo que lo ideal seria ir eliminando funciones, para llegar al punto donde no se resetea.

Me inclinaría ha hacer la siguiente prueba, desconectando las salidas reles, tenes problemas?. Así descartamos ruidos eléctricos.

Por otro lado, desconectando la pantalla SH-300, tenes problemas?. La pantalla constantemente interrumpe al PLC, es algo que ya esta super probado, pero para descartar que la comunicación serie no esté interfiriendo de alguna forma con las operaciones que realizas.

Finalmente, es posible que en el PLC de prueba-servidor le conectes otro PLC-cliente y verifiques que todo te funciona sin problemas?.

Podrá caber la posibilidad de que algún problema de programación de más bajo nivel de la ejecución de sentencias o procedimientos sea responsable de estas paradas en el programa?

No lo descarto, pero no estoy seguro si es una falla de comunicación/programación o de ruido.

Este PLC está en servicio hace ya dos años y medio aproximadamente. Nunca le cambié la batería interna. Podrá ser causa del problema?

No, no debería afectar la batería al funcionamiento.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Mariano

  • Aprendiz
  • **
  • Mensajes: 72
Re:Detención indeseada PLC
« Respuesta #4 : octubre 09, 2018, 09:19:51 am »
¿Sin conexión desde afuera, ocurre también el problema?.

Con conexión desde afuera te referís a la entrada telefónica del router o a la entrada ethernet del PLC?

¿Conmutas alguna bomba, o carga con rele, contactor, etc, igualmente?.

Directamente desde este PLC no conmuto relé alguno. Lo único que tiene como periférico es un transductor de presión como entrada análógica, sus salidas a relé que cierran las entradas (digitales) de un kit arduino con transmisor de sms por gsm y un led indicador de reset por wdt. Y un pseudo led debug desde una de las salidas pwm usada como digital y otro led indicación de comunicación por enlace exitosa conectada a la otra salida pwm usada también como digital.

En @OnTcpServerRx() proba el siguiente código en remplazo de: while((Id=TcpServerGetUnreadId()) > 0)

Código: (Pawn) [Seleccionar]
for(new Count=0; ((Id=TcpServerGetUnreadId()) > 0) && (Count < 100); Count++)

La última prueba que hice ayer fue comentar o anular si se quiere
la llamada a los eventos

//TcpServerSetRxEvent()

y el de la pantaslla sh300

//MbRtuServInit(1, 9600, SERIAL_8E1, MB_RTU_INTERFACE_RS232);

Se sigue colgando el programa aunque anoche aguantó por lo menos 3 horas hasta donde pude ver. Esta mañana cuando abrí el webserver ya se habia colgado.

En cuanto a hardware el único cambio que hice fue el de la fuente de 12V por una similar a la que viene con el plc

Sigo probando
Saludos

Mariano

  • Aprendiz
  • **
  • Mensajes: 72
Re:Detención indeseada PLC
« Respuesta #5 : octubre 09, 2018, 10:52:25 am »
Como el cable utp que conecta al router con el plc es algo largo (12 mts aproximadamente) voy a probar cambiarlo por uno blindado y puesto a tierra.

Ahora, te recuerdo que este reset constante lo hace desde que cambié al plc a D2 y la versiones nuevas de stxladder y firmware.... será necesario que probemos volviendo a d1 y a algún firmware anterior para descartar que sea algún problema de las nuevas versiones?

Saludos

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1914
  • Soporte Técnico
Re:Detención indeseada PLC
« Respuesta #6 : octubre 09, 2018, 11:04:14 am »
Con conexión desde afuera te referís a la entrada telefónica del router o a la entrada ethernet del PLC?

No, me refería a si desconectando el Ethernet tenias la falla.

Directamente desde este PLC no conmuto relé alguno. Lo único que tiene como periférico es un transductor de presión como entrada análógica, sus salidas a relé que cierran las entradas (digitales) de un kit arduino con transmisor de sms por gsm y un led indicador de reset por wdt. Y un pseudo led debug desde una de las salidas pwm usada como digital y otro led indicación de comunicación por enlace exitosa conectada a la otra salida pwm usada también como digital.

¿Por casualidad alimentás el kit Arduino u otro circuito con la salida de tensón +5D del PLC?.

La última prueba que hice ayer fue comentar o anular si se quiere
la llamada a los eventos

//TcpServerSetRxEvent()

y el de la pantaslla sh300

//MbRtuServInit(1, 9600, SERIAL_8E1, MB_RTU_INTERFACE_RS232);

Se sigue colgando el programa aunque anoche aguantó por lo menos 3 horas hasta donde pude ver. Esta mañana cuando abrí el webserver ya se habia colgado.

Fíjate de comentar también la inicialización del servidor TCP y desconectar el cable del SH-300 directamente.

Código: (Pawn) [Seleccionar]
// TcpServerInit(82, 30) 
« Última Modificación: octubre 09, 2018, 11:12:10 am por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1914
  • Soporte Técnico
Re:Detención indeseada PLC
« Respuesta #7 : octubre 09, 2018, 11:11:02 am »
Como el cable utp que conecta al router con el plc es algo largo (12 mts aproximadamente) voy a probar cambiarlo por uno blindado y puesto a tierra.

Si, puede ayudar.

Ahora, te recuerdo que este reset constante lo hace desde que cambié al plc a D2 y la versiones nuevas de stxladder y firmware.... será necesario que probemos volviendo a d1 y a algún firmware anterior para descartar que sea algún problema de las nuevas versiones?

Bueno, cabe esa posibilidad después de todo, lo que me llama la atención, es que corro tu programa y no presenta problemas.

Te puedo pasar para cambiar a modelo D1 y que pruebes.

Por otro lado, ¿te acordás que versión de firmware utilizabas sin problema?. Para verificar si hay algún cambio relacionado.

Saludos!
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Mariano

  • Aprendiz
  • **
  • Mensajes: 72
Re:Detención indeseada PLC
« Respuesta #8 : octubre 09, 2018, 15:24:54 pm »
Hola Boris

No, me refería a si desconectando el Ethernet tenias la falla.

La unica forma que tendria de corroborar que no se cuelgue seria por la "no indicacion de encendido" del led que se activa por reinicio de wdt. Ya que no podria acceder al webserver del plc. Pero hago la prueba y te aviso.


¿Por casualidad alimentás el kit Arduino u otro circuito con la salida de tensón +5D del PLC?.

Lo único q alimento es un led de indicación de reset por desborde de wdt. El arduino y demás tienen alimentación propia y sólo comparten el negativo común.


Fíjate de comentar también la inicialización del servidor TCP y desconectar el cable del SH-300 directamente.

Código: (Pawn) [Seleccionar]
// TcpServerInit(82, 30)

Lo hago y te aviso.

Con respecto al cable utp, lo cambié esta mañana por uno con blindaje puesto a masa.


Bueno, cabe esa posibilidad después de todo, lo que me llama la atención, es que corro tu programa y no presenta problemas.

Te puedo pasar para cambiar a modelo D1 y que pruebes.

Por otro lado, ¿te acordás que versión de firmware utilizabas sin problema?. Para verificar si hay algún cambio relacionado.


Pasamelo para probar ya que aparentemente no ha habido modificaciones en el circuito. Digo aparentemente porque en la caja metálica puesta a tierra donde se haya instalado el PLC no he cambiado nada y en lo que hace al resto de la instalación por lo que he podido revisar no encuentro ni cables cortados ni nada que me haga sospechar de algún desperfecto eléctrico en el circuito.

Por mi parte resumo todas las pruebas y las hago en un rato para informarte Boris.

Gracias por tu tiempo y asesoramiento.





Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1914
  • Soporte Técnico
Re:Detención indeseada PLC
« Respuesta #9 : octubre 09, 2018, 18:50:57 pm »
La unica forma que tendria de corroborar que no se cuelgue seria por la "no indicacion de encendido" del led que se activa por reinicio de wdt. Ya que no podria acceder al webserver del plc. Pero hago la prueba y te aviso.

Claro, si, me llama la atención porque casi no te quedan cosas para desactivar en cuanto a software.

Pasamelo para probar ya que aparentemente no ha habido modificaciones en el circuito. Digo aparentemente porque en la caja metálica puesta a tierra donde se haya instalado el PLC no he cambiado nada y en lo que hace al resto de la instalación por lo que he podido revisar no encuentro ni cables cortados ni nada que me haga sospechar de algún desperfecto eléctrico en el circuito.

Bueno, ya te voy a pasar el archivo para pasar de D2 a D1.

¿Cabe la posibilidad de que remplaces el PLC por el del laboratorio?.

Saludos!
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Mariano

  • Aprendiz
  • **
  • Mensajes: 72
Re:Detención indeseada PLC
« Respuesta #10 : octubre 09, 2018, 20:32:31 pm »
Estimado Boris,

Si no queda más alternativa voy a probar con el otro PLC pero espero para probar el cambio de D2 a D1.

La ultima prueba que hice fue desconectarle el panel sh300 y el puerto Ethernet y anular las sentencias que me indicaste además de las dos q hacían uso del panel.

No hubo reset pero habría que probarlo un par de días para tener certezas

Saludos

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1914
  • Soporte Técnico
Re:Detención indeseada PLC
« Respuesta #11 : octubre 10, 2018, 10:46:30 am »
Buenos días,

Si no queda más alternativa voy a probar con el otro PLC pero espero para probar el cambio de D2 a D1.

Adjunto archivos para cambio de D2 a D1.

Recordar que modelo D1 tiene mitad de memoria disponible, pero en firmware inferior a 211, no se comprueba que programa exceda limites y debería dejar cargar el proyecto original.

La ultima prueba que hice fue desconectarle el panel sh300 y el puerto Ethernet y anular las sentencias que me indicaste además de las dos q hacían uso del panel.

No hubo reset pero habría que probarlo un par de días para tener certezas

Otra prueba podría ser desconectar el cable ethernet, pero dejar solo el servidor web habilitado y ver si no se detiene. Luego conectar el cable ethernet y verificar.

Saludos!
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Mariano

  • Aprendiz
  • **
  • Mensajes: 72
Re:Detención indeseada PLC
« Respuesta #12 : octubre 10, 2018, 12:24:44 pm »
Otra prueba podría ser desconectar el cable ethernet, pero dejar solo el servidor web habilitado y ver si no se detiene. Luego conectar el cable ethernet y verificar.

Si... así estoy probando. Cable ethernet desconectado y webserver habilitado. Agregué código en el programa para que me avise por sms si se cuelga y hasta ahora no lo hizo. Pruebo conectarle el ethernet dentro de un rato.

Recordar que modelo D1 tiene mitad de memoria disponible, pero en firmware inferior a 211, no se comprueba que programa exceda limites y debería dejar cargar el proyecto original.

Me dejará cargar todo el código incluso el que hace uso de la EEPROM?

Gracias por el archivo.

Pruebo y te aviso

Saludos

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1914
  • Soporte Técnico
Re:Detención indeseada PLC
« Respuesta #13 : octubre 10, 2018, 12:50:51 pm »
Me dejará cargar todo el código incluso el que hace uso de la EEPROM?

Si no recuerdo mal, si; pero no escribas arriba de los 16KB de la EEPROM, ya que lo limita internamente el modelo.

Saludos!
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Mariano

  • Aprendiz
  • **
  • Mensajes: 72
Re:Detención indeseada PLC
« Respuesta #14 : octubre 12, 2018, 16:32:25 pm »
Estimado Boris,

Según las últimas pruebas que estuve realizando, estoy en condiciones de asegurarte que los problemas de bloqueo y reset por wdt del programa que suceden en el PLC son causa de alguna anomalía en las instrucciones que corresponden al TCP server.

Al inhibir las instrucciones de definición del puerto y la de activación del evento tcp la falla desaparece.

En la última prueba que realicé pasé el PLC a modelo D1. Le cargué el firmware v200 y el programa inicial que tenía en servicio (sin uso de instrucciones para la memoria EEPROM) y volvió a funcionar todo normalmente sin fallas.

Para esto, tuve también que instalar stxladder versión 1.8.2 en lugar de la 1.9.3. Esta última no me dejaba compilar el proyecto inicial (el que estaba normalmente en servicio) por falta de memoria RAM.

Necesitaría si podés revisar en que puede radicar la falla para poder poner en servicio el proyecto completo. En principio se me ocurre que podría devenir de alguna diferencia en las intrucciones de declaración del server TCP y/o del evento de recepción de datos que son las que, desactivadas interrumpen la aparición del bloqueo. O bien, de algún error al realizar la "mudanza" de modelo de D1 a D2 del PLC para que de esta forma se permita la carga total del proyecto. 

Quería agregarte que en la configuración del router están asignados los puertos 81 al webserver y 82 al tcp server. Donde pide el tipo de puertos entre TCP y UDP está definido en las dos alternativas como Both (ambos). Habrá algún conflicto con los números de puerto asignados. (No hay ningún otro servidor virtual instalado como sistemas de alarma o vigilancia ni nada por el estilo)

Saludos