Módulo de control de un microsensor inteligente

Anuncio
MODULO DE CONTROL DE UN MICROSENSOR INTELIGENTE
Ivan Jaramillo J. - i_jaramj@ing.unal.edu.co
Francisco Duran - francodu@pola.uniandes.edu.co*
Sebastian Eslava - sebas@gmun.unal.edu.co
GMUN - Universidad Nacional de Colombia.
Resumen: Implementación en VHDL del modulo de control de un microsensor de CO, en este paper se
muestra la organización del sensor y los módulos que lo componen.
INTRODUCCION
Dentro de la visión que el grupo de
microelectrónica de la Universidad Nacional de
Colombia ha tenido, se encuentran 2 grandes
áreas por explorar los microsistemas y
microsensores,
y
la
implementación
en
dispositivos logicos programables de sistemas de
comunicación que manejen un protocolo.
Se ha estado desarrollando un modulo de control
el cual permite controlar un microsensor de CO
(monoxido de carbono), su sistema de tratamiento
de señal y un ADC, esto corresponde a la primer
parte del modulo, el siguiente bloque se encarga
de recibir el dato proveniente del ADC, y hacer el
manejo adecuado para transmitir la información
hacia la red, asi como recibir la información que
sea recibida de la misma, el protocolo escogido
para la comunicación es BACnet.
BACnet
BACnet (Building Automation and Control
Networks), es un protocolo para el control de
redes y edificios inteligentes; fue desarrollado por
ASHRAE (American Society of
Heating,
Refrigeration and Air Conditioned Engineers) es
estándar ANSI, y la ISO se encuentra en proceso
de estandarización.
Surgió debido a la necesidad de crear un estándar
que permitiera la comunicación de sistemas de
control
de
diferentes
vendedores.
El
inconveniente que se presentaba anteriormente
(década de 1980) era la imposibilidad de reunir
bajo un mismo sitio sistemas de control de
distintos vendedores lo que ocasionaba
grandes costos y en algunas ocasiones
pérdida de materiales y equipos, ante esto en
Enero de 1987 ASHRAE inició el desarrollo de
un protocolo estándar industrial para la
comunicación de los sistemas de control en
edificios, para esto, se creo el comité 135;
todavía existe y es el encargado de estar
revisando y actualizando el protocolo. En
Agosto de 1991 se presentó al público la
primera versión del protocolo, en Marzo de
1994 salió la segunda versión, y finalmente en
Junio de 1995 la tercera versión fue aprobada
como estándar de ASHRAE y en Noviembre
de ese año fue aprobado como un protocolo
ANSI.
El protocolo presenta un conjunto de reglas
que se aplican al software y al hardware de la
red, estos conjuntos de reglas son aplicadas al
direccionamiento, acceso a la red, revisión de
errores, control de flujo,
secuencia,
segmentación y comprobación de los
mensajes, formato de la presentación y del
mensaje, BACnet modela la información con
los objetos, realiza los requerimientos y la
interoperabilidad con los servicios y transporta
los datos por el sistema con la red.
BACnet se basa en una arquitectura clienteservidor, los mensajes enviados son llamados
servicios, las clases de aplicación de los
servicios son alarmas y eventos, acceso a los
datos, acceso a los objetos, manejo remoto de
los dispositivos y terminales virtuales
Las opciones existentes para la red sobre la cual
se puede montar BACnet son: Ethernet, ARCNET,
Master-Slave/ Token-Passing (MS/TP), Echelon´s
Lon Talk y Point to Point PTP, una gran ventaja
que presenta el BACnet es la implementación
sobre redes IP (Internet Protocol).
*. Objetos: Toda la información en sistemas
BACnet es representada en términos de
objetos. Este es un concepto abstracto que
permite organizar la información relacionada
con las entradas y las salidas, así como
conceptos no físicos que requieren software o
cálculos.
Los objetos pueden representar señales físicas
simples, o grupos lógicos, o colecciones de
puntos que realizan una función especifica.
Todos los objetos en BACnet tienen un
conjunto de propiedades que son usadas para
adquirir información desde el objeto, o darle
información y comandos a un objeto.
BACnet trabaja dividiendo el problema de
interoperabilidad en tres áreas distintas; define
métodos y estándares para cada implementación.
Toda la información dentro de un dispositivo
BACnet interoperable es modelada en términos
de uno o más objetos de información. Cada
objeto representa algún componente importante
del dispositivo, o alguna colección de información
la cual puede ser de interés para otro dispositivo.
*. Servicios: Permite a un dispositivo BACnet
realizarle una tarea a otro dispositivo.
Existen cinco categorías de servicios:
• Acceso a Objetos.
• Dispositivo Administrador.
• Alarmas y Eventos.
• Transferencia de Archivos.
• Terminales Virtuales
*. Opciones de Transporte:
Los dispositivos BACnet preguntan a otros para
realizar los servicios. Por ejemplo, un dispositivo
el cual está asociado con un sensor de
temperatura, podría realizar el servicio de leer la
temperatura y proveer esta información a otro
dispositivo el cual la necesita.
El modelo de objetos y servicios es realizado por
codificación de mensajes en una cadena de
códigos numéricos la cual representa las
funciones deseadas o servicios ha ser realizados.
El “lenguaje” de esta codificación es común a
todos los dispositivos BACnet; estos intercambian
información y hacen tareas enviando y recibiendo
mensajes electrónicos que contienen codificado el
lenguaje de aplicación.
BACnet provee flexibilidad, permitiendo múltiples
tipos de sistemas de transporte para ser
utilizados para enviar esos mensajes codificados
entre los dispositivos. Los sistemas de transporte
usan distintos tipos de estándares para mensajes
electrónicos y métodos para transportarlos.
Ya que en ciertas circunstancias es posible
usar diferentes transportes para cumplir con un
mismo
trabajo,
en
donde
la
razón
costo/velocidad puede no ser la misma; el
diseño en BACnet permite adaptarse al
transporte existente o al deseado.
MODULO DE CONTROL
El modulo esta dividido es 2 bloques el primera
esta encargado de darle la
El módulo de control es el encargado de negociar
con la capa de transporte cuando existe una
petición de lectura del sensor; además controla el
calentamiento del sensor y da la señal de inicio de
conversión para el ADC y recibe la señal de fin de
conversión del mismo.
elsif uc_sreq='0' then
Bacnet_m1 <= IDLE;
end if;
when LOAD =>
loaddata <= '1';
Bacnet_m1 <= IDLE;
when others =>
null;
end case;
end if;
end process;
Para su realización, el módulo está compuesto de
dos submódulos a saber:
end bacnet1_arch;
*. Control 1: Es el encargado de leer el sensor,
para ello debe controlar el calentamiento del
mismo y debe generar la señal de inicio de
conversión para que el ADC transforme la medida
análoga en un dato digital, después de esto, está
encargado de capturar y almacenar el dato leído
del conversor.
La descripción en máquinas de estado a nivel
funcional es:
La descripción VHDL de este módulo es la
siguiente:
-- Control 1
-- Version: 1.1
-- Sebastian Eslava, Francisco Duran, 2000
-library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity bacnet1 is
port (CLK: in STD_LOGIC;
endoc: in STD_LOGIC;
uc_sreq: in STD_LOGIC;
soc: out STD_LOGIC;
calsen: out STD_LOGIC;
loaddata: out STD_LOGIC);
end;
architecture bacnet1_arch of bacnet1 is
-- SYMBOLIC ENCODED state machine: Bacnet_m1
type Bacnet_m1_type is (CS, IDLE, LOAD);
subtype Int0to9_Typ is integer range 0 to 9;
signal Bacnet_m1: Bacnet_m1_type;
signal Count_s
: Int0to9_Typ;
begin
--concurrent signal assignments
Bacnet_m1_machine: process (CLK)
begin
if CLK'event and CLK = '1' then
case Bacnet_m1 is
when CS =>
calsen <= '1';
if Count_s = 9 then
soc <='1';
else
Count_s <= Count_s + 1;
end if;
if endoc='1' then
Bacnet_m1 <= LOAD;
elsif endoc='0' then
Bacnet_m1 <= CS;
end if;
when IDLE =>
if uc_sreq='1' then
Bacnet_m1 <= CS;
Descripción Funcional Control 1:
El
dispositivo
BACnet
se
encuentra
normalmente en estado IDLE; cuando el
sistema de monitoreo externo requiere leer un
dato, el módulo de control 2 le transmite la
señal uc_sreq (Unidad de control_ Service
Request)
y
cambia
al
estado
CS
(Calentamiento sensor), note que en este
estado, dos señales son generadas pero no
simultáneamente (ver descripción VHDL), la
primera de ellas es la señal que inicia el
calentamiento del sensor (calsen) y un tiempo
después (el necesario por el sensor para estar
en óptimas condiciones de lectura) se genera
la señal soc (start of conversion) que hace que
al ADC empiece la conversión del dato
análogo leído en un dato digital equivalente.
Una vez hecha la conversión, el ADC genera la
señal endoc (end of conversion) la cual hace
que la máquina cambie al siguiente estado,
LOAD, en este estado, la señal de loaddata
permite que el dato binario presente en la
salida del ADC sea almacenada en la entrada
del módulo de control 2 BACnet para luego ser
empaquetada y enviada al sistema de monitoreo
externo que requiere el dato.
*. Control 2: Este submódulo es el encargado de
tomar el dato almacenado por Control1, formar la
trama y hacer la negociación con la capa de red
cuando existe una petición por parte del
dispositivo de monitoreo (cliente).
La base de este bloque es el diseño de una
UART, a partir de este elemento se incorporara la
negociación, y los objetos que el protocolo
establece para realizar la comunicación entre
distintos dispositivos, la descripción del sistema
de transmisión en VHDL es la siguiente:
library IEEE;
use IEEE.std_logic_1164.all;
El modulo de recepción presenta la siguiente
descripción:
library IEEE;
use IEEE.std_logic_1164.all;
entity receiver is
port (Clk16xT : in BIT;
ResetF: in BIT;
Serial_InT
: in BIT;
DataRdyT: out BOOLEAN;
DataOuT: out BIT_VECTOR (7 downto 0);
BitClkT: out BIT
);
end receiver;
architecture UartRx_Beh of receiver is
subtype Int0to15_Typ is integer range 0 to 15;
constant RxInit_c : BIT_VECTOR (9 downto 0) := "1111111111";
signal RxReg_s : BIT_VECTOR (9 downto 0);
signal Count16_s : Int0to15_Typ;
signal RxMT_s : BOOLEAN;
signal RxIn_s : BIT;
begin -- UartRx_Beh
entity transmitter is
port (
Shift_Ldf: in BIT;
- Shift if '1', load if '0'
ClkEnbT: in BIT;
Clk: in BIT;
DataT: in BIT_VECTOR (7 downto 0);
ResetF: in BIT;
Serial_Out: out BIT;
XmitMT: out BIT
);
end transmitter;
architecture UartXmt_Beh of transmitter is
subtype Int0to9_Typ is integer range 0 to 9;
signal XmitReg_s : BIT_VECTOR (9 downto 0) :="1111111111";
signal Count_s : Int0to9_Typ:=0;
begin -- UartXmt_Beh
Xmit_Lbl : process
-- variable Count_v : natural;
begin -- process Xmit_Lbl
wait until Clk'event and Clk = '1';
if ResetF = '0' then
XmitReg_s <= "1111111111";
Count_s <= 9;
elsif ClkEnbT = '1' and Shift_Ldf = '0' and ResetF = '1' then
XmitReg_s <= '1' & DataT & '0';
Count_s <= 0;
elsif ClkEnbT = '1' and Shift_Ldf = '1' and ResetF = '1' then
XmitReg_s <= '1' & XmitReg_s(9 downto 1);
if Count_s /= 9 then
Count_s <= Count_s + 1;
end if;
end if;
end process Xmit_Lbl;
Rx_Lbl : process
begin -- process Rx_Lbl
wait until Clk16xT'event and Clk16xT = '1';
RxIn_s <= Serial_InT;
if (ResetF = '0') then
Count16_s <= 0;
RxMT_s <= true;
RxReg_s <= RxInit_c;
elsif (RxMT_s and RxIn_s = '0') then
Count16_s <= 0;
RxMT_s <= false;
RxReg_s <= RxInit_c;
elsif Count16_s = 7 and not RxMT_s then
RxReg_s <= RxIn_s & RxReg_s(9 downto 1);
Count16_s <= Count16_s + 1;
elsif Count16_s = 15 then
Count16_s <= 0;
else
Count16_s <= Count16_s + 1;
end if;
if not RxMT_s and RxReg_s(9) = '1' and RxReg_s(0) = '0' then
DataRdyT <= true;
RxMT_s <= true;
else
DataRdyT <= false;
end if;
end process Rx_Lbl;
BitClkT <=
'1' when Count16_s = 9
else '0';
DataOuT <= RxReg_s(8 downto 1);
end UartRx_Beh;
Serial_Out <= XmitReg_s(0);
XmitMT <=
'1' when Count_s = 9
else '0';
end UartXmt_Beh;
El medio físico para la transmisión y recepción
de los datos, es Ethernet 10BaseT, se escogió
este medio porque presenta una gran
compatibilidad con los sistemas actuales de
cableado estructurado existente.
CONCLUSIONES
Se unieron 2 grandes elementos de desarrollo
actuales, el control de un microsensor junto a un
sistema de comunicación, lo cual es la base para
desarrollar en adelante microsistemas que tengan
integrado bajo el mismo sustrato todos los
elementos de captura, procesamiento, control,
transmisión y recepción.
BIBLIOGRAFIA
[1] ANSI/ASHRAE Standard 135-1995, BACnet (A
Data Communication Protocol for Building
Automation and Control Networks).
[2] Andrew S. Tanembaum, Redes
Computadoras, Ed. Prentice Hall, 1.997
de
[3] L. Teres, Y. Toroja, S. Olcoz, E. Villar, VHDL Lenguaje Estándar de diseño electrónico, Ed. Mc
Graw Hill, 1.998
[4] W. Stallings, Local and Metropolitan Area
Networks, Ed. Prentice Hall, 1.993
[5] M. Naugle, Network Protocol Handbook, Ed.
Mc Graw Hill, 1.994
Descargar