Anexo III. Patrones Arquitectónicos para el Dominio Automovilístico Nombre: Patrón redundante homogéneo Contexto El patrón redundancia homogéneo (Homogenous Redundant) es un patrón que mejora la fiabilidad del sistema ofreciendo múltiples (dos) canales. Esos canales operan en secuencia. El patrón mejora la fiabilidad al mejorar el comportamiento frente a fallos aleatorios. Dado que la redundancia es homogénea (ambos canales son idénticos) por definición un fallo sistemático que se produce en un canal se produciría igualmente en el otro, por lo que no nos ofrece protección contra fallos sistemáticos. Problema El patrón redundante homogéneo da protección contra fallos aleatorios del sistema, para que este pueda continuar ejecutándose en presencia de fallos. El canal primario continuaría trabajando mientras no haya problemas. En caso de fallo en el canal, el sistema es capaz de detectarlo y cambiar al canal backup. Estructura La estructura del patrón homogéneo se muestra en la Figura. Se puede apreciar que el patrón modifica la arquitectura para contar con dos canales idénticos. Los elementos de validación implementan la política switch-to-backup, invocando el otro canal cuando un error es detectado en el canal que está en ejecución. Estructura del Patrón Redundante Homogéneo Consecuencias El patrón es conceptualmente simple y fácil de diseñar. Provee una buena cobertura contra errores aleatorios. Es útil para entornos donde la seguridad es un factor crítico y han de continuar operando incluso en presencia de fallos. Las desventajas del patrón son principalmente el alto coste de replicación y su baja cobertura a fallos sistemáticos. Además, dado que el sistema se ejecuta en un solo canal y cambia al canal en espera solo en caso de fallo, el cálculo realizado al detectarse el fallo se pierde. Además, o bien el dato de entrada se pierde también o hay un tiempo de rehacer ese cálculo, que debería tenerse en cuenta en algunas aplicaciones de tiempo real. 1 Anexo III. Patrones Arquitectónicos para el Dominio Automovilístico Nombre: Patrón de Triple Redundancia Modular Contexto El patrón de Triple Redundancia Modular (Triple Redundancy Pattern) o TMR es un patrón usado para mejora la fiabilidad y seguridad de los sistemas donde no hay estado libre de fallos. El Patrón TMR es un patrón que ofrece un número de canales impar (tres) que se ejecutan de forma concurrente en paralelo, cada uno verificando los resultados del resto. Se comparan los resultados de los distintos canales, y en caso de discrepancia, se aplica la política de mayoría-de-dos-tercios-gana (el resultado con dos votos gana). Problema El problema que trata de resolver el patrón de Triple Redundancia Modular es básicamente el mismo que el del redundante homogéneo, que es proveer protección contra fallos aleatorios, con la restricción adicional de que en caso de fallo el dato de entrada no debe perderse y no debemos consumir tiempo adicional en computar la respuesta en caso de fallo. Estructura La figura muestra la estructura replicada del patrón triple redundante modular. Cada canal individual contiene los objetos que procesan los datos de entrada en una serie de pasos de computación. Los canales no cotejan los resultados con el resto de canales en puntos estratégicos. Por el contrario, los canales operan completamente en paralelo, y solamente al final los resultados se comparan. El comparador implementa la política winner-take-all por lo que los dos canales que producen el resultado considerado correcto ganarán. Estructura del Patrón de Triple Redundancia Modular Consecuencias El patrón triple redundante modular solo puede detectar fallos aleatorios. Dado que los canales son homogéneos, por definición un fallo sistemático aparecerá en todos los canales. Dado que los canales están ejecutando en paralelo el sensor está replicado o al menos los tres canales son capaces de adquirir el dato, por lo que no hay pérdidas de datos en caso de fallo y no se necesita recalcular la salida. Este patrón añade el tiempo de computación del comparador afectando al comportamiento del sistema en el caso general. Por otro lado, otra desventaja del patrón es el alto coste de replicación. El patrón TMR es muy común en aplicaciones en las que los requisitos de fiabilidad son muy altos y compensan el coste de replicación. 2 Anexo III. Patrones Arquitectónicos para el Dominio Automovilístico Nombre: Patrón Sanity-Check Contexto El patrón sanity-check es un patrón muy ligero que provee de una cobertura mínima frente a fallos. El propósito del patrón sanity-check es asegurar que el sistema está operando de un modo razonable, aunque no sea del todo correcto. Es muy útil en situaciones donde la actuación del sistema no sea crítica (como una mejora opcional) pero que pueda causar daño si se hace de una manera incorrecta. En el patrón sanity-check utilizamos un sensor independiente (o un sensor de nuestro sistema que nos provee de otra manera de realizar el calculo sin usar el sensor principal) que verifica si el sistema ha de ser llevado a un estado libre de fallos. Muchos sistemas críticos tienen estados libres de fallo como condición para asegurar que el sistema es seguro en todo momento. Cuando disponemos de un estado libre de fallo y no se requiere un alto nivel de fiabilidad, entonces la seguridad del sistema se puede mantener a un coste bajo en relación a otros patrones. El principio básico por el que se rige este patrón es: si el canal del actuador falla, el canal de monitorización lo detecta. Si el canal de monitorización falla el sistema sigue funcionando correctamente. Problema El patrón pretende resolver evitar que el problema pueda causar “daños” cuando se detecten desviaciones menores o moderadas del valor del previsto y que no tienen impacto en la seguridad, proveyendo así un mínimo nivel de protección a un coste muy bajo. Estructura del patrón: La figura muestra la estructura básica del patrón sanity-check. Se puede apreciar el uso de un sensor adicional y de la monitorización del actuador que se traduce normalmente en comprobar el valor que realmente se está aplicando. Tanto el canal principal como el de sanity-check operan de manera concurrente. Estructura del Patrón Sanity-check Consecuencias El patrón sanity-check es una solución de bajo coste que provee una cobertura mínima frente a fallos. Permite el reúso de otros sensores presentes en el sistema o el uso de sensores rudimentarios con el fin de detectar fallos. La comparación que realiza es normalmente una verificación para ver si el valor que realmente se ha obtenido esta dentro de un rango bastante amplio. Como resultado, la cobertura es mínima y no pretende replicar la precisión del canal principal. Esto significa que este patrón es aplicable en sistemas en los que hay un estado libre de fallos al que podemos llegar si la salida es muy distinta a la que se pretendía y en los que las pequeñas desviaciones que no son detectadas por el patrón no afectan a la seguridad del sistema. 3 Anexo III. Patrones Arquitectónicos para el Dominio Automovilístico Nombre Patrón Watchdog (perro guardián) Contexto El patrón watchdog es un patrón muy ligero que provee de una cobertura mínima frente a fallos. El patrón watchdog únicamente comprueba que los cálculos internos se están llevando a cabo satisfactoriamente. Esto significa que la cobertura frente a fallos es mínima, y un amplio rango de fallos no será detectado. Problema Los sistemas de tiempo real son aquellos en que se puede predecir la respuesta en el tiempo. En estos sistemas las salidas tienen un deadline en el que tienen que ser aplicadas. Si el cálculo acaba mas allá del deadline el resultado puede considerarse irrelevante o incorrecto. Si la salida llega demasiado tarde, el sistema no podrá ser controlado, se dice entonces que el sistema está en la región inestable. Estructura del patrón La estructura del patrón se muestra en la figura, en la que se puede apreciar su simplicidad. El canal principal trabaja de manera independiente al watchdog, y le envía “pruebas de vida” cada cierto tiempo al watchdog. A esto se le denomina “stroking the watchdog” (acariciar al guardián). El watchdog emplea la periodicidad del stroking para detectar si se ha producido un fallo. Muchos watchdog únicamente comprueban que el stroke se produce cada cierto lapso de tiempo y no se preocupan si el stroke llega demasiado pronto, por el contrario otros aseguran que el stroke llega exactamente en el instante previsto. Estructura del Patrón Watchdog Consecuencias El patrón watchdog es un patrón extremadamente ligero que raramente se utiliza solo en sistemas críticos. Es extremadamente bueno identificando fallos en la línea de tiempo, especialmente cuando una base de tiempo independiente guía al watchdog. Puede ser utilizado para detectar deadlocks en el canal principal. Dado que su cobertura es tan baja su efecto sobre la fiabilidad es prácticamente inapreciable y raramente se utiliza solo. 4