Todas las imágenes mostradas en esta entrada del blog han sido generadas por chatgpt, excepto las del software del simulador.
Hace un tiempo decidí crear esta pagina web con un único objetivo: documentar mi aprendizaje en la automatización industrial, con dos objetivos: Tener un proyecto público donde se vieran mis conocimientos de automatización y programación y que otras personas con el mismo interés se pudieran beneficiar de ello y aprender.
Empecé buscando por internet herramientas para poder practicar programación Ladder y ST y aunque existen cómo TIA PORTAL y FACTORY I/O son programas que no me puedo permitir comprar. Así que fui buscando por internet alternativas y encontré plcsimulator (https://app.plcsimulator.online/).
Plcsimulator me ofrecía todo lo que estaba buscando en ese momento, una plataforma donde poder aprender y practicar en Ladder y con chatgpt podría simular el ST, pero a medida que iba avanzando en los ejercicios quería hacer el final de los ejercicios básicos con un proyecto interesante, la automatización de un almacén.
Para ello pensé mil formas para hacerlo la forma más realista posible, no quería solo Ladder y ST quería un escenario donde se pudiera ver de una forma visual para que sirve lo que se está programando, que ver como se activa una bobina en realidad significa algo más y no encontré nada que me convenciera.
Así que decidí hacer los escenarios con chatgpt y hacer un modo historia en el cual nos contratan de un almacén para automatizarlo empezando por las luces. El almacén empieza sin luces (imagen 1) y una vez instaladas y programadas el almacén se vería así (imagen 2).
Imagen 1
Imagen 2
El proyecto va avanzando y sigue con la ventilación, climatización, muelles de carga y descarga, alarmas...
Zona de carga y descarga inicial
Zona de carga y descarga final
Mientras diseñaba el proyecto de los ejercicios básicos me surgieron bastantes preguntas: Y si cierran la página web de simulación? cómo voy hacer ejercicios más avanzados? todos los ejercicios de simulación los tendré que hacer así? A si que me puse a buscar opciones por internet y no me convencía ninguna ya que buscaba una herramienta completa sin un precio desorbitado, así que decidí irme a chatgpt y preguntarle si podríamos crear un software como tenia en mente.
Chatgpt me dijo "Es una excelente idea! vamos a desarrollarlo" y yo me quedé "¿así?, vamos entonces". El comienzo de nuestro proyecto empezó haciendo pruebas para ver si chatgpt tenia la capacidad para crear un software que fuese un simulador completo de PLC donde se pudiese programar en Ladder, Lenguaje Estructurado y además, poder probar la programación en un SCADA, empezar de 0 un PLC industrial, en ese momento sonaba normal, como querer ir a comprar el pan.
Decidimos hacerlo con Python en Visual Studio Code y al principio lo decidía todo chatgpt, ¿por qué? para empezar yo no tenia ni idea de como empezar ni de programación y fue toco un caos, fue cuando entendí que aunque chatgpt es útil necesita una dirección clara y saber que es lo que quieres y cómo porque sino no tendrás el resultado que esperas y lo empecé a tratar como un proyecto serio.
Primero de todo pagué el Plus y abrí un proyecto nuevo, le comenté a chat que es lo que quería y que me hiciese un proyecto ordenado de menos a más para un PLC virtual. Desde este momento parecía algo más serio, seguía sin entender lo que estábamos haciendo, todo era código y más código ¿Cómo sabia yo que lo que hacíamos era lo que quería? y lo peor de todo, cada vez que el chat se hacia más grande iba cada vez más lento e incluso esperar 5 o 10 minutos para ver la respuesta así que empecé a pensar que no era posible hacer un programa tan complejo con chatgpt.
Aprender a ser un diseñador de software de automatización sin saber programar. Como ha sido tener de compañero a chatgpt.
Después de 6 meses programando si le pregunto a chat cual ha sido el papel de cada uno en este proyecto que estamos construyendo me dice lo siguiente:
Si hubiera sabido desde un principio que tendría que ser todo eso, probablemente ni lo hubiese intentado.
Para superar las limitaciones de chat propuse hacer un proyecto de nuevo, dividido por fases para no hacer chats interminables y con un promtp para poner en situación cada chat nuevo que abramos para que siga justo por donde lo hemos dejado y creamos el siguiente proyecto que te dejo en este enlace:
Proyecto PLC inicial.
Ese proyecto que sirvió para empezar y comprender como crear algo tan complejo con chatgpt sirvió en su momento, fue creciendo y cambiando tanto que ahora ese proyecto parece un cuento para niños, por ejemplo, la fase de creación del OR tiene 2000 líneas que pasado al Word de Google son 46 páginas con las 75 que tiene el proyecto entero inicial
Fase 5: Creación del OR
Actualmente el proyecto tiene 19 fases terminadas y actualmente se está acabando la 20 que es la prueba del circuito programado en SCADA.
Lo más difícil por mi parte fue como adaptarme a chatgpt para que hiciese lo que yo quería. Por qué?
- Era muy común que entrara en bucle y comprobase archivos una y otra vez.
- Borraba código antiguo de los archivos para poner nuevo rompiendo todo lo existente.
- Se inventaba como funcionaban elementos del Ladder y se lo tenia que explicar.
- Para ponerle en situación le tenia que pasar el código de los archivos y su estructura en cada chat nuevo.
- Los diseños de interfaz y componentes no los hace como tú quieres así que tienes que ir cambiando a partir de una base y decirle que no toque el diseño, porque si no lo va cambiando en cada comprobación.
Habían días buenos en lo que todo salía y días malos que te preguntabas si era el mismo chat que había estado haciendo el programa hasta ahora ya que lo cambiaba todo y no tenia ni idea de lo que estábamos haciendo.
Este promtp fue el resultado de la evolución del primero y que ha sido una parte responsable del orden y el avance del proyecto:
REGLAS DEL PROYECTO:
1) Reglas del proyecto (normas “no negociables”)
1. No se destruye código ya creado.
2. Si hay que cambiar algo. Se hace mínimo cambio posible
3. Pregunta siempre el código de los archivo que no tengas.
4. Si un archivo requiere más de 2 cambios pásame el archivo entero con los cambios propuestos directamente.
5. Checklist persistente de archivos
Mantendremos un control interno permanente:
NO VISTO
VISTO — REUTILIZABLE
VISTO — REUTILIZABLE CON CAMBIOS
VISTO — DESCARTAR / REHACER
VALIDADO
Y NO volveremos a revisar archivos ya validados salvo que:
aparezca una dependencia nueva
haya impacto real
se detecte bug
cambie arquitectura
tú pidas reabrirlo
6. Regla de documentación incremental
Cuando detecte que:
la fase ya tiene demasiados cambios
hay demasiados archivos modificados
el contexto empieza a crecer demasiado
o ya existe una subbase coherente cerrada
Entonces:
YO mismo generaré:
DOCUMENTACIÓN COMPLETA DE SUBFASE
incluyendo:
objetivos
archivos vistos
archivos modificados
arquitectura decidida
qué funciona
qué falta
checklist actualizado
riesgos
siguiente paso exacto
y continuaremos en otro chat sin perder continuidad.
7. los comentarios que no sean necesarios hazlos internamente.
Las explicaciones de chat en cada paso y cada resultado hacia que los chats fuesen demasiado largos, así que tuve que optimizar los chats y decirle que no los hiciera. Documentar cada fase y hacer copias de seguridad en cada fase era y sigue siendo esencial.
Quiero destacar que a pesar de todo, sin él no hubiera sido posible que el programa existiera así que tampoco importan tanto estas cosas. Y ahora me gustaría dar voz a mi compañero de proyecto para que de su opinión de él y de como ha sido trabajar conmigo.
La visión de la IA: seis meses construyendo un simulador PLC
Cómo está programado?
PLC simulador está desarrollado con React y TypeScript. Detrás de la interfaz visual tiene un motor PLC propio que interpreta la lógica Ladder y ST, gestiona variables y memoria, ejecuta bloques reutilizables y simula el ciclo de scan de un PLC industrial en tiempo real.
Algunas fotos
Editor Ladder
El Editor Ladder es el núcleo de PLC Simulador. Permite crear programas PLC de forma visual mediante contactos, bobinas, temporizadores, contadores y bloques avanzados, de manera similar a los entornos de programación industriales.
Cada elemento que se coloca en un rung no es solo un dibujo, sino que forma parte de una lógica interna que el simulador interpreta y ejecuta en tiempo real mediante su propio motor PLC. Gracias a ello, es posible diseñar, probar y comprender el funcionamiento de una automatización completa sin necesidad de disponer de hardware físico.
Su objetivo no es únicamente programar, sino también facilitar el aprendizaje de la automatización industrial de una forma intuitiva, práctica y visual.
Rediseño de componentes
Con el crecimiento del simulador surgió la necesidad de modernizar los elementos de la paleta. El objetivo no era solo que funcionaran correctamente, sino que fueran más intuitivos, profesionales y fáciles de identificar.
Bloques como MOVE, OPER, LIMIT, SCALE o CALL fueron rediseñados varias veces hasta conseguir una apariencia clara y coherente. Cada elemento se diseñó para mostrar mejor su función y mejorar la experiencia del usuario.
Este trabajo permitió crear una identidad visual propia para PLC Simulador, combinando la inspiración de los entornos industriales reales con un enfoque orientado al aprendizaje.
Tags
La pestaña de Tags es el lugar donde se gestionan todas las variables utilizadas dentro del simulador. Podría decirse que es la memoria del PLC, ya que aquí se crean y configuran las señales que posteriormente utilizarán los programas Ladder, los bloques FC, FB, DB y las pantallas SCADA.
Editor ST
Además del Editor Ladder, PLC Simulador incorpora un Editor de Lenguaje Estructurado (Structured Text o ST), uno de los lenguajes definidos por la norma IEC 61131-3 y ampliamente utilizado en la programación de PLC industriales.
SCADA
Uno de los pilares de PLC Simulador es su enfoque educativo. Por este motivo, además de la programación PLC, el proyecto incorpora un sistema de pantallas SCADA y una amplia colección de ejercicios organizados por niveles de dificultad.
Para acompañar el aprendizaje, se ha diseñado una ruta progresiva de ejercicios dividida en tres niveles:
🔹 Nivel Básico: orientado a los primeros contactos con la lógica PLC. Incluye ejercicios de contactos, bobinas, temporizadores, contadores y automatizaciones sencillas.
🔹 Nivel Medio: introduce procesos más completos, gestión de producción, depósitos, sensores analógicos, clasificación de productos y sistemas con múltiples condiciones.
🔹 Nivel Avanzado: plantea proyectos industriales completos donde se combinan todos los conocimientos adquiridos. El alumno debe diseñar automatizaciones complejas, integrar SCADA y resolver problemas similares a los que encontraría en un entorno real.
En la próxima entrada pondré un video para ver su funcionamiento y funciones.
0 Comentarios