Programación estructurada. Plantillas

Slides:



Advertisements
Presentaciones similares
Lenguajes de Descripción de Hardware
Advertisements

Bases de la programación de un PLC
Análisis Sintáctico Capítulo 4.
Control del Enlace de Datos
Alumno: Roy R. Mercado Núñez
Programación Interactiva Manejo de Excepciones
Programación II Recursividad
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Te presento a Python Qué es Python? Lenguaje interpretado
MANEJO DE EXCEPCIONES EN C++
Desarrollo de Aplicaciones para Internet
Subprogramas: Procedimientos
Introducción a la programación orientada a aspectos.
Módulo 2: Trabajando con Formularios y Controles
FUNCIONES EN C.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
AUTÓMATAS PROGRAMABLES
PROGRAMACIÓN ESTRUCTURADA
EXCEPCIÓN DE ERRORES.
Arquitectura de programación Bloques
 Funciones predefinidas en las listas Se puede definir rangos en las listas. Ejemplo: [1..10] que es la lista del 1 hasta el 10 El operador ++ concatena.
PROGRAMACION 2 MICROCONTROLADORES BASIC STAMP.
Diseño estructurado GRAFCET
Funciones en lenguaje C
Programación Básica con NQC Patricio A. Castillo 03/05/2008.
CORPOCIDES Ing. Emilio Medina Baquero
Operaciones de bloques de bits Pablo San Segundo C-206
VHDL.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PROCEDIMIENTOS FUNCIONES
LÓGICA - DECISIONES Los valores lógicos: constantes, variables y expresiones lógicas, permiten controlar la ejecución de las sentencias de un programa.
Electrónica Digital.
Circuito divisor de Frecuencia x 2
Capítulo.2 - Fundamentos del Lenguaje VHDL
CAPA DE ENLACE DE DATOS El nivel de enlace de datos (en inglés data link level) o capa de enlace de datos es la segunda capa del modelo OSI, la cual es.
Control de flujo: Bucles
Variables y Shapes. Variables ► Lugares de la memoria que reciben un nombre ► En VB no es necesario declarar las variables  A=8 ► Se declaran con Dim.
Sintaxis de C# (Declaraciones y Tipos)
SISTEMAS INDUSTRIALES DE CONTROL
Subrutinas y Control de Abstracción
Others, soporte para síntesis. Los agregados tienen la habilidad de usar la sentencia others, la cual asignará un valor a todos los otros elementos de.
INTERRUPCIONES Introducción.
Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas.
Martha Lucia Orozco G. Universidad del Cauca Programación Avanzada de PLC's1 PROGRAMACION AVANZADA DE PLC’s Énfasis en Automatización Martha Lucia Orozco.
PROGRAMACIÓN ESTRUCTURADA. PROGRAMACÍÓN IMPERATIVA El programa detalla los pasos necesarios para realizar una tarea. Existe un estado global de programa.
COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida.
Control de errores visual basic
Teoría – Alejandro Gonzalez
Módulo 8: Manejo de Errores y Excepciones
Guía de Implementación
Sincronización de Procesos
Introducción Electrónica Digital
El Concepto de Tipo Los tipos permiten indicar la característica de los valores (datos) manipulados en un programa. Toda variable tiene asociado un tipo.
USO DE ARGUMENTOS Y PARÁMETROS EN LOS PROGRAMAS Preparado por Prof. Nelliud D. Torres Material Original Prof. Antonio Huertas Uso de argumentos y parámetros.
Controlador PID de temperatura utilizando la tarjeta de desarrollo AVR Butterfly Andrés Lecaro José González.
Estructura general de un programa en el servidor de Bases de Datos.
CLASE 5.
Paradigmas de Lenguajes de Programación Smalltalk (Parte II) 1 er cuatrimestre de 2007.
INTRODUCCIÓN A ARDUINO
Conceptos Básicos de Programación. Put a pin into input mode Loop Check if the pin is 0 or 5 volts If the pin has 5 volts Do something End if End Loop.
Computación I (CI-2125) Clase 2 Prof. Mireya Morales.
Tipos de datos básicos en Java
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
Desarrollador Profesional de Juegos Programación III Unidad I Capturar Excepciones.
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
Repaso C Ficheros, memoria dinámica, … Pablo San Segundo (C-206)
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
SOLUCION DE EJERCICIO N°15 SOLUCION EJERCICIO N°17.
Valores escalados Max Min By P.G.F. ESCALAMIENTO.
Transcripción de la presentación:

Programación estructurada. Plantillas Pablo San Segundo C-206 pablo.sansegundo@upm.es

Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP El problema de “mostrar el cero”

Consideraciones generales Existen un buen número de situaciones de control que se repiten en las diferentes tecnologías Para facilitar su programación en un PLC se proponen un conjunto de plantillas Existe cierta similitud entre el concepto de plantilla y el de patrón en POO

Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP

Plantilla de “cajas” para el grafcet U “X0” U “S1” S “X1” R “X0” U “X1” U “S2” S “X2” R “X1” U “X2” U “S3” S “X3” R “X2” //... Implementación típica U “X0” SPBN _001 U “S1” S “X1” R “X0” _001: U “X1” SPBN _002 U “S2” S “X2” R “X1” _002: U “X2” SPBN _003 U “S3” S “X3” R “X2” _003: NOP 0 //... Implementación con “cajas” Buena numeración. En la caja se activa la etapa 001 VENTAJAS A) Eficiencia B) Claridad C) Modela prioridad S1 1 S2 2 S3 3 Cuestión ¿INCONVENIENTES?

Ejemplo repaso: Macroetapa en grafcet 3 OB1: BLOQUE INVOCANTE FC1 FC1 U “X3” U “f” S “M1” R “X3” U “M1” SPBN _M1 CALL FC1 U “S1” U “k” S “X4” R “M1” R M100.0 _M1: NOP 0 SET FP M100.0 S “X1” R “X10” R “X11” R S1 U “X1” U “g” S “X10” R “X1” //… Salida de la Macroetapa

Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP

Plantilla Enable(EN)-Enable Out(ENO) Gestión de errores en bloques mediante el biestable RB de la palabra de estado FC1 ENO M 1.0 E 1.0 EN (500 * 600) Implementación caja Uso de bit de error RB U E1.0 SPBNB _001 CALL FC1 _001: U BIE = M 1.0 L 500 L 600 *I UN OV SAVE Tarea Objetivo RBRLO Consulta el estado del bit RB Cuestión Modifique el código para que RB sólo se modifique con el evento error EVENTO ERROR: EN=TRUE y ENO=FALSE

BLOQUE MULTIPLICADOR (FC1) Ejemplo para un bloque U M100.0 SPBNB _001 CALL FC1 _001: U BIE = M100.1 OB1: Bloque invocante L EW 0 L EW 2 *I SPO _ERR T MW 1 BEA _ERR: CLR SAVE FC1: Bloque llamado BLOQUE MULTIPLICADOR (FC1) Evento error aislado. Buen estilo M 100.0 M 100.1 EN ENO EW 0 MW 1 EW 0 * EW 2 EW 2

Ejemplo de concatenamiento de bloques Cuestión ¿Es necesario usar SPBNB en la segunda llamada o bastaría con usar SPBN? Ejercicio Programe la concatenación de bloques que aparece abajo U M100.0 SPBNB _001 CALL FC1 U BIE CALL FC2 _001: U BIE = M100.1 Cuestión ¿Caracterización del error? ERROR: M100.0=1 y M100.1=0 CADENA DE BLOQUES MULTIPLICADORES FC1 FC2 M 100.1 M 100.0 EN ENO EN ENO EW 4 EW 0 MW 1 EW 4 * EW 6 MW 3 EW 0 * EW 2 EW 6 EW 2

Ejercicio Implemente un bloque función que trate una señal analógica de temperatura transducida (PEW752) con rangos 10ºC (0V) - 70ºC (10V) La función debe llamar al bloque de librería SCALE (FC 105), devolver TRUE si la temperatura se encuentra en [25ºC-40ºC] y gestionar un posible error por desbordamiento mediante el bit RB

Solución VAR_INPUT raw : INT; high_lim : REAL; //70ºC low_lim : REAL ; high_range : REAL //40ºC low_range : REAL ; END_VAR VAR_OUTPUT temperature : REAL ; in_range : BOOL ; //[25-40]ºC VAR_TEMP retSCALE : WORD ; //8 overflow ge_low_range : BOOL //>25ºC CALL “SCALE” IN:=#raw HI_LIM:=#high_lim LO_LIM:=#low_lim BIPOLAR:=FALSE RET_VAL:=#retSCALE OUT:=#temperature L #temperature L #low_range >=R = #ge_low_range L #high_range <=R U #ge_low_range = #in_range L 8 L #retSCALE ==I SPBN NERR CLR SAVE NERR: NOP 0 Llamada a periferia Rango inferior Rango superior Gestión error (RB) FC1: “sensor temp”

Aplicación de plantilla EN-ENO al grafcet Gestión de errores locales a una etapa mediante bit RB EN es la etapa (implementación con cajas), ENO representa el evento error OB1: Invocante FC1 Salida / Maniobra (A1.0) con gestión de error Error 1 2 T1 T3 3 Emergencia FC1 U “X1” SPBNB _002 CALL FC1 U BIE SPBN _ERR U T2 S “X2” R “X1” R “Salida” SPA _002 _ERR: S “Emergencia” _002: NOP 0 //… U “X1” = “Salida” //… U “Error” SPBN _ERR CLR SAVE _ERR: NOP 0 Cuestión ¿Tiene “Error” prioridad? FC1 ENO Error X1 EN Ejercicio Implemente un error por sobrepasamiento de tiempo para la maniobra, mediante bit RB

Solución parcial VAR_INPUT tempor : TIMER ; tout : S5TIME ; END_VAR VAR_OUTPUT actuador : BOOL ; VAR_IN_OUT bit_de_trabajo : BOOL ; SET FP #bit_de_trabajo S #actuador L #tout SS #tempor U, #tempor BEB CLR //sets RB bit SAVE R #actuador R #bit_de_trabajo FR #tempor R #tempor Arranque Gestión del error (RB) FC1: “sensor temp”

Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP

Plantilla de maniobra Se asume una maniobra simple tal que el evento de finalización es conocido (p.ej. sensor de fin de carrera= 1) Se consideran los siguientes biestables Bit de trabajo: Vale ‘1’ durante la ejecución de la maniobra y ‘0’ en caso contrario. El bit de trabajo a ‘0’ sirve como condición de arranque si el bloque de maniobra es invocado Bit de fin : Vale ‘1’ cuando se detecta la condición de finalización de la maniobra. ‘0’ en caso contrario. Bit de error : Vale ‘1’ si se detecta un defecto durante la ejecución de la maniobra. ‘0’ en caso contrario.

Aplicación al grafcet FC1 OB1: BLOQUE INVOCANTE FC1 sini 1 FC1 OB1: BLOQUE INVOCANTE FC1 sini 1 maniobra (A124.0) con gestión de error U “X0” U “sini” S “X1” R “X0” U “X1” SPBN _002 CALL FC1 U “bitDeError” S “X_ERR” R “X1” UN “bitDeError” U “bitDeFin” S “X2” _002: NOP 0 SET FP “bitDeTrabajo” R “bitDeError” R “bitDeFin” L S5T#10s SS T1 S A124.0 //defecto U T1 S “bitDeError” R T1 FR T1 R “bitDeTrabajo” R A 124.0 //salida normal U “sfin” UN T1 S “bitDeFin” R “bitTrabajo” R T1 FR T1 R A 124.0 X_ERR 10s/X1 2 3 Cuestion I ¿Se puede usar un temporizador SE? Ejercicio I Diseñe un interfaz apropiado para conseguir que la función maniobra FC1 sea una función de librería Ejercicio II Modifique el interfaz anterior considerando la gestión de defecto mediante bit RB

Soluciones Ejercicio I. Gestión de error con biestable del área de marcas Ejercicio II. Gestión de error mediante biestable RB de la palabra de estado VAR_INPUT tempor : TIMER ; tout : S5TIME ; sfin: BOOL; END_VAR VAR_OUTPUT actuador : BOOL ; bitDeError: BOOL: bitDeFin: BOOL; VAR_IN_OUT bit_de_trabajo : BOOL ; VAR_INPUT tempor : TIMER ; tout : S5TIME ; sfin: BOOL; END_VAR VAR_OUTPUT actuador : BOOL ; bitDeFin: BOOL; VAR_IN_OUT bit_de_trabajo : BOOL ; Cuestion I ¿Se puede usar un temporizador SE? NO, se necesita un temporizador con memoria

Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP

Plantilla Start-Stop Se aplica para maniobras complejas, en las que su terminación depende de un evento asíncrono a su evolución Ejemplo: el control de cada tramo de la escalera mecánica Consiste en dividir el control en un grafcet maestro con estados de parada y marcha y el grafcet de producción de la maniobra a controlar La entrada al bloque es un único parámetro start de tipo BOOL con la semántica habitual: start = TRUE  Estado de Marcha start = FALSE Estado de Parada Las salidas del bloque serán: Actuadores de la maniobra Aquellos eventos internos que afecten a la finalización

Plantilla Start-Stop PLANTILLA (INTERFAZ) //… actuador start VAR_STATIC XM: BOOL XP: BOOL BitDeTrabajo: BOOL x0: BOOL x1: BOOL x2: BOOL //… resto de estados END_VAR start actuador

Caso de uso FB1

Aplicación al motor de la escalera mecánica 1 2 MOTOR 1 FB “control del motor” (GMM+GP) GMM Cuestión ¿Son estrictamente necesarias las etapa XM y XP? U “start” S “XM” R “XP” //… forzado de GP a reposo FB1 / GMM U “XM” FP “bitDeTrabajo” S “X0” R “X1” R “X2” //… FB1 / GP UN “start” S “XP” R “XM” R “bitDeTrabajo” //…forzado GP a congelación

El problema de “mostrar el cero” (repaso) Ha aparecido a lo largo del curso. Se presenta en diversas formas: Una señal de mando por flanco no activa una acción (p.ej. no se activa un temporizador) Se necesita hacer que un nivel en la señal de mando sea percibido como un flanco “Mostar un cero” consiste en poner a nivel bajo el biestable responsable de la detección del flanco en la señal de mando del componente SW Señales de disparo en temporizadores Señales de contaje en contadores Aplicación para temporizadores (step 7) Operador FR (no aparece en KOP, solo en AWL) FR T1 (muestra el cero al temporizador, habilita la señal de disparo) FR Z1 (muestra el cero al contador; habilita las señales de suma y resta)

FIN