Biblioteca: Mechatronics
Sugerencia
los Mechatronics La biblioteca pretende ser un ejemplo de una implementación simple (y no completa) de una unidad mecatrónica con ejecución secuencial. No cumple con todos los requisitos que podría tener una aplicación mecatrónica completa. Más bien, pretende ser un punto de entrada o base para una aplicación de este tipo.
El núcleo esencial del modelo de mecatrónica propuesto se basa en la siguiente estructura de módulos:
Mechatronics
Por lo tanto, se supone que cualquier máquina posiblemente tenga varias subunidades mecatrónicas (ejemplo: cada una representando una pinza). Tal subunidad nuevamente se divide en sus actuadores (equivalente a la propia unidad mecánica, también su implementación funcional o gestión de E/S) y un administrador de programas. El administrador de programas está destinado a administrar los diferentes estados de una subunidad mecatrónica, por ejemplo, su Idle o Execute estado. Eventualmente, esos estados están representados por secuencias de programas que controlan los actuadores o cualquier otra cosa necesaria para una ejecución adecuada.
En este punto, las diversas partes se describirán brevemente en detalle. Al usar la biblioteca, en muchos casos será necesario implementar sus propios actuadores, pasos de flujo o secuencias de programa, que también se explicarán aquí.
Actuadores: Todos los módulos que deberían ser actuadores deben implementarse mediante un bloque de funciones que a su vez implemente el
IActuatorinterfaz. Esta interfaz no tiene métodos ni propiedades y se usa solo para la compatibilidad del módulo (ver elIActuatordocumentación en la biblioteca). No se dan restricciones ni reglas para las implementaciones del actuador, por lo que el movimiento o la activación de dicho actuador debe realizarse por separado. Normalmente, esto se hace mediante la implementación de un módulo de pasos de secuencia, que puede mantener los actuadores adecuados en una ranura de referencia y, por lo tanto, mover estos últimos de la manera deseada (por ejemplo, utilizando interfaces adicionales).Pasos de secuencia
Se recomienda enfáticamente que ejecute la implementación de pasos de flujo como clases derivadas del
StepBasebloque de funciones Esto proporciona todas las implementaciones básicas necesarias delIProgramSequenceStepinterfaz. Ver elIActuatordocumentación en la biblioteca. Al usar la clase baseStepBase, entonces solo es necesario implementar elExecutemétodo. Este último es llamado cíclicamente por el flujo del programa hasta que la variablexDonede la clase base se establece enTRUE. Además, para una correcta funcionalidad, la banderaxActivedebe establecerse enTRUEmientras el paso esté activo. Sin embargo, la conexión a los actuadores se puede realizar de cualquier manera, por ejemplo, mediante las ranuras de referencia propuestas (ver 1.).Secuencia de programas y administrador de programas Una secuencia de programa es un submódulo de un administrador de programas, que representa un estado. Estos estados se gestionan en forma de una máquina de estado OMAC. Sus implementaciones nuevamente se basan en un método "Ejecutar" (para más detalles, consulte la implementación en la biblioteca). Sin embargo, la implementación de dicho flujo de programa por parte del usuario no es necesaria en la mayoría de los casos. Sin embargo, la forma en que el comportamiento de la máquina de estado se implementa en el administrador de programas y, por lo tanto, ejecuta las secuencias del programa se describirá brevemente aquí:
Hay dos tipos de estados: estados de actuación (que terminan en "ing") y estados de espera/dual (el resto). Los estados de espera finalizan mediante comandos externos, mientras que los estados de actuación se ejecutan y finalizan automáticamente. Los comandos disponibles dependen del estado en el que se encuentre el administrador del programa en ese momento. En el diagrama de estado OMAC se proporciona una breve descripción general:
figura 66. diagrama OMAC
figura 67. Módulo:MovableBarrier
El módulo
MovableBarrierse implementa de la siguiente manera: El bloque de función correspondienteMovableBarrierimplementa la interfaz creadaIMovableBarrier. La última interfaz define métodos para mover una barrera, mientras queIMovableBarrieren sí mismo implementa la interfazIActuator, para que el móduloMovableBarrierse puede insertar como actuador en el árbol de módulos debajo de una unidad mecatrónica:figura 68. Implementación del móduloMovableBarrier
Sin embargo, este actuador "MovableBarrier" es movido por el módulo de pasos de secuencia
MoveBarrierForTime, que a su vez se implementa de la siguiente manera:figura 69. Implementación del móduloMoveBarrierForTime
El módulo que implementa el bloque de funciones
MoveBarrierForTimesimplemente se deriva del bloque de función base contenido en la bibliotecaAC_MEC.StepBase. Por eso el bloque de funcionesMoveBarrierForTimeya implementa la interfazIProgramSequenceStep. En consecuencia, el móduloMoveBarrierForTimese puede insertar como paso de secuencia en una secuencia de programa. La implementación funcional del bloque de funciones.MoveBarrierForTimees el siguiente: definiendo un slot de referencia para el móduloMoveBarrierForTime, que puede contener un actuador que implementa la interfazIMovableBarrier, uno obtiene una conexión a un actuador "MovableBarrier" existente. El movimiento de este actuador se realiza finalmente en elExecutefunción de laMoveBarrierForTimebloque de función, que simplemente llama al método para (pictóricamente) mover la cubierta protectora. Este método lo proporciona el actuador referenciado, que implementaIMovableBarrier. Además la propiedadDoney la variablexActiveestán acoplados a un TON, de modo que llama repetidamente a las funciones de movimiento deIMovableBarrierse realizan hasta que transcurre cierto tiempo (TON), después del cualDonese establece en VERDADERO yxActivea FALSO. La propiedadDonees parte de la interfazIProgramSequenceStepy por lo tanto le dice a la secuencia de programa superior que se ejecutará el siguiente paso de secuencia.Además de su propia implementación de pasos de secuencia, el
AC_Mechatronics.librarytambién proporciona algunos pasos pre-implementados, que se pueden usar para operaciones lógicas generales. Por ejemplo, esto significa un pasoBranchOnBoolse proporciona, que tiene dos subsecuencias / ramas de pasos, que se ejecutan en función del valor de una variable BOOL. Estos subpasos se ejecutan según el valor de una variable booleana. Además, la bibliotecaAC_Mechatronics.librarycontiene pasos de flujo para flujos paralelos, saltos condicionales o pasos de espera simples y muchas más tareas.