Título:Diseño y generación automática de
código para sistema de control distribuido sobre red CAN
Autor: Jorge
de la Flor Martin
Fecha: Agosto 2004
![]()
![]()
![]()
El diseño,
simulación e implementación de sistemas de control han adquirido una gran
relevancia en el entorno actual. La sencillez, fiabilidad, seguridad y
eficiencia son parámetros muy importantes a la hora de llevar a cabo este tipo
de tareas. En consecuencia, la aparición de herramientas informáticas que
permitan realizarlas supone un gran ahorro de trabajo y tiempo.
En un sistema
de control distribuido aparecen una serie de nodos que actúan como interfaz
entre el proceso a regular y dicho sistema. Estos nodos son gestionados por uno
o más controladores inteligentes, que generalmente son autómatas o PCs industriales, aptos para trabajar en las condiciones
que impone una planta de producción. Dado el desarrollo que han experimentado
los microprocesadores y las comunicaciones industriales, en la actualidad es
una práctica habitual la implantación de sistemas distribuidos. Este tipo de
sistemas está compuesto por un conjunto de módulos de control que se comunican
sobre un bus y que actúan como interfaz al proceso que se está controlando a
través de sus interfaces actuador-sensor. Cada
controlador posee un programa de control local, leyendo las entradas locales
con los sensores, comunicándose con otros módulos a través de la red y
calculando las salidas y escribiéndolas en los actuadores
locales. Distribuir esas tareas de gestión entre varios nodos incrementa
sustancialmente la potencia del sistema, siendo posible la resolución de nuevos
problemas que exijan una mayor capacidad de cómputo. Tal y como se ha comentado
anteriormente, todos los elementos del sistema están conectados por algún tipo
de bus de campo. Obviamente, sus características influirán notoriamente en el
rendimiento global del sistema.
En este
contexto surgen los sistemas empotrados, que son sistemas que funcionan de
forma independiente y aislada, teniendo incluso alimentación propia. El diseño
de tales sistemas se enfoca a un pequeño tamaño y consumo, lo cual obliga a
construir un software modular y que requiera tan pocos recursos como sea
posible.
En muchos
procesos industriales, el tiempo de respuesta ante una determinada acción o
alarma resulta crítico, debe poderse reconducir el sistema a un funcionamiento
normal dentro de un espacio de tiempo máximo. En este sentido aparecen los
sistemas de tiempo real, cuya principal característica es asegurar un tiempo
máximo de respuesta ante un evento. De este modo se garantiza un comportamiento
determinista, pudiendo reaccionar el sistema correctamente de forma
independiente a las condiciones en las que se encuentre.
Surge la necesidad
de crear herramientas para el diseño, simulación e implementación de sistemas
de control distribuido en tiempo real. Para llevar a la práctica un sistema de
este tipo deben seguirse una serie de pasos: especificar los objetivos, modelar
matemáticamente el proceso, validarlo,
diseñar el control, simular el sistema modelado junto con el controlador y
finalmente implementar el algoritmo de control.
Este proyecto
se enmarca dentro de una plataforma llamada RTF (Real Time Framework),
que está siendo desarrollada por el Departamento
de Ingeniería de Sistemas y Automática de la E.T.S.I.I e IT de Bilbao. Proporciona un entorno para
una sencilla generación de software de control distribuido. Comprende todas las
fases de diseño indicadas anteriormente, desde la especificación hasta la
generación de código. El análisis de la lógica de planificación de recursos
computacionales en entornos distribuidos será el mismo que el de dicha plataforma.
RTF constituye
una herramienta sin competencia en el mercado actual, ya que no existen
productos con las mismas funcionalidades, debido a que si bien existen
productos que cubren alguna de las fases de diseño, no dan soporte a todas
ellas de una forma integrada.
Este proyecto
constituye una revisión de la plataforma RTF citada anteriormente. Se centrará
en la creación de un software que permita especificar e implementar un sistema
empotrado de control distribuido en tiempo real, aplicándolo a un bus CAN (Controller Area Network) y a un sistema
operativo multitarea de tiempo real denominado VxWorks® que
aseguren una ejecución determinista de las tareas de alta prioridad, incluyendo
soporte para una tarjeta de adquisición de datos. Como muestra de
funcionamiento de la herramienta, se aplicara a dos casos de estudio
particulares, el algoritmo
de control de un robot móvil autónomo y
el modelo de proceso de una línea de tratamiento en caliente.
![]()
A continuación se presenta una solución para el diseño y generación
automática de código para un sistema distribuido de control sobre una red CAN,
basándonos en el sistema RTF.
El sistema distribuido de control, de una manera general, constara de una
serie de nodos CAN conectados mediante un
bus, a un nodo inteligente y de propósito general con arquitectura PC-104, capaz de controlar la red y los nodos
mediante una tarjeta CAN y controlar una
tarjeta de adquisición de datos.
En el nodo inteligente se ejecutara el sistema operativo en tiempo real VxWorks®, mediante una imagen que incluye el código
generado y el propio sistema operativo, obtenida con el entorno integrado de
desarrollo Tornado™
II.
Gráficamente, podemos imaginar el sistema de control (a nivel hardware)
como un sistema de control distribuido que cuente con los elementos de la
figura siguiente, en su caso más complejo.
Para ello se debe realizar la construcción desde cero de un sistema denominado CAN RTF (Controller Area Network Real Time Framework) con capacidad para especificar métodos de distribución basados en el nodo inteligente PC-104 y el resto de los nodos CAN. El sistema también debe tener control de concurrencia, implementado control sobre tareas y comunicación entre procesos para VxWorks®, manteniendo las funcionalidades proporcionadas por Simulink®, StateFlow® y Real Time Workshop® sobre el entorno matemático Matlab®.
Además de las capacidades de especificación, se debe dotar al sistema de capacidad de generar el código total del sistema para VxWorks®, incluyendo el código que descarga desde el nodo PC-104) a los nodos distribuidos el código a ejecutar en estos, el código de configuración y puesta en marcha de la red y cada uno de sus nodos, el código de control a ejecutar en el nodo inteligente y el código necesario para controlar un tarjeta de adquisición de datos.
La herramienta CAN RTF debe estar dotada de una interfaz de usuario que permita lanzar la generación del modelo en ficheros XML, así como permitir la lectura de modelos en el mismo formato. El interfaz debe también configurar el proceso de generación de código, mediante los parámetros adecuados, y lanzar el proceso de generación automática
Para completar el desarrollo, el entorno de generación automática de código debe ser aplicable, al diseño del modelo de dos casos de uso concretos. El primero de ellos es el algoritmo de control de un robot móvil autónomo, compuesto por un nodo PC-104 controlando una serie de nodos rtfCANopen, a lo largo de una red CAN, y el segundo el modelo de proceso de una línea de tratamiento en caliente, con un nodo o PC controlando una tarjeta de adquisición de datos.
![]()
La necesidad del proyecto es generar código automáticamente, a partir de una serie de diagramas correspondientes a diagramas Simulink®, con sus correspondientes bloques funcionales estándar. El entorno Matlab® es capaz de generar código a partir de dichos diagramas de bloques y diagramas de estado de StateFlow®, pero tiene una serie de carencias que este proyecto viene a cubrir.
En la herramienta del proyecto, mediante una serie de bloques nuevos, generados a través de S-functions y ficheros y ficheros MEX con sus librerías de enlace dinámico asociadas, se permitirá al diseñador un control sobre la generación de tareas y la comunicación entre las mismas, mediante los mecanismos tradicionales, como semáforos y memoria compartida entre otros, dándole control sobre el código generado. Para ello además se interferirá en el proceso de generación de código para que estas especificaciones se vean reflejadas en el código obtenido. Este código será compatible y complementario con el del resto de las partes que no incluyan bloques de comunicación entre procesos.
Se incluirán también, otra serie de bloques, que sirvan para controlar las comunicaciones distribuidas y el envió y recepción de mensajes CAN a través de una red de ese tipo. De igual modo se hará el soporte de tarjetas de adquisición de datos.
El proceso de diseño se hará desde la interfaz tradicional de Simulink® y Real Time Workshop®, pero para el proceso de generación se hará uso de una interfaz gráfica de usuario independiente, que se hará cargo del modelo y realizará la interferencia en el proceso de generación de código, ajustando el uso de los recursos de manera optima y teniendo en cuenta las especificaciones tanto a nivel de especificación, distribución y concurrencia introducidas por los bloques adicionales.
La arquitectura del sistema de generación automática de código es la siguiente:

Una vez generado el código, se obtendrán los fuentes y makefiles que se utilizarán a continuación para obtener los ficheros ejecutables, mediante el entorno de desarrollo integrado para VxWorks® Tornado™ II.
![]()
