tutorial programacion panelview hmi español entry connected compactlogix and plc

programacion - Aprendizaje de la programación del PLC



panelview 800 and compactlogix (11)

¿Cómo aprendo la programación del PLC? ¿Diferiría enormemente para diferentes marcas de PLC? ¿La programación de escalera es la misma que la programación de PLC?


PLC es el término utilizado para los dispositivos que usan lógica de escalera. Los dispositivos que están programados en lenguajes de programación más típicos generalmente se llaman microcontroladores. Sin embargo, hay algunos de nosotros que en ocasiones agrupan a todos bajo el nombre de PLC. :-) No estoy seguro de cuánto varía la lógica de escalera, pero el código del microcontrolador puede variar significativamente.


Puede aprender la programación del PLC desde varias fuentes en Internet, una de las cuales es esta (wikibooks) o este

El programa que escriba será prácticamente el mismo en las diferentes marcas de PLC para LLD (Diagramas de lógica de escalera) a menos que use funciones específicas del PLC. Pero habrá muchas más diferencias si utiliza algún lenguaje como IL (Lista de instrucciones). Pero una vez que haya escrito el programa, el formato de almacenamiento y ejecución difiere ampliamente entre las marcas

La lógica de escalera es uno de los 5 lenguajes de programación para PLC, los otros son FBD (diagrama de bloques de funciones), ST (texto estructurado, similar al lenguaje de programación Pascal), IL (lista de instrucciones, similar al lenguaje ensamblador) y SFC (función secuencial gráfico). Estas son solo varias representaciones del lenguaje de programación, varios sabores si se quiere. Pero, por lo general, una marca determinada solo admite uno de estos. En Estados Unidos, los LLD son ampliamente utilizados, mientras que en Europa, los IL son más populares.


Tenía un poco de programación PLC en la Universidad. Me pareció que era un nivel más bajo que el ensamblaje, pero el dispositivo que estábamos utilizando no era el más nuevo.

Creo que debes tener un controlador de PLC, pero primero buscaría simuladores y leería más sobre él antes de comprar.


Ladder, a menudo llamada LD, es uno de los varios estilos de lenguaje definidos en el estándar de programación de automatización ISO 61131. Otros son SFC (diagrama de flujo secuencial), FBD (diagrama de bloques funcionales), ST (texto estructurado) e IL (lista de instrucciones). IL es similar al ensamblador y muy pocas personas lo usan. ST es una programación basada en texto muy similar a las versiones anteriores de BASIC. No se usa a menudo tampoco. LD está diseñado para parecerse a los contactos de relé de un panel de control eléctrico (que muchos PLC reemplazaron). FBD se parece más a un diagrama de circuito. SFC es básicamente un diagrama de flujo.

Algunos PLC admiten todos, otros solo algunos o incluso uno. Mientras LD es el más común, FBD y SFC ganan popularidad.

Las diferentes marcas usan lenguajes de programación ligeramente diferentes. Por lo general, son lo suficientemente similares como para que una vez que comprenda una marca, pueda trabajar con cualquiera de ellas, pero no puede tomar directamente el código de un PLC y utilizarlo en otra marca.


Las respuestas dadas hasta ahora son bastante acertadas. Una cosa que encontré es que los PLC tienen una personalidad dividida en lo que respecta a sus idiomas y configuración. Su diseño central es dar a los chicos eléctricos un medio flexible de establecer la lógica de control para su diseño general. Los PLC son básicamente un conjunto de entradas y un conjunto de salidas, y la forma en que están conectadas es controlado por el software que carga en el dispositivo.

Uno de los énfasis de los lenguajes que se usan para los PLC es que son accesibles para personas que provienen de un entorno eléctrico. Entonces, los modismos y las estructuras parecen contradictorios para una persona acostumbrada a los lenguajes de alto nivel o incluso a los lenguajes ensambladores. Ladder Logic, por ejemplo, es muy accesible para gente eléctrica.

Sin embargo, en los últimos años, los PLC han estado respaldando una multitud de idiomas para una flexibilidad máxima. Sin embargo, en mi opinión, el puñado de PLC que he trabajado carecen de un entorno de programación. Cosas simples como la asignación de nombres de variables a la ubicación de la memoria a menudo no están diseñadas en el idioma que se utiliza. Los que son fáciles de trabajar a menudo no son los más rentables para el trabajo.

A pesar de estas desventajas, son excelentes para simplificar sistemas eléctricos complejos. Si está trabajando con otros en un proyecto, descubrirá que su conocimiento de programación ayudará al proyecto a resolver programas espinosos. Pude tomar un programa de lógica de escalera de 100 peldaños y reescribirlo en un tercio de los peldaños. Una vez que pude aprender el lenguaje de lógica de escalera, pude implementar varias optimizaciones que redujeron la complejidad del programa.

Un consejo es que tendrá que aprender sobre el enganche. Algunas veces necesitará almacenar o mantener alguna salida y, a menos que tenga un pestillo, el resultado desaparecerá el próximo ciclo. Una vez que entiendes el problema, queda claro, pero al principio fue una gran fuente de frustración para mí.


La programación del PLC debe verse como la actividad de implementación de la salida de ingeniería del software del PLC, a menos que esté usando PLC como parte pura de componentes alternativos a soluciones mecánicas o eléctricas.

Con esto como base, el entorno de programación de PLC es típicamente impulsado por IEC61131, tiempo de ciclo garantizado, "preventivo" en tiempo real, sin necesidad de manejar problemas relacionados con el sistema operativo en tiempo real, escaneo de código continuo, puntero no de programa, concepto diferente del típico desove de tareas de la computadora tipo de multitarea. La ejecución del código es naturalmente atómica, no es necesario usar monitores entre tareas.

Cada uno de los idiomas tiene su cercanía a qué tan concebible es su código para el modelo lógico que desea implementar.

  1. La escalera tiene su concepto básico sobre el estilo de enclavamiento de flujo de potencia eléctrica. La resolución del código dentro de una sola red es escaneo horizontal o vertical (puede encontrar recursos sobre este tema del fabricante u otros sitios). Si su código tiene una naturaleza de resolución de escaneo único y está dentro de una red, algún comportamiento inconcebible puede deberse al tipo de escaneo (importante recordar que la escala es solo una emulación del circuito eléctrico, aún es secuencial en ejecución).

  2. FBD o diagrama de bloques de funciones era flujo de señal electrónica, pero hoy puede ser flujo de datos dependiendo del tipo de PLC. FBD muestra una secuencia de ejecución más clara bastante similar a la escala de escaneo horizontal en la secuencia de escaneo. En la actualidad, FBD se utiliza generalmente como contenedor para bloques de función de objeto, aunque la implementación de dependencia y la similitud visual con el modelo de proceso dependen del tipo de PLC.

  3. Literal es muy similar al BASIC, pero solo a la sintaxis; la ejecución aún se escanea. El lenguaje literal es bueno para el cálculo matemático. Para la implementación de alto nivel, los métodos o la derivación de atributos dentro del objeto pueden ser más fáciles usando Literal. La programación de la máquina de estado usando representaciones de estado similares al inglés o constantes hace que el programa sea muy legible.

  4. La lista de instrucciones es similar a las mnemotécnicas de ensamblaje pero, una vez más, la ejecución sigue siendo un escaneado y no un puntero de programa. Es fuerte en operaciones de bits y lógicas discretas de estilo paréntesis. Puede ser un lenguaje muy eficiente para usar con estructuración y comentarios adecuados.

  5. SFC o diagrama de flujo secuencial es un lenguaje complementario para la implementación de la secuencia. SFC tiene reglas inherentes a la activación del bloque de acción, transiciones de estado, activación de secuencia paralela y fusión. Sin embargo, la ramificación de excepción compleja o la gestión de acciones simultáneas pueden complicar la implementación y dificultar la lectura del diagrama de flujo.

La administración del sistema PLC en el manejo de IO, comunicación, espera activa es esfuerzo de configuración de hardware y depende del producto. En general, se pueden tratar por separado de la ingeniería de software. Sin embargo, los datos relacionados con la administración del sistema PLC son de tipo "localizado" (área de direccionamiento de datos independiente), un buen enfoque de modelado de datos en ingeniería de software puede ayudar en la manejabilidad de los datos del sistema.


Allen-Bradley tiene un PLC de software gratuito basado en dos, específicamente para capacitación. Probablemente pueda encontrarlo si va a su sitio o lo busca en Google. Se usa para enseñar programación de PLC en las escuelas.


Para un principiante que intenta aprender la lógica de escalera, la mejor manera es asistir a una capacitación en línea gratuita en http://plcs.net


Hice una gran cantidad de programación de PLC, y ahora hago bastante .NET de programación. Es muy peligroso hacer el cambio de cualquier forma, porque muchas de las habilidades que crees que deberían ser transferibles (patrones y demás) te llevarán muy lejos.

La mayor diferencia que le digo a la gente es que el código del programa de PC debe escribirse como si otros programadores fueran la audiencia, pero los programas de PLC (lógica de escalera) deben escribirse como si las personas de mantenimiento fuesen la audiencia. El mantenimiento en la mayoría de las instalaciones (en particular, la fabricación) se conecta con frecuencia directamente a los PLC y, en el modo en línea, pueden ver cómo el código se ejecuta gráficamente para descubrir qué está mal.

Por ejemplo, si una salida no se enciende, teclearán la ID del dispositivo eléctrico de salida en la función de búsqueda del software de programación, buscarán la bobina de salida y comenzarán a rastrear desde allí buscando problemas. Uno de los errores frecuentes que cometen algunos programadores de PLC es "mapear" sus E / S en una estructura (en PLC, se llaman tipos definidos por el usuario), y usan una instrucción de copia para mover todas las entradas o salidas a la estructura a la vez. Tiene sentido desde la perspectiva de programación de PC, pero hace que la persona de mantenimiento quiera matarte. Normalmente, el software de programación proporciona una característica de referencia cruzada donde pueden especificar esa bobina de salida, y les indicará en todas partes en el programa que se utiliza. Si usa una instrucción de copia para mover 10 palabras de E / S en una estructura de datos de 10 palabras, debe sentarse allí y contar los bits para descubrir qué bit en el origen de la copia se asigna a qué bit en el lado de destino del dupdo. Es cierto que los comentarios pueden ayudar, pero también hay un problema ... Los PLC almacenan todo el programa y le permiten cargar el programa en una emergencia si necesita solucionar problemas y no tiene una copia del programa original . El problema es que por razones de espacio, el PLC no almacena los comentarios. Entonces, si la línea está fuera de servicio, le cuesta $ 5000 por minuto en el tiempo de inactividad, y un hombre se queda corriendo con una computadora portátil, es posible que tenga que cargarlo rápidamente sin comentarios y tratar de solucionarlo. Tener esas instrucciones de copia ahí, desperdiciando 10 minutos de su tiempo, le cuesta a la compañía $ 50,000 en tiempo de inactividad. Estas son las cosas que debe tener en cuenta al escribir programas de PLC.

Algunos otros consejos: algunos PLC tienen soporte para bucles FOR. Nunca los use. Por la misma razón anterior, hacen que el código sea muy difícil de solucionar para una persona de mantenimiento. Esto se debe a que si tiene un código en el PLC que se escanea más de una vez por escaneo (como el contenido de un ciclo), cuando ingresa al modo de depuración en línea, el software no puede mostrarle los valores de cada uno. de 10 loops que ejecutaron este escaneo, por lo que realmente no tienes idea de qué valor estás viendo. Luego debe escribir todo este código complicado para extraer los valores de bucle de un índice de bucle específico en algunas otras variables (variables) que puede supervisar. Esa es solo una impedancia más para solucionar el problema en una emergencia. Usar una subrutina más de una vez por exploración sufre el mismo problema.

El direccionamiento indirecto (lo que llamaríamos Matrices) es muy difícil de entender para las personas encargadas del mantenimiento. En general, está bien usarlos cuando se trata de la administración de recetas (almacenar y recuperar valores de cómo construir su parte), pero debe intentar mantenerse alejado de ella en la parte de control del programa.

En la programación de PC, por supuesto, buscamos reutilizar el código tanto como sea posible. Sin embargo, en PLC y sistemas de control, el tiempo de inactividad es extremadamente caro y el hardware es costoso. La memoria es barata, y en realidad los programadores de PLC son baratos. Por lo tanto, se espera que si tiene 10 elementos idénticos en su máquina (como unidades transportadoras o algo similar) tendrá 10 archivos diferentes (subrutinas), uno para cada unidad, y cada unidad tendrá sus propias variables asociadas: por ejemplo Drive1_Run, Drive2_Run, Drive3_Run, etc. Esto se sentirá muy "equivocado" cuando vengas de un fondo de programación de PC, pero todo esto se debe a los puntos que he mencionado anteriormente. Cuando se encuentra en una situación de inactividad, y alguien dice que Drive 3 no funciona, abre la computadora portátil, vaya al archivo de Drive 3 y observe el renglón de salida de ejecución. Comienza a solucionar problemas desde allí, mientras el programa se está ejecutando. No hay puntos de interrupción (el programa nunca se detiene).

Buena suerte en tus esfuerzos. Escribí algunas ideas más de mis años de programación de PLC , si quieres verlos.



Puede usar Texto estructurado (ST) que consiste en una serie de instrucciones que, como se determina en los lenguajes de alto nivel, ("IF..THEN..ELSE") o en loops (WHILE..DO) se pueden ejecutar.

Lo encuentro mejor que Ladder ya que está cerca del lenguaje de programación estándar.