Arquitectura de programación Bloques

1 Arquitectura de programación BloquesPablo San Segundo C...
Author: Mario Sahagun
0 downloads 0 Views

1 Arquitectura de programación BloquesPablo San Segundo C-206

2 Bloques de programaciónBloques de organización OB Llamados por el sistema operativo: OB1, OB 80, OB100 etc. Funciones FC Bloques simples para encapsular código Bloques función FB Bloques complejos para encapsular código Permiten sintaxis más compleja (e.g. S7-GRAPH) Llevan asociados un bloque de datos Bloques de datos DB Memoria auxiliar: área de datos

3 Arquitectura de bloquesCALL CC UC CALL FCX DBX FBX Bloque de datos de instancia OB1: Ciclo principal DBX FBX Bloque de datos de instancia FCX Sistema Operativo A todos los bloques DBX Bloque de datos global OBX

4 BLOQUES DE ORGANIZACIÓN (OB)

5 Bloques OB: Arranque S5 95-URearme tras desconexión de la alimentación Arranque desde pestaña en carcasa o desde PC (e.g. bus MPI)

6 Bloques OB: Ciclo principal S5 95-UPrograma de usuario

7 Bloques OB: S7-300 y 400 OB1 Ciclo scan OB10-17 Alarmas horariasAlarmas de retardo (requieren SFC 32) OB30-38 Alarmas cíclicas OB40-47 Alarmas de proceso OB80-87 Otras Alarmas/Errores (watchdog, ejecución, bastidor, etc.) OB Arranque/Rearme (i.e. tras desconexión) OB121 Error de programación OB122 Error de acceso a la periferia

8 BLOQUES DE DATOS (DB)

9 .DBBloques de datos (DB) Offset empezando por el bit 0.0 DB X, B, W, D .DB EJEMPLOS DE USO L DB1.DBW0 //operando genérico T MW10 L ”temperatura”.horno //operando simbólico AUF DB1 //apertura de un bloque de datos global L DBW0 //se omite el identificador de bloque Acceso a bits U E 124.0 S DB1.DBX0.0

10 Bloques de datos (DB): entorno SIMATICDEFINICION (Edición de bloqueCTRL + 4) VISUALIZACIÓN DE VALORES (Edición de bloque CTRL + 5)

11 BLOQUES DE TIPO FUNCIÓN (FC y FB)

12 Esquema general de operadores

13 Operadores para bloquesSR Descripción Observaciones CALL [, ] /ER=0 LLamada incondicional a un bloque UC Llamada incondicional a un bloque No permite paso de parámetros ni llamadas a bloques FB CC RLO=1, /ER=0 Llamada a un bloque condicionada a RLO=1 BE Fin incondicional de bloque (autómata) BEA Fin incondicional de bloque (usuario) BEB Fin de bloque si RLO=1 Provocan primera consulta siempre (/ER=0)

14 Ejemplo: Macroetapa en grafcetBit de Trabajo BLOQUE INVOCANTE (OB1) FC1 FC1 A B U X3 U f S M1 R X3 U M1 SPBN _001 CALL FC1 U S1 U k S Etapa_sig R M1 R M100.0 _001: NOP 0 U M1 FP M100.0 S E1 R X10 R X11 R S1 U E1 U g S X10 R E1 //… SET FP M100.0 S E1 R X10 R X11 R S1 U E1 U g S X10 R E1 //… “caja” Obligatorio para que FC1 arranque el grafcet E1-S1 en la implementación FC1-B CUESTION Ventajas/Desventajas entre A y B

15 Ejemplo: señal periódica (examen)Implemente en una función FC1 una señal cuadrada de frecuencia 0,1 Hz usando como señal de mando un tren de pulsos regulares, cada uno en un intervalo de 5 segundos UN “SMANDO” L S5T#5s SE T1 U T1 = “SMANDO” BEB //fin de bloque UN “SPEDIDA” //cambio de estado = “SPEDIDA” Segmento 1 (FC1) Segmento 2 (FC1)

16 PASO DE PARÁMETROS

17 Nociones generales Los bloques AWL permiten la definición de un interfaz parametrizable que expresa el paso de información entre el bloque invocante y el invocado IN OUT FC1: “Matemática” A (A*B)/C RES B C

18 Tipos de parámetros Tipos de parámetros comunes a bloques FC y FBIN: Datos entrantes al bloque y de consumo interno IN-OUT: Datos entrantes al bloque, cambiados por el bloque y devueltos al bloque invocante OUT: Datos generados dentro del bloque y pasados al bloque invocante TEMP: Datos de consumo interno por el bloque. Equivale a una variable automática en C No aparecen en el interfaz de invocación Tipos de parámetros exclusivos de bloques FB STATIC: Datos de consumo interno dentro del bloque que persisten durante toda la ejecución del programa. Equivale a una variable estática en C Se almacenan en el bloque de datos de instancia asociado al FB Determinan el ESTADO del bloque FB

19 Programación en el entorno STEP 7 (1/3)Definición del interfaz Se usa # para indicar parámetro

20 Programación en el entorno STEP 7 (2/3)A+B FC1: “Suma” A B RES Llamada a FC desde bloque invocante MW10 A+B FC1: “Suma” MW12 MW14 variables reales pasadas Parámetros (IN, IN-OUT, OUT)

21 Programación en el entorno STEP 7 (3/3)Llamada a FB desde bloque invocante IN OUT FB1: “Motor” SE1 S5T#50s motor_ON T1 Bloque de datos de instancia ESTADO variables reales (a rellenar) Parámetros (IN, IN-OUT, OUT) IMPORTANTE: Los campos no rellenados en la llamada toman el valor por defecto definido en el bloque de datos asociado

22 Fuentes de texto portables (1/2)Salida= A+B FC1: “Suma” Sum1 Sum2 Salida FUNCTION "Suma" : VOID TITLE = VERSION : 0.1 VAR_INPUT Sum1 : WORD ; Sum2 : WORD ; END_VAR VAR_OUTPUT Salida : WORD ; BEGIN L #Sum1; L #Sum2; +I ; T #Salida; END_FUNCTION Incluiría el interfaz completo IN, IN-OUT, OUT, STATIC, TEMP

23 Fuentes de texto portables (2/2)COMPILAR FUENTES CTRL+B desde la ventana de edición de fuentes GENERAR FUENTES CTRL+T desde la ventana de edición del bloque

24 Aplicación: lectura de señales analógicasFC 105 VALOR de tipo REAL TARJETAS DE 16 BITS Resolución real: Limite práctico: MW50: [ , ] U E 100.0 SPBNB _001 CALL "SCALE" IN :=MW 50 HI_LIM := e+003 LO_LIM := e+000 BIPOLAR:=E100.1 RET_VAL:=MW10 OUT :=MD108 _001: U BIE = A OB1

25 Aplicación: salida de señales analógicasVALOR de tipo REAL FC 106 VALOR de tipo INT U E 100.0 SPBNB _001 CALL "UNSCALE" IN :=MD50 HI_LIM := e+002 LO_LIM := e+000 BIPOLAR:=E100.1 RET_VAL:=MW10 OUT :=MW108 _001: U BIE = A OB1

26 Ejercicio (I): Transducción de temperaturaImplemente un bloque función que trate una señal analógica de temperatura transducida 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 entre 25ºC y 40ºC y gestionar un bit de error por desbordamiento en la medida

27 EJEMPLOS INTRODUCCIÓN AL DISEÑO DE BLOQUES AWL

28 Ejemplo: semáforo (1/5) EJERCICIODiseñe una interfaz apropiada para la función Control AMBAR FB1

29 Interfaz FB1: “Control Ámbar” (2/5)FB1: “Control AMBAR” OUT tiempo k parpadeos del mismo tiempo a nivel alto y bajo Luz Ámbar temporizador EJERCICIO Implemente “Control AMBAR” en AWL k bit de fin contador CALL “contol AMBAR" , DB1 tiempo := tempor :=T1 nrep := contador :=Z1 bit_de_fin:=M1.7 actuador :=A124.0 Seg. Invocante (OB1) VAR_INPUT tiempo : S5TIME := S5T#2s //t. intermitencia tempor : TIMER ; nrep : INT := 3; //num. repeticiones contador : COUNTER END_VAR VAR_OUTPUT bit_de_fin : BOOL ; //final de intermitencia actuador : BOOL ; //actuador luz ámbar VAR_STATIC internal_signal : BOOL ; //generador luz ámbar bit_de_trabajo : BOOL ; command_signal : BOOL ; STATIC No aparecen en el interfaz de llamada

30 Solución semáforo (3/5): FB1 “control ámbar”VAR_INPUT tiempo : S5TIME := S5T#4s tempor : TIMER ; nrep : INT := 3; contador : COUNTER END_VAR VAR_OUTPUT bdf : BOOL ; actuador : BOOL ; VAR_STATIC int_sig : BOOL ; com_sig : BOOL ; bdt : BOOL ; Luz ámbar empieza a nivel ato SET FP #bit_trab S #int_sig R #com_sig R #bit_fin R #contador R #actuador UN #com_sig L #tiempo SE #tempor U #tempor = #com_sig UN #int_sig ZV #contador L #nrep L #contador == I S #bit_fin R #actuador R #bit_trab R #tempor FR #tempor Arranque Señal de mando Valor contador Evaluación Fin UN #int_sig = #actuador UN #com_sig BEB = #int_sig Valor actuador Cambia el estado de la luz con la señal de mando FB1: “control ambar”

31 Solución semáforo (4/5) Posible estructura de bloquesFC3 Posible estructura de bloques OB1: Programa principal OB100: Arranque FB1: Control luz ámbar DB1: Bloque de datos del control de la luz ámbar FC1: Config. temporizadores luces verde y roja FC2: Control luces verde y roja FC3: Grafcet Marcha-Paro FC2 FC1 FB1

32 Solución semáforo (5/5) Segmentos importantes de OB1

33 Ejemplo: motor escalera mecánica (I)Bloque FC sin parámetros FC1: “Motor” 1 2 MOTOR 1 SET FP M100.0 S X0 R X1 R X2 U X0 U SE1F S X1 R X0 U X1 U T1 UN SE1F S X2 U X2 L S5T#50s SE T1 U SE1F FR T1 U X1 = MOTOR_1 Bit de trabajo Prioridad No configurable NO se puede invocar una para cada motor, aún cuando no sea necesario controlar los motores simultáneamente

34 Ejemplo: motor escalera mecánica (II)Bloque FC parametrizado IN OUT FC1: “Motor” 1 2 MOTOR 1 Motor1 SE1 S5T#50s T1 Etapa0 Etapa1 Etapa2 CUESTIÓN ¿Tipo de parámetros? Bit de trabajo (arranque) Configurable en tiempo y evento de disparo Configurable en temporizador EJERCICIO Programación AWL CUESTIÓN ¿Se puede invocar varias veces, una por motor, aún cuando exista funcionamiento simultáneo de motores?

35 Solución parcial (II.1/II.2)MOTOR 1 FUNCTION “motor” VAR_INPUT sensor : BOOL ; tiempo : S5TIME ; tempor : TIMER ; END_VAR VAR_OUTPUT actuador : BOOL; VAR_IN_OUT X0 : BOOL ; X1 : BOOL X2 : BOOL ; bdt_trm : BOOL ; SET FP #bdt_trm S #X0 R #X1 R #X2 R #actuador U #X0 U #sensor S #X1 R #X0 U #X1 L #tiempo SE #tempor U #tempor UN #sensor S #X2 Seg 1 Seg 2 Seg 3 Seg 4 FR #tempor U #X2 = #actuador Seg 5 Seg 6 Seg 7 FC1

36 Solución parcial (II.2/II.2)EJERCICIO Segmentos de invocación de cada tramo de escalera 1 2 MOTOR 1 1 2 MOTOR 2

37 Ejemplo: motor escalera mecánica (III)Bloque FB parametrizado IN OUT FB1: “Motor” 1 2 MOTOR 1 SE1 Motor1 VAR_STATIC Etapa0 Etapa1 Etapa2 Bit de trabajo END_VAR S5T#50s T1 arranque IN-OUT Interfaz E/S mas ligero debido al uso de variables estáticas EJERCICIO Programación AWL

38 Solución parcial: Interfaz (III.1/III.2)INTERFAZ de FB1 VAR_INPUT se1 : BOOL ; tiempo : S5TIME ; temporizador : TIMER ; END_VAR VAR_OUTPUT motor_ON : BOOL ; VAR_IN_OUT arranque_0 : BOOL ; //bit de arranque (=0) VAR_STATIC x0 : BOOL ; //reposo x1 : BOOL ; //en marcha x2 : BOOL ; //parada tras marcha m_flanco : BOOL ; //memoria flanco se1 m_pulso : BOOL ; //pulso de se1 CUESTION ¿Podría ser m_flanco de tipo TEMP? ¿Y m_pulso?

39 Solución parcial (III.2/III.2)1 2 MOTOR 1 U #se1 FP #m_flanco = #m_pulso Flanco sensor (FB1) CALL “motor”, DB1 se1:= E 124.0 tiempo:= tempor:= T1 motor_ON:= A 124.0 arranque_0:= M 2.0 Seg. Invocante (OB1) SET FP #arranque_0 S #X0 R #X1 R #X2 R #motor_ON Arranque (FB1) EJERCICIO: complete la prog. de FB1 CUESTION ¿Cómo se podría implementar el control del segundo motor?

40 Ejemplo: escalera mecánica con dos tramos (I)EJERCICIO Implemente el control de la figura a partir de la función FB1 autocontenida del apartado anterior y de los segmentos de invocación desde OB1 de dicha función que aparecen a la izquierda Nota: Utilice una etapa con semántica “control de motores activado” CALL “motor”, DB1 se1:= E 124.0 tiempo:= tempor:= T1 motor_ON:= A 124.0 arranque_0:= M 2.0 CALL “motor”, DB2 se1:= E 124.1 tempor:= T2 motor_ON:= A 124.1 arranque_0:= M 2.1 Seg. 1 (OB1) Seg. 2 (OB1)

41 Solución parcial U “X0” U “PON” UN “SE1” UN “SE2” R M2.0 //arr-m1S “X_marcha” R “X0” U “X_marcha” U “POFF” UN A //motor1 parado UN A //motor2 parado S “X0” R “X_marcha” X0X1, X2(OB1) Seg. Parada(OB1) CALL “motor”, DB1 se1:= E 124.0 tiempo:= tempor:= T1 motor_ON:= A 124.0 arranque_0:= M 2.0 CALL “motor”, DB2 se1:= E 124.1 tempor:= T2 motor_ON:= A 124.1 arranque_0:= M 2.1 Seg. 1 (OB1) Seg. 2 (OB1)

42 Ejemplo: escalera mecánica con dos tramos (II)U X1 SPBN _001: CALL “motor”, DB1 se1:= E 124.0 tiempo:= tempor:= T1 motor_ON:= A 124.0 arranque_0:= M 2.0 //… _001: NOP 0 U X2 SPBN _002: CALL “motor”, DB2 se1:= E 124.1 tempor:= T2 motor_ON:= A 124.1 arranque_0:= M 2.1 _002: NOP 0 Llamada Mot.1 (OB1) Llamada Mot.2 (OB1) EJERCICIO Modifique la implementación del ejercicio anterior considerando la invocación por cajas que aparece a la izquierda

43 Solución parcial CUESTIÓNU “X0” U “PON” UN “SE1” UN “SE2” S “X1 S “X2” R M //arr-m1 R M //arr-m2 R “X0” U X1 SPBN _001: CALL “motor”, DB1 se1:= E 124.0 tiempo:= tempor:= T1 motor_ON:= A 124.0 arranque_0:= M 2.0 //salida U “POFF” UN “A 124.0” UN “A 124.1” S “X0” R “X1” _001: NOP 0 X0X1, X2(OB1) Llamada Mot.1 (OB1) U X1 SPBN _001: CALL “motor”, DB1 se1:= E 124.0 tiempo:= tempor:= T1 motor_ON:= A 124.0 arranque_0:= M 2.0 //… _001: NOP 0 U X2 SPBN _002: CALL “motor”, DB2 se1:= E 124.1 tempor:= T2 motor_ON:= A 124.1 arranque_0:= M 2.1 _002: NOP 0 Llamada Mot.1 (OB1) Llamada Mot.2 (OB1) CUESTIÓN ¿Cómo se podría mejorar el diseño del interfaz de FB1 (control de motores) para que no se tenga que emplear los actuadores A y A para razonar en la ecuación de paso al reposo?

44 FIN