Inicio Artículos Incorporación de seguridad autónoma a sistemas autónomos

Incorporación de seguridad autónoma a sistemas autónomos

Soldadura de objetos pesados mediante robots industriales

Autor: Bob Martin, Senior Staff Engineer, Microchip Technology

La adopción acelerada de tecnologías de inteligencia artificial y aprendizaje automático en sistemas cada vez más autónomos está determinando los requisitos de unos sistemas de seguridad más inteligentes en diversos sectores. El énfasis ha pasado del ahorro de costes a la comodidad y la seguridad para el usuario. Esto exige una capa completa de seguridad funcional formada por un coprocesador de seguridad con controladores de entrada/salida de confianza que funcionan conjuntamente para proteger el sistema. Los microcontroladores ofrecen una solución de bajo coste para implementar estos coprocesadores de seguridad en los que se centra la nueva generación actual de sistemas autónomos.

Funciones y especificaciones de seguridad autónoma

Los coprocesadores de seguridad ejecutan el modelo de aprendizaje automático instalado que acepta flujos de datos externos como vídeo, audio, datos del entorno o del operador; en algunos casos puede tratarse de todos estos flujos de datos al mismo tiempo. Estos flujos de datos deben ser de confianza de modo inherente.

De igual importancia es que los coprocesadores de seguridad confíen en la fiel reproducción de los estados de salida que generan para motores, relés, indicadores y otros actuadores. El procesador principal también debería estar en condiciones de confiar en estos controladores de entrada/salida (banda lateral) para tomar decisiones de forma inteligente y rápida si se produce un fallo.

Uso de microcontroladores como coprocesadores de seguridad

Los microcontroladores de 8 y 32 bits, que cuentan con el soporte de ecosistemas completos de desarrollo, se utilizan principalmente en cuatro áreas de seguridad funcional para las que se han creado las siguientes especificaciones normativas:

  • ISO262: Aplicaciones de integridad de la seguridad del automóvil (Automotive Safety Integrity Applications, ASIL) para aplicaciones de automoción
  • IEC 61508: Niveles de integridad de la seguridad (Safety Integrity Levels, SIL) para aplicaciones industriales
  • IEC 60730: Normas de seguridad funcional para electrodomésticos
  • IEC 60730: Seguridad funcional para equipos médicos

El ecosistema de herramientas de desarrollo presenta dos requisitos importantes. El primero es la aplicación de unos sólidos criterios de codificación durante el desarrollo y la compilación en el código de la máquina. Esto se efectúa mediante compiladores de seguridad funcional certificados según las normas ISO o IEC de seguridad funcional a través de entidades como TÜV SÜD, un reconocido proveedor internacional de ensayos. La segunda función imprescindible es analizar con detalle qué código se ha ejecutado y qué código se ha perdido durante un ciclo de ensayo típico. Esto exige recurrir a una extensión de cobertura de código.

Cómo funciona la seguridad autónoma

La principal interacción con el mundo exterior se realiza a través de capas de hardware, empezando por las interfaces directas del sensor y el actuador proporcionadas por los microcontroladores con seguridad funcional en el borde (Figura 2).

Estas son algunas de sus funciones más importantes:

Detección de tensión inadecuada (Brown Out Detect, BOD)

Muy pocos entornos operativos disponen de fuentes de alimentación perfectas. Los hornos de microondas y las impresoras láser pueden provocar parpadeo en la iluminación y se sabe que las grandes herramientas eléctricas disparan los disyuntores. Los sistemas autónomos deben saber con antelación que su fuente de alimentación va a fallar para conectar una fuente de reserva o activar datos críticos y estados de salida que aseguren la continuidad.

La circuitería de la función BOD en estos microcontroladores puede monitorizar continuamente la tensión de alimentación con el fin de reaccionar de dos maneras si disminuye el nivel. En primer lugar, la función VLM (Voltage Level Monitor) activará una interrupción cuando se cruce un umbral seleccionable, ejecutando así las tareas de apagado de emergencia inmediatamente antes de alcanzar el umbral de BOD. Cuando se llega al nivel de BOD, el dispositivo se mantendrá reiniciado hasta que desaparezca esta situación. También es posible determinar la causa del evento de reinicio para asegurar una estrategia de recuperación adecuada que puede ser distinta a la de un primer ciclo tras conectar la alimentación.

Temporizador supervisor con ventana

Los microcontroladores modernos utilizan temporizadores supervisores como mecanismo de recuperación en caso de fallo y su misión es acabar con un bucle infinito o un estado de bloqueo que no tiene salida excepto para tomar medidas drásticas. Las primeras versiones establecen un umbral de temporización, bien sea de segundos o milisegundos, que luego necesita algún tipo de “examen” del código ejecutado antes de alcanzar este umbral. Una vez identificado se reinició el umbral de temporización y se restableció la cuenta atrás. Los programadores perezosos utilizaban rutinas de servicio de interrupción periódica para actualizar los temporizadores pero estas rutinas se pueden seguir ejecutando aunque el resto del sistema esté atascado en algún punto de un bucle infinito. No hay un reinicio del sistema que resuelva esta situación.

El temporizador supervisor con ventana resolvió parte del problema ya que permite especificar la ventana de un servicio supervisor. De esta forma el temporizador supervisor no puede ser atendido con demasiada lentitud o rapidez. Esto dificulta confiar en un código conocido para que se ejecute con unos tiempos de retardo por debajo del umbral máximo.

Inspección del código de comprobación de redundancia cíclica (Cyclic Redundancy Check, CRC)

Un periférico de inspección del código CRC garantiza la integridad de la imagen del código programado. Es mucho más potente que una simple suma de control que se puede falsificar fácilmente con una manipulación matemática. Se configura un determinado bloque de hardware del microcontrolador para inspeccionar una sección del cargador inicial de la memoria del programa, la sección de la aplicación o toda la memoria flash. El periférico compara luego el resultado de su CRC con la suma de control correcta acoplada al final del espacio del código especificado. Si coinciden los dos números de 16 bits, esto verifica que el espacio del código no ha sido modificado. Si no hay coincidencia, se puede configurar para que genere una interrupción no enmascarable para seguir manejando el problema.

Periféricos GPIO (General Purpose Input/Output) de entrada verdadera

En los primeros microcontroladores, cuando se configuraba una patilla GPIO como salida, la única manera de comprobar que el nivel de tensión de la patilla (p.ej., 5V) era igual al valor del bit de control (p.ej., “1”) consistía en usar otra patilla GPIO configurada como entrada para leer el nivel de tensión. Es posible que una patilla GPIO configurada como salida no pudiera volver a leer la tensión real sino únicamente el valor escrito en ella; por tanto, el valor de “entrada” siempre coincide.

Las células GPIO de entrada verdadera ofrecen una conexión eléctrica por separado a un registro INPUT interno discreto que refleja el verdadero nivel fijado en la patilla. Si bien este nivel solo se puede leer como un “1” o un “0” lógico, aun así proporciona la información suficiente para validar lo que se ha escrito en el registro de control OUTPUT. Nunca debería producirse una discrepancia entre estos dos valores. Si hay una diferencia es porque hay un cortocircuito o circuito abierto en una determinada patilla GPIO que se debe manejar de forma apropiada.

Los microcontroladores con estas capacidades constituyen la base para una capa completa se seguridad funcional. Esta capa crecerá en importancia a medida que la automatización basada en inteligencia artificial y aprendizaje automático ponga más énfasis en la seguridad y la comodidad de la experiencia del usuario que en la producción del sistema y el ahorro en el mantenimiento.

funciones de seguridad autonoma

Figura 1. Funciones de seguridad autónoma en microcontroladores de 8 bits