Mensajes recientes

Páginas: 1 ... 4 5 [6] 7 8 ... 10
51
STX8091 / Re:Detención indeseada PLC
« Último mensaje por Soporte 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!






52
STX8091 / Re:Detención indeseada PLC
« Último mensaje por Mariano 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
53
STX8091 / Detención indeseada PLC
« Último mensaje por Mariano 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
54
STX8091 / Re:ModBus TCP con dos PLC y un panel HMI
« Último mensaje por Rodrigo octubre 05, 2018, 21:33:32 pm »
Hola Boris, gracias por desburrarme un poco jajaj.... Lo que estaba pensando es que en el caso de la aplicación con 3 PLCs + el panel, seria configurar únicamente como servidor al 8091 y clientes a los dos remotos (8092) para interactuar con el 8091... a la vez a los 8091 también como servidor para que el panel comande sobre ellos... y el bit de baliza estaría en el 8091 que seria leído por los dos 8092... que opinas? podrías ver un ejemplo asi?.

Saludos
55
STX8091 / Re:ModBus TCP con dos PLC y un panel HMI
« Último mensaje por Soporte octubre 05, 2018, 20:53:28 pm »
Respecto a Consulta #2:

Buenas tardes Boris. Muchas gracias por el ejemplo y lo probe y todo ok... segun lo conversamos por mail, estoy necesitando comprar otro PLC para agregar a la red, un 8092 con un IP192.168.1.83... mi consulta es según el ejemplo, como haria con el segundo PLC servidor?... la aplicacion seria la misma, el 8091 tiene que leer y escribir en los dos 8092 segun los requerimientos solicitados en el panel.

Tendría que modificar un poco el ejemplo, ya que hay que hacer cambios de IP, para primero comunicarse con el PLC-2, y luego con PLC-3.
Dejame que haga unas pruebas para ver si conviene hacerlo así o de alguna otra forma, como por ejemplo utilizando el HMI como intermediario con los tres PLC configurados como servidor para simplificar.

Buen fin de semana.

Saludos!



56
STX8091 / Re:ModBus TCP con dos PLC y un panel HMI
« Último mensaje por Soporte octubre 05, 2018, 20:43:20 pm »
Buenas tardes Rodrigo, te respondo primero la Consulta #1:

* Eventos: no entiendo bien como aplican el concepto de los eventos y mas aun el "OnMbClientRx" porque en mis aplicaciones no los use! lo entiendo leyéndolo pero cuando se activan? es necesario el manejo ese de las librerías?

Un evento es algo simple, funciona como una "interrupción". Esto es, cuando por ejemplo un "evento" ocurre, se interrumpe al programa que esta ejecutando el diagrama Principal.sld y se llama al diagrama correspondiente para manejar al evento. Cuando se termina de ejecutar el diagrama del evento, se continua ejecutando el diagrama Principal.sld en el punto en que fue interrumpido.

Un evento puede ser un timer que expiró o una respuesta que llegó de una transacción ModBus TCP que realizaste como cliente.

Una transacción ModBus TCP como cliente puede tardar varios segundos si el servidor no responde inmediatamente, por lo tanto si tuvieras que esperarla, detendrías la ejecución de tu programa para esperar repuesta. Esto seria un inconveniente, entonces es mejor utilizar eventos, en ese caso seguís normalmente la ejecución de tu programa y el PLC te "avisa" cuando llega la respuesta, generando un evento el cual debes procesar.

Ese es el concepto.

El evento "OnMbClientRx" se llama cuando una transacción ModBus TCP como cliente finaliza, la misma puede finalizar porque recibiste repuesta del servidor o porque ocurrió un error. Por ello en el evento se comprueba el estado de la transacción.

En el ejemplo que te pasé, cuando el PLC envía una petición para leer las entradas DIN del esclavo, en el programa se activa un flag llamado "ReadDin" y otro llamado "WaitResponse", esto es para poder diferenciar cuando se finaliza la transacción en el evento a que tipo de operación pertenece la repuesta (ya que podes haber enviado para comandar las salidas DOUT). También el flag WaitResponse evita que mientras estas enviado una petición, la "pises" enviando otra petición al mismo tiempo sin antes haber esperado repuesta. Esto es una lógica que realizamos.

  - El "OnTimeout" seria un watchdog cada 5 seg?

Algo así, un "Timeout" es un timer que podes setearlo para que cada X segundos dispare el evento "OnTimeout" y luego en el diagrama asociado "OnTimeout.sld" ejecutas una lógica. El PLC admite hasta 5 timeout de este tipo. En este programa, suponemos que solo existe el Timeout1 porque no comprobamos los otros 4.

En el ejemplo, usamos el evento OnTimeout para cerrar conexiones del cliente ModBus TCP y limpiar flags. Esto es necesario para evitar que por algún error queden abiertas y/o no se ejecute el evento fin de transacción OnMbClientRx. Ya que recordar, que pedimos periódicamente mediante ModBus datos al PLC que esta configurado como esclavo.

  - El "OnTimer1" es un timer cada 500ms para realizar lecturas y escrituras?

Exacto, fíjate que hay una variable entera MbOpCount que es incrementada si "WaitResponse=0" (no hay transacción en curso o no se espera repuesta).  Si la variable MbOpCount es "1" se hace una petición para lectura ModBus de las entradas DIN remotas, si MbOpCount es "2", se envia escritura a las salidas DOUT remotas. Luego, es reiniciada a "1" para comenzar nuevamente el ciclo.

Siguiendo esta lógica, podes agregar que cuando sea "3" pida el valor de un registro por ejemplo, cuando sea 4 escriba un bit, etc.

Te envío los archivos míos... el panel opera sobre el 8092 con los arranques y paradas de las bombas y al 8091 solo que lea las entradas analógicas y las publiques en el panel, o sea que el panel se comporte como cliente/ maestro y los plc como servidores/esclavos...

No es mala idea, podes usar el HMI como intermediario, para pedir datos a un PLC y copiarlo a otro. Creo que simplificaría un poco la lógica, porque todos los PLC serian esclavos, y solo lees/escribís desde HMI, y no debes utilizar el PLC como cliente. Entiendo que esto se puede hacer.

La parte que implementaste como cliente, no es correcta, ya que no esperas el fin de transacción ModBus TCP con el evento, ni diferencias que operación estas realizando. Si usas el cliente ModBus TCP, mejor partir desde el ejemplo que te pasé.

solo hay una comunicacion de un bit entre los dos PLC, es una baliza  (llamado COMUNICACION) que tiene la función de resetear timers en el PLC remoto ya que si se cae el enlace de comunicación no podran parar las bombas, entonces si esa baliza no esta presente para resetear los timers en el remoto activa una señal física que detiene  las bombas...

Claro, como te comentaba en el párrafo anterior, este bit de "keep alive" podrías setearlo desde el HMI (leyendo PLC-1 y copiando a PLC-2) o desde el PLC-1 maestro enviando el bit al PLC-2 con una transacción ModBus TCP como cliente.

Avísame, y te puedo agregar a lógica del ejemplo que te pase, como setear un bit desde el PLC maestro al esclavo.

Saludos!



57
STX8091 / Re:ModBus TCP con dos PLC y un panel HMI
« Último mensaje por Rodrigo octubre 05, 2018, 16:41:07 pm »
Consulta #1:

Estimado Boris, buenas tardes... vi los ejemplos  y creo que voy a necesitar un curso sobre alguna cosas jajajaj...

* Eventos: no entiendo bien como aplican el concepto de los eventos y mas aun el "OnMbClientRx" porque en mis aplicaciones no los use! lo entiendo leyéndolo pero cuando se activan? es necesario el manejo ese de las librerías?
  - El "OnTimeout" seria un watchdog cada 5 seg?
  - El "OnTimer1" es un timer cada 500ms para realizar lecturas y escrituras?
Te envío los archivos míos... el panel opera sobre el 8092 con los arranques y paradas de las bombas y al 8091 solo que lea las entradas analógicas y las publiques en el panel, o sea que el panel se comporte como cliente/ maestro y los plc como servidores/esclavos... solo hay una comunicacion de un bit entre los dos PLC, es una baliza  (llamado COMUNICACION) que tiene la función de resetear timers en el PLC remoto ya que si se cae el enlace de comunicación no podran parar las bombas, entonces si esa baliza no esta presente para resetear los timers en el remoto activa una señal física que detiene  las bombas...


Consulta #2:

Buenas tardes Boris. Muchas gracias por el ejemplo y lo probe y todo ok... segun lo conversamos por mail, estoy necesitando comprar otro PLC para agregar a la red, un 8092 con un IP192.168.1.83... mi consulta es según el ejemplo, como haria con el segundo PLC servidor?... la aplicacion seria la misma, el 8091 tiene que leer y escribir en los dos 8092 segun los requerimientos solicitados en el panel.




Saludos
58
STX8091 / Re:Guardar registros a PC
« Último mensaje por Soporte octubre 04, 2018, 09:34:56 am »
Quedó funcionando todo a la perfección.

Necesitaría me pases para pasar a D2 los PLC que me quedan con números de serie: 10052 y 10025

Perfecto, adjunto upgrades para los S/N solicitados.

Saludos!
59
STX8091 / Re:ModBus TCP con dos PLC y un panel HMI
« Último mensaje por Soporte octubre 03, 2018, 21:31:07 pm »
Estimado Rodrigo,

Te paso los ejemplos para que pruebes la conexión entre dos PLC y un panel HMI por ModBus TCP.

Primero que nada, debes actualizar a la última versión de StxLadder (1.9.4) ya que los ejemplos contienen
algunas funciones nuevas y deben ser abiertos con la última versión:


http://www.slicetex.com/ladder/soft

Hay dos ejemplos, que paso a describir a continuación.



EJEMPLO #1:

Al PLC-1 (ejemplo STX8091-D2) debés cargarle este proyecto:

www.slicetex.com/docs/an/an021/TwoPlc/MbTcpMaster1.zip

Al PLC-2 (ejemplo STX8092-D1) debés cargarle este otro proyecto:

www.slicetex.com/docs/an/an021/TwoPlc/MbTcpSlave1.zip

El PLC-1 actua como cliente ModBus TCP (maestro) y se conecta cada 0.5 segundos al PLC-2 (esclavo o servidor) para pedirle el estado de todas las entradas DIN y para actualizar el valor de todas sus salidas DOUT.

El PLC-1 presupone que el PLC-2 tiene configurada la dirección IP número 192.168.1.82

Al PLC-1 se le ha agregado una lógica en el proyecto para que sea fácil interactuar con las entradas/salidas del PLC-2. Por ejemplo, en el PLC-1 accedes a todas las entradas DIN del PLC-2 con las variables rDIN1 a rDIN12 (notar que prefijo "r" es de remoto).

También, desde el PLC-1 podes controlar las salidas del PLC-2 escribiendo las variables rDOUT1 a rDOUT16 (notar que prefijo "r" es de remoto).

En el diagrama Principal.sld del PLC-1, tenes un ejemplo de aplicación que te muestro en la siguiente figura:



Como podés observar, si DIN6 en PLC-1 es igual a "1", se activa salida DOUT6 en PLC-2, ya que escribimos la variable rDOUT6.

Al abrir el proyecto, en el archivo info.txt tenés más información.

EJEMPLO #2:

Este ejemplo, permite conectar la pantalla HMI Kinco al PLC-1 a través de ModBus TCP.

Al PLC-1 (ejemplo STX8091-D2) debés cargarle este proyecto:

www.slicetex.com/docs/an/an021/TwoPlc/MbTcpMaster2_HMI.zip

Al PLC-2 (ejemplo STX8092-D1) debés cargarle este otro proyecto (el mismo del ejemplo #1):

www.slicetex.com/docs/an/an021/TwoPlc/MbTcpSlave1.zip

A la pantalla HMI Kinco debes cargarle este proyecto:

www.slicetex.com/docs/an/an021/TwoPlc/ModBusTcpTest1_HMI.zip

Una vez conectado el HMI, tenes esta pantalla principal:



Desde los "switchs" podes escribir las direcciones 4003 y 4004 en el PLC-1, que a su vez, desde el diagrama Principal.sld del PLC-1 leemos dichas direcciones y escribimos las variables rDOUT1 y rDOUT2, comandando de esta forma indirectamente las salidas DOUT1 y DOUT2 del PLC-2, como muestra la siguiente imagen:



Este es un ejemplo didáctico, ya que la pantalla la podes conectar al PLC-1 a tráves de RS232/485 para evitar usar el puerto Ethernet, o directamente desde la pantalla HMI comandar el PLC-2 si está en la misma red Ethernet.



Te recomiendo probar los ejemplos, y ver a rasgos generales lo que hacen ,leer archivos info.txt, para luego modificar para tu proyecto.

Quedamos a disposición por cualquier duda.

Saludos!





60
STX8091 / Re:Guardar registros a PC
« Último mensaje por Mariano octubre 03, 2018, 06:57:36 am »
Buen día Boris,

Quedó funcionando todo a la perfección.

Necesitaría me pases para pasar a D2 los PLC que me quedan con números de serie:

10052 y 10025

Saludos
Páginas: 1 ... 4 5 [6] 7 8 ... 10