PLC open: Programando como es debido
Un bloque de función PLC open está montado sobre el estándar IEC-61131-3. Entender cómo se comportan y para qué sirven facilitará el trabajo posterior de programación

Los bloques de función para control de ejes de PLC Open tienen todos en común una misma estructura de parámetros de entrada, parámetros de salida y parámetros de Entrada y Salida.
Entender cómo se comportan y para qué sirven los parámetros de E/S de un bloque PLC open, facilitará el trabajo posterior de programación.
Un bloque de función PLC open está montado sobre el estándar IEC-61131-3. Dicha norma precisa que un bloque de función puede ser invocado en un programa mediante una instancia, la instancia y sus subelementos es en definitiva la variable que contiene toda la información relativa a la ‘invocación’ del bloque de función.
En el ejemplo de la imagen “Origen Disco” es la instancia del bloque de función “MC_Home”
Los bloques PLC open necesitan de una o más entradas para la referencia del Eje (Axis). Estos parámetros son de un tipo de dato AXIS_REF. y definen el eje o ejes sobre los que actúa el bloque de función.
La estructura de datos AXIS_REF, es diferente para cada fabricante, puesto que PLC open define el tipo de dato AXIS_REF comno ‘específico del fabricante’.
Un bloque de función se puede ser de dos tipos:
-Trabajar por nivel (Enable)
-Trabajar por flanco de subida (Execute)
Los bloques de función que trabajan por nivel acostumbran a estar relacionados con funciones del estado del eje, como por ejemplo (MC_Power) que sirve para habilitar (Enable=TRUE), o deshabilitar (Enable=FALSE) la potencia de un eje.
Los bloques de función que se activan por flanco, acostumbran a estar relacionados con acciones, que se ejecutan en uno o más ciclos de escán del PLC, como por ejemplo (MC_Home) que iniciará una secuencia de búsqueda de origen para un eje.
Los parámetros de salida del bloque de función nos sirven para monitorizar el estado del bloque y, poder así utilizarlo en otras líneas de programa (en el ejempo de la imagen, se utiliza el parámetro de salida “Status” de MC_Power para encadenar una secuencia de búsqueda re origen.
Descripción de los parámetros de salida de un bloque:
Done (Hecho): Indica que el bloque de función a finalizado satisfactoriamente su cometido (por ejemplo que la secuencia de búsqueda de origen ha terminado). Este tipo de salida está ligada a bloques de función que se activan con flanco de subida (execute)
Status (Estado): Indica el estado de un bloque de función, por ejemplo en el caso de MC_Power si el eje tiene potencia o no. Este tipo de salida está ligada a bloques de función que se activan por nivel (enable).
Busy (Ocupado): Indica que el bloque de función está ejecutando su cometido (previamente fue activado por Enable o Execute) pero que aún no ha podido terminar su trabajo (Done/Status)
Error (error): Como su nombre indica, el bloque de función (no necesariamente el eje físico), ha tenido un error por lo que jamás podrá completar su trabajo (Done/Status). Ante un error será necesario subsanar el problema y reiniciar el bloque de función.
Aborted (Abortado): En realidad no está indicando ningún problema, simplemente indica que otro bloque de función ha tomado el control del eje, por lo que su trabajo ha sido abortado.
ErrorID (Identificador de Error): Facilita un código de error del bloque en caso de que éste se produzca (Error).
Existe una regla ‘de oro’ para estas salidas Booleanas del bloque de función y, es que estas son mutuamente exclusivas:
En otras palabras, definen un diagrama de estados del Bloque de Función, y por tanto las reglas del juego a la hora de encadenar éste con otros bloques de función o comandos del PLC.
En Realidad existen más entradas y salidas, como por ejemplo: Buffer y Active, que se utilizan para la transición entre bloques, pero serán explicadas en otro post.
El ‘pulso’ Execute
Los bloques de función tipo Execute se activan automáticamente con el flanco de subida, es decir no precisan de una función external al propio bloque para detectar el flanco.
La entrada ‘Execute’ no necesita ser mantenida a verdadero (TRUE) para que el bloque se ejecute (A diferencia de la entrada ‘Enable’ que desactiva el bloque inmediatamente).
En cambio sí que existe una diferencia para el estado de las salidas del bloque dependiendo de si la entrada Execute está mantenida o no.
-Las salidas que indican el estado final del bloque de función permanecerán activas indefinidamente mientras la entrada Execute sea cierta (TRUE), pero caerán un ciclo después (Excepto la señal de error) de que la señal Execute caiga a (FALSE).
El siguiente ejemplo muestra quan importante es esta consideración a la hora de programar.
Cuando el código como el que se muestra a continuación se ejecuta, la salida del PLC ‘Glue’ (goma) sólo estará activada durante un ciclo de escán (tal y como muestra la traza ), ya que está enclavada con la salida Move_S0.Done del bloque de función.
En un controlador de altas prestaciones como el OMRON Sysmac NJ-501 que opera con naturalidad por debajo del milisegundo.., el dispensador de goma… jamás llegará a disparar producto cuando el eje llegue la posición indicada.
En el siguiente post se comentarán las transiciones entre bloques establecidos por el BufferMode de PLC open

Motion Control
Blog dedicado a la introducción en los conceptos de Motion Control (Control de movimiento) en sistemas de automatización