MODULO DE CONTROL DE UN MICROSENSOR INTELIGENTE Ivan Jaramillo J. - [email protected] Francisco Duran - [email protected]* Sebastian Eslava - [email protected] 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