OpenPLC nos permite depurar en vivo un PLC remoto. Es una herramienta muy potente, pero hay algunos aspectos que conviene tener en cuenta para evitar posibles problemas.
Posts anteriores
Este post forma parte de una serie de posts sobre OpenPLC en Arduino y M-Duino. Si todavía no te has familiarizado con el software, te recomendamos que leas primero los posts anteriores:
Mapeo de cualquier M-Duino en OpenPLC
MQTT en M-Duino con OpenPLC y Raspberry PLC
Hardware utilizado
Para este post hemos utilizado un M-Duino 42+, pero puedes usar cualquier M-Duino o cualquier placa compatible con OpenPLC. El M-Duino está conectado por Ethernet a un ordenador que ejecuta el OpenPLC Editor.
Activación de Modbus
Para poder depurar un programa, hay que cargarlo con alguna de las opciones de Modbus activada, o con ambas si lo prefieres. La depuración por serie solo funciona si Modbus RTU está activado con una velocidad de al menos 38400 baudios. Si quieres depurar por Ethernet, se usará para ello la IP que hayas configurado para Modbus TCP.
Depuración por Ethernet
Depurar por Ethernet es muy sencillo. Usaremos el ejemplo Blink. Primero, carga un programa en tu M-Duino con Modbus por Ethernet activado. Después, haz clic en el icono de depuración de la barra superior:
Aparecerá una nueva ventana. Selecciona "Ethernet - TCP" y cambia la IP por la que configuraste para el Modbus por Ethernet:
Después de conectar, haz clic en el icono de las gafas en la parte izquierda de la pantalla:
Ahora estarás en la instancia de depuración, donde puedes ver el diagrama de escalera funcionando en tiempo real. También puedes depurar variables individuales haciendo clic en sus iconos de gafas, tras lo cual aparecerán en la ventana "Debugger" de la parte derecha de la pantalla:
Si haces clic en el icono del candado, puedes cambiar el valor de las variables siempre que no estén asociadas a una E/S del PLC.
Depuración por serie
Si es posible, te recomendamos depurar siempre por Ethernet, ya que es más fiable. La depuración por serie requiere tomar algunas precauciones que explicamos a continuación.
Abre el ejemplo blink y añade una extensión de Arduino. Si no sabes cómo añadir una extensión de Arduino, se explica aquí:
Abre la extensión de Arduino y configúrala así:
Carga el programa en el M-Duino con Modbus RTU activado. Después, haz clic en el icono de depuración, selecciona "Serial - RTU" e inicia la depuración. Asegúrate de usar los mismos ajustes que usaste al activar Modbus RTU.
Al hacer clic en "Connect" te encontrarás con este problema:
El mensaje de error no describe la causa real: el proyecto no coincide con el programa en ejecución. El error real es que, en la extensión de Arduino, estamos usando el puerto Serial a 9600 baudios, lo que no coincide con la velocidad que seleccionamos para Modbus RTU.
Para evitar estos problemas al depurar por serie, debes tener en cuenta lo siguiente:
- La velocidad de Modbus debe ser de al menos 38400 baudios.
- La velocidad de depuración debe coincidir con la de Modbus.
- Si usas el puerto serie en tu extensión de Arduino, su velocidad debe coincidir con la de Modbus.
También puedes encontrarte con estos problemas al usar bloques de función MQTT. En cualquier caso, te recomendamos depurar por Ethernet para evitarlos por completo.
Siguiente post:
Uso de ESP32 PLC, M-Duino y Ardbox con OpenPLC