CAN

Anuncio
PROTOTIPO DE SISTEMA DOMÓTICO UTILIZANDO BUS
CAN
Palabras clave
Bus de campo, domótica, CAN, DSP, sensor, actuador, Ethernet, PIC,
protocolo,GSM/GPRS
Introducción
El aumento en la complejidad de los sistemas de control y en especial el desarrollo
del control distribuido exigen sistemas de comunicación adecuados a las necesidades de
éstos. Esta exigencia junto a la necesidad por parte de los usuarios de sistemas de
control abiertos y a la evolución de las tecnologías de comunicación propiciaron la
aparición de los buses de campo. Aunque inicialmente los buses de campo fueron
diseñados para la industria, algunos de ellos se han extendido a otros campos de
aplicación debido fundamentalmente a las ventajas que ofrecen frente a los sistemas
tradicionales1.
Con la intención de aprovechar estas ventajas, en el Departamento de Ingeniería
Electrónica de la Universidad de Sevilla hemos desarrollado un sistema de domótica
articulado en torno a una red de bus CAN y protocolos para la comunicación de los
dispositivos que componen el mismo.
Durante el diseño se ha tenido en cuenta que el sistema debía tener las siguientes
características:
-
-
-
-
Ampliable. Para permitir la inclusión de nuevos sensores y actuadores de muy
diferentes tipos sin tener que modificar los protocolos o el software de los
elementos existentes.
Abierto. Con especificaciones claras para que otras personas puedan
desarrollar su propio hardware e incluirlo en el sistema y ofreciendo la
posibilidad de que de este proyecto surjan otros que lo complementen.
Controlable de forma remota. Para permitir la monitorización del estado de
la casa y la intervención en el sistema desde cualquier ordenador conectado a
Internet y desde terminales móviles.
Con maqueta. Para lograr un entorno más cercano a la realidad donde poder
probar el sistema.
Existen varios buses de campo que se han venido utilizando en domótica desde
hace algunos años. Tal es el caso de X10, EHS, BatiBUS o Lonworks.
X10 es un estándar que aprovecha la instalación eléctrica de la casa para controlar
dispositivos. Utiliza ráfagas de 120 KHz en los cruces por cero de la señal de la red
eléctrica, esto supone una velocidad de transmisión de 50 bits/s. A pesar de la facilidad
para instalar este sistema, su velocidad es claramente insuficiente y está muy recortado
en prestaciones.
“ANALISIS DEL ESTADO DEL ARTE DE LOS BUSES DE CAMPO APLICADOS AL CONTROL
DE PROCESOS INDUSTRIALES” Héctor Kaschel C., Ernesto Pinto L.
1
En el caso de EHS, la información se transmite también por la red eléctrica o por
un cable de pares separado utilizando una modulación FSK. Las velocidades que se
consiguen son del orden de los 2400 bits/s.
BatiBUS por su parte utiliza una técnica de acceso al medio similar a la de CAN
(CSMA-CA) pero sólo alcanza una velocidad de 4800 bits/s.
Lonworks sí puede entenderse como un bus de campo de altas prestaciones.
Permite la interconexión de subredes de dispositivos, soporta múltiples medios de
transmisión y alcanza velocidades aceptables (Hasta 1,25 Mbit/s). Aunque Echelon, la
empresa que lo diseñó, se empeña en decir que es un estándar abierto, la realidad
demuestra que sólo se puede operar en este bus con unos microcontroladores registrados
por Echelon denominados “Neuron Chip”. Lonworks permite tener redes fiables y
robustas pero por otro lado resultan ser caras y complejas.
CAN reúne muchas de las ventajas que tienen el resto de buses de campo bajo un
estándar verdaderamente abierto, sencillo y barato que permite una mayor libertad a la
hora de definir los protocolos de las capas superiores. Esto junto con las características
que se describen a continuación fue lo que nos impulsó a escoger CAN como soporte
para las comunicaciones en el interior del sistema.
CAN (Contoller Area Network)
CAN es un bus de campo inventado por Bosch ampliamente usado en automoción.
Consta únicamente de dos líneas sobre las que se transmiten los datos en forma
diferencial con velocidades de hasta 1 Mbit/s. De aquí se desprende la primera ventaja,
la simplicidad en el cableado.
Las dos características fundamentales de CAN son2:
-
-
2
En el nivel de enlace, el protocolo de CAN no utiliza los identificadores como
direcciones de los nodos de la red sino que éstos indican el tipo de contenido
del mensaje. Por ejemplo: podríamos asignar un identificador para los datos de
temperatura, otro para los de velocidad, etc. De esta manera se pueden
establecer comunicaciones punto a multipunto ya que sólo los nodos a los que
interese el mensaje lo recibirán.
El tipo de acceso al medio es basado en contienda pero con la particularidad de
que no se desperdicia tiempo, debido a que las colisiones se resuelven
mediante un arbitraje de bits en el que gana el nodo con más prioridad sin que
esto suponga la modificación de ninguno de los bits que este nodo ha
transmitido. Esto es algo parecido a lo que ocurre en un canal D de un acceso
RDSI.
“CAN SPECIFICATION VERSION 2.0” Bosch. http://www.can.bosch.com/docu/can2spec.pdf
Topología del sistema
Módem
GSM/GPRS
ELEMENTO DE
COMUNICACIÓN
CON EL EXTERIOR
RED
GSM/GPRS
ELEMENTO
MAESTRO
BUS CAN
PASARELA
GPRS
Ethernet
APLICACIÓN
DE CONTROL
Internet
M
A
Q
U
E
T
A
NODO
NODO
Figura 1. Esquema del sistema
La figura anterior muestra la disposición de los elementos del sistema. En él
podemos destacar el elemento maestro, que se encarga del control del sistema. Este
elemento está constituido por un DSP de Texas Instruments del tipo TMS320F2812 3. El
elemento maestro se encarga entre otras cosas de:
-
-
3
Almacenar y administrar la información general del sistema como la
distribución de sensores y actuadores en los sectores o habitaciones, dirección
IP, máscara de subred y contraseñas para el servidor, números de teléfono a
los que enviar las alarmas, etc. Para ello dispone de una memoria EEPROM.
Gestionar los números de identificación de los nodos y los elementos sensores
y actuadores.
Trasladar las órdenes del usuario a los elementos de la red para que actúen en
consecuencia y recoger los datos solicitados por el usuario.
Generar alarmas si se dan las condiciones correspondientes.
http://focus.ti.com/docs/prod/folders/print/tms320f2812.html
Aunque inicialmente se han colocado sensores y actuadores que producen un tipo
de información que no supone una carga computacional elevada para el DSP, en futuras
ampliaciones del sistema podría ser necesario disponer de un elemento capaz de
procesar señales con algoritmos complejos, tarea que podría ser asignada al DSP del
elemento maestro.
Otro de los elementos destacados del sistema es el Elemento de Comunicación con
el Exterior. Se trata básicamente de un módulo RCM22004, que contiene un procesador
Rabbit 2000. Este módulo está preparado para ser conectado en redes Ethernet
10/100BaseT, razón fundamental por la que escogimos este módulo para desempeñar
las tareas de comunicación con el exterior. Este módulo controla además el módem
GSM/GPRS GM29 de Sony-Ericsson5 a través de uno de sus puertos serie y está
permanentemente comunicado por otro de sus puertos serie con el elemento maestro. El
software que se ha creado para este módulo se encarga principalmente de hacer las
veces de servidor unificado para el acceso remoto. De esta manera el mismo servidor da
acceso al sistema tanto si el usuario utiliza un ordenador conectado a Internet como si lo
hace a través de un terminal móvil GPRS. El módulo RCM2200 está montado sobre una
placa base que ha sido creada al efecto puesto que el módulo por sí solo no puede
funcionar. Esta placa ha sido diseñada de acuerdo con las funciones que desempeña en
el sistema pero además sirve de sistema de desarrollo para el Rabbit 2000 si se utiliza
por separado.
El módem GSM/GPRS se encarga básicamente de canalizar los mensajes de
alarma a través de SMSs al usuario y al servicio de emergencias correspondiente. Se ha
optado por utilizar SMSs para enviar las alarmas debido a que su recepción es casi
instantánea.
Los elementos sensores y actuadores se agrupan en nodos. En cada nodo puede
haber uno o más actuadores o sensores que pueden ser de diferentes tipos y que pueden
estar ubicados en distintos sectores o habitaciones. Los nodos que han sido
implementados en el sistema contienen un microcontrolador PIC18F2486 sobre una
placa con circuitos de acondicionamiento de señal para los sensores y actuadores que
tiene a su cargo. Esta familia de microcontroladores PIC de Microchip es adecuada
debido a que disponen de líneas de entrada analógica con convertidores analógicodigital y además tienen un controlador CAN. Aunque estos procesadores no tienen una
gran potencia de cálculo, cumplen de sobra los requisitos que se necesitan para manejar
sensores de temperatura, de luz, de proximidad, etc. Además estos procesadores
incorporan una pequeña memoria EEPROM para datos en los que se pueden guardar los
identificadores de los elementos sensores y actuadores que controla.
Los sensores que se han instalado en la maqueta han sido de tres tipos:
-
Sensores de temperatura. Basados en termopares de tipo K
Sensor de proximidad por ultrasonidos.
Sensor de luminosidad. Basado en fotorresistencia
Los actuadores que se han instalado en la maqueta han sido de tres tipos:
4
http://www.rabbitsemiconductor.com/products/rcm2200/index.shtml
http://www.sonyericsson.com/downloads/GM28%20Datasheet%20R1C.pdf
6
http://ww1.microchip.com/downloads/en/DeviceDoc/41159d.pdf
5
-
Luces.
Ventilador.
Interruptor manual para controlar la iluminación.
Toda la instalación se ha hecho sobre una maqueta desmontable creada al efecto y
con una estructura adecuada al sistema que alberga.
Protocolos
Para coordinar los elementos del sistema se han diseñado dos protocolos, uno para
la red interna de bus CAN al que hemos llamado protocolo interno y otro para la
comunicación entre el servidor y la aplicación cliente sobre Internet al que hemos
llamado protocolo externo.
El protocolo interno es un protocolo de la capa de aplicación aunque está
íntimamente ligado con la capa de enlace debido a las peculiaridades del bus CAN, que
como ya se dijo, utiliza identificadores en el nivel de enlace para anunciar el contenido
del mensaje. Este identificador junto con el campo de datos forma justamente la PDU
del nivel de aplicación.
Se ha utilizado la especificación CAN 2.0 B que permite usar identificadores de
29 bits. Esos 29 bits se han estructurado en tres campos:
TIPO DE ELEMENTO
11 bits
COMANDO
10 bits
NÚMERO DE ELEMENTO
8 bits
El campo ‘Tipo de elemento’ indica el tipo de elemento que origina el mensaje o
al tipo de elementos que va dirigido el mensaje. Permite hasta 2048 tipos distintos de
elementos. Mientras menor sea el número codificado en este campo, mayor prioridad
tendrán los mensajes, esto es debido al mecanismo de acceso al medio de CAN, que da
preferencia a estos mensajes en caso de colisión con una trama con identificador de
mayor valor. Por este motivo, se han reservado los valores del 0h al 28h para mensajes
urgentes como por ejemplo las alarmas. A título de ejemplo se citan a continuación
algunos de los valores que han sido asignados en el sistema prototipo:
Descripción del elemento
Sensor de temperatura
Sensor de proximidad
Actuador para luces
Valor
280h
300h
480h
Cualquier elemento puede originar un mensaje para transmitir algún tipo de
información o para solicitar que otros lleven a cabo una determinada acción. El motivo
del mensaje se especifica en el campo ‘Comando’. Este campo permite definir hasta
1024 comandos diferentes para cada tipo de elemento. Dependiendo de las necesidades
del comando se pueden incluir o no parámetros, que en caso de existir irían situados en
el campo de datos de la trama de nivel de enlace. Por ejemplo: cuando un sensor de
temperatura tiene que enviar el dato de temperatura que ha registrado, utiliza el
comando 2 y en el campo de datos envía un byte en el que codifica el valor de la
temperatura medida en grados celsius.
El campo ‘Número de elemento’ sirve para identificar al elemento que origina el
mensaje o al que va destinado si fuera necesario. En el caso de los mensajes que no van
dirigidos a un elemento en concreto sino a un grupo de elementos o cuando el elemento
que envía/recibe el mensaje es necesariamente único en el sistema, como por ejemplo
los mensajes de alarma, este campo carece de sentido y lleva el valor 0. El campo
‘Número de elemento’ junto con el campo ‘Tipo de elemento’ definen de manera
unívoca a cualquier elemento del sistema.
El protocolo externo es un protocolo de la capa de aplicación y se transmite sobre
TCP. Este protocolo permite controlar el sistema desde un PC conectado a Internet o
desde un terminal móvil GPRS. La aplicación para terminales móviles está hecha en
J2ME (Java 2 Micro Edition) y no emplea la funcionalidad completa del protocolo
debido a las limitaciones de este tipo de dispositivos, en su lugar, sólo dispone de los
comandos básicos.
La aplicación para PC hace uso de ficheros de manejo para su funcionamiento.
Estos ficheros hacen una función similar a los drivers para los sistemas operativos y han
de ser proporcionados con cada nodo que haya en la red. De esta forma se evita que el
protocolo externo tuviera que ser revisado cada vez que introduzcamos nuevos tipos de
elementos en la red CAN ya que estos ficheros “indican” a la aplicación cómo debe
manejar los elementos y qué funciones puede realizar sobre ellos. Para realizar estas
funciones específicas, la aplicación cliente puede componer tramas con ayuda de los
ficheros de manejo en los que encapsula la trama del protocolo interno que debe ser
enviada al elemento dentro de una trama del protocolo externo.
Instalación de nuevos nodos
Cuando un nuevo nodo se inserta en la red, envía automáticamente una petición
para que el elemento maestro del sistema le asigne un número de nodo y números de
elementos para los distintos sensores y actuadores que tenga a su cargo. Una vez que el
elemento maestro le asigna los números, el nodo los guarda en memoria no volátil. Por
su parte, el elemento maestro también registra los nuevos elementos en su memoria
EEPROM. Por cada elemento conectado, el maestro guarda los siguientes parámetros:
-
Nodo al que pertenece
Número de elemento
Tipo de elemento
Sector donde se encuentra ubicado
Evidentemente, los nodos por si solos no pueden facilitar el último parámetro al
maestro. El parámetro sector se refiere a la zona de la casa donde se encuentra el
elemento. Por comodidad, en el prototipo se han hecho coincidir los sectores con las
habitaciones de la maqueta. El parámetro sector debe pues proporcionarlo el usuario a
través de la aplicación cliente. Cuando hay elementos pendientes de este parámetro, el
maestro lo indica al elemento de comunicación con el exterior para que este a su vez lo
notifique al usuario en cuanto éste se conecte al sistema.
Control de elementos
Para un correcto comportamiento de los elementos, éstos pueden requerir que el
usuario le especifique una serie de parámetros. Así por ejemplo un sensor de
temperatura puede tener la funcionalidad de termostato siempre que le asignemos un
valor superior y otro inferior. Para ello, los nodos deben tener la capacidad de retener al
menos en memoria RAM dichos parámetros. Se podrían almacenar también en memoria
no volátil si fuera necesario aunque no es recomendable puesto que estos parámetros
pueden variar muchas veces y las memorias no volátiles como las EEPROM o Flash
pueden programarse un número limitado de veces. Además estas operaciones están
sujetas a la disponibilidad de este tipo de memoria en los nodos. En el caso de los nodos
implementados en el prototipo, sólo se dispone de una memoria EEPROM de datos de
256 bytes.
Estos parámetros se clasifican en dos tipos: parámetros de funcionamiento y de
dependencia.
Los parámetros de funcionamiento normalmente almacenan valores que afectan al
funcionamiento general del elemento. Volviendo al ejemplo anterior, los parámetros
límite superior y límite inferior serían parámetros de funcionamiento. Hay que destacar
que cargar un valor en un parámetro no implica su uso, esto es, si cargamos un valor en
el parámetro límite superior, el sensor de temperatura no se va a comportar como un
termostato a menos que le enviemos el correspondiente comando para que active el
modo termostato.
Los parámetros de dependencia sirven para especificar qué elementos van a influir
en el comportamiento del sistema. Esto es muy útil cuando tenemos elementos que
dependen de la información que proporcionen otros como por ejemplo el ventilador, que
dependerá del dato de temperatura que proporcione algún elemento sensor de su sector.
Si el valor de temperatura es superior a un límite que previamente se ha especificado
como parámetro de funcionamiento, el ventilador se pondrá en marcha. El nodo que
controla el ventilador deberá reservar un espacio para el parámetro de dependencia en el
que almacenará el número de elemento del sensor de temperatura que le haya asociado
el usuario. Durante su funcionamiento deberá recoger los datos de temperatura que
envíe dicho sensor y comprobarlos para actuar en consecuencia.
Futuras líneas de trabajo
La expansión natural del sistema sería de cara a aumentar el tipo de sensores y
actuadores. En esta línea sería interesante abordar el diseño de controladores para los
electrodomésticos más usuales.
También sería muy interesante trabajar en dispositivos de seguridad y
televigilancia. Así por ejemplo podrían integrarse webcams en el sistema para poder
tener vigilada la casa en todo momento a través de Internet.
Otra línea de trabajo podría ser la mejora de las aplicaciones de control para PC y
para terminales móviles.
Bibliografía



http://www.casadomo.com/canal_domotica.asp?TextType=1100
“CAN Specification Version 2.0” Bosch
http://www.can.bosch.com/docu/can2spec.pdf
“ANALISIS DEL ESTADO DEL ARTE DE LOS BUSES DE CAMPO
APLICADOS AL CONTROL DE PROCESOS INDUSTRIALES” Héctor
Kaschel C., Ernesto Pinto L.
Descargar