guion exposicion proyecto - opencourseware de la...

25
1 PRESENTACION BREVE DEL PROYECTO Esquema grafico del sistema. Especificaciones del funcionamiento. Requerimientos. DISEÑO HRT-HODD Explicación de los objetos del diseño. CODIFICACION Como se ha implementado el código en ADA Explicación de alguna tarea concreta PRUEBAS Trazas( comentar como se activan distintas tareas y objetos protegidos) ANALISIS DE PLANIFICABILIDAD Distintas situaciones para lograr que sea PLANIFICABLE: Tabla Report iRat( informe y graficas cpu…) FIABILIDAD Y TOLERANCIA ESPECIFICACION Y ANALISIS DE RIESGOS Arbol de defectos GUION EXPOSICION PROYECTO Jose A. Reviejo Cuevas Eva M. Merino Alonso SISTEMAS DE TIEMPO REAL 2006/2007 2 SISTEMAS DE TIEMPO REAL 2006/2007

Upload: truongphuc

Post on 04-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

1

PRESENTACION BREVE DEL PROYECTO

Esquema grafico del sistema.

Especificaciones del funcionamiento. Requerimientos.

DISEÑO HRT-HODD

Explicación de los objetos del diseño.

CODIFICACION

Como se ha implementado el código en ADA

Explicación de alguna tarea concreta

PRUEBAS

Trazas( comentar como se activan distintas tareas y objetos protegidos)

ANALISIS DE PLANIFICABILIDAD

Distintas situaciones para lograr que sea PLANIFICABLE:

Tabla

Report iRat( informe y graficas cpu…)

FIABILIDAD Y TOLERANCIA

ESPECIFICACION Y ANALISIS DE RIESGOS

Arbol de defectos

GUION EXPOSICION PROYECTO

Jose A. Reviejo Cuevas Eva M. Merino AlonsoSISTEMAS DE TIEMPO REAL

2006/2007

2

SISTEMAS DE TIEMPO REAL2006/2007

Page 2: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

3

SISTEMA DE CONTROL DE CALDERA DE GASCALDERA

CONSOLA OPERADOR

MONITOR ENTORNO

4

EL SISTEMA DE CONSTAR DE:

•CALDERA

•TANQUE DE COMBUSTIBLE

•SENSORES DE NIVELES

•TANQUE DE AGUA

•CONSOLA DE OPERDOR

Page 3: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

5

• La caldera tiene un botón de encendido.• Configuración de temperatura media que debe mantenerse

quemando combustible.• El operador puede modificar manualmente la temperatura. • Detección de anomalías BLOQUEO

– - Suministro de gas y/o agua incorrecto.– - Presión de aire incorrecto.– - Variaciones bruscas de temperatura

• Estados caldera:– - Activa– -Pasiva– -Bloqueada

6

1. DISEÑO DE PRIMER NIVEL: SISTEMA CONTROL CALDERA.

Page 4: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

7

2. DISEÑO DE SEGUNDO NIVEL: CONTROL CALDERA

8

Page 5: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

9

3. DISEÑO DE SEGUNDO NIVEL: MONITOR ENTORNO

10

Page 6: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

11

4. DISEÑO DE SEGUNDO NIVEL CONSOLA OPERADOR

12

Page 7: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

13

Cada objeto del diseño HRT-HOOD se implementa por un paquete en ADA(.ads y .adb)

MONITOR_ENTORNO.ADS.

MONITOR_ENTORNO.ADB.

CONSOLA_OPERADOR.ADS.CONSOLA_OPERADOR.ADB.

CONTROL_CALDERA.ADSCONTROL_CALDERA.ADB

PARAMETROS_PLANIFICACION.ADSDISPOSITIVOS.ADS

14

-- with Ada.Real_Time; use Ada.Real_Time;with parametros_planificacion; use parametros_planificacion;with Utiles; use Utiles;with dispositivos; use dispositivos;Package monitor_entorno is

task Sensor_Aire is -- TAREA CICLICApragma priority (Prioridad_H);

end Sensor_Aire;

task Sensor_Temp is -- TAREA CICLICApragma priority (Prioridad_G);

end Sensor_Temp;

Protected ObjAire is -- OBJETO PROTEGIDO NIVEL AIREpragma priority (Prioridad_C);Procedure Escribir_Aire(X:integer);Function Leer_Aire return integer;private

Almacen_Aire: integer;

end ObjAire;

Protected ObjTemp is -- OBJETO PROTEGIDO TEMP ACTUALpragma priority (Prioridad_B);Procedure Escribir_Temp(X:integer);Function Leer_Temp return integer;private

Almacen_Temp: integer;end ObjTemp;

end monitor_entorno;

MONITOR_ENTORNO.ADS

Page 8: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

15

with Ada.Real_Time; use Ada.Real_Time;with parametros_planificacion; use parametros_planificacion;with Utiles; use Utiles;with dispositivos; use dispositivos;

Package body monitor_entorno is

task body Sensor_Aire is -- DETECTA EL NIVEL DE AIRE

Instante: Time;Lectura_A:integer;

beginInstante:= Big_Bang;loop

Traza_Inicio_Tarea("Inicio Sensor_Aire");Execution_Time(Calculos_Aire);Lectura_A:= Sensor_A;Traza_Fin_Tarea("Fin Deteccion Aire");ObjAire.Escribir_Aire(Lectura_A);Traza_Fin_Tarea("Fin Sensor_Aire");Instante:= Instante + PlazoSensor_Aire;

delay until Instante;end loop;

end;

MONITOR_ENTORNO.ADB

16

task body Sensor_Temp is -- DETECTA A TEMP ACTUAL

Instante: Time;Lectura_T:integer;

beginInstante:= Big_Bang;loop

Traza_Inicio_Tarea("Inicio Sensor_Temp");Execution_Time(Calculos_Temp);Lectura_T:=Sensor_T;Traza_Fin_Tarea("Fin Temperatura Actual");ObjTemp.Escribir_Temp(Lectura_T);Traza_Fin_Tarea("Fin Sensor_Temp");Instante:= Instante + PlazoSensor_Temp;

delay until Instante;end loop;

end;

Page 9: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

17

Protected body ObjAire is -- OBJ. PROTEGIDO AIRE

Procedure Escribir_Aire(X:integer) isbegin

Traza_Inicio_Tarea("Inicio Escribir_Aire");Execution_Time(CalculosPr_Escritura);Almacen_Aire:= X;Traza_Fin_Tarea("Fin Escribir_Aire");

end Escribir_Aire;

Function Leer_Aire return integer isbegin

Traza_Inicio_Tarea("Inicio Leer_Aire");Execution_Time(CalculosPr_Lectura);return Almacen_Aire;

end Leer_Aire;

end ObjAire;

18

Protected body ObjTemp is -- OBJ. PROTEGIDO TEMP

Procedure Escribir_Temp(X:integer) isbegin

Traza_Inicio_Tarea("Inicio Escribir_Temp");Execution_Time(CalculosPr_Escritura);Almacen_Temp:= X;Traza_Fin_Tarea("Fin Escribir_Temp");

end Escribir_Temp;

Function Leer_Temp return integer isbegin

Traza_Inicio_Tarea("Inicio Leer_Temp");Execution_Time(CalculosPr_Lectura);return Almacen_Temp;

end Leer_Temp;

end ObjTemp;

beginnull;

end monitor_entorno;

Page 10: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

19

with Ada.Real_Time; use Ada.Real_Time;with Ada.Interrupts; use Ada.Interrupts;with Ada.Interrupts.Names; use Ada.Interrupts.Names;with parametros_planificacion; use parametros_planificacion;with dispositivos; use dispositivos;with Utiles; use Utiles;with Provoca_Interrupcion; use Provoca_Interrupcion;Package consola_operador is

Protected ObjTempFijada is -- ALMACENA LA TEMP. FIJADApragma priority (Prioridad_D); -- TECHO DE PRIORIDADProcedure Escribir_TempFijada(X:integer);Function Leer_TempFijada return integer;private

Fijada_T:integer;

end ObjTempFijada;

Protected Obj_RTI ispragma priority (Prioridad_RTI);Procedure Interrupcion;

pragma Attach_Handler (Interrupcion, Ada.Interrupts.Names.External_Interrupt_2);

Entry Esperar_Interrupcion;private

Semaforo:boolean:=False;

end Obj_RTI;

task Teclado is

pragma priority (Prioridad_I);end Teclado;

end consola_operador;

CONSOLA_OPERADOR.ADS

20

with Ada.Real_Time; use Ada.Real_Time;with Ada.Interrupts; use Ada.Interrupts;with Ada.Interrupts.Names; use Ada.Interrupts.Names;with parametros_planificacion; use parametros_planificacion;with dispositivos; use dispositivos;with Utiles; use Utiles;with Provoca_Interrupcion; use Provoca_Interrupcion;

Package body consola_operador isProtected body ObjTempFijada is

-- GUARDAMOS LA TEMPERATURA FIJADA POR EL USUARIOProcedure Escribir_TempFijada(X:integer) isbegin

Traza_Inicio_Tarea("Inicio Escribir_TempFijada");Execution_Time(CalculosPr_Escritura);Fijada_T:=X;Traza_Fin_Tarea("Fin Ecribir_TempFijada");

end Escribir_TempFijada;

-- LEEMOS LA TEMPERATURA FIJADAFunction Leer_TempFijada return integer isbegin

Traza_Inicio_Tarea("Inicio Leer_TempFijada");Execution_Time(CalculosPr_Lectura);return Fijada_T;Traza_Fin_Tarea("Fin Leer_TempFijada");

end;

end ObjTempFijada;

CONSOLA_OPERADOR.ADB

Page 11: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

21

-- OBJETO PARA EL TRATAMIENTO DE LA INTERRUPCIONProtected body Obj_RTI is

Procedure Interrupcion isbegin

Traza_Inicio_Tarea("---->RTI");Semaforo:=True;

end Interrupcion;

Entry Esperar_Interrupcion when Semaforo isbegin

Semaforo:=False;end Esperar_Interrupcion;

end Obj_RTI;-- RECOGEMOS EL DATO A TRAVES DE LA ENTRADA DE TECLADO

task body Teclado isInstante:Time:=Big_Bang;Buffer_Teclado:integer;begin

loopTraza_Inicio_Tarea("Inicio Temperatura Teclado");Obj_RTI.Esperar_Interrupcion;

Instante:=Clock;Buffer_Teclado:=Leer_Teclado;Traza_Fin_Tarea("Fin Recogida de Teclado");

ObjTempFijada.Escribir_TempFijada(Buffer_Teclado);Execution_Time(CalculosPr_Lectura);Traza_Fin_Tarea("Fin Teclado");delay until Instante;

end loop;end;

beginnull;

end consola_operador;

22

with Ada.Real_Time; use Ada.Real_Time;with monitor_entorno; use monitor_entorno;with consola_operador; use consola_operador;with parametros_planificacion; use parametros_planificacion;with dispositivos; use dispositivos;with Utiles; use Utiles;

Package control_caldera isProcedure Background;Protected ObjCaldera is

pragma priority (Prioridad_A); Procedure Escribir_Gas(X:integer);Procedure Escribir_Agua(X:integer);Procedure Establecer_Estado(X, Y, Z:integer);private

Almacen_Gas:integer;Almacen_Agua:integer;Estado_Actual:Estado_Caldera;

end ObjCaldera;

task Sensor_Gas is -- TAREA CICLICApragma priority (Prioridad_E);

end Sensor_Gas;

task Sensor_Agua is -- TAREA CICLICApragma priority (Prioridad_F);

end Sensor_Agua;task Comprobaciones is -- TAREA CICLICA

pragma priority (Prioridad_J);end Comprobaciones;

end control_caldera;

CONTROL_CALDERA.ADS

Page 12: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

23

with Kernel.Serial_Output; use Kernel.Serial_Output;with Ada.Real_Time; use Ada.Real_Time;with monitor_entorno; use monitor_entorno;with consola_operador; use consola_operador;with parametros_planificacion; use parametros_planificacion;with dispositivos; use dispositivos;with Utiles; use Utiles;

Package body control_caldera isProcedure Background isbegin

loopnull;

end loop;

end Background;Protected body ObjCaldera is

-- PARA GUARDAR EL GAS LEIDOProcedure Escribir_Gas(X:integer) isbegin

Traza_Inicio_Tarea("Inicio Escribir_Gas");Execution_Time(CalculosPr_Escritura);Almacen_Gas:= X;Traza_Fin_Tarea("Fin Escribir_Gas");

end Escribir_Gas;-- PARA GUARDAR EL AGUA LEIDOProcedure Escribir_Agua(X:integer) isbegin

Traza_Inicio_Tarea("Inicio Escribir_Agua");Execution_Time(CalculosPr_Escritura); Almacen_Agua:= X;Traza_Fin_Tarea("Fin Escribir_Agua");

end Escribir_Agua;

CONTROL_CALDERA.ADB

24

-- ESTABLECE EL ESTADO DE LA CALDERA DESPUES DE COMPROBACIONESProcedure Establecer_Estado(X, Y, Z:integer) is

Estado_Provisional:Estado_Caldera;Semaforo:boolean;Aire_2:integer;T_Fijada_2:integer;T_Actual_2:integer;

beginTraza_Inicio_Tarea("Inicio Establecer_Estado");Aire_2:=X;T_Fijada_2:=Y;T_Actual_2:=Z;Estado_Provisional:=Pasiva;Semaforo:=True;while Semaforo loop

if Almacen_Gas < Alarma_Gas thenEstado_Provisional:=Bloqueada;

elsif Almacen_Agua < Alarma_Agua thenEstado_Provisional:=Bloqueada;

elsif Aire_2 > Alarma_Aire thenEstado_Provisional:=Bloqueada;

elsif (T_Fijada_2 > T_Actual_2) andEstado_Provisional /= Bloqueada) thenEstado_Provisional:=Activa;

else Estado_Provisional:=Pasiva;end if;Semaforo:=False;Execution_Time(Calculos_Estado);Estado_Actual:=Estado_Provisional;Poner_Estado(Estado_Actual);Traza_Fin_Tarea("Fin Establecer_Estado");

end loop;end Establecer_Estado;

end ObjCaldera;

Page 13: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

25

task body Sensor_Gas is -- DETECTA EL NIVEL DE GASInstante: Time;Lectura_G:integer;

beginInstante:= Big_Bang;loop

Traza_Inicio_Tarea("Inicio Sensor_Gas");Execution_Time(Calculos_Gas);Lectura_G:=Sensor_G;Traza_Fin_Tarea("Fin Nivel de Gas");ObjCaldera.Escribir_Gas(Lectura_G);Traza_Fin_Tarea("Fin Sensor_Gas");Instante:= Instante + PlazoSensor_Gas;delay until Instante;

end loop;end;

task body Sensor_Agua is -- DETECTA EL NIVEL DE AGUA

Instante: Time;Lectura_Ag:integer;

beginInstante:= Big_Bang;loop

Traza_Inicio_Tarea("Inicio Sensor_Agua");Execution_Time(Calculos_Agua);Lectura_Ag:=Sensor_Ag;Traza_Fin_Tarea("Fin Nivel de Agua");ObjCaldera.Escribir_Agua(Lectura_Ag);Traza_Fin_Tarea("Fin Sensor_Agua");Instante:= Instante + PlazoSensor_Agua;delay until Instante;

end loop;end;

26

task body Comprobaciones is -- COMPROBAR TODOS LOS NIVELESInstante: Time;Aire:integer;T_Fijada:integer;T_Actual:integer;

beginInstante:= Big_Bang;loop

Traza_Inicio_Tarea("Inicio Comprobaciones Internas");Execution_Time(Calculos_Comp);Aire:=ObjAire.Leer_Aire;Traza_Fin_Tarea("Fin Leer_Aire");T_Fijada:=ObjTempFijada.Leer_TempFijada;Traza_Fin_Tarea("Fin Leer_TempFijada");T_Actual:=ObjTemp.Leer_Temp;Traza_Fin_Tarea("Fin Leer_Temp");ObjCaldera.Establecer_Estado(Aire, T_Fijada, T_Actual);Traza_Fin_Tarea("Fin Comprobaciones Internas");Instante:= Instante + PlazoComprobaciones;delay until Instante;

end loop;end;

beginnull;

end control_caldera;

Page 14: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

27

with Ada.Real_Time; use Ada.Real_Time;with System; use System;package Parametros_Planificacion is

--------------------------------------------------------------------------- Instante inicial del sistemaBig_Bang : constant Ada.Real_Time.Time := Clock;--------------------------------------------------------------------------- Espacios de tiempo entre llegadas de interupciones

Interr_1: constant Time_Span := To_Time_Span (2.0);Interr_2: constant Time_Span := To_Time_Span (5.0);Interr_3: constant Time_Span := To_Time_Span (10.0);Interr_4: constant Time_Span := To_Time_Span (15.0);Interr_5: constant Time_Span := To_Time_Span (20.0);

--------------------------------------------------------------------------- Otras declaraciones

type Estado_Caldera is (Bloqueada,Activa,Pasiva);

Alarma_Gas: constant integer := 10;Alarma_Agua: constant integer := 2;Alarma_Aire: constant integer := 10;TempEstablecida: constant integer := 24;Nivel_TempActual: constant integer := 21;Nivel_Aire: constant := 8; Nivel_Agua: constant := 4;Nivel_Gas: constant := 400;

-------------------------------------------------------------------------

PARAMETROS_DE_PLANIFICACION.ADS

28

-------------------------------------------------------------------------- Parámetros declarados

Calculos_Gas: constant Time_Span := Milliseconds (80);Calculos_Agua: constant Time_Span := Milliseconds (80);Calculos_Aire: constant Time_Span := Milliseconds (200);Calculos_Temp: constant Time_Span := Milliseconds (100);CalculosPr_Escritura: constant Time_Span := Milliseconds (50);CalculosPr_Lectura: constant Time_Span := Milliseconds (40);

Calculos_Estado: constant Time_Span := Milliseconds (250);Calculos_Comp: constant Time_Span := Milliseconds (350);

PlazoSensor_Temp: constant Time_Span := Milliseconds (2000);PlazoSensor_Aire: constant Time_Span := Milliseconds (1500);PlazoSensor_Agua: constant Time_Span := Milliseconds (1000);PlazoSensor_Gas: constant Time_Span := Milliseconds (500);

PlazoComprobaciones: constant Time_Span := Milliseconds (2500);

Prioridad_A: constant Priority := 18;Prioridad_B: constant Priority := 18; -- Prioridad de techoPrioridad_C: constant Priority := 18; -- Prioridad de techo

Prioridad_D: constant Priority := 18; -- Prioridad de techoPrioridad_E: constant Priority := 12;

Prioridad_F: constant Priority := 12;Prioridad_G: constant Priority := 15;

Prioridad_H: constant Priority := 12;Prioridad_I: constant Priority := 14;

Prioridad_J: constant Priority := 15;Prioridad_RTI: constant Interrupt_Priority := System.Interrupt_Priority'First + 9;

end Parametros_Planificacion;

Page 15: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

29

with Ada.Real_Time; use Ada.Real_Time;with Parametros_Planificacion; use Parametros_Planificacion;with Utiles; use Utiles;package dispositivos is

---------------------------------------------------------------- DECLARACION DE PROCESOS DE ACCESO A DISPOSITIVOS E/S------------------------------------------------------------------------------- MONITOR_ENTORNO ----------------------------

Function Sensor_A return integer;-- DETECTA EL NIVEL DE AIRE EN LOS CONDUCTOS

Function Sensor_T return integer;-- DETECTA LA TEMPERATURA ACTUAL DEL RECINTO

----------------- CONSOLA_OPERADOR ----------------------------

Function Leer_Teclado return integer;-- PROCEDIMIENTO PARA LEER LA ENTRADA DE TECLADO

----------------- CONTROL_CALDERA ----------------------------

Function Sensor_G return integer;-- DETECTA EL NIVEL DE GAS EN EL TANQUE DE COMBUSTIBLE

Function Sensor_Ag return integer;-- DETECTA EL NIVEL DE AGUA EN LA CALDERA

Procedure Poner_Estado (X:Estado_Caldera);-- MUESTRA EL ESTADO ACTUAL DE LA CALDERA

end dispositivos;

DISPOSITIVOS.ADS

30

with Ada.Real_Time; use Ada.Real_Time;with Kernel.Serial_Output; use Kernel.Serial_Output;with Workload;with parametros_planificacion; use parametros_planificacion;with Utiles; use Utiles;

Package body dispositivos is---------------------------------------------------------------- DECLARACION DE PROCESOS DE ACCESO A DISPOSITIVOS

E/S------------------------------------------------------------------------------- MONITOR_ENTORNO ----------------------------Function Sensor_A return integer isbegin

Traza_Inicio_Tarea("Inicio Deteccion de Aire");return Nivel_Aire;

end Sensor_A;-- DETECTA EL NIVEL DE AIRE EN LOS CONDUCTOS

Function Sensor_T return integer isbegin

Traza_Inicio_Tarea("Inicio Temperatura Actual");return Nivel_TempActual;

end Sensor_T;-- DETECTA LA TEMPERATURA ACTUAL DEL RECINTO

----------------- CONSOLA_OPERADOR ----------------------------Function Leer_Teclado return integer isbegin

Traza_Inicio_Tarea("Inicio Recogida de Teclado");return TempEstablecida;

end Leer_Teclado;-- PROCEDIMIENTO PARA LEER LA ENTRADA DE TECLADO

DISPOSITIVOS.ADB

Page 16: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

31

----------------- CONTROL_CALDERA ----------------------------

Function Sensor_G return integer isbegin

Traza_Inicio_Tarea("Inicio Nivel de Gas");return Nivel_Gas;

end Sensor_G;-- DETECTA EL NIVEL DE GAS EN EL TANQUE DE COMBUSTIBLE

Function Sensor_Ag return integer isbegin

Traza_Inicio_Tarea("Inicio Nivel de Agua");return Nivel_Agua;

end Sensor_Ag;-- DETECTA EL NIVEL DE AGUA EN LA CALDERA

Procedure Poner_Estado (X:Estado_Caldera) isbegin

Traza_Inicio_Tarea("Poner_Estado");Put (" Estado actual de la caldera: ");Put (Estado_Caldera'image(X));Traza_Fin_Tarea("Fin Poner_Estado");

end Poner_Estado;-- PONE EL ESTADO DE LA CALDERA

beginnull;

end dispositivos;

32

PRUEBA REALIZADA Nº 6

TSIM/ERC32 SPARC simulator, version 1.1.6 (evaluation version)Copyright (C) 2001, Gaisler Research - all rights reserved.

This software may only be used with a valid license.For latest updates, go to http://www.gaisler.com/Comments or bug-reports to [email protected]

serial port A on stdin/stdoutallocated 4096 K RAM memoryallocated 2048 K ROM memory

section: .text at 0x2000000, size 196720 bytessection: .data at 0x2030070, size 6260 bytes

tsim> resuming at 0x02000000[

Page 17: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

33

0.002591600] >>> Inicio Temperatura Teclado[ 0.026818900] >>> Inicio Sensor_Temp[ 0.192803100] >>> Inicio Temperatura Actual[ 0.215791900] === Fin Temperatura Actual[ 0.237301600] >>> Inicio Escribir_Temp[ 0.330334200] === Fin Escribir_Temp[ 0.349232300] === Fin Sensor_Temp[ 0.367153000] >>> Inicio Sensor_Aire[ 0.679802500] >>> Inicio Deteccion de Aire[ 0.702278600] === Fin Deteccion Aire[ 0.721740300] >>> Inicio Escribir_Aire[ 0.814772500] === Fin Escribir_Aire[ 0.833670600] === Fin Sensor_Aire[ 0.852757500] >>> Inicio Comprobaciones Internas[ 1.392344700] >>> Inicio Leer_Aire[ 1.468658800] === Fin Leer_Aire[ 1.485515200] >>> Inicio Leer_TempFijada[ 1.564950900] === Fin Leer_TempFijada[ 1.584878300] >>> Inicio Leer_Temp[ 1.661238200] === Fin Leer_Temp[ 1.678093500] >>> Inicio Establecer_Estado[ 2.000529200] >>> ---->RTI[ 2.081939100] >>> Poner_Estado Estado actual de la caldera: BLOQUEADA[ 2.118239900] === Fin Poner_Estado[ 2.136671300] === Fin Establecer_Estado[ 2.157663800] === Fin Comprobaciones Internas[ 2.181727900] >>> Inicio Sensor_Temp[ 2.347756500] >>> Inicio Temperatura Actual[ 2.370745400] === Fin Temperatura Actual[ 2.392254200] >>> Inicio Escribir_Temp[ 2.485286500] === Fin Escribir_Temp[ 2.504185300] === Fin Sensor_Temp[ 2.522104300] >>> Inicio Comprobaciones Internas[ 3.061675800] >>> Inicio Leer_Aire

34

[ 3.137989500] === Fin Leer_Aire[ 3.154845100] >>> Inicio Leer_TempFijada[ 3.234278000] === Fin Leer_TempFijada[ 3.254206000] >>> Inicio Leer_Temp[ 3.330566500] === Fin Leer_Temp[ 3.347422600] >>> Inicio Establecer_Estado[ 3.737158700] >>> Poner_Estado Estado actual de la caldera: BLOQUEADA[ 3.773458900] === Fin Poner_Estado[ 3.791890700] === Fin Establecer_Estado[ 3.812883600] === Fin Comprobaciones Internas[ 3.836952200] >>> Inicio Recogida de Teclado[ 3.860499000] === Fin Recogida de Teclado[ 3.882520900] >>> Inicio Escribir_TempFijada[ 3.978811700] === Fin Ecribir_TempFijada[ 4.000345500] >>> Inicio Sensor_Temp[ 4.166329900] >>> Inicio Temperatura Actual[ 4.189318400] === Fin Temperatura Actual[ 4.210828600] >>> Inicio Escribir_Temp[ 4.303860100] === Fin Escribir_Temp[ 4.322758300] === Fin Sensor_Temp[ 4.397901600] === Fin Teclado[ 4.413727500] >>> Inicio Temperatura Teclado[ 4.437280400] >>> Inicio Sensor_Agua[ 4.573985600] >>> Inicio Nivel de Agua[ 4.594413600] === Fin Nivel de Agua[ 4.613364300] >>> Inicio Escribir_Agua[ 4.706396600] === Fin Escribir_Agua[ 4.725294800] === Fin Sensor_Agua[ 4.743214300] >>> Inicio Sensor_Gas[ 4.879408200] >>> Inicio Nivel de Gas[ 4.899324300] === Fin Nivel de Gas[ 4.917762900] >>> Inicio Escribir_Gas

Page 18: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

35

[ 5.010544400] === Fin Escribir_Gas[ 5.028930600] >>> Inicio Comprobaciones Internas[ 5.568398200] >>> Inicio Leer_Aire[ 5.644712900] === Fin Leer_Aire[ 5.661568300] >>> Inicio Leer_TempFijada[ 5.741000400] === Fin Leer_TempFijada[ 5.760928000] >>> Inicio Leer_Temp[ 5.837288500] === Fin Leer_Temp[ 5.854143800] >>> Inicio Establecer_EstadoPaso por aqui 5[ 6.251825000] >>> Poner_Estado Estado actual de la caldera: ACTIVA[ 6.286589700] === Fin Poner_Estado[ 6.305021300] === Fin Establecer_Estado[ 6.326013000] === Fin Comprobaciones Internas[ 6.350077000] >>> Inicio Sensor_Temp[ 6.516107600] >>> Inicio Temperatura Actual[ 6.539095700] === Fin Temperatura Actual[ 6.560606300] >>> Inicio Escribir_Temp[ 6.653637800] === Fin Escribir_Temp[ 6.672536400] === Fin Sensor_Temp[ 6.690455500] === Fin Sensor_Gas[ 6.707864400] >>> Inicio Sensor_Aire[ 7.000587600] >>> ---->RTI[ 7.014878000] >>> Inicio Recogida de Teclado[ 7.038424000] === Fin Recogida de Teclado[ 7.060445100] >>> Inicio Escribir_TempFijada[ 7.156549600] === Fin Ecribir_TempFijada[ 7.235940600] === Fin Teclado[ 7.251766300] >>> Inicio Temperatura Teclado[ 7.295106400] >>> Inicio Deteccion de Aire[ 7.317582400] === Fin Deteccion Aire[ 7.337044200] >>> Inicio Escribir_Aire[ 7.430076500] === Fin Escribir_Aire[ 7.448975100] === Fin Sensor_Aire[ 7.466895100] >>> Inicio Sensor_Agua[ 7.500346300] >>> Inicio Comprobaciones Internas

36

[ 8.040071300] >>> Inicio Leer_Aire[ 8.116385600] === Fin Leer_Aire[ 8.133241000] >>> Inicio Leer_TempFijada[ 8.212673100] === Fin Leer_TempFijada[ 8.232601100] >>> Inicio Leer_Temp[ 8.308961600] === Fin Leer_Temp[ 8.325817900] >>> Inicio Establecer_EstadoPaso por aqui 5[ 8.723223100] >>> Poner_Estado Estado actual de la caldera: ACTIVA[ 8.757988200] === Fin Poner_Estado[ 8.776420200] === Fin Establecer_Estado[ 8.797411100] === Fin Comprobaciones Internas[ 8.821475700] >>> Inicio Sensor_Temp[ 8.987608500] >>> Inicio Temperatura Actual[ 9.010597600] === Fin Temperatura Actual[ 9.032106400] >>> Inicio Escribir_Temp[ 9.125139700] === Fin Escribir_Temp[ 9.144038100] === Fin Sensor_Temp[ 9.264578100] >>> Inicio Nivel de Agua[ 9.285007100] === Fin Nivel de Agua[ 9.303956400] >>> Inicio Escribir_Agua[ 9.396989100] === Fin Escribir_Agua[ 9.415887100] === Fin Sensor_Agua[ 9.433807100] >>> Inicio Sensor_Gas[ 9.570000200] >>> Inicio Nivel de Gas[ 9.589916700] === Fin Nivel de Gas[ 9.608354700] >>> Inicio Escribir_Gas[ 9.700874900] === Fin Escribir_Gas[ 9.719261400] === Fin Sensor_Gas[ 9.736669300] >>> Inicio Sensor_Aire[ 10.000334700] >>> Inicio Comprobaciones Internas[ 10.540268400] >>> Inicio Leer_Aire[ 10.617094200] === Fin Leer_Aire[ 10.634461500] >>> Inicio Leer_TempFijada[ 10.714405500] === Fin Leer_TempFijada

Page 19: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

37

[ 10.734845800] >>> Inicio Leer_Temp[ 10.811717200] === Fin Leer_Temp[ 10.829085200] >>> Inicio Establecer_EstadoPaso por aqui 5[ 11.227105400] >>> Poner_Estado Estado actual de la caldera: ACTIVA[ 11.262381400] === Fin Poner_Estado[ 11.281325300] === Fin Establecer_Estado[ 11.302829700] === Fin Comprobaciones Internas[ 11.327405800] >>> Inicio Sensor_Temp[ 11.493947300] >>> Inicio Temperatura Actual[ 11.517447100] === Fin Temperatura Actual[ 11.539470000] >>> Inicio Escribir_Temp[ 11.633013600] === Fin Escribir_Temp[ 11.652423500] === Fin Sensor_Temp[ 11.719342600] >>> Inicio Deteccion de Aire[ 11.742331300] === Fin Deteccion Aire[ 11.762304400] >>> Inicio Escribir_Aire[ 11.855848600] === Fin Escribir_Aire[ 11.875259100] === Fin Sensor_Aire[ 11.893690400] >>> Inicio Sensor_Agua[ 12.000405600] >>> Inicio Sensor_Temp[ 12.166901100] >>> Inicio Temperatura Actual[ 12.190401500] === Fin Temperatura Actual[ 12.212423600] >>> Inicio Escribir_Temp[ 12.305967400] === Fin Escribir_Temp[ 12.325376900] === Fin Sensor_Temp[ 12.373888900] >>> Inicio Nivel de Agua[ 12.394828800] === Fin Nivel de Agua[ 12.414291000] >>> Inicio Escribir_Agua[ 12.507951800] === Fin Escribir_Agua[ 12.527361800] >>> Inicio Comprobaciones Internas[ 13.067454300] >>> Inicio Leer_Aire[ 13.144279900] === Fin Leer_Aire[ 13.161648000] >>> Inicio Leer_TempFijada[ 13.241592000] === Fin Leer_TempFijada[ 13.262032300] >>> Inicio Leer_Temp

38

[ 13.338903700] === Fin Leer_Temp[ 13.356272100] >>> Inicio Establecer_EstadoPaso por aqui 5[ 13.754188200] >>> Poner_Estado Estado actual de la caldera: ACTIVA[ 13.789464200] === Fin Poner_Estado[ 13.808408100] === Fin Establecer_Estado[ 13.829912700] === Fin Comprobaciones Internas[ 13.854488000] === Fin Sensor_Agua[ 13.872920500] >>> Inicio Sensor_Gas[ 14.000319000] >>> Inicio Sensor_Temp[ 14.166815300] >>> Inicio Temperatura Actual[ 14.190315700] === Fin Temperatura Actual[ 14.212337200] >>> Inicio Escribir_Temp[ 14.305881800] === Fin Escribir_Temp[ 14.325292300] === Fin Sensor_Temp[ 14.352535100] >>> Inicio Nivel de Gas[ 14.372963700] === Fin Nivel de Gas[ 14.391913600] >>> Inicio Escribir_Gas[ 14.484945500] === Fin Escribir_Gas[ 14.503843900] === Fin Sensor_Gas[ 14.521763700] >>> Inicio Sensor_Aire[ 14.834926600] >>> Inicio Deteccion de Aire[ 14.857915500] === Fin Deteccion Aire[ 14.877888600] >>> Inicio Escribir_Aire[ 14.971610800] === Fin Escribir_Aire[ 14.991020300] ==[ 15.000748900] >>> Inicio Comprobaciones Internas[ 15.540728800] >>> Inicio Leer_Aire[ 15.617555400] === Fin Leer_Aire[ 15.634923900] >>> Inicio Leer_TempFijada[ 15.714867300] === Fin Leer_TempFijada[ 15.735306600] >>> Inicio Leer_Temp[ 15.812178800] === Fin Leer_Temp[ 15.829546400] >>> Inicio Establecer_EstadoPaso por aqui 5[ 16.227747700] >>> Poner_Estado Estado actual de la caldera: ACTIVA[ 16.263023700] === Fin Poner_Estado[ 16.281967600] === Fin Establecer_Estado

Page 20: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

39

[ 16.303472600] === Fin Comprobaciones Internas[ 16.328047800] >>> Inicio Sensor_Temp[ 16.494589900] >>> Inicio Temperatura Actual[ 16.518090300] === Fin Temperatura Actual[ 16.540112400] >>> Inicio Escribir_Temp[ 16.633656600] === Fin Escribir_Temp[ 16.653067100] === Fin Sensor_Temp= Fin Sensor_Aire[ 16.680202200] >>> Inicio Sensor_Agua[ 16.817420500] >>> Inicio Nivel de Agua[ 16.838361400] === Fin Nivel de Agua[ 16.857822600] >>> Inicio Escribir_Agua[ 16.951366400] === Fin Escribir_Agua[ 16.970776900] === Fin Sensor_Agua[ 16.989209200] >>> In[ 17.000990900] >>> ---->RTI[ 17.015838800] >>> Inicio Recogida de Teclado[ 17.039896100] === Fin Recogida de Teclado[ 17.062430700] >>> Inicio Escribir_TempFijada[ 17.159046100] === Fin Ecribir_TempFijada[ 17.238949400] === Fin Teclado[ 17.255287200] >>> Inicio Temperatura Tecladoicio Sensor_Gas[ 17.404285500] >>> Inicio Nivel de Gas[ 17.424714300] === Fin Nivel de Gas[ 17.443663800] >>> Inicio Escribir_Gas[ 17.536813000] === Fin Escribir_Gas[ 17.555710900] >>> Inicio Comprobaciones Internas[ 18.095974000] >>> Inicio Leer_Aire[ 18.172799600] === Fin Leer_Aire[ 18.190167700] >>> Inicio Leer_TempFijada[ 18.270111100] === Fin Leer_TempFijada[ 18.290550400] >>> Inicio Leer_Temp18.367423200] === Fin Leer_Temp[ 18.384790400] >>> Inicio Establecer_EstadoPaso por aqui 5[ 18.782708500] >>> Poner_Estado Estado actual de la caldera: ACTIVA[ 18.817985500] === Fin Poner_Estado

40

[ [ 18.836928800] === Fin Establecer_Estado[ 18.858433400] === Fin Comprobaciones Internas[ 18.883009100] >>> Inicio Sensor_Temp[ 19.049663700] >>> Inicio Temperatura Actual[ 19.073164100] === Fin Temperatura Actual[ 19.095185200] >>> Inicio Escribir_Temp[ 19.188730200] === Fin Escribir_Temp[ 19.208139700] === Fin Sensor_Temp[ 19.226571900] === Fin Sensor_Gas[ 19.244492100] >>> Inicio Sensor_Aire[ 19.557655600] >>> Inicio Deteccion de Aire[ 19.580644700] === Fin Deteccion Aire[ 19.600618000] >>> Inicio Escribir_Aire[ 19.694161800] === Fin Escribir_Aire[ 19.713571300] === Fin Sensor_Aire[ 19.732003400] >>> Inicio Sensor_Agua[ 19.869220500] >>> Inicio Nivel de Agua[ 19.890161400] === Fin Nivel de Agua[ 19.909623000] >>> Inicio Escribir_Agua[ 20.003460800] === Fin Escribir_Agua[ 20.022871400] >>> Inicio Comprobaciones Internas[ 20.562850500] >>> Inicio Leer_Aire[ 20.639676700] === Fin Leer_Aire[ 20.657044000] >>> Inicio Leer_TempFijada[ 20.736988600] === Fin Leer_TempFijada[ 20.757428100] >>> Inicio Leer_Temp[ 20.834300900] === Fin Leer_Temp[ 20.851669100] >>> Inicio Establecer_EstadoPaso por aqui 5[ 21.249680000] >>> Poner_Estado Estado actual de la caldera: ACTIVA[ 21.284956200] === Fin Poner_Estado[ 21.303901100] === Fin Establecer_Estado[ 21.325404100] === Fin Comprobaciones Internas[ 21.349980800] >>> Inicio Sensor_Temp��Interrupt!Stopped at time 217324439 (1.552e+01 s)

tsim>

Page 21: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

41

protocolo de prioridades monótona en plazos (DMA)

6 tareas de nuestro sistema de control de caldera, accediendo a 3 recursos

Tabla inicial para el estudio con iRat:

20001005000Tint-TempFijada1

28003503000T5-Comprobaciones2

15002001900T2-SensoTempActual3

20001002300T1-SensorAire4

1000801200T4-SensorAgua5

50080700T3-SensorGas6

DiCiTiTareaPrioridad

42

Tareas

SensorAire

SensorGas y

SensorTempActual

Page 22: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

43

No cumplen plazos

Elevado uso CPU

Gráfico de utilización:

gráfico de tiempo de respuesta.

44

En un INTENTO DE OPTIMIZACION …

Tareas:

SensorAire

SensorGas y

SensorTempActual

Page 23: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

45

Menor uso CPU Gráfico de utilización:

gráfico de tiempo de respuesta:

46

En un ULTIMO INTENTO DE OPTIMIZACION …

20001005000Tint-TempFijada1

40003506000T5-Comprobaciones2

25002003500T1-SensorAire3

28001003000T3-SensorGas4

2000802500T2-SensoTempActual5

1600802000T4-SensorAgua6

DiCiTiTareaPrioridad

Page 24: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

47

TA

BLA

TE

CN

ICA

en

iRat

48

Page 25: GUION EXPOSICION PROYECTO - OpenCourseWare de la ...ocw.upm.es/arquitectura-y-tecnologia-de-computadores/introduccion... · 5 • La caldera tiene un botón de encendido. • Configuración

49

Comprobación gráfica de optimización:

Uso CPU mucho menor

Utilización de Eventos y de Tiempo de Respuesta, con un índice de bloqueo bastante bajo para todas las tareas Y FINALIZACION DE TAREAS

50

Con este mismo protocolo de prioridades DMA y

con periodos de activación inferiores y plazos inferiores también es

PLANIFICABLE