Inicio > Foro > Programación IEC 61131 (LogicLab) > Ejemplo de manejo de carrito en lenguaje SFC
- Este tema tiene 5 respuestas, 2 participantes y se actualizó por última vez 10 años, hace 5 meses da Sergio Bertana.
-
autorPublicación
-
Septiembre 13, 2013 en 8: 56 am #35412Stefanopartícipe
Estoy tratando de conocer LogicLab y el lenguaje SFC, pero todavía no tengo claros algunos aspectos de la interfaz de usuario (como posicionar bloques, vincular acciones, etc.). Busco ejemplos para aclarar pero no encuentro proyectos un poco articulados para LogicLab con componentes SFC. Un ejemplo útil sería algo así como mover un carro con dos posiciones (FcA y FcB) y una tecla de inicio. Con una secuencia como:
- Comienzo.
- Botón de inicio de reconocimiento.
- Si (NO FcA) y (NO FcB): Corre hacia adelante hasta que se active FcA -> Botón de inicio de salto en espera.
Si FcB: Corre hacia adelante hasta que se active FcA -> Botón de inicio de salto en espera
Si FcA: Invierta hasta la activación de FcB -> Botón de inicio de espera de saltoPD: Sé que el segundo caso descrito debería insertarse en el caso 1 para la optimización. Lo dividí para tener una transacción más, por ejemplo.
Septiembre 14, 2013 en 6: 24 am #37773Sergio BertanaAdministrador del foroNo soy un programador experto en SFC, cuando tengo programas secuenciales para crear prefiero usar el lenguaje ST, la sentencia CASE OF te permite manejarlos de una manera muy ordenada. Pero trato de responder a su solicitud haciendo un programa SFC simple que sirva para el propósito (Imprimir programa, Descargar fuente).
- En el paso de inicialización, realizo la puesta a cero de las dos salidas de comando de dirección.
- En la próxima transacción espero la activación del botón de inicio.
- Antes de abrir una transición debo insertar a la fuerza un escalón, el escalón ficticio y solo un relleno.
- Abro una transición divergente, realizando dos transacciones de control sobre el estado de los finales de carrera. Si no hay ningún interruptor de límite activo, prevalece la rama más a la izquierda, por lo tanto, el eje delantero está activo (según su solicitud).
- Ejecuto los dos pasos Adelante y Atrás en los que se activa la salida del comando relativo.
- Cuando se activa el interruptor de límite, salta al paso de Inicialización que restablece las salidas de comando.Septiembre 16, 2013 en 8: 42 am #37775StefanopartícipeBien, diría que está bastante claro.
Gracias tanto !!Septiembre 17, 2013 en 1: 11 pm #37778Sergio BertanaAdministrador del foroCon un momento de tiempo libre, procedí a expandir el proyecto de manejo de carro y / o eje agregando el movimiento automático, como se ve desde el captura de pantalla del programa SFC.
En el modo manual, se espera que el comando de inicio avance o retroceda, el movimiento continúa hasta que se alcanza el final de carrera relativo.
En el modo automático, el movimiento de avance se realiza en el comando de inicio, se alcanza el tiempo de pausa, se realiza el movimiento de retroceso. Cuando se alcanza el interruptor de límite, se ejecuta una pausa, luego el ciclo se reanuda con el movimiento hacia adelante. Para detener el ciclo automático, es necesario cambiar al modo manual.
También he preparado una entrada de simulación% IX0.2, con la entrada activa se simulan los finales de carrera después de un tiempo desde el inicio del movimiento, de esta forma es posible testear el funcionamiento de una manera mucho más fácil, no teniendo que gestionar el límite de cambio.
Las diversas acciones y transiciones se gestionan con programas tanto en lenguaje ladder LD como en texto estructurado ST, esto para demostrar cómo un solo programa SFC puede contener partes escritas en los otros 4 lenguajes del estándar IEC61131, adjunto programa de prensa e archivos fuente.
Diciembre 2, 2013 en 9: 34 am #37913StefanopartícipeCon respecto a este ejemplo, tengo un par de preguntas.
Una concierne a LogicLab:
Al ir al menú de depuración -> Modo de sinulación, aparece el error “definición del simulador (TGSX) no encontrada”. ¿Falta algún archivo en LogicLab?El otro es sobre el proyecto de muestra.
Si se quiere añadir dos alarmas, una que interviene si el vagón tarda más de X tiempo en llegar al final de carrera y otra que interviene cuando se cierra un contacto (que puede ser el pulsador de emergencia, o un contacto de protección térmica) , ¿cuál sería la forma más correcta de gestionarlos?Diciembre 2, 2013 en 9: 54 am #37914Sergio BertanaAdministrador del foroEl simulador dentro de LogicLab no está implementado en la versión actual, estará disponible a partir de la próxima versión que se publique. Actualmente proporcionamos un simulador externo, debe seleccionar el objetivo del simulador para usarlo (Tema).
He convertido su programa para utilizarlo con el simulador y he añadido la gestión de la alarma de avance del eje (Descargar el programa fuente). Aquí está captura de pantalla de tu programa de simulación
-
autorPublicación
- Debe iniciar sesión para responder a este tema.