6.Arquitectura de Bloques

44
Arquitectura de programación Bloques Pablo San Segundo C-206 [email protected]

description

arquitectura de bloques

Transcript of 6.Arquitectura de Bloques

Page 1: 6.Arquitectura de Bloques

Arquitectura de programaciónBloques

Pablo San Segundo C-206

[email protected]

Page 2: 6.Arquitectura de Bloques

Bloques de programación Bloques de organización OB<ID>

Llamados por el sistema operativo: OB1, OB 80, OB100 etc.

Funciones FC<ID> Bloques simples para encapsular código

Bloques función FB<ID> 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<ID> Memoria auxiliar: área de datos

Page 3: 6.Arquitectura de Bloques

Arquitectura de bloques

Sis

tem

a O

pera

tivo

OB

1: C

iclo

prin

cipa

l

OBX

FCX

CALL<FCX>

CC

UC CALL<FBX, DBX>

FCX

DBX

FBX

Bloque de datos de instancia

A todos los bloques

DBX

Bloque de datos global

DBX

FBX

Bloque de datos de instancia

Page 4: 6.Arquitectura de Bloques

BLOQUES DE ORGANIZACIÓN

(OB)

Page 5: 6.Arquitectura de Bloques

Bloques OB: Arranque S5 95-U

Arranque desde

pestaña en carcasa o desde PC (e.g. bus

MPI)

Rearme tras desconexión de la

alimentación

Page 6: 6.Arquitectura de Bloques

Bloques OB: Ciclo principal S5 95-UOB13

Programa de usuario

Page 7: 6.Arquitectura de Bloques

Bloques OB: S7-300 y 400

OB1 Ciclo scanOB10-17 Alarmas horariasOB20-23 Alarmas de retardo (requieren SFC 32)OB30-38 Alarmas cíclicasOB40-47 Alarmas de procesoOB80-87 Otras Alarmas/Errores

(watchdog, ejecución, bastidor, etc.)OB100-102 Arranque/Rearme (i.e. tras desconexión)OB121 Error de programaciónOB122 Error de acceso a la periferia

Page 8: 6.Arquitectura de Bloques

BLOQUES DE

DATOS (DB)

Page 9: 6.Arquitectura de Bloques

Bloques de datos (DB)

<IDENTIFICADOR_DE_BLOQUE>.DB<TAMAÑO><DIRECCION>

DB<N> X, B, W, DOffset empezando por el bit 0.0

L DB1.DBW0 //operando genéricoT MW10

L ”temperatura”.horno //operando simbólicoT MW10

AUF DB1 //apertura de un bloque de datos globalL DBW0 //se omite el identificador de bloque T MW10

EJEMPLOS DE USO

Acceso a bits

U E 124.0S DB1.DBX0.0

Page 10: 6.Arquitectura de Bloques

Bloques de datos (DB): entorno SIMATIC

DEFINICION (Edición de bloqueCTRL + 4)

VISUALIZACIÓN DE VALORES (Edición de bloque CTRL + 5)

Page 11: 6.Arquitectura de Bloques

BLOQUES DE TIPO FUNCIÓN

(FC y FB)

Page 12: 6.Arquitectura de Bloques

Esquema general de operadores

Instrucciones de Controldel programa de usuario

Control dentro de un mismo bloque

Control interbloque

Control de ejecución de un grupo de instrucciones (Master Control Relay)

Saltos independientes de biestables de la palabra de estado

Saltos condicionados por biestables de la palabra de estado

Incondicional (SPA)

Incondicional Múltiple (SPL)

Bucle iterativo (LOOP)

Valor lógico (RLO)

Comparación (A1, A0)

Desbordamiento (OS, OV)

RB

Llamada a bloque(FC, FB)

Fin de bloque

Incondicional (CALL, UC)

Condicionada (CC)

Incondicional (BEA)

Condicionada (BEB)

Page 13: 6.Arquitectura de Bloques

Operadores para bloques

Operador SR Descripción Observaciones

CALL<ID_BLOQUE>[, <ID_BLOQUE_DATOS>]

/ER=0LLamada incondicional a un bloque

UC <ID_FUNCION> /ER=0Llamada incondicional a un bloque

No permite paso de parámetros ni llamadas a bloques FB

CC <ID_FUNCION> RLO=1, /ER=0

Llamada a un bloque condicionada a RLO=1

No permite paso de parámetros ni llamadas a bloques FB

BEFin incondicional de bloque (autómata)

BEA /ER=0Fin incondicional de bloque (usuario)

BEBRLO=1, /ER=0

Fin de bloque si RLO=1

Provocan primera consulta siempre (/ER=0)

Page 14: 6.Arquitectura de Bloques

U X3U fS M1R X3

U M1SPBN _001

CALL FC1

U S1 U k S Etapa_sig R M1 R M100.0

_001: NOP 0Obligatorio para que FC1

arranque el grafcet E1-S1 en la implementación FC1-B

M1

f

k

E1

10

11

S1

g

h

i

j

(5)

(6)

3

4

Ejemplo: Macroetapa en grafcet

BLOQUE INVOCANTE (OB1)

FC1

FC1

SETFP M100.0S E1R X10R X11R S1

U E1U gS X10R E1

//…

U M1FP M100.0S E1R X10R X11R S1

U E1U gS X10R E1

//…

A B

Bit de Trabajo

“caja”

CUESTIONVentajas/Desventajas entre A y B

Page 15: 6.Arquitectura de Bloques

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#5sSE T1U T1= “SMANDO”

UN “SMANDO”BEB //fin de bloque

UN “SPEDIDA” //cambio de estado= “SPEDIDA”

Segmento 1 (FC1) Segmento 2 (FC1)

Page 16: 6.Arquitectura de Bloques

PASO DE PARÁMETROS

Page 17: 6.Arquitectura de Bloques

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

(A*B)/C

FC1: “Matemática”

A

B

C

RES

IN OUT

Page 18: 6.Arquitectura de Bloques

Tipos de parámetros Tipos de parámetros comunes a bloques FC y FB

IN: 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 No aparecen en el interfaz de invocación Se almacenan en el bloque de datos de instancia asociado al

FB Determinan el ESTADO del bloque FB

Page 19: 6.Arquitectura de Bloques

Programación en el entorno STEP 7 (1/3)

Definición del interfaz

Se usa # para indicar parámetro

Page 20: 6.Arquitectura de Bloques

Programación en el entorno STEP 7 (2/3)

Llamada a FC desde bloque invocante

Parámetros (IN, IN-OUT, OUT) variables reales pasadas

A+B

FC1: “Suma”

A

B

RES

MW10

A+B

FC1: “Suma”

MW12MW14

Page 21: 6.Arquitectura de Bloques

Programación en el entorno STEP 7 (3/3)

Llamada a FB desde bloque invocante

Parámetros (IN, IN-OUT, OUT)

variables reales (a rellenar)

Bloque de datos de instancia ESTADO

FB1: “Motor”

T1

IN

SE1

S5T#50s motor_ON

OUT

IMPORTANTE: Los campos no rellenados en la llamada toman el valor por defecto definido en el bloque de datos asociado

Page 22: 6.Arquitectura de Bloques

Fuentes de texto portables (1/2)

Salida= A+B

FC1: “Suma”

Sum1

Sum2Salida

FUNCTION "Suma" : VOIDTITLE =VERSION : 0.1

VAR_INPUT Sum1 : WORD ; Sum2 : WORD ; END_VARVAR_OUTPUT Salida : WORD ; END_VAR

BEGIN L #Sum1; L #Sum2; +I ; T #Salida; END_FUNCTION

Incluiría el interfaz completo IN, IN-OUT, OUT, STATIC, TEMP

Page 23: 6.Arquitectura de Bloques

Fuentes de texto portables (2/2)

GENERAR FUENTESCTRL+T desde la ventana de edición del bloque

COMPILAR FUENTESCTRL+B desde la ventana de edición de fuentes

Page 24: 6.Arquitectura de Bloques

Aplicación: lectura de señales analógicas

U E 100.0SPBNB _001CALL "SCALE"

IN :=MW 50 HI_LIM :=1.000000e+003 LO_LIM :=0.000000e+000 BIPOLAR:=E100.1

RET_VAL:=MW10 OUT :=MD108

_001: U BIE = A 1.0

OB1

VALOR de tipo REALFC 105

TARJETAS DE 16 BITSResolución real: 0-32768Limite práctico: 0-27648

MW50: [-27.648, +27.648]

Page 25: 6.Arquitectura de Bloques

Aplicación: salida de señales analógicas

U E 100.0SPBNB _001CALL "UNSCALE"

IN :=MD50 HI_LIM :=1.000000e+002 LO_LIM :=0.000000e+000 BIPOLAR:=E100.1

RET_VAL:=MW10 OUT :=MW108

_001: U BIE = A 1.0

OB1

VALOR de tipo INT

FC 106VALOR de tipo REAL

Page 26: 6.Arquitectura de Bloques

Ejercicio (I): Transducción de temperatura

Implemente 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

Page 27: 6.Arquitectura de Bloques

EJEMPLOS

INTRODUCCIÓN AL DISEÑO DE BLOQUES AWL

Page 28: 6.Arquitectura de Bloques

Ejemplo: semáforo (1/5)

0

VERDE1

Control AMBAR2

ROJO3

4 / 1s X

5 / 3s X

1

C:=0

4

0

11X

10X11X

Fin de secuencia ámbar

“secuencia ámbar: tres parpadeos empezando a nivel alto”

EJERCICIODiseñe una interfaz apropiada para la función Control AMBAR

FB1

0

VERDE1

AMBAR2

3

ROJO4

C:=C+1

4 / 1s X

3 / 2s X

( 3)C

(2 / 3) ( 3)s X C

5 / 4s X

1

C:=0

5

0

11X

10X11X

10

11

Pon

“parada”

“marcha”

Poff

Page 29: 6.Arquitectura de Bloques

Interfaz FB1: “Control Ámbar” (2/5)

k parpadeos del mismo

tiempo a nivel alto y bajo

FB1: “Control AMBAR”

tiempo

temporizador

Luz Ámbar

k

contador

bit de fin

IN OUT

VAR_INPUT tiempo : S5TIME := S5T#2s //t. intermitencia tempor : TIMER ; nrep : INT := 3; //num. repeticiones contador : COUNTEREND_VARVAR_OUTPUT bit_de_fin : BOOL ; //final de intermitencia actuador : BOOL ; //actuador luz ámbarEND_VARVAR_STATIC internal_signal : BOOL ; //generador luz ámbar bit_de_trabajo : BOOL ; command_signal : BOOL ; END_VAR

STATICNo aparecen en el interfaz de llamada

CALL “contol AMBAR" , DB1 tiempo := tempor :=T1 nrep := contador :=Z1 bit_de_fin:=M1.7 actuador :=A124.0

Seg. Invocante (OB1)

EJERCICIOImplemente “Control AMBAR” en AWL

Page 30: 6.Arquitectura de Bloques

VAR_INPUT tiempo : S5TIME := S5T#4s tempor : TIMER ; nrep : INT := 3; contador : COUNTEREND_VARVAR_OUTPUT bdf : BOOL ; actuador : BOOL ;END_VARVAR_STATIC int_sig : BOOL ; com_sig : BOOL ; bdt : BOOL ; END_VAR

SETFP #bit_trabS #int_sig R #com_sig R #bit_finR #contador R #actuador

UN #com_sig L #tiempo SE #tempor U #tempor = #com_sig

UN #int_sigZV #contador

L #nrep L #contador== I S #bit_finR #actuadorR #bit_trabR #temporFR #tempor

Arranque Señal de mando Valor contador Evaluación Fin

UN #int_sig = #actuador

UN #com_sig BEB

UN #int_sig = #int_sig

Valor actuador Cambia el estado de la luz con la señal de mando

FB1: “control ambar”

Solución semáforo (3/5): FB1 “control ámbar”

4

output signal

tiempo (s)8 12 16 200

command signal

1

1

Luz ámbar empieza a nivel ato

Page 31: 6.Arquitectura de Bloques

Solución semáforo (4/5) 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

10

11

Pon

“parada”

“marcha”

Poff0

VERDE1

Control AMBAR2

ROJO3

4 / 1s X

5 / 4s X

1

4

0

11X

10X11X

Fin de secuencia ámbar

“secuencia ámbar: tres parpadeos empezando a nivel alto y terminando a nivel alto”

FB1

FC3

FC1FC2

FC2

Page 32: 6.Arquitectura de Bloques

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

Page 33: 6.Arquitectura de Bloques

Ejemplo: motor escalera mecánica (I)

Bloque FC sin parámetros

1SE 1

2

1

MOTOR 1

1SE

1SE

0

1(50 / ) 1s X SE

SET FP M100.0S X0R X1R X2

U X0U SE1FS X1R X0

U X1U T1UN SE1FS X2R X1

U X2U SE1FS X1 R X2

U X1L S5T#50sSE T1

U SE1FFR T1

U X1= MOTOR_1

FC1: “Motor”

No configurable

NO se puede invocar una para cada motor, aún cuando no sea necesario controlar los motores simultáneamente

Bit de trabajo

Prioridad

Page 34: 6.Arquitectura de Bloques

Ejemplo: motor escalera mecánica (II)

Bloque FC parametrizado

1SE 1

2

1

MOTOR 1

1SE

1SE

0

1(50 / ) 1s X SE

FC1: “Motor”

Configurable en tiempo y evento de disparo

CUESTIÓN¿Se puede invocar varias veces, una por motor, aún cuando exista funcionamiento simultáneo de motores?

S5T#50s

Etapa0

Etapa1

Etapa2

Motor1

T1

IN OUT

SE1

EJERCICIOProgramación AWL

Configurable en temporizador

CUESTIÓN¿Tipo de parámetros?

Bit de trabajo (arranque)

Page 35: 6.Arquitectura de Bloques

Solución parcial (II.1/II.2)

1SE 1

2

1

MOTOR 1

1SE

1SE

0

1(50 / ) 1s X SE

FUNCTION “motor”VAR_INPUT sensor : BOOL ; tiempo : S5TIME ; tempor : TIMER ; END_VARVAR_OUTPUT actuador : BOOL;END_VARVAR_IN_OUT X0 : BOOL ; X1 : BOOL X2 : BOOL ; bdt_trm : BOOL ; END_VAR

SETFP #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 #X1 U #tempor UN #sensor S #X2 R #X1

Seg 1 Seg 2 Seg 3 Seg 4

U #sensor FR #tempor

U #X2 U #sensor S #X1 R #X2

U #X1 = #actuador

Seg 5 Seg 6 Seg 7

FC1

Page 36: 6.Arquitectura de Bloques

Solución parcial (II.2/II.2)

1SE 1

2

1

MOTOR 1

1SE

1SE

0

1(50 / ) 1s X SE

2SE 1

2

1

MOTOR 2

2SE

2SE

0

1(50 / ) 2s X SE

EJERCICIOSegmentos de invocación de cada tramo de escalera

Page 37: 6.Arquitectura de Bloques

Ejemplo: motor escalera mecánica (III)

Bloque FB parametrizado

1SE 1

2

1

MOTOR 1

1SE

1SE

0

1(50 / ) 1s X SE

FB1: “Motor”

Interfaz E/S mas ligero debido al uso de variables estáticas

S5T#50s

Motor1

T1

IN OUT

SE1

VAR_STATIC

Etapa0

Etapa1

Etapa2

Bit de trabajo

END_VAR

EJERCICIOProgramación AWL

arranque

IN-OUT

Page 38: 6.Arquitectura de Bloques

Solución parcial: Interfaz (III.1/III.2)

INTERFAZ de FB1VAR_INPUT se1 : BOOL ; tiempo : S5TIME ; temporizador : TIMER ; END_VAR

VAR_OUTPUT motor_ON : BOOL ; END_VAR

VAR_IN_OUT arranque_0 : BOOL ; //bit de arranque (=0)END_VAR

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 se1END_VAR

CUESTION¿Podría ser m_flanco de tipo TEMP?¿Y m_pulso?

Page 39: 6.Arquitectura de Bloques

Solución parcial (III.2/III.2)

CUESTION¿Cómo se podría implementar el control del segundo motor?

1SE 1

2

1

MOTOR 1

1SE

1SE

0

1(50 / ) 1s X SE

SETFP #arranque_0 S #X0 R #X1 R #X2 R #motor_ON

Arranque (FB1)

U #se1FP #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)

EJERCICIO: complete la prog. de FB1

Page 40: 6.Arquitectura de Bloques

Ejemplo: escalera mecánica con dos tramos (I)

0

1 control motor 1 2 control motor 2

POFF y ambos motores parados

PON y no se detectan personas

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 tiempo:= tempor:= T2 motor_ON:= A 124.1 arranque_0:= M 2.1

Seg. 1 (OB1) Seg. 2 (OB1)

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”

Page 41: 6.Arquitectura de Bloques

Solución parcial

0

1 control motor 1 2 control motor 2

POFF y ambos motores parados

PON y no se detectan personas

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 tiempo:= tempor:= T2 motor_ON:= A 124.1 arranque_0:= M 2.1

Seg. 1 (OB1) Seg. 2 (OB1)

U “X0”U “PON”UN “SE1”UN “SE2”R M2.0 //arr-m1 R M2.1 //arr-m2 S “X_marcha”R “X0”

U “X_marcha”U “POFF”UN A 124.0 //motor1 paradoUN A 124.1 //motor2 paradoS “X0”R “X_marcha”

X0X1, X2(OB1) Seg. Parada(OB1)

Page 42: 6.Arquitectura de Bloques

Ejemplo: escalera mecánica con dos tramos (II)

0

1 control motor 1 2 control motor 2

POFF y ambos motores parados

PON y no se detectan personas

U X1SPBN _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 X2SPBN _002: CALL “motor”, DB2 se1:= E 124.1 tiempo:= 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

Page 43: 6.Arquitectura de Bloques

Solución parcial

0

1 control motor 1 2 control motor 2

POFF y ambos motores parados

PON y no se detectan personas

U X1SPBN _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 X2SPBN _002: CALL “motor”, DB2 se1:= E 124.1 tiempo:= tempor:= T2 motor_ON:= A 124.1 arranque_0:= M 2.1 //…

_002: NOP 0

Llamada Mot.1 (OB1) Llamada Mot.2 (OB1)

U “X0”U “PON”UN “SE1”UN “SE2”S “X1S “X2”R M2.0 //arr-m1 R M2.1 //arr-m2 R “X0”

U X1SPBN _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

X0X1, X2(OB1) Llamada Mot.1 (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 124.0 y A 124.1 para razonar en la ecuación de paso al reposo?

Page 44: 6.Arquitectura de Bloques

FIN