Logo Studenta

Implementação de Técnicas de Tolerância a Falhas em Célula de Manufactura

¡Este material tiene más páginas!

Vista previa del material en texto

INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY 
CAMPUS ESTADO DE MÉXICO 
IMPLEMENTACION DE DISTINTAS TECNICAS DE 
TOLERANCIA A FALLAS EN UNA CiELDA De 
MANUFACTURA 
Asesor: 
Comite de 
Tesis: 
TESIS QUE PARA OBTENER EL GRADO DE 
MAESTRO EN CIENCIAS COMPUTACIONALES 
PRESENTA 
LAURA ELENA ZAVALA VEGiA 
Dr. Jesús Sánchez Velázquez 
Dr. Fabian García Nocetti 
Dr. Carlos Rodríguez Lucatero 
Dr. Isaac Rudomín Goldberg 
Atizapán de Zaragoza, Edo de Mex., Diciembre 1998 
Resumen 
En esta tesis se hace la implementación de varias técnicas de, tolerancia a fallas( tanto 
en hardware como en software) para el controlador paralelo distribuido (PARDICO) que 
será utilizado en una celda flexible de manufactura. El cont·olador hace uso de una 
topología de red reconfigurable basada en transputers y forma parte del proyecto 
"Tecnologías de Comunicación Avanzadas en Robótica y Celdas Flexibles de 
Manufactura" el cual está financiado por la National Sciencie Foundation (NSF) y el 
Consejo Nacional de Ciencia y Tecnología (CONACyT). 
El sistema desarrollado cuenta con un módulo de supervisión para la detección de 
errores, un módulo de monitoreo que permite conocer el estado global del sistema . y un 
módulo extra que utiliza la redundancia en hardware y software para su recuperación en 
caso de que ocurra algún error. Dentro de los posibles e1·rores que se atacaron se 
encuentran: error en los enlaces de comunicación: error en uno o mas procesadores y 
error en uno o mas procesos. Para cumplir con el objetivo se hizo uso de 
procedimientos especiales para la comunicación confiable dentro de la red de 
transputers, el paralelismo que proporciona el procesador, y la capacidad de 
reconfiguración de la red 
Debido a las características de la interfaz utilizada para la comunicación con los 
elementos de la celda, la parte de configuracion del sistema está hecha en lenguaje 
Occam mientras que la parte de procesos y procedimientos está hecha en C, por lo que 
se proporciona además una guia para la programación usando ambos lenguajes. 
CONTENIDO 
1. Introducción ................ .. ...... .. ............... .. .................... .. ...... ... ..... ........ .. ....... .. ....... .. ....... ... ...... ... ....... .. .............. .. ..... 6 
1.1 Definición de una Celda Flexible de Manufactura .............. .... ..... .... .. ... ... .... .. ....... .. ................ .. ........ .... ........ 7 
1.2 Antecedentes ............................ .. .................. . ............ ....... .. .... .. .... .. ... ..... ......... .. ......... .......... .. .... .. .... 8 
1. 3 Objetivos ............................................................. .... .. .. ................... .... ...... . ................. .. ... ....... ... ......... .. .......... 1 O 
2. Problemática ............... .. ........................... .. ...... .. ..... .. ....... ....... .. ..... .. .. ... .... ...... .. ........ .. ...... .......... .. ........................ 12 
2.1 Trabajos ya desarrollados para el proyecto "Tecnologías de Comunicación Avanzadas en Robótica y 
Celdas Flexibles de Manufactura" ........................... .. .................... .. ........ .. ................................. .. .......... .. ............ 12 
2.1.1. Interfaz bidireccional de comunicación entre dos transputers y un elemento de la Celda .................... 12 
21.2 Protocolo de Comunicación ....................... .. .......... .... .. .. ........ .. ............ .. ........ .. ................................ 13 
2.1.3 Arquitectura reconfigurable de una red de transputers para el controlador de una CFM ............ ... ........ 14 
2.2 Puntos susceptibles a error en el controlador de la celda de manufactura .................................................... 18 
3. Tolerancia a Fallas en Una Celda de Manufactura .................... .. ............ .. ... .. ......................... .. ..... .... .. ...... 22 
3.1 Tolerancia a Fallas en Sistemas Paralelos y Distribuidos ...... .. ... ..... .. ..... .. ......................... .. .. .. ....... .. ..... 22 
3.1.1 Definición de falla ............... .. .................. .. . ........... .................... ............... .. ........... .. ..... 23 
3.1.1.1 Fallas francas ............................. .. .. ............... .. .. . ....... .. .............. 23 
3.1.1.2 Fallas transitorias............................... .. ................ .. .. . ...... .. ....... ........... .. ..................... 24 
3.1.1.3 Fallas temporales ........ .. ..................... .. ..................... .. ........................ .. ........... .. .......... .. ................. 24 
3.1.1.4 Fallas temporales ............ .. ................................................... .. ................ .. ....... ... ........ .. ................. 24 
3.1.2 Características de un sistema tolerante a fallas...... .... .. ........ .. .............. .. ...... .. ....... .. .. ........ .. ..... 25 
31.3 Detección de error .............. .. ..................... .. .... ... .. ... .. ... ..... .. ..... .. .......... .. ....... .. .. ....... .. ........... 27 
3.1.4 Estimación de los daños............................. .. ...... .. ...... . .... ..... .. .. ......... .. ............................. .. ........ 28 
3.1.5 Recuperación del error .............................. .. ..... .. ...... .. ... .. ..... .. . ............................ ............ ·•· ..... 29 
3.1.6 El manejo de la falla y el restablecimiento .................................. ......... .. ....... ... ......... ....... ..................... 30 
3.1. 7 La redundancia dentro de la tolerancia a fallas ............ ... .. ... .. ............. .. ......... .......... ............ ......... ...... 30 
3.1.7.1 Redundancia en Hardware ..... ......... ...................................... .......... ......... .......... .............. ............... 30 
3.1.7.2 Redundancia en Tiempo ........... .............. ......................... ........ .................................... ..................... 34 
3.1.7.3 Redundancia en Software ...................................... ........ ........ .. ........ .. ........ ......... ... ......... ............... 34 
3.2 Programación en sistemas distribuidos y paralelos ............. ........ ............................ .......... ... .......... .. ............. 35 
3.2.1 Formas de paralelismo .......................................................................... ................................................. 35 
3.2.2 Máquinas paralelas ........................... .. ....... : ..... .. ...... ........ ....... .. ............... ........ .. ..................... ............... 36 
3.2.3 El transputer .............................................. ............. ............................... ............ .. ........ ......... ... ...... .. ..... 37 
3.2. 3.1 Comu~icación: Enlaces y Canales ..... ....................... ..... ......... ................ ............ ........... .. ............ 39 
3.2.3.2 Timesharing ................... ...... .......... ............. ........ ....... .............. ......... .......... ......... ............ ... ............ .40 
3.2.3.3 Procesos, tareas y threads ........... .. ............. ........ .. ..... .. ............. ........... ........ ........... .......... .. ............ .40 
3.2. 3 4 lserver, Afserver, Pserver ..................... ..... .. ................ .. .... .......... ....... ............................. .... ............ .41 
3.2.3.5 Lenguajes ..................................... ............. .. ....... .. .... ............... . ...... .. .......... .. ................................ 41 
3.3 Implementación de un sistema tolerante a fallas en transputers ...... .. ....... ......... ... ...... ......... ............. ............ 42 
4. Implementación .............. ............... ......... ............. .. ............ .. ...... ........ ........ .. ...... .. ................. ......... ............. ......... .43 
4.1 Criterios de Diser,o .......... ............... .. ..... ........ .............. ... ........... ......... .. ....................................................... .43 
4.2 Análisis del problema .............. .. ............ ..... .. .... ...... .. ... .. . ... ...... ... ............... ...... .... ....... ............. ....... 44 
4.2.1 Redundancia en el controlador ..... ...... .. .... ...... .. ...... ... . . ............ ........ .. ............... ... .......... ..... 48 
4.2.1.1 Redundancia en Hardware ........................................... ... . .......... ................................... .48 
4.2.1.2 Redundancia en Software ...................... .. .................. .. ... .... ........ ....... ... .............................. .. ........ 49 
4.2.2 Tolerancia a Fallas en el subsistema de comunicación ........ ................ ....... .. ...... .. ........... ................... 50 
4.2.3 Sistema de supervisión: monitores ................. .. ...... ....... .. .... .. ...... .. ........ ................... ............. .. .... .... ..... 52 
4.2.3.1 Monitor Distribuido vs. Monitor Centralizado .............. ................ .. ..... ... ..... .. ................. .. ............. 56 
4.2.4 Detección de fallas y Recuperación de Fallas ........................ .. ................................ ......... .. ......... .. ....... 60 
4.2.4.1 Error en los enlaces de comunicación ............................ ....... ........ ........... ........... ................ ........... 62 
4.2.4.2 Error en los procesos del controlador ...... ................. .. 
4.2 4.3 Error en el procesador ........ .. ........... .. ................ .. 
···· ·········· ································ ··········· .... 62 
············· ·· ········· ······················ ··········· .. 63 
2 
4.2.4.4 Error en el procesador del host ...................... .. ..... .. .. ........... .. ........ ......... ... ........ ........... .. ....... .. ..... 64 
4.2.4.5 Error en un segundo proceso del controlador .... .... . . ......... ···················· ·· ... ······ ······ .... 65 
4.2.4.6 Error en un procesador de respaldo ..... ..... ............... ... . ·· •·················· ··········· ··················· .... 65 
4.2.4.7 Error en el procesador de monitoreo global ...... ....... . . .. ......... .................. .......................... 69 
4.2.5 Precauciones en la programación ....... ..... ......................................... ............................. ........................ 69 
4.2.5.1 Procedimientos para el manejo del uso extraordinario de enlaces .................. ........... ............ ........ 70 
4.2.5.2 Reinicializar el sistema .... ..................................................... ............................................................ 71 
4.3 Resultados ......... ....... ....................... .............. ........ ...................................... ........... .......... .. ......... .......... .. ...... 73 
5 Conclusiones y Recomendaciones a Futuro .......... ............................. ................................................................. 80 
5.1 Conclusiones .................................................. ................ ............. .......... ................ .. ........ ........... ........... ... ...... 80 
5.2 Recomendaciones a Futuro ...... ......... ............... ..................... .. ............. .. ....... ................... ......... .... .......... ....... 81 
6. Bibliografía .......................................................................................... .......... ....................................................... 83 
APENDICE A..... ............ ......... ................ ....... ......... . .. . ............... . . .. ...... ... ...... .......... ...................... 86 
A.1 Programas con lenguajes mezclados................ ........................ . . .... .......... ........ ......... .. ............ .. ........ 86 
A.1.1 Definición de la interfaz tipo 2 ......... ....... ...... ................ ....... ........ ......... ....................................... ........... 87 
A.1.2 Definición de la interfaz tipo 3 .......... ....... ........ ....... ........ ............................... .. ....................................... 88 
A.2 Llamada de procedimientos de interfaz Occam ............ .. ..................... . ...... ......... ............................... ....... 88 
APENDICE B ..... ........ .. ....... .......... ............................... ...... ........ ......... ....... .. ................ ......... ..................... .............. 91 
B.1 Comunicación confiable en canales duros (entre procesos) ..................................... ........................ .......... 91 
B.2 Descripción de funciones para comunicación con ser'lalización de error por temporizador ................... ....... 91 
B.3 Descripción de funciones para comunicación con ser'lalización de erro~ por canal ................................ ...... 94 
APENDICE C ..... .......... ........ ... .............................. ................ ............ .. ........................ ............ .......... ...... . 
C.1 Pseudocodigo y Programas .......... ...... ....... .................. ... . 
. .... 98 
.. 98 
C.1.1 Red de transputers ............................... . ...... ........ ................... . ................... ........... ....... ... ............... 98 
C.1.2 Archivo de configuración ..... ..................... ........ .............................. .................... ............ ....... .. ........ . .... 98 
C 1. 3 Esquema del Archivo de Configuración ..... ..................... .. .................. .............................. ... ..... .. ......... 103 
3 
C. 1.4 Aplicación ......... ... ...... .... .... .. ........ ..... ...... ..... .............. ... ... . . . ..... 105 
C.1.4.1 Módulo Host: .............. ........ .... ........ . . ... 105 
Interfaz Occam: ... ............... .. .................. .. ... ...... ............... .. ............... ............. .... ............................. .. ..... 105 
Programa en C .. ..... ......... ...... .. ....... .. ...... .. .......... ..... ............. ........ .. .................................. .................. .. 105 
Nodo en el archivo de configuración ..... .. ........ ... ............ .. .. .. .... ... .. ......... .... .. ....... .. ... ....... ............... 105 
Descripción .. .. .... ....... .. ... ................... ......... ....... ........... ....... .... .. ..... ... .. .. ... .. ... .... ...... .. ...... ... .............. .. .... . 105 
Flujo ... ........ .. ... .... ... .... .... .. .......... ........... .. ... .... .... .................... .. ................................................ .. ............. 106 
Código ........... .. .. ..... .. : ................................. ............. .. ...... .. ..... .. ...... .. .. ... ...... ...... ... ......... .. ........ ... ...... .. .... 107 
Forma de Compilarlo ........ .. ...................... ... .... .. ....... .. ......... .. .............. . ..... ... ..................... .. .............. .... 119 
C 1.4.2 Módulo Controlador: ........... .. ........... .. .... ..... .... .. .. .... .. . .. ... 120 
Interfaz Occam .... ..... ..... .. .. ... ... .. ... ..... ... ....... .. .... ..... ... ... .. .... .... .. .... ... ... ... .. .. .... ... ...... ....... ... ... .... .... .... .... 120 
Programa en C .................. ...... ............ .. .......... ... ...................... ... ..................... ... ........ .... .... ... .. .. .. 120 
Nodo en el archivo de configuración ...... .. ..... ... .. .. ... ... ... .. ... ............ .. .. .... ..... .. ... .... ... .... .. ...... .. .. .... .. .. ..... 120 
Descripción ..... ......... ............................ .... ..... .............. .... ........ .... ... .. ...... ..... ... ...... ... ...... ........ .... .. ......... .. . 120 
Flujo ........................................................................................................................ ...... .. ... .... ..... ..... ....... . 120 
Código: .. ..... .... ........ .... ...... .... .. .... .... .. ........ .. .... .... .... ............. ........ .. ..... ... .... .. ...... ... ... ..... .......... ..... ....... ... . 121 
Forma de Compilarlo ... ........ ... ........ ....... ......... .. ...... .... .. .... .. ... ... . .. ... .......... .... ..... .......... .. .. .. .... ... .......... 127 
C.1.4. 3 Módulo Controlador de Respaldo: .... .. . . ... .. ..... ... ...... .. ...... .. .. ... ..... ...... .. ...... ............ .. ..... .. ....... . 128 
Interfaz Occam ........ ... ........................... . .. .. .... ................. ..... 128 
Programa en C ... ...................... .. ........ . .. .. .... .... .. .. ........ .. ........... ... 128 
Nodo en el archivo de configuración . ... .. . .. . .. .. .. . .. .. .. .. .... . ..... ...... .... ..... .. ... .. ...... ... .... ..... .... .. ... 129 
Descripción ......................... ....... .. ..... .... .... .... .. ...... ..... .......... .... .. ......... .. .. . .. . ... .. ... ... .............. 129 
Flujo..... . ....... .... ............. .. .................... .. ... .. ........ ............. .... .... ...... .. ...... .. .. . ... .. ......... .. ..... .. ... .... 129 
Código ...................... ... ............................. ............ ..... .... ... ........ .. ... .. ......... .... ..... ........ ............ .. ............. 129 
Forma de Compilarlo .. .... ...... ..... .... .. .. ......... .. .. ... ... ... .. .............. ... . . ...... .... ... .. ........ ...... .. ... .. .. .. ... .... 134 
C.1.4.4 Módulo SIO: . .. . .. .. .... . .. .. .. . .. .. ... .... .. .... .. .. .... ... ...... .. .. . . .. ........ .... ....... .... ........... ..... .. .. ..... ........... 135 
Programa en Occam ....... ......... ...... .. .. ... ........ ... .... .. ......... ........ . ..... ..... .. .. .. ...... .. ..... ........ .... 135 
Nodo en el archivo de configuración .... ... .. . ............. ... . .. .......... .. .. ....... ... ... .. ..... .. ... .. .... 135 
4 
Descripción ....... .. ...... .. ....................................................... ..... .. ...................................................... ........ 135 
Flujo ............. .. .. .......................... .. ...... .. ....... ....... .. ...... ....... .. ..... .. ........ ....................................... .. ..... ..... 136 
Código .... ....... .. ..... ....................... ........ ........ ........ ........ ............... ........ .. ........................... ............ ........ 136 
F arma de Compilarlo ......... ......................... ... .... ..... .................. .. ... ...... .. ................... ......... .... ......... ... .... 141 
C.1.4.5 Módulo Monitor Local: .................................................................. ...... .. .................... ... ........... ...... 141 
Interfaz Occam ........................ .. .... .. ...... ........ ... .... .. .. .... .... ..... .. ...... ... ...... ... ...... .. ......... .. .......................... 141 
Programa en C .................................................................... .. ........ ................ .. .................... .. ............ .. ... 141 
Nodo en el archivo de configuración .... .... .. .. .. .... .. .. ..... .. .. . . .. .. .. . .. .. .. .. .. .. ...... .................... .. ... .... .... ..... 141 
Descripción ....... .. ..... .... ..... ........ .. ...... .. ..... .. . .... .. ..... ... ..... .. .... .. ........ .. ..... .. ........ ... ......... .. ...................... 141 
Flujo .............................................................. ......... .. .............................. ... ................. .. ........ .. .............. 141 
Código ...... ................. ..................................................... .. ........................................... .. ...... .. ... .. ............ 142 
Forma de Compilarlo ......................................................... .............. .. ........................ .... ......................... 144 
C.1.4.6 Módulo Monitor Global: ................................................................................................................ .. 145 
Interfaz Occam .......................... .. ........ ....... . ............. .... ............................ ... ...... ......... .. ....................... 145 
Programa en C .... .... .... .. ........ .. ...... .. .... .. ...... .. ...... .. ...................... .. .................................. ........... .. .. ....... 145 
Nodo en el archivo de configuración ................................. .. ...................... .. ................ .. ... ......... .. ......... 145 
Descripción ...................................... .. .................. .. ........ .. ........... .. ...... .. ........ .. .. ...... .. ........ ............ ....... 145 
Flujo........................... ........ .. .... .... .... .. ............................ .. ............. . .......................... .... ...... .. .. .. ...... 145 
Código ....................................................................................... ............... .. ....... .... ..... .. .. ........................ 148 
Forma de Compilarlo ................. .............. ..... .................... .. .. .. ....... .. . .... .. ... ........................... .. .............. 155 
C 1.4. 7 Módulo Principal:.. ........... .. ............. ... .... .................. .. .. .. .... .... .. .. .... ...... .. ....... .. .................... .. ...... 157 
Programa en C ..................................... .. ...... ....... .. .... .... ............ ........ .. ...... .. ......... ... ............................. 157 
Descripción ............................................ .. ......................... . . .... .. ....... ... ..................................... 157 
Flujo ...... ... .................................................. .. ......... .. ........ . ..... ....... .. ...... .. ...... .. .. ....... .. ........... .............. 157 
Código .... .. ........ .. .............................................. .. ............................. .. ................... .. ........ ... ........ .. ........... 157 
Forma de Compilarlo ........................... . ............................ .. ...... .. ............... .. ..... .. ...................... .......... 158 
C.2 Archivos de Configuración........... . ... . .. ... .. . .. . .. . ...... .. .. ........ .. .. ...... .. .. . 
C.3 Forma de ejecutar el programa .................... .. .... .. .... .. .. ..... .. ... .. ...... . . . ................. . . ......... , t. 
... 158 
. .. 159 
5 
1. Introducción 
El propósito de las empresas de manufactura es entregar los productos que demanda el mercado en el 
menor tiempo posible y al menor costo aprovechando al máximo los recursos disponibles como materia 
prima y energía . Una Celda de Manufactura es un conjunto de robots y máquinas que trabajan en 
conjunto para construir algún producto (ver figura 1.1) . En la época actual se ha visto la necesidad de 
automatizar los procesos de operación de la empresa para poder llevar acabo dichos objetivos. lo que 
dio origen a las celdas integradas por computadora. 
Una Celda Integrada por Computadora (CIM) es un conjunto de robots y máquinas controlados por 
computadora que trabajan de manera conjunta para fabricar un produci:o[16]. 
EJE • BANDA1 
._________..,(~ 
CINCINNATI ~ 
111111111111111111111111111111111111111@51 =C@ 
BANDA 2 G ROBOT 2 
TABLA 
ROBQT1 
Figura 1.1. Celda de Manufactura 
Aunque actualmente este tipo de centros existen en un buen número de fábricas en todo el mundo , 
presentan la desventaja de que la planeación de susactividades es estática, además de que realizan 
trabajos repetitivos sin inteligencia. En el caso de que sea necesario un cambio en el procedimiento de 
producción en este tipo de celdas, es necesaria la planeación meticulosa de cuándo y cómo deben 
interactuar sus partes para la nueva forma en que van a trabajar. Este tipo de cambios se traduce en 
inconvenientes de tiempo y esfuerzo para la empresa. 
Es así que la Celda Integrada empieza a ser inadecuada para las necesidades actuales de flexibilidad 
de configuración y robustez de la operación . Las ciencias computacionales pueden ayudar a 
flexibilizar las celdas de manufactura . empleando técnicas de lnte:ligencia Artificial y de Tolerancia a 
6 
Fallas para la implementación de los controladores de los elementos de la celda y de esta manera. 
superar las deficiencias de la CIM. 
1.1 Definición de una Celda Flexible de Manufactura 
Actualmente se ha desarrollado el concepto de Celdas Flexibles de Manufactura (CFM) para referirse a 
las CIM's a las cuales se les añade las siguientes características [21 ]: 
• Flexibilidad de planeación, lo que implica un formato de planeación más amigable además de que 
puede adaptarse a los cambios del medio ambiente y de los objetivos. 
• Reconfigurabilidad. que es la capacidad de poderse adaptar a los rnquerimientos de fabricación de 
diferentes productos. 
• Detección y aislamiento de fallas. lo cual permite tolerar fallas dentro del proceso de fabricación. 
La CFM normalmente es coordinada por un sistema de control distribuido el cual lleva a cabo el control 
de los elementos de la celda y el control de las comunicaciones entre los mismos. Este sistema de 
control realiza la planeación, temporización . asignación de órdenes. control y verificación de las tareas 
necesarias para fabricar el producto. La integración de todas las func ones de la CFM se hace por 
medio de un sistema de datos distribuido , ya que los elementos de la celda se encuentran distribuidos 
en el espacio de trabajo. 
La presente tesis se desarrolla dentro del proyecto "Tecnologías de Comunicación Avanzadas en 
Robótica y Celdas Flexibles de Manufactura" [16] financiado por la National Science Foundation (NSF) 
y por el Consejo Nacional de Ciencia y Tecnología (CONACyT); en el cual participan los Campus 
Estado de México y Morelos del Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) 
y la Universidad de Texas (UT) en Austin. El proyecto está estructurado de tal manera que la UT 
estudiará el problema de las comunicaciones dentro del robot inteligente. mientras que el ITESM 
estudiará las comunicaciones entre los componentes de la celda de manufactura , lo cual implica la 
arquitectura del controlador de la celda, tecnologías de comunicación en redes reconfigurables. 
interfaces entre los robots y el controlador , softwares de comunica.ciones. detección e identificación de 
fallas en la celda, simulación visual y planificación flexible. 
7 
El problema de las Celdas Flexibles de Manufactura (CFM) ha sido estudiado por el Instituto 
Tecnológico y de Estudios Superiores de Monterrey (ITESM) y la Universidad de Texas en Austin (UT) 
desde hace tiempo. La UT ha desarrollado estructuras modulares de robots desde hace 20 años . 
mientras que el ITESM cuenta con años de experiencia desarrollando celdas de manufactura, 
específicamente en el campus Estado de México (ITESM-CEM) y Momios (ITESM-CM). El énfasis del 
ITESM-CEM ha sido el diseño de la estructura del hardware del controlador de la celda. del software 
operacional y de comunicaciones. así como de un ambiente de simulación visual de la celda. 
1.2 Antecedentes 
Desde principios de los 90's el ITESM ha participado fuertemente en la automatización total de Celdas 
de Manufactura. En 1992 se trabajó en el diseño y construcción de un controlador de celda (ver figura 
1 2) (17], en donde el canal de comunicación entre la computadora (control de piso) y la tarjeta madre 
era único y de baja velocidad (RS-232), El envío de información entre los componentes del CIM y la 
computadora (control de piso) se hacía por medio de varios elementos intermedios con el siguiente 
flujo de información: 
Computadora --> Interfaz--> Tarjeta Madre--> Interfaz--> UPl's --> Interfaz--> Robots 
MIP 
Taiieta; 
Perifuica; 
f.'.$232 
M«qiJÍlw 
Ci11.ci.iu1«ti I 
1-+------1 IBM 7575 1 
RS232 . 
i-+-R-.S2_3_2 -1 Bw~~ 1 
Figura 1.2. Diagrama a bloques del controlador 
El diseño de éste controlador trajo consigo las siguientes deficiencias: 
• Al utilizar una interfaz RS232 a 2400 bps entre la computadora y los robots, se creó un cuello de 
botella en la transferencia de datos debido a la desproporción de velocidad. 
• El envio de información es demasiado lento debido a que la información tiene que fluir por tres 
interfaces. 
8 
• La arquitectura diseñada no es tolerante a fallas debido a que existen tres puntos únicos de falla 
(interfaces) en los que si se genera un error, produce un aislamie,nto en uno o varios elementos 
(robots). 
En atención a este proyecto y con miras a solucionar los problemas anteriores se propuso un 
controlador paralelo para celdas flexibles de manufactura [16], ver figura 1.3: 
a: 
~ 
...J o a: .... 
z 
o 
u 
I PROCESADOR OcoNMUTADOR @) INTERFl,Z 
Figura 1.3. Controlador de la Celda de Manufactura 
El controlador es un sistema distribuido, debido a la distribución fisica de los elementos en las celdas 
de manufactura. Por ser distribuido, tiene problemas como sincronización, retardos de comunicación. 
etc. El controlador también es paralelo , ya que está compuesto de varios procesadores que controlan 
cada elemento de la celda de manufactura. 
Se eligió el diseño de un controlador paralelo para poder implementar la tolerancia a fallas y para poder 
soportar operaciones complejas en tiempo real. El ambiente de procesamiento paralelo permite 
estrategias de control más complejas, a la vez que se mejora el desempeño del sistema ya que puede 
explotarse la redundancia inherente del sistema. Para este tipo de ambientes, se han venido usando 
procesadores que permitan el procesamiento paralelo y distribuido c:::,mo es el caso de los transputers 
[1 ][2][3] . 
El transputer cuenta con múltiples enlaces de comunicación, lo que lo convierte en un atractivo 
procesador sobre el cual construir sistemas tolerantes a fallas. Ofrece interconexiones flexibles. esto es 
. se pueden tener diferentes topologías de red de procesadores y ser reconfigurables de acuerdo a las 
necesidades del sistema. Tiene características de autoverificación gracias al uso extraordinario de 
enlaces y proporciona una forma muy robusta de redundancia deoido a que tiene la posibilidad de 
maneiar algoritmos paralelos . 
9 
En el Campus Toluca se trabajó en la interfaz del controlador de la celda basada en un 
microcontrolador MC8751 [7]. la cual permite comunicar a cualquiera de dos transputers con un 
elemento de la celda de manufactura en forma half-duplex (ver sección 2.1.1 ), cada transputer tiene 
como función ejecutar una rutina de tareas especificas mandando comandos al elemento de la celda 
de manufactura que le corresponde. El protocolo usado para establecer y mantener la comunicación 
entre los elementos de la celda de manufactura y el sistema distribuido paralelo (controlador) se 
desarrolló en [6]. dicho protocolo está dividido en tres niveles siguiendo el modelo de referencia OSI 
para redes locales (ver sección 2.1.2) . 
En un trabajo posterior [9] se estudió y propuso la topología de la a·quitectura distribuida sobre una 
tarjeta IMS 8008, la cual contiene la red de procesadores (transputers) del controlador y puede ser 
configurada con ayuda del un conmutador IMS C004 integrado a la tar.1eta. 
1.3 Objetivos 
Bajo el marco de la necesidades de tolerancia a fallas en el controlador implementado en [6][7] y [9] 
para una Celda Flexible de Manufactura. queriendo cubrir así los requisitosde capacidad de 
reconfiguración. detección y aislamiento de errores en hardware y en software. se establecieron los 
siguientes objetivos en el presente proyecto: 
1) Implementar la detección de fallas por medio de un monitor que valide periódicamente el 
comportamiento del sistema. Como el controlador de los elemen·:os de la celda de manufactura es 
un conjunto de procesos que se ejecutan en paralelo . es necesario que alguien (en este caso el 
monitor) se de por enterado del estado de cada uno de los elementos para poder decidir si el 
sistema esta trabajando de forma satisfactoria 
2) Hacer uso de la redundancia en hardware· en caso de que falle un procesador. En trabajos 
anteriores [9] se planteó una topología con características que proporcionan una redundancia en 
hardware de 2 a 2. esto es 2 procesadores (transputers) por dos elementos de la celda de 
manufactura. Es necesario desarrollar los programas que puedan hacer uso de los elementos que 
se encuentran redundantes o secundarios para ser empleado~; en caso de que falle el elemento 
principal. 
3) Hacer uso de la redundancia en software en caso de que falle un proceso. Si un proceso falla, 
debe ejecutarse una copia en otro procesador que pueda seguir y reemplazar al primero; es 
necesario además seguir con el mismo plan de trabajo que se estaba ejecutando en un principio. 
Por esto se desarrollará software que permita el uso de una parte de memoria secundaria en el 
procesador de respaldo para ejecutar dicho plan . 
10 
4) Proporcionar una guía que permita hacer uso de software hecho en Occam y ANSI e Toolset , así 
como de las herramientas disponibles para implementar el uso seguro de enlaces de comunicación 
entre transputers. Dichas funciones se implementarán para hacer procedimientos que ayuden a la 
comunicación entre los módulos que conforman el sistema tolerante! a fallas. 
Este proyecto siguió lo criterios necesarios para poder implementar la tolerancia a fallas en el 
controlador y que no fueron contemplados en [6] y [7], dichos criterios fueron proporcionar redundancia 
en hardware, optimizar el uso de la tarjeta para maximizar el espacio disponible en la misma, y la 
posibilidad de reconfigurar la red de procesadores para ejecutar c,tro plan de operación o aislar 
elementos con error (ver sección 2.1.3). 
En el presente trabajo se implementan técnicas de tolerancia a fa.llas en software con ayuda de 
procesos que se encargan de la supervisión del controlador y otros que se encargan de recuperar la 
operación normal en caso de alguna falla en el controlador. Estas técnicas fueron posibles gracias a la 
redundancia del controlador propuesto en [5, 1 O] para la CFM. Esto requirió del estudio de las 
diferentes técnicas para monitoreo de sistemas distribuidos, el establi=cimiento de estados globales. la 
comunicación entre procesos y entre procesadores y la reconfiguración de la red de procesadores. 
En el capítulo 2 de esta tesis se revisa a detalle el trabajo hecho anteriormente en otros Campus 
respecto al proyecto global de la celda flexible de manufactura y se d1=fine el problema. En el capitulo 3 
se definen los criterios de diseño y se plantea una solución de acuerdo al ambiente paralelo para cada 
punto susceptible a error; también se especifica el desarrollo en software necesario para poder crear 
los procesos que se encargarán de supervisar el sistema, detect21r una falla y restablecerse de la 
misma. Después del diseño, la implantación de los algoritmos se detalla en el capítulo 4, así como el 
uso de algunas funciones especiales predefinidas en los lenguajes usados (ANSI C Toolset y Occam 
2) . Finalmente en el capítulo 5 se dan las conclusiones y recomendaciones a futuro. con base a las 
experiencias obtenidas durante el desarrollo del presente trabajo. 
Como referencia se proporcionan varios apéndices que serán de utilidad al lector para el uso de las 
herramientas de software con las que cuenta el transputer. En el apéndice A se dan ejemplos y 
recomendaciones del uso de las funciones que involucran el uso extraordinario de enlaces tanto en C 
como en Occam para la transmisión segura de datos sobre un canal. Como para desarrollar el código 
de los procesos se hizo uso tanto del lenguaje C como del lenguaje Occam, en el apéndice B se da 
una explicación de la forma en que se hacen programas híbridos, es decir , que usan lenguaje Occam 
y lenguaje C paralelo . Finalmente en el Apéndice C Se proporciona el pseudo código y el código 
fuente de los distintos procesos que se usaron para implementar la tolerancia a fallas. 
11 
2. Problemática 
Como se explicó en el capítulo anterior, el proyecto "Tecnologías d•: Comunicación Avanzadas en 
Robótica y Celdas Flexibles de Manufactura" se ha dividido en varios módulos de los cuales ya se han 
desarrollado trabajos que sirvieron como base para definir la forma en la que se van a manejar las 
posibles fallas que se presenten en el sistema. Para dar continuidad a dichos proyectos. se debe lograr 
que el plan de trabajo que se envíe al controlador pueda seguir ejecutándose aún en presencia de 
alguna falla en sus distintos componentes. En este capítulo se hace cna descripción más detallada de 
los trabajos ya hechos y en base a ello se definen los posibles puntos de error en el controlador. 
2.1 Trabajos ya desarrollados para el proyecto "Tecnologías de Comunicación Avanzadas en 
Robótica y Celdas Flexibles de Manufactura" 
En el marco de este proyecto alumnos del ITESM en el Campus T:iluca y en el Campus Estado de 
México desarrollaron un controlador paralelo para celdas flexibles de manufactura el cual es una 
máquina de múltiples transputers con interfaces RS232 y topología reconfigurable, la cual se detalla a 
continuación. 
2.1.1. Interfaz bidireccional de comunicación entre dos transput1?rs y un elemento de la Celda 
La mayoría de los robots de una celda de manufactura manejan como interfaz la serial (RS232), la 
paralela (centronics) o MAP (Token bus). En el ITESM Campus Toluca . Alarcón [7] trabajó en el 
desarrollo de un circuito para sincronizar la velocidad del enlace del transputer (20 megabits/s) con la 
velocidad de la interfaz RS232 (20 kilobits/s) (ver figura 2.1 ). 
Los procesadores se alojan en los módulos TRAM's, el circuito C011 actúa como una adaptador de 
interfaz transformando la entrada serial de 20 Mbps que proviene del transputer a una señal de 8 bits . 
El circuito 74LS373 es un registro de 8 bits el cual permite a la interfaz operar en ambas direcciones. El 
microcontrolador 8751 lee datos de sus puertos y los envía , dependiendo de la dirección de la 
comunicación, al robot o al C011. 
Este circuito permite a cualquiera de dos procesadores (transputers) comunicarse con un elemento de 
la celda de manufactura en modo half-duplex por medio de un protocolo a nivel físico para sincronizar 
los elementos con las diferentes velocidades. El software y el ha·dware de esta interfaz es capaz de 
implementar un conmutador 2x1 . lo que permite tener rutas alternas entre dos procesadores y un 
elemento de la celda de manufactura. 
12 
8751 
RS232C 
ROBOT 
Figura 2.1 Interfaz conmutada 2 x 1 
Esta interfaz ocupa la mitad del tamaño de una tarjeta de PC y cuesta 1 O veces menos que un circuito 
similar proporcionado por el fabricante llamado SI0-232, aunque el SI0-232 tiene la capacidad de un 
conmutador 2x2 lo que permitiría a un procesador manejar de forma indistinta dos robots, o que un 
robot sea manejado por cualquiera de dos procesadores[1 O]. 
2.1.2 Protocolo de Comunicación 
El controlador de software hecho en el ITESM campus Toluca [6] esta dividido en tres niveles. 
siguiendo el modelo OSI para redes locales: físico, enlace y red, y aplicación .. El propósito principal de 
estos niveles que se ejecutan en cada transputer es establecer y mantener la comunicación entre los 
elementos del sistema paralelo/distribuido (transputers y robots), en cfüerentesniveles de abstracción. 
El nivel físico se encarga de la transmisión de bytes sobre los enlaces físicos. La comunicación 
transputer-transputer se implementa por hardware, mientras que eil microcontrolador MC8751 en la 
interfaz del controlador de la celda contiene el protocolo entre los robots y los transputers. Este 
protocolo fue diseñado para sincronizar los robots con los transputers. 
En la figura 2.2 se muestra el intercambio de información (para mayor claridad es sólo en un sentido) 
entre una fuente RS-232 . el microcontrolador y el adaptador de e1lace C011. El protocolo comienza 
cuando un robot envía un dato serial al microcontrolador. Después de recibir 8 bits, el dato se presenta 
en paralelo al adaptador de enlace, y se envía una señal lval. El adaptador de enlace envía una señal 
serial al transputer y cuando recibe un reconocimiento, envía una señal lack al microcontrolador para 
terminar la comunicación. 
13 
o 
a. 
:E 
w 
¡= 
MAX 232 MC8751 C011 
R,D 
IAck 
NIVEL DE 
RED/ENLACE 
DE 
DATOS 
T805 
.....--
Ack 
Figura 2.2. Protocolo a Nivel Físico 
NIVEL DE 
APLICACION 
El nivel de enlace/red es el responsable de establecer y mantener la comunicación entre un par de 
elementos en el sistema, incluso aunque no estén conectados directamente. 
El intercambio de datos entre el robot y el transputer se maneja como un protocolo punto a punto [6]. 
2.1.3 Arquitectura reconfigurable de una red de transputers para ol controlador de una CFM 
El esquema presentado en [6] supone que uno de los transputers está controlando a un robot, y en 
caso de que dicho procesador tenga un error, una ruta alterna permitirá que sea controlado por el otro 
transputer. 
En un trabajo posterior [9] se considera además de la reconfiguración por hardware (rutas alternas) la 
reconfiguración por software gracias al uso de canales virtuales y de una red de transputers totalmente 
conectada. 
La base de este trabajo fue la tarjeta 8008 la cual se encuentra alojaoa en una PC en modo pipeline 
(ver figura 2.3). Soporta hasta 10 transputers y todos ellos tienen sus enlaces conectados a un 
conmutador reconfigurable (IMS C004) 32x32, lo que permite establecer rutas de comunicación 
redundantes. 
14 
TARJETA IMS 8008 
, 5 6 2 o 4 7 3 8 9 
HOST - 510 
C=JBElBBBB • • 
RS-232 
ELEMENTO DE LA RS-23:! ELEMENTO DE LA 
CELDA DE CELDA DE 
MANUFACTURA 
PUERTO A PUERTO A 
MANUFACTURA 
RS-232 
ELEMENTO DE LA RS-232 ELEMENTO DE LA 
CELDA DE CELDA DE 
MANUFACTURA 
PUERTO B PUERTO B 
MANUFACTURA 
Figura 2.3 Distribución del hardware del controlador paralelo 
Para definir la topología base del controlador [9] , se siguieron los siguientes criterios: 
• Necesidades de aplicación: El controlador se comunica con todos los elementos de la celda y 
coordina sus acciones. 
• Redundancia de Hardware: Proporcionar un cuadro que permita implementar técnicas de tolerancia 
a fallas. 
• Optimización de la tarjeta: Como la celda de manufactura tiene varios elementos y es necesaria la 
redundancia en hardware, se maximizó el uso del espacio disponible en la tarjeta. 
Reconfigurabilidad: El controlador debe cambiar su configuración para ejecutar otros planes o aislar los 
elementos con error. 
La topología base (ver figura 2.4) consiste de cuatro transputers para manejar 4 elementos de la celda. 
Por cada elemento de la celda se considera que debe existir un transputer que lo controle. Existen dos 
enlaces por cada interfaz a los transputers, de tal manera que puedan ser accesados por cualquiera de 
ellos para la redundancia en hardware. 
El conmutador permite a los transputers T1, T2, T3 y T4 controlar cuatro elementos de la celda de 
manufactura. Existen dos enlaces desde cada interfaz a los transputers, por lo que puede ser 
accesada por cualquiera de los dos para redundancia en hardware. Esta topología tiene también varias 
rutas alternas que permiten al controlador cambiar su configuración. El transputer TS se tiene 
contemplado para usarse como monitor de todo el sistema, por lo c,ue está conectado a todos los otros 
transputers. Esto no es físicamente posible debido a que el transputer sólo cuenta con cuatro enlaces. 
pero se pueden implementar enlaces por software llamados enlaces virtuales . 
15 
Ti = Número de transpu1er 
SIOi = Número de inlcrfacc SIO 
Figura 2.4. Topología base seleccionada 
Un enlace virtual es una conexión entre transputers que usa varios enlaces físicos y que se 
implementa gracias a ruteo de mensajes a través de la red. 
Para proporcionar la capacidad de reconfiguración del controlador y poderse adaptar a los cambios 
debidos a planeación y fallas, se implementó redundancia en procesadores a partir de la topología 
base. La base de lo anterior es el uso del conmutador IMS C004 como se muestra en la figura 2.5. 
o so 
2 
T1 
S1 S2 S3 S4 S5 S6 
1 2 1 2 2 1 2 1 2 1 2 .... SIO 
2 
o 3 o 3 o 3 o 3 o 3 o 3 
IMS C004 
Puntos de conexión del C004 
Número del enlace correspondiente al transpuler conectado en la ranura ( slot) 
sx = número de la ranura (slot) en la taf)eta IMS 9006 
S7 S8 S9 
2 2 
o 3 o 3 o 3 
19 
Figura 2.5. Relación de los puntos de conexión del C004 para obtener la topología base 
Los transputers vienen por fabricante , conectados en forma de pipeline, las conexiones para el pipe 
line son las que se forman con los enlaces 2 y 1 de cada transpute1·. Para poder emplear el resto de los 
16 
enlaces se configura un archivo con las conexiones extras. Un ejemp'.o de una conexión extra en la 
figura es la que va del transputer T1-enlace3 al S101-enlace0 . por medio de las entradas de 
comunicación 1 O y 11 del conmutador C004. Este nuevo enlace es una ruta alterna para llegar al S101 
además de la que se forma del pipe original con la ruta transputer T1-enlace2 y S101-enlace1. 
En la topología base se establecieron 4 rutas alternas (lineas gruesas). de tal manera que cada 
transputer tiene dos enlaces con su interfaz 1/0 correspondiente. 
En la figura 2.6 se muestran los cinco enlaces virtuales que usa el controlador. lo que completa la red 
de transputers interconectada. Dos de los enlaces se usan para el proceso monitor de TS. el cual 
necesita comunicación con cada uno de los otros procesadores del controlador. El resto de los enlaces 
virtuales se usan para implementar la conexión entre los procesadores y el controlador. Esta red 
totalmente conectada es necesaria para los requerimientos del nivel de~ aplicación. 
RLTTA ALTERNA 1 ¡f'· • .,. .... • • ~ = 
~ 
u 
.... 
\ 
.. .. 
'. 
\ 
.. 
IIIITA ALTERNA 2 
! 
.. ... 
• 1 
"• /. • • ••·•"•' • • •• • ....... • s •• • • JI 
RUTA ALTERNA 4 
Ti = Número de transputer 
S!Oi = Número de interface SIO 
[nlacl':-. 101alrnen1e nnualc~ 
En\acc::s lis1cos. car, colocac1oncs de canales v1nualcs 
-············ Enlaces Íls1cns. oor1 colocac1oncs de canales direc1os 
Figura 2.6. Enlaces de comunicación 
El nivel de aplicación tiene dos funciones principales: ejecución y supervisión. La ejecución recaerá en 
un sistema multiagentes, mientras que la supervisión está implementada por un monitor y bloques de 
recuperación. La principal motivación del uso de un sistema multiagentes inteligente para controlar la 
celda de manufactura, es incrementar la flexibilidad [191[20]. Lo anterior será posible gracias a que la 
red de transputers está completamente conectada a través de los e,nlaces virtuales. 
17 
El sistema de supervisión es el responsable de implementar un software tolerante a fallas. Para la 
implementación . debe involucrarse el uso de la redundancia tanto en hardware como en software. 
2.2 Puntos susceptibles a error en el controlador de la celda de manufactura 
Para continuar con el proyecto se debe desarrollar software que permita a los procesadores interactuar 
entre ellos con el propósito de ejecutar un plan de actividades el cual se recibe por medio de la interfaz 
con el usuario. Así. la filosofía funcional se resume en recibirun plan ce actividades. ejecutar el plan de 
actividades. monitorear la ejecución de las mismas y tolerar fallas. 
En el sistema de manufactura, las fallas pueden ser de hardware o de software. Estas pueden ser 
tratadas por medio de la redundancia de componentes o por reconfiguración de sus elementos. Es por 
esto que el sistema tolerante a fallas debe detectar y localizar la falla para después aislarla (evitando 
su propagación) y recuperarse de ella. Un sistema de comunicación basado en un "bus" único entre 
robots es muy vulnerable a fallas, por ello el uso de una red con múltiples caminos y capacidad de 
reconfiguración disminuye la vulnerabilidad del sistema de comunicaciones. 
Tomando como base la topología elegida en [9], un transputer monitor debe estar conectado a todos 
los demás. De esta manera existe un procesador que actúa corno árbitro para determinar si los 
canales de comunicación o alguno de los transputers falló. Esto no podría ser posible físicamente 
porque los transputers solo tienen cuatro enlaces, pero pueden implementarse rutas extras por 
software por medio de rutas virtuales. 
Debido a las características de la tarjeta IMS 8008., sólo un transputer puede establecer comunicación 
con el huésped. Dicho transputer puede tener otras funciones, ya sea como controlador de un 
elemento de la celda ó como el monitor de los procesos. 
La topología base de la red contempla un transputer raíz conectado a una malla de cuatro transputers 
y dos módulos SIO [1 O]. El módulo SIO es la interfaz que se va a e1cargar de hacer el intercambio de 
mensajes entre el controlador formado por una red de transputers y el sistema de robots. Cada SIO en 
la topología base está conectado a dos transputers para el manejo de dos elementos de la celda, lo 
cual permite tener rutas alternas entre los robots y el controlador. 
El hardware presentado en [9] contempla el uso de rutas alternas las cuales se podrían utilizar en caso 
de fallas, La topología base puede cambiar entonces a otra que conserve las características de 
comunicación entre los elementos de la red de transputers y los elementos de la celda (ver figura 2.2). 
En el caso de la redundancia en Software. se plantea en [9] el uso de canales virtuales y 
reconfiguración de procesos. 
18 
La redundancia en el software se usará para darle a cada procesador la capacidad de ejecutar una 
copia de otra tarea de procesamiento del sistema en caso de falla. El estado de cada tarea del sistema 
se almacenará al final de cada cambio significativo en paralelo. De esta manera se puede recuperar el 
estado del sistema a partir de un bloque de recuperación después de que se detecte una falla 
(recuperación de error hacia atrás [2]). 
Para que fuera posible la reconfiguración por sotfware es necesaria una conectividad mayor a la 
proporcionada por hardware, por lo que se optó por el uso de canales virtuales (ver figura 2. 7). Un 
canal virtual es un canal entre dos procesos localizados en procesadores que no tienen conexión 
física, es decir que no están unidos por un canal directo. Los procesos se enlazan por ruteo a través de 
procesadores intermedios que están conectados físicamente y que permiten establecer una ruta del 
origen al destino. Los canales virtuales permiten implantar redes de topologías arbitrarias que pueden 
ser configuradas y modificadas dinámicamente. 
u a 
u.. .. /. ........ -··- - .... ·-· - - ·~ - = = - - j 
RUTA ALT[R!'IA 4 Enl;iccs lotalmenie v,rtuales 
Ti= Número de Lransputer Enli\ces lis1cos. con c:Jlocac1oncs de canales v1nualcs 
SIOi = Número de interface SIO ••.•• • ••.•••. Enlaces lis1cos. coo rnlocilCIUncs de i.:anales dircc1os 
Figura 2.7. Topología con Rutas Alternas y Canales Virtuales 
De lo anterior podemos deducir que los errores de los cuales es neceisario recuperarse para que el 
sistema continúe funcionando son: 
19 
• Falla en alguno de los enlaces entre procesadores. La conexión física entre un procesador y otro 
es el medio de comunicación para enviar instrucciones a un robot y para coordinar sus acciones 
con otro controlador, por lo que no debe perderse dicha comunicación 
• Falla en alguno de los procesadores. El elemento principal de,I controlador es el procesador 
(transputer) ya que es el elemento que ejecuta el plan de trabajo en conjunto con los otros 
procesadores. 
• Falla en alguno de los procesos. Aunque el procesador no falle, e~; posible que el proceso que esté 
ejecutando se quede en espera infinita y bloquee todo el funcionamiento de la celda, lo que podría 
evitarse si otro proceso tomara su lugar 
• Desconocimiento del estado global del sistema. La ejecución del plan de trabajo es de forma 
dinámica y paralela, ya que mientras una parte del controlador está ejecutando ciertas 
instrucciones . otra parte puede estar ejecutando otras que son independientes de la primera, por lo 
que es necesario conocer el estado global en caso de reiniciar el sistema. 
Para poder implementar la tolerancia a fallas se tiene que partir de las siguientes premisas: 
• El paso de mensajes se hace por las rutas principales pero pued,en hacerse también rutas alternas 
(redundantes) entre los procesadores. 
• Un sistema de monitoreo se ejecuta en un transputer . recibiendo periódicamente el estado de 
cada elemento de la celda. 
• Los procesadores deben ser capaces de ejecutar varios procesos concurrentemente para que . si 
hay una falla, otro procesador tome su lugar. 
• Cada transputer controla un robot con un código primario o principal, y tiene un área auxiliar en 
donde reside el bloque de recuperación de otro transputer. corno se muestra en la figura 2.8. La 
versión primaria del código siempre se usa, a menos que falle una prueba de aceptación o se 
detecte que expiró algún tiempo límite de comunicación. En el caso de que la falla sea de un 
procesador, el código auxiliar localizado en otro procesador toma el control del elemento de la 
celda correspondiente. 
• El plan de trabajo debe cargarse desde un principio tanto en la parte principal del procesador como 
en la parte secundaria 
• Debe definirse un tiempo finito de ejecución para poder detectar retardos erróneos 
20 
..... 
Q.) -::, 
Cl. 
1/) 
e: 
ctl ..... 
1-
Q.) 
"O 
ctl . ¡;: 
o 
E 
Q.) 
~ 
Datos Datos 
Principales Auxiliares 
Codigo Codigo 
Principal Auxiliar 
Micro Kernel 
Figura 2.8 Estructura del Agente 
Como se puede concluir, los elementos que sirven como base de la implantación del sistema tolerante 
a fallas de la celda de manufactura son el procesamiento paralelo y distribuido de una red de 
procesadores (transputers) y la redundancia que se puede obtener de la topología base. En el 
siguiente capitulo se describe la tolerancia a fallas en este tipo de sisti~mas 
21 
3. Tolerancia a Fallas en Una Celda de Manufactura 
Actualmente existe una creciente preocupación por hacer más confiables los sistemas 
computacionales de tal manera que tengan un nivel aceptable de servicio y que pueda ser mantenido 
en presencia de fallas. En el mejor de los casos , un sistema debe ccntinuar operando sin perder su 
funcionalidad, y en el peor de los casos, puede seguir funcionando con una pequeña degradación en 
su desempeño. La tolerancia a fallas es la capacidad que tiene un sistema de operar correctamente en 
presencia de falla, y es deseable que esté presente en aplicaciones como sistemas de navegación, 
sistemas de control, sistemas computacionales, etc. 
La ventaja de tener redundancia y alta respuesta en los sistemas de procesamiento da la pauta para 
poder detectar, aislar y recuperarse de fallas de hardware. Los múltiples enlaces de comunicación con 
los que cuenta el transputer, lo hace un atractivo procesador sobre el cual construir sistemas tolerantes 
a fallas. Ofrece flexibilidad en sus conexiones, y puede proporcionarse redundancia en forma robusta y 
todo esto en tiempo real. 
En este capítulo se describen técnicas de tolerancia a fallasen software y hardware. Se describe 
también el uso de distintas formas de redundancia y se hace referencia a algunos conceptos de 
paralelismo y de programación del transputer, que es el elemento procesador de la celda. Finalmente, 
en base al paralelismo y redundancia que proporciona la arquitectura del transputer y la 
reconfigurabilidad, se implementa la tolerancia a fallas eri una Celda Flexible de Manufactura 
3.1 Tolerancia a Fallas en Sistemas Paralelos y Distribuidos 
Los sistemas paralelos y distribuidos se vuelven cada vez más presentes en una gran variedad de 
áreas de aplicación las cuales incluyen bancos, sistemas financieros, control de tráfico aéreo, 
tecnologías médicas y sistemas críticos. Los sistemas distribuidos se caracterizan por tener sus 
componentes distribuidos geográficamente , los cuales deben cooperar correctamente entre ellos para 
llevar acabo un objetivo en común. 
A medida que crece el número de componentes de un sistema también se incrementa la probabilidad 
de que alguno de sus componentes falle. Aunque las fallas en un sistema distribuido pueden ser 
normalmente toleradas una vez que han sido identificadas. una falla no identificada puede resultar en 
el mal funcionamientos del sistema o incluso en la pérdida del mismo. El evitar el mal funcionamiento 
22 
del sistema es la motivación de la existencia de la tolerancia a fallc,s en los sistemas paralelos y 
distribuidos. 
3.1.1 Definición de falla 
El ciclo de mal funcionamiento de un sistema es el siguiente : primero se genera una falla ( daño que 
normalmente es un defecto físico o imperfección que ocurre dentro de un componente ) de Hardware o 
Software, por una debilidad en el componente en particular. La falla generará un error que en si es la 
manifestación de la falla, el cual puede ser un cálculo erróneo ó una unidad de información incorrecta. 
Finalmente el error ocasiona un mal funcionamiento del sistema, como una acción que no se ejecuta 
como se esperaba ya sea en calidad o en cantidad, y que finalmente es lo que percibe el usuario [4]. 
La tolerancia a fallas es la c:apacidad del sistema de seguir funcionando apropiadamente después de 
que ha ocurrido una falla. 
Un error es temporal por naturaleza. Puede ser latente o detectado: un error es latente mientras no se 
ha reconocido como tal; se· dice que ha sido detectado cuando se ha identificado ya sea por los 
mecanismo de detección de error que analizan el estado del sistema o por el efecto del error sobre el 
servicio. Generalmente un error propaga otros errores nuevos . dentro d,~ otras partes del sistema. 
Las fallas pueden clasificase como 
• Fallas francas: 
• Fallas transitorias: 
• Fallas temporales y; 
• Fallas bizantinas 
3.1.1.1 Fallas francas 
Las fallas francas (crash en inglés) se pueden presentar en cualquier momento . En el instante en que 
un elemento tiene la falla, dE~tiene todas las operaciones que estaba realizando y no realiza nada mas 
a partir de ese momento a menos que sea reparado y reinicializado. Desde el punto de vista de 
enlaces de comunicación, el enlace no se considera operacional si es incapaz de transmitir algún 
mensaje. Desde el punto de vista de procesos, éste deja de ejecutarse y , cuando asi sea el caso, deja 
de enviar mensajes. Ejemplos de este tipo de fallas son la falla de un proceso, un interbloqueo en el 
sistema. una ruptura de un cable. así como una falla del controlador. 
23 
3.1.1.2 Fallas transitorias 
En las fallas transitorias, el proceso puede producir un resultado falso pero continúa trabajando 
normalmente; un proceso pL1ede perder un mensaje pero libera el resto de los mensajes que pasan por 
él. Aunque los resultados pueden estar dentro del marco especificado, pueden estar ausentes. Como 
ejemplos de fallas transitoria.s está la pérdida de un mensaje, o la supresión de un proceso para evitar 
un interbloqueo. A este tipo de falla también se le conoce como intermitente o de omisión. 
3.1.1.3 Fallas temporales 
Las fallas temporales se llaman también fallas de temporización o desempeño. Estas fallas están 
ligadas a la noción de tiempo y descansan sobre la existencia de un especificación precisa de 
comportamientos temporales.. El mensaje llega antes o después del momento previsto. Ejemplos de 
estas fallas son el retardo de un mensaje, un reloj muy rápido, o la sobrecarga de un proceso que 
ocasiona un adelanto del vencimiento de su ejecución. 
3.1.1.4 Fallas temporales 
Las fallas bizantinas reúnen a todas las fallas no consideradas en las categorías anteriores. Se 
conocen también como fallas universales o maliciosas. Todo comportamiento fuera de lo especificado, 
es calificado como un comportamiento bizantino. Por ejemplo: un cambio en la política del orden en las 
transmisiones es una alteración de especificaciones y , por lo tanto . una falla bizantina. 
En la figura 3.1 se muestra la jerarquización del tipo de fallas que puede!n ocurrir en elementos como 
procesadores. enlaces comunicación , interfaces, etc., que son elementos que pueden integrar una 
celda de manufactura y que ya se describieron en párrafos anteriores 
24 
Fallas transitorias 
(omisión de transmisión) 
Fallas Francas (Crash) 
Fallas temporales 
(omisión de recepción) 
Omisiones Generales 
Fallas arbitrarias o biizantinas 
Figura 3.1. Tipos de Fallas 
En el momento del diseño de los diferentes componentes de un sistema tolerante a fallas. es común 
tomar en cuenta las hipótesis que involucran un solo tipo de falla, como alguna de las que se señalaron 
anteriormente. De esta manera el sistema es tolerante al tipo de falla escogida. Una de las hipótesis 
más frecuentes es la tolerancia a fallas de omisión. 
3.1.2 Características de un sistema tolerante a fallas. 
Para poder certificar que un componente no funciona bien. primero se tiene que definir qué es lo que 
ese componente debe hacer. Eso implica que es necesario establecer la especificación del supuesto 
comportamiento del sistema. 
Durante el diseño y la implementación de un sistema es posible que las especificaciones cambien. Una 
vez que se cuenta con la definición de cómo debe comportarse el sistema se tiene un criterio para 
juzgar el funcionamiento del sistema. 
La especificación debe ser exacta, consistente, completa y autoritativa. Por exacta queremos decir que 
no deben existir circunstancias para las cuales no se pueda distinguir un funcionamiento aceptable de 
uno inaceptable. Una especificación es autoritativa desde el punto de vista que no debe tener dudas 
sobre el buen o mal funcionamiento del sistema y no admite Jna autoridad mayor. Se considera 
completa si esta definido para todas las posibles circunstancias. Así mismo debe de ser capaz de 
tomar una decisión aunque las circunstancias produzcan situaciones conflictivas. 
25 
Finalmente el sistema tolerante a fallas contará con alguna o varias de lé1S siguientes características: 
• Confiabilidad: Es la probabilidad condicional de que el sistema actúe correctamente dentro de un 
intervalo de tiempo, si se asume que al inicio del intervalo el sistema se comportó correctamente. 
Este tipo de característica es deseable en un sistema donde es intolerable cualquier mal 
funcionamiento, incluso por lapsos muy pequeños. 
• Disponibilidad: Es la probabilidad de que el sistema opere correctamente y se encuentre disponible 
para llevar acabo sus funciones en cierto instante de tiempo (a difernncia de la confiabilidad que se 
refiere a un periodo de tiempo). Depende de qué tan frecuente se encuentre inoperante el sistema 
y qué tan rápido se recupere. 
• Seguridad: Es la probabilidad de que se ejecute un sistema sin que dañe otras partes del mismo; 
en otras palabras , si el sistema falla , que falle de manera segura. 
• Ejecución: Es la probabilidad de que el desempeño del sistema permanezca arriba de cierto nivel 
operativo. 
• Mantenimiento: Es la forma de cuantificar qué tan fácil es reparar un sistemacuando falla; es decir, 
la probabilidad de que un sistema regrese a su estado operacional em cierto tiempo. Debe tomarse 
en cuenta de que para llegar al punto de operación normal al ocur'ir una falla debe pasar por su 
localización, reparación y finalmente operación normal. 
• Pruebas: Es la facilidad de hacer pruebas de manera integral en el sistema para identificar y 
localizar un problema específico. 
Algunos sistemas no necesitan de tolerancia a fallas debido a la poca importancia del tiempo de 
recuperación que puedan tener o a lo poco crítica que sea su operación en tiempo real. Las 
aplicaciones que requieran tolerancia a fallas pueden clasificarse como sigue: 
• Aplicaciones de larga vida, donde se requiere de un 95% de operación, como en los vuelos 
espaciales. 
• Aplicaciones de cálculos críticos, donde los cálculos efectuados durante la operación son muy 
importantes para el buen comportamiento del sistema. como las referentes a la seguridad humana. 
limpieza del ambiente, protección de equipo, sistemas de control industrial, etc. En estos casos la 
tolerancia a fallas es muy útil ya que simplifican mantenimientos coslosos ó difíciles de ejecutar. 
• Aplicaciones de alta disponibilidad, en los que se debe recibir el servicio en el momento en que se 
solicita. 
26 
En el caso que nos compete, como en cualquier sistema de control, tenemos una aplicación donde es 
necesario que todos los componentes del sistema trabajen correctamente la mayoría del tiempo, o en 
caso de que alguno fallara, llevar al sistema a un estado seguro para poder reiniciar posteriormente. 
Cuando ocurre una falla en un sistema, es necesario que cuente con las herramientas necesarias para 
poder enfrentarse a ellas. Estas herramientas pueden dividirse en módulos que se encargan de las 
siguientes funciones: 
• Detección del error: para volver un sistema tolerante a fallas, hay que definir una estrategia para 
detectar los errores que han provocado una falla. 
• Estimación de los daños: una vez que se ha detectado el error, hay que medir el nivel de daños 
ocasionados al sistema. 
• Restablecimiento del error: tienen como objeto transformar el estado erróneo del sistema en un 
estado no-erróneo. gracias al cual es sistema pueda volver.ª funcionar. 
• El manejo de la falla y el restablecimiento: se define la activación de los servicios redundantes de 
manera que se pueda asegurar la continuidad del servicio. 
3.1.3 Detección de error. 
La mayoría de las técnicas de detección de error se basan en excepciones, las cuales son 
comportamientos del sistema que están fuera de la especificación ::le funcionamiento. Cuando se 
alcanza una excepción, se invoca al manejador de excepciones , el cual tomara una decisión de 
acuerdo a la excepción en particular. 
Consideremos el sistema S, el cual proporciona el servicio f(s). Si el comportamiento de S no es el 
especificado entonces S ha fallado. 
Como el objetivo de la tolerancia es prevenir las fallas, puede tomarse ,~n cuenta interceptar las salidas 
producidas por el sistema S y verificar si sus resultados se encuentran dentro de las especificaciones. 
Esto implica el diseño de un nuevo sistema S' el cual consiste de un módulo de servicio (igual al 
original) pero con un módulo de verificación de resultados. 
La verificación sólo se basa en la especificación del sistema. Como no debe haber fallas entre el 
sistema y la verificación, deben se independientes. Lo anterior es dificil de llevarse acabo en la 
realidad, por lo que los sistema sólo usan verificaciones de aceptación, que es lo que se considera un 
comportamiento aceptable del sistema., lo cual no ofrece ninguna garantía de ausencia de errores no-
detectados. 
Existen varios tipos de verificaciones, dependiendo del momento en que se hagan. Es más usado es/a 
verificación de último momento. Este tipo de verificaciones se hacen después de que se generaron los 
27 
resultados justo antes de que los libere el sistema. Esto es porque Jna vez que el resultado dejó el 
sistema. no puede aplicarse ningún mecanismo de tolerancia a fallas; y también porque se asegura 
que ninguna actividad del sistema queda sin verificar. 
La mayoría de los sistemas usan verificaciones que pueden ser cualquiera de los siguientes: 
• Verificación de réplica: Involucra una copia de la actividad que se está verificando para encontrar 
errores de consistencia El tipo de réplica depende del tipo d1! falla a detectar. Este tipo de 
verificación es de las más poderosas pero también de las más caras para detectar errores 
• Verificación de tiempo: Se usa cuando la especificación indique limitantes de tiempo para proveer 
el servicio. Si alguna parte del servicio no se proporciona en el tiempo especificado se produce una 
excepción de timeout que indica la falla del componente. 
• Verificación de regresión: Se usa en sistemas donde hay una relación uno a uno entre los datos de 
entrada y los datos de salida. A partir de la salida del sistema, calcula la entrada que debió 
producirla. y compara las entradas calculadas con las entradas actuales. en caso de diferencia se 
alcanza una excepción. 
• Verificación de codificación: Se basa en la redundancia que existe en la representación de un 
objeto que se usa dentro del sistema. Dentro de los objetos se introducen datos redundantes los 
cuales tienen una relación fija con los datos que representan el valor del objeto. De esta forma 
pueden detectarse los errores que resulten de una corrupción de cualquier tipo de dato. 
• Verificación de razonamiento: Se verifica si el estado de los diferentes objetos en el sistema es 
"razonable", en base al uso y propósito de dichos objetos. 
• Verificaciones estructurales: Se refiere a la verificación de las estructura de datos en un sistema 
computacional. Dicha verificación puede ser de la integridad semántica de los datos, que se refiere 
a la consistencia de la información contenida en la estructura de datas; o de la consistencia de la 
estructura. 
• Verificaciones de diagnóstico: Están involucrados específicamente con la verificación de los 
componentes del sistema, más que en la verificación del comportamiento del sistema mismo. 
Involucra probar un componente con un conjunto de entradas cuyas salidas sean conocidas 
3.1.4 Estimación de los daños. 
Antes de que algún método de recuperación de error empiece a ejecutarse a partir de que se ha 
detectado el error, es necesario que el sistema adopte estrategias de estimación de daños con el 
objeto de establecer más precisamente la extensión del daño dentro del sistema. 
28 
Estas estimaciones se basan en la estructura sobre la cual el diseñador asume que el sistema estará 
funcionando. debido a que esta estructura es la que le permite al diseñador identificar la posible 
actividad que puede seguir el sistema después de una transición de error, y los posibles flujos de 
información. La estructura se deriva de las restricciones conocidas o a~;umidas. del flujo de información 
del sistema. De esta manera se confina el daño causado por una falla. 
La técnica más simple y más pesimista para una estimación de daños es la estática, la cual consisten 
en asumir que una vez que se ha alcanzado una excepción. todos los objetos involucrados . desde el 
inicio del cálculo hasta que se alcanzó la excepción, han sido dañados. 
Hay otras técnicas menos pesimistas que intentan proporcionar medie a dinámicas dentro del sistema 
operacional para calcular un estimado del daño. Esto involucra medidas que exploren las estructuras 
de datos del sistema y determinen el tamaño del daño. Como dicha exploración tiene que detectar 
errores, puede hacerlo con las técnicas antes mencionadas. 
Estas medidas de exploración son difíciles de implementar de una forma efectiva en un sistema 
computacional y normalmente sólo se usan en situaciones muy especificas y simples. En la práctica 
las situaciones inesperadas y complejas requieren de algunaforma de asistencia manual para 
determinar el nivel de daño que fue causado por una falla. 
3.1.5 Recuperación del error. 
Una vez que se ha detectado el error y determinado el daño ocasionado. se puede restablecer el 
servicio para continuar operando. 
Una vez que se alcanza una excepción, se invoca al manejador de excepciones. Si el diseñador puede 
predecir los posibles errores de una excepción en particular. se habla de un daño anticipado. de otra 
forma es un daño no anticipado. 
En los daños anticipados es posible implementar una recuperación de error eficiente, mientras en un 
daño no anticipado se adopta una política de supresión de errores lo que implica reemplazar el estado 
total del sistema (reinicializar). 
En general existen dos técnicas de recuperación:. 
• Recuperación hacia adelante: Se pone el sistema en un estado de coherencia futura el .cual no ha 
sido visitado. Esta técnica es eficaz cuando los algoritmos fun::ionan en ambientes que son 
capaces de predecir situaciones previsibles. 
• Recuperación hacia atrás: Tiene por objetivo regresar el sistema a un estado anterior al de la 
aparición de la falla. 
29 
3.1.6 El manejo de la falla y el restablecimiento. 
Aquí se describen las técnicas para erradicar las fallas del sistema de tal forma que el sistema pueda 
seguir funcionando. Esta técnicas deben proporcionar una forma de tratar a la falla . Se divide en dos 
etapas que son la ubicación de la falla y la reparación del sistema. 
Una de las .. estrategias más fáciles es la de ignorar la falla y esperar que todo se comporte bien. 
Para poder tratar una falla hay que conocer su ubicación; la excepción debe indicar claramente el 
componente que falló . 
Cuando se ha localizado la falla. uno o más componentes del sistema se consideran como averiados. 
Para prevenir que estos componentes alteren el comportamiento futuro del sistema se hace una 
especie de reparación del sistema. es decir , se intenta reparar el componente averiado. Estas técnicas 
de reparación se basan en reconfigurar el sistema de tal forma que las características de los 
componentes sospechosos sean modificadas. 
La técnicas de reparación se pueden clasificar en 
• Manuales: las acciones las realiza algún agente extremo al sistema 
• Dinámicas: las acciones son realizadas por el sistema. pero solo en respuesta a instrucciones 
dadas por el medio ambiente 
• Espontáneas: todas las acciones son iniciadas y realizadas por el mismo sistema. 
Se debe tomar la decisión de sí puede reanudarse la actividad interna del componente después de que 
la excepción ha sido manejada por el sistema. Si no puede reanudarse. se debe señalar una excepción 
que termine la actividad del componente. 
3.1.7 La redundancia dentro de la tolerancia a fallas. 
Las soluciones de tolerancia a fallas caen en dos categorías: 
• enmascaramiento de fallas y 
• detección, diagnóstico y recuperación de fallas . 
En el enmascaramiento de fallas, el comportamiento de un componente erróneo se enmascara . 
normalmente por medio de la votación de la salida de cálculos redundantes . 
Una de las formas más comunes de obtener tolerancia a fallas es la redundancia , que consiste en el 
uso de información, recursos o tiempo, adicionales a los necesarios para la operación normal. En los 
sistemas computacionales, la redundancia puede obtenerse duplicando hardware. software y/o datos 
3.1. 7 .1 Redundancia en Hardware 
30 
La redundancia en hardware consiste en la replicación de componentes en alguna de las sus tres 
formas; pasiva. activa e híbrida [11]: 
En la redundancia pasiva. se enmascara la ocurrencia de fallas pero no ofrece detección, aislamiento 
o reparación del módulo que falló. No se necesita ninguna acción del sistema o del operador. 
Normalmente usa mecanismos de votación para enmascarar. Un com.~onente llamado votador evalúa 
el comportamiento de los módulos restantes; si decide que alguno falló, elige a alguno de los restantes 
para tomar su lugar y así enmascarar la falla, asegurándose de que, cada memoria tiene los datos 
correctos. La desventaja es que se genera un punto único de falla ya que al fallar el votador, falla todo 
el sistema por lo que la confiabilidad recae en un sólo elemento. Para evitar esto puede haber 
redundancia también en los votadores. 
Un método común de redundancia pasiva es el triple modular redundancy o TMR. El objetivo del TMR. 
usado en el ambiente pasivo, es enmascarar un falla triplicando el hardware y haciendo una votación 
sobre los resultados. La forma más típica de votación en hardware es lo que vota la mayoría. como se 
ilustra en la figura 3.2. Un esquema más confiable del TMR se muestra en la figura 3.3 Aquí todos las 
rutas están triplicadas tantas veces como partes tiene el sistema. Inminentemente debe alcanzarse un 
resultado. Esta técnica impide que los datos sean corrompidos. 
MODULO 1 
ENTRA DA 
MODULO 2 V E:t 
SALIDA 
MODULO 3 
Figura 3.2 Redundancia Modular Triple (TMR) con un votador ideal 
31 
MODULO 1 voTA3~ 
ENTRADAS 
MODULO 2 
MODULO 3 E7 
Figura 3.3 Redundancia Modular Triple (TMR) con votadores no ideales 
En la redundancia activa o dinámica, no se enmascara la falla , pero se detecta su localización de tal 
manera que un componente extra pueda ser cambiado para reemplazar al componente con falla. Esta 
técnica detecta la existencia de fallas y ejecuta una acción para remover o aislar el hardware dañado 
del sistema. Para poder llevarlo a cabo es necesaria la capacidad de reconfiguración. Se usa en 
aplicaciones donde pueden aceptarse temporalmente resultados erróneos o retardos mientras el 
sistema se reconfigura. 
MODULO 1 
OETECCION 
DE ERROR 
CON MU- SALIDAS ENTRADAS 
MODULO 2 TADOR 
Na 1 
DETECCION 
DE ERROR :;::::; CD 
• o • 
MODULO 3 
DETECCION 
DE ERROR 
Figura 3.4 Redundancia Activa usando la replicación de espera 
Una técnica de replicación activa es el reemplazo . En éste caso, una unidad se encuentra en 
operación mientras que una o varias unidades más se encuentran en espera. Se usan diferentes 
32 
esquemas de detección de fallas para determinan cuando remover la unidad de la operación y usar el 
componente extra para reemplazarla, ver la figura 3.4 
Esta técnica regresa el sistema a completa operación después de una falla. pero puede ser necesario 
que se interrumpa el procesamiento mientras el reemplazo entra. l::sta interrupción del procesamiento 
puede no tolerarse. por lo que se usa los que se llama "hot swapping" . En esta técnica el elemento que 
va a reemplazar al que está operando, opera al mismo tiempo que la unidad que está en línea y está 
preparado para ocupar su lugar en cualquier momento. 
ENTRADAS 
o 
D 
o 
SALIDAS DE 
ELEMENTOS 
~----,ACTIVOS 
2 
e, 
• 
o 
N 
RESPALDO 
---l~ 1 1----~ 
• • 
DETECTOR DE DESACUERDOS +----------, 
o • o o o o 
CONMUTADOR 
o o o 
IDENTIFICACION 
DE DESACUERDO 
Figura 3.5 . Redundancia N-Modular (NMR) 
SALIDA 
El concepto básico de la replicación híbrida es combinar las bondades de los métodos pasivo y activo 
para generar un sistema que tenga enmascaramiento de fallas, localización de la falla características 
de detección de falla así como posibilidad de hacer un reemplazo de: la unidad que ya no funciona. Usa 
una máscara para evitar generar resultados erróneos. y reconfiguración para remover el hardware 
dañado. Una de las técnicas más importantes es la redundancia N-modular, o NMR (N-modular 
redundancy), con refacciones o reemplazo, ver figura 3.5 
Esta técnica consiste de un núcleo NMR con un conjunto de recursos de respaldo. Este sistema 
permanece con configuración de NMR básico hasta que el detector de desacuerdos determina que una 
33 
unidad ha fallado. Una vez que se identifica, la unidad errónea si= cambia y se reemplaza con un 
respaldo. Este tipo de replicación se usa en aplicaciones que exigen una alta integridad. 
3.1.7.2 Redundancia en Tiempo 
La redundancia en tiempo usa