Está en la página 1de 88

UNIVERSIDAD SIMN BOLIVAR

INGENIERA ELECTRNICA

PROTOCOLO DE COMUNICACION HART


Para los instrumentos de FLOTECH S.A.

POR
Erika Febres Urdaneta

Proyecto de Pasanta
Presentado ante la Ilustre Universidad Simn Bolvar
Como requisito Parcial para Optar al Titulo de
Ingeniero Electrnico

Sartenejas, Febrero 2001

PROTOCOLO DE COMUNICACION HART


Para los instrumentos de FLOTECH S.A.
por
Erika Febres Urdaneta
Tutor Acadmico: Guillermo Villegas.
Tutor Industrial: Gerardo Febres.

RESUMEN
El actual proceso de digitalizacin de la informacin hace necesaria la existencia de equipos de
campo para industrias que sean capaces de transmitir y recibir datos. En la era analgica una de las
opciones eran lazos de corriente de 4 20 mA que indicaban el valor de la nica variable que era
posible transmitir. Pero en la actualidad se hace indispensable la comunicacin digital; para ello
Fisher Rosemount ide el protocolo HART, que no solo permite la comunicacin de los dispositivos
de modo digital, sino tambin utiliza la instalacin de cables de la antigua configuracin. Este
protocolo se basa en la transmisin de una seal de corrimiento en frecuencia de 1200Hz y 2200Hz,
superpuesta en la seal analgica, que viaja del maestro hacia el esclavo y viceversa mediante una
estructura de mensajes digitales estndar, lo que permite interconectar equipos de diversos fabricantes
a un mismo dispositivo maestro.
La empresa Flotech S.A., fabricante de equipos medidores de flujo y de nivel desea
implementar el protocolo de comunicacin Hart. Para poder implementar sta capacidad a sus
equipos, es necesario el diseo de un mdulo de digital que se conecte al mdulo analgico (sensor).
Este mdulo consta de una parte fsica (hardware) y de una parte no tangible (software), que se
integran al utilizar el microcontrolador TIGER de Wilke Technologies (firmware). En este
microcontrolador se almacenan todos los datos que el protocolo Hart requiere, adems de ser utilizado
para controlar el mdem, el generador del lazo de corriente, el conversor analgico digital y mltiples
interruptores que regulan o calibran los instrumentos. El resultado, un instrumento que se comunica a
un PC mediante un programa que genera y recibe mensajes de acuerdo al formato Hart.

ii

A mi Familia

Gabriel, Lia, Yurib y Deborah


Mi hermano

iii

Pedro Rondn

AGRADECIMIENTOS
A mi Tutor Acadmico Guillermo Villegas, por sus enseanzas y diferentes propuestas de
solucin a mis problemas, no solo durante la pasanta, sino a lo largo de mis aos de estudios.
A mi Padre Gabriel Febres, por el apoyo y ayuda en el diseo del circuito e implementacin
del proyecto en todo momento, a pesar de la distancia.
A mi familia en general, por darme fuerzas para culminar mis estudios y el proyecto de
pasanta, al recordarme cada da que deba esforzarme y concentrarme en mi trabajo, obviando todo
aquello ajeno a ste.
A mi hermano Pedro, ya que sin l no lo hubiese logrado. Por todo su ingenio, del cual durante
aos e aprendido miles de cosas tiles al momento de disear y ensamblar tanto programas como
circuitos.
A mi novio Jonathan Bartolotta, por toda su ayuda cuando el programa no quera funcionar, el
apoyo moral en las noches sin fin y su cario siempre presente.

iv

INDICE GENERAL
CAPITULO 1.- INTRODUCCIN...1
1.1.-Objetivo general2
1.2.-Objetivos especficos..2
1.3.- Descripcin de los captulos3

CAPITULO 2.- PROTOCOLO HART5


2.1- Breve introduccin al protocolo Hart..5
2.1.1.- Qu es un dispositivo inteligente?.5
2.1.2.- Leyendo informacin mediante comunicacin digital7
2.1.3.- Comunicacin multipunto..7
2.1.4.- El protocolo Hart.8
2.1.5.- Los comandos del protocolo Hart.10

2.2- La seal fsica....10


2.2.1.- Codificacin por desplazamiento en frecuencia11
2.2.2.- Los niveles de la seal...11
2.2.3.- El lazo de conexin.12
2.2.4.- Conexin de mltiples dispositivos..13

2.3- Procedimiento de transacciones, cdigo y estructura del mensaje...13


2.3.1.- Procedimiento de transaccin..14
2.3.2.- El modo de rfagas (BURST Mode)14
2.3.3.- Codificacin de caracteres15
2.3.4.- Formato de mensaje..15
2.3.5.- Ejemplo de transacciones.19
2.4- Comandos y datos respectivos, bytes de estado22
2.4.1.- Comandos universales..22
2.4.2.- Comandos de practica comn..24
2.4.3.- Comandos especficos de dispositivo.25
2.4.4.- Elementos enumerados.25
2.4.5.- Bytes de estado..26

CAPITULO 3.- DESCRIPCIN DEL SISTEMA..28


3.1- Cmo disear e implementar el protocolo HART?..28
3.2- Hardware, materiales y fabricacin.29
3.2.1.- Microcontrolador 30
3.2.2.- Desarrollo de la tarjeta digital ..33
3.2.3.- El Mdem Hart ...36
3.2.4.- Descripcin del modulador HT2012.39
vi

3.3.- Programas del microcontrolador ( firmware)..42


3.3.1.- Recepcin y Anlisis de Datos.43
3.3.2.- Respuesta al Comando.44
3.3.3- Transformacin de valores.45
3.3.4- Codificacin o compresin de caracteres45
3.3.5- Conversin Analgico a Digital..45
3.4.- Programa para el maestro o interfaz para el usuario.47

CAPITULO 4.- PRUEBAS Y RESULTADOS..52


4.1.- Tarjeta digital.52
4.2.- Interfaz para el usuario ..53
4.3- Sistema interconectado..56

CAPITULO 5.- CONCLUSIONES Y RECOMENDACIONES59


5.1.- Conclusiones59
5.2.- Recomendaciones...60

REFERENCIAS BIBLIOGRFICAS.61
ANEXOS62

vii

INDICE DE FIGURAS
Figura 1.1 Sistema de comunicacin mediante protocolo Hart.2
Figura 2.1 Conexin punto a punto....6
Figura 2.2 Conexin multipunto.8
Figura 2.3 La seal HART9
Figura 2.4 Estructura del mensaje HART10
Figura 2.5 Lazo de conexin simple12
Figura 2.6 Cadena de bits de caracteres...15
Figura 2.7 Formato de los mensajes Hart.15
Figura 2.8 Estructura del formato corto17
Figura 2.9 Estructura del formato largo...18
Figura 2.10 Transaccin en formato corto...20
Figura 2.11 Transaccin en formato largo21
Figura 3.1 Diagrama del sistema a realizar..28
Figura 3.2 Diagrama de la tarjeta digital..30
Figura 3.3 Microcontrolador TIGRE30
Figura 3.4 Bloque interno del LTC1298..34
Figura 3.5 Conexin del generador del lazo de corriente AD69435
Figura 3.6 Elementos de la tarjeta impresa del circuito digital36
Figura 3.7 Circuito completo del Mdem Hart37
Figura 3.8 Filtro de Entrada del Mdem..38
viii

Figura 3.9 Filtro de Salida del Mdem.38


Figura 3.10 Reloj del mdem...39
Figura 3.11 Mdem Hart HT2012....40
Figura 3.12 Primeros circuitos impresos para el mdem.41
Figura 3.13 Conexin del mdem Hart a la tarjeta digital...41
Figura 3.14 Estructura del firmware.42
Figura 3.15 Interfaz grfica del programa maestro..48
Figura 4.1 Tarjeta digital con todos sus elementos..52
Figura 4.2 Interfaz grfica del maestro.53
Figura 4.3 Interfaz una vez presionado COMPONER.54
Figura 4.4 Interfaz despus de presionar SEND...55
Figura 4.5 Interfaz con los resultados del proceso de comunicacin...56

Figura 4.6 Sistema con capacidad de manejar el protocolo Hart...58

ix

INDICE DE TABLAS
Tabla 2.1 Niveles de la seal Hart...11
Tabla 2.2 Especificaciones de tiempo en modo de rfaga. ..15
Tabla 2.3 Valores del byte de inicio.17
Tabla 2.4 Comandos universales..22
Tabla 2.5 Comandos de prctica comn...24
Tabla 2.6 Variables enumeradas...26

Tabla 3.1 Especificaciones de los pines del microcontrolador.32

CAPITULO 1.-INTRODUCCIN
En las industrias con equipos de campo, como las petroleras y procesadoras, es necesaria la
lectura permanente de variables diversas de sus estanques, tuberas o mquinas para evitar prdidas
del producto, accidentes o simplemente una falta de eficiencia en la produccin. Estas mediciones en
un principio eran manuales, y se requera de un vasto personal para poder controlar toda la fabrica,
planta de produccin o campo de extraccin. Con el tiempo, y el desarrollo de la tecnologa se
crearon sensores electrnicos que permitan la lectura de las variables de un modo ms conveniente, e
incluso la transmisin de las mismas a un equipo central. Una de estas formas de comunicacin es el
lazo de 4 a 20 mA, un lazo de corriente que al cual dependiendo del valor medido por el sensor, se le
asigna un nivel de corriente en mA, es decir, 4 mA equivaldra al menor valor posible de la variable
medida y 20 mA al mximo. En la actualidad, el mundo se ve afectado por la digitalizacin de la
informacin y estos procedimientos y medios de medicin no se ven excluidos de la misma. Con el
tiempo se han implementado en el campo e industrias otros mtodos para poder realizar las
mediciones de modo remoto, sin la necesidad de ir al campo, y que a su vez permitan la transmisin
de una informacin detallada del equipo y sus funciones. Una de las actuales formas de comunicar
dispositivos es mediante el protocolo Hart, ideado por Fisher Rosemount.
El protocolo HART es actualmente propiedad de la Fundacin HART, y se basa en la parte
fsica, en una seal digital de 0s y 1s , modulada en codificacin por desplazamiento en frecuencia
de 2200Hz y 1200Hz respectivamente, y en la parte no tangible, en un mensaje de bytes o
informacin estructurado de modo que pueda ser comprendido e implementado por diversos
fabricantes de equipos de medicin. Este protocolo fue diseado tomando como referencia el modelo
OSI.
La empresa Flotech S.A., es una empresa venezolana con aos de funcionamiento, que presta
servicios a una de las principales extractoras de petrleo del pas, PDVSA (Petrleos de Venezuela
S.A.). Siendo Flotech S.A. una empresa que pretende implementar en sus equipos todos los avances
tecnolgicos posibles, y bajo peticin de PDVSA, de equipos que trabajaran con el protocolo; se hace
necesaria la creacin de un nuevo equipo digital con capacidad HART.
Los dispositivos de la empresa se fabricaran de modo que el sensor contenga dos tarjetas
impresas, una de ellas analgica (que no ha sido an diseada) y la otra digital. El diseo de la tarjeta
digital es el objetivo principal de este proyecto, sin embargo no es el nico, ya que para poder realizar

pruebas e incluso para llevar acabo el proceso de diseo es necesaria una interfaz (software) para el
terminal maestro, que en este caso ser un computador personal. Para ilustrar esto el sistema se
muestra en la figura 1.1.

Figura 1.1 Sistema de comunicacin mediante protocolo Hart

Para poder desarrollar este proyecto se requieren conocimientos a fondo del protocolo HART
y de los materiales o equipos que la empresa pretende utilizar para la implementacin de esta
capacidad de comunicacin. En el siguiente libro, encontrar toda la informacin necesaria, adems
de las diferentes actividades realizadas para llevar acabo este proyecto: Implementar el Protocolo de
Comunicacin HART en los instrumentos de FLOTECH S.A.
Seccin 1.1.- Objetivo general.
Realizar el diseo de la tarjeta digital y la interfaz de usuario del maestro para introducir el
protocolo de comunicacin HART en los dispositivos o medidores de nivel y flujo de la empresa
venezolana Flotech S.A.
Seccin 1.2.- Objetivos especficos
Disear e implementar un circuito que module la seal por desplazamiento en
frecuencia que establece el protocolo Hart para ser incluido en los equipos o en el
circuito impreso digital, en su defecto, disear un circuito impreso que integre todos los
componentes digitales de los sensores (hardware).

Disear un programa (firmware) para el microcontrolador TIGER de Wilke


Technologies, utilizado en los equipos de Flotech S.A. que se encargue de procesar los
mensajes de un dispositivo maestro mediante el uso del protocolo Hart.
2

Disear un programa (software) para el maestro, en este caso un computador personal,


que se utilice en la empresa para calibrar y probar los equipos que se vendern.
Seccin 1.3.- Descripcin de los Captulos
El captulo 2 se basa en una visin a fondo de lo que es el protocolo HART. Este se
estructura en secciones que van de descripciones generales del protocolo, como modo
de conexin, tipo de transmisin, que tipo de dispositivos pueden hacer uso del
protocolo, hasta especificaciones de la estructura de los mensajes para cada comando
que transmite el maestro, especificaciones de tiempo de retardo de las respuestas,
definicin del significado de cada bit en campos de la estructura como el de direccin,
etc. La primera seccin es un resumen general de las ventajas que presenta el protocolo,
y las siguientes se presentan de acuerdo al orden de las capas del modelo de referencia,
el modelo OSI. La segunda seccin corresponde a la capa fsica, capa 1. La tercera
seccin corresponde a la capa 2 del modelo OSI, la capa de enlace y finalmente la
ltima seccin se referira a la capa 7 del modelo OSI o la capa de aplicacin, en la cual
se describe en detalle la estructura de los datos.
El captulo 3 describe el diseo del circuito digital, del programa del microcontrolador o
el firmware, y del programa del computador. La primera seccin describe el hardware:
los circuitos integrados utilizados, el diseo del circuito modulador, el circuito
generador del lazo de corriente, el conversor anlogo digital y la interconexin con el
microcontrolador y el computador personal. Luego, en la segunda seccin, se menciona
las diferentes rutinas del microcontrolador o firmware, se describe el mtodo de
desarrollo y las funciones de cada una de estas. Finalmente, la creacin y el
funcionamiento de la interfaz grfica para el terminal maestro en el PC (personal
computer ,computador personal).
En el captulo 4 encontrar los resultados del proyecto, una descripcin general del
producto final obtenido al haber concluido el diseo y las pruebas que se realizaron para
verificar su funcionamiento. Se observa el sistema, con las conexiones pertinentes y las
respuestas que se visualizan en la interfaz del terminal maestro.

El captulo 5 incluye las conclusiones y recomendaciones, las cuales sirven para informar
al lector de mejoras futuras sobre el diseo, dado que el producto final es un prototipo y
no un diseo para produccin masiva.

CAPITULO 2.- PROTOCOLO HART


En el siguiente captulo encontrar toda la informacin necesaria, en el mbito de diseo,
sobre el protocolo HART. En el mbito de diseo implica que algunas de las secciones son muy
especficas.
Seccin 2.1.- Instrumentos Inteligentes y el protocolo HART.
En la presente seccin encontrar los conceptos principales de comunicacin digital en los
dispositivos de campo, del modo implementado por Fisher-Rosemount en su familia inteligente de
transmisores utilizando el protocolo HART (Highway Addressable Remote Transducer). Se basa en
una vista general del protocolo, en que tipo de dispositivos se implementa, como mejora la lectura de
las variables de los sensores el uso de este protocolo, que tipos de conexiones pueden ser utilizadas,
que es el protocolo en s (descripcin general) y cuales son los comandos de los que se dispone al
utilizar HART.
2.1.1.-Qu es un dispositivo Inteligente?
El adjetivo inteligente, aplicado a un dispositivo de campo, se utiliza para describir cualquier
dispositivo que incluye un microprocesador. Tpicamente esto implicara funcionalidad extra, por
encima de lo que proveen dispositivos similares pero no basados en microprocesadores. Por ejemplo,
un transmisor inteligente puede proporcionar mayor precisin al compensar mediante clculos la nolinealidad, o la dependencia de temperatura de un sensor. Podra operar con una variedad de sensores
de diferentes tipos. Puede combinar dos medidas en una sola (por ejemplo volumen de flujo y
temperatura entre flujo de masa). O hasta podra permitir calibracin y re-establecimiento de rangos.
Frecuentemente proveera diagnsticos internos, y pruebas automticas, para simplificar los
procedimientos de mantenimiento. Para mayor informacin sobre las ventajas y aplicaciones del
protocolo refirase al anexo 1.
Adems de ofrecer un mejor rendimiento, sta extra funcionalidad puede reducir el
procesamiento requerido por el sistema de control, y tambin puede resultar en la reduccin de varios
instrumentos a un simple modelo, con ventajas de fabricacin y manejo de inventario.

Para hacer uso de estas ventajas, los dispositivos inteligentes requieren de un plug-in o
configurador, una caja con una cantidad de botones y una pantalla LCD (liquid cristal display) para
que el usuario pueda instalar y controlar el instrumento.
El prximo paso por lgica sera permitir que el instrumento y el panel de configuracin
estuviesen separados por largas distancias, utilizando comunicaciones digitales seriales bien definidas
entre ellos. Luego se necesitara incluir esta comunicacin en los dos cables ya existentes para
controlar el dispositivo desde el cuarto de control. Esto es lo que nos lleva al uso actual de la palabra
inteligente segn Fisher Rosemount, para describir dispositivos de campo en los cuales la seal
analgica, la seal digital y la alimentacin del equipo, son transmitidas por el mismo par de cables.
Con tales instrumentos, se obtienen las ventajas de las comunicaciones digitales, mientras se
mantiene la compatibilidad con la seal analgica de entrada requerida por los sistemas actuales.
Ahora, utilizando comunicacin digital, adems de instalar y controlar de un modo ms sencillo el
dispositivo de campo, es posible leer la variable medida y muchos otros parmetros a travs de
conexiones punto a punto, como la que se presenta en la figura 2.1.

Figura 2.1 Conexin punto a punto


Conexin punto a punto se utiliza para referirse a casos en los que solo existe un maestro y un
esclavo, o un transmisor y un receptor. Entre los dems parmetros que se pueden incluir, se
encuentra la posibilidad de transmitir hasta cuatro variables, lo cual representa una ventaja ante
sistemas de transmisin de una nica variable, entremos ms en detalle en cuanto a este aspecto.

2.1.2.-Leyendo informacin mediante comunicacin digital


Al utilizar comunicacin digital se vuelve posible, para un simple instrumento, proporcionar
ms de una medicin o una variable (por ejemplo un medidor de flujo msico tipo Coriolis puede
transmitir taza de flujo msico, temperatura del proceso, densidad y flujo total en un simple mensaje).
La comunicacin digital tambin hace que valga la pena mantener informacin adicional en el
instrumento de campo, para ser leda cuando sea necesario. Esto conlleva a una serie de posibilidades.
Nos puede dar informacin relativa al proceso como el identificador o etiqueta del dispositivo (tag),
una descripcin de la medicin, las unidades asociadas y rango de calibracin del instrumento. O
puede dar informacin sobre el dispositivo como tal, actuando como una etiqueta electrnica. Ms
all, puede ser utilizado para mantener historias de actividades relacionadas con mantenimiento como
la ltima fecha de calibracin. La administracin del sistema de instrumentos automatizados se hace
posible, utilizando informacin al da del dispositivo mismo.
Una manera ms eficaz o eficiente de transmitir los datos sera aumentar el nmero de
dispositivos de campo conectados a un maestro, de modo que transite mayor informacin por el lazo.
Sin embargo, al conservar la medicin en mA de la variable primaria, la conexin punto a punto es la
nica solucin , pero si se desea mltiples dispositivos se puede utilizar la conexin multipunto.
2.1.3.-Comunicacin multipunto
Si una variable medida va a ser leda por comunicacin digital, la seal analgica de 4-20mA
ya no es requerida. Se hace posible conectar mltiples dispositivos de campo en paralelo a un simple
par de cables, y comunicarse con cada uno por turnos para leer sus variables (u otros datos). Para
hacer esto, cada dispositivo debe tener una direccin, a la cual responder, y cada peticin del sistema
de control o maestro debe incluir dicha direccin. Un esquema de este tipo de conexin se puede
observar en la figura 2.2.
Esta conexin multipunto puede reducir de modo significativo los costos de instalacin de
cableado de los equipos, y puede ser de valor en sistemas de monitoreo. Note, sin embargo, que el
tiempo entre mediciones de las variables de un mismo equipo aumentar. Ya que antes por un solo
par de cables transitaba la seal de un sensor, pero en el caso de multipunto de 2 a 15 seales
diferentes debern turnarse el medio.

Figura 2.2 Conexin multipunto


2.1.4.-El protocolo HART
La aplicacin de estas mejoras a la gran gama de instrumentos y dispositivos de campo
existentes, hacen que sea necesaria la implementacin o definicin de un estndar. Esto incluye
especificaciones desde la parte fsica hasta la forma de transmisin, procedimientos de transacciones,
estructura del mensaje, formato de los datos, y un conjunto de comandos que realicen dichas
funciones.
El protocolo HART fue desarrollado por Rosemount INC. Con este propsito. HART es un
acrnimo para Highway Addressable Remote Transducer. Para difundir el uso de comunicacin
digital en los dispositivos de campo, Rosemount Inc. a transferido todos sus derechos sobre el
protocolo HART a la Fundacin de Comunicacin HART (HCF, siglas en ingles) y est disponible
para el uso de cualquier compaa o persona.
A modo de resumen, HART utiliza una seal

estndar de BELL, 202 codificada por

desplazamiento en frecuencia, para comunicar a 1200 baudios, superpuesta sobre la seal de medicin
de 4-20mA. Teniendo un promedio de cero, la seal codificada por desplazamiento en frecuencia no
interfiere con la seal analgica. Para ilustrar esto observe la siguiente figura 2.3.

Figura 2.3 La seal HART.


Hart es un protocolo maestro-esclavo (un dispositivo de campo solo responde cuando se le a
pedido algo previamente). Puede haber hasta dos maestros. Hasta 15 dispositivos esclavos se pueden
conectar en configuracin multipunto.
Cada mensaje incluye las direcciones de su fuente y destino, para asegurarse de que es recibido
por el dispositivo correcto, y tiene una suma de verificacin (checksum) para poder detectar cualquier
corrupcin del mensaje. El estado del dispositivo de campo est incluido en cada mensaje de
respuesta, indicando su estado de operacin correcto. Puede o no haber informacin o datos incluidos
en el mensaje, dependiendo del comando en particular. Dos o tres transacciones de mensajes se
pueden realizar cada segundo.

Figura 2.4 Estructura del mensaje HART


2.1.5.- Los comandos del protocolo HART:
Para llevar a cabo diferentes funciones preestablecidas en un sensor, el protocolo hart utiliza los
comandos, el identificador de la funcin que se pretende realizar. Los comandos del protocolo HART
se definen en tres grupos. El primer grupo es el de comandos universales, y provee funciones que
estn implementadas en todos los dispositivos de campo. El segundo grupo, comandos de prctica
comn, provee funciones comunes a muchos dispositivos de campo, pero no todos. Si un dispositivo
implementa funciones que estos comandos describen, debern ser invocadas mediante el nmero de
comando asignado por la Fundacin Hart . El tercer grupo, comandos especficos de dispositivo
(anteriormente llamados especficos de transmisor), provee funciones que son mas o menos nicas
para un dispositivo particular.
Seccin 2.2.- La Seal Fsica.
La siguiente seccin se refiere a la capa 1 del modelo de protocolos OSI, la capa fsica. Se basa
en el procedimiento de transaccin de datos (entre los cuales existe un modo exclusivo de operacin
que es el modo de rfagas), a la estructura de los mensajes, describiendo con lujo de detalle el
contenido de cada byte. El prembulo, el byte de inicio, el o los bytes de direccin (ya que se utilizan
dos formatos diferentes de acuerdo a las distintas revisiones de HART), el byte de comando, el byte
de cuenta de bytes (valga la redundancia), los bytes de datos, los bytes de estado y el de suma de
verificacin o checksum; adems de las distintas codificaciones o compresiones que se realizan para
poder transmitir mayor cantidad de informacin por mensaje.

10

2.2.1.-Modulacin por desplazamiento o corrimiento en frecuencia:


Como ya se mencion en la introduccin (captulo 1), HART utiliza modulacin por
desplazamiento en frecuencia para superponer la seal digital al lazo de corriente analgica de 4-20
mA que conecta la central al dispositivo en el campo.
Estas seales sinusoidales son superpuestas en la seal DC a un nivel bajo. El promedio de las
seales sinusoidales es cero, por lo que al ser incluida en la seal analgica 4-20mA no altera la
misma, sin importar lo que la seal digital pueda contener. La tasa de transmisin de datos es de
1200baudios. Eso quiere decir, que los dgitos binarios se transmiten a una tasa de 1200 bits por
segundo. Esto significa que el 1 es representado por un ciclo de 1200Hz, mientras que el cero es
representado por aproximadamente dos ciclos de 2200Hz.
Dichas frecuencias cumplen con el estndar Bell 202, uno de los muchos utilizados para
transmitir informacin digital va telefnica.
2.2.2.-Los niveles de la seal
El protocolo Hart tiene como especificacin, que los maestros deben transmitir una seal de
voltaje, sin embargo el esclavo debe transmitir una seal de corriente. La seal de corriente se
convierte a seal de voltaje mediante una pequea resistencia de carga, de modo que todos los
dispositivos utilizan receptores pasivos. Los niveles pico-pico de la seal se muestran en la tabla 2.1.
La forma de onda es idealmente sinusoidal, sin embargo se acepta de forma trapezoidal, pero no una
seal cuadrada.
Seal transmitida por el maestro
Seal transmitida por el esclavo
Seal mnima del esclavo, convertida por una carga de 230 ohms
Seal mnima del esclavo, convertida por una carga de 1100 ohms
Sensitividad del receptor(debe recibir correctamente)
Sensitividad del receptor(debe omitir)

min 400mV p-p


max 600mV p-p
min 0.8mA p-p
max 1.2mA p-p
180mV p-p
1320mV p-p
120 mV to 2.0 V p-p
80 mV p-p

Tabla 2.1 Niveles de la seal HART


La especificacin de sensitividad del dispositivo permite cierta atenuacin debida a la
resistividad del cable u otros efectos. Las especificaciones de umbral dependen de la ocurrencia de
interferencia de seales externas, y previene la interferencia entre canal (crosstalk), de otras seales
11

HART que se transmitan por cables adyacentes, o sistemas que no se encuentren bien conectados a
tierra o sistemas de alimentacin.
2.2.3.-El lazo de conexin
La conexin convencional para un transmisor alimentado por lazo de corriente de dos hilos se
muestra en la figura 2.5. En la practica, los tres elementos (la fuente de poder, el transmisor TX y la
resistencia de carga, RL) se pueden conectar en cualquier orden, ya que se conectan en serie, y
cualquier punto del circuito puede ir a tierra. Las especificaciones de Hart permiten resistencias de
carga de 230 a 1100 ohms.

Figura 2.5 Lazo de conexin simple


La seal HART debe ser introducida y leda del lazo de corriente. La fuente de poder est casi
en corto circuito para las frecuencias de la seal Hart, por lo que dispositivos secundarios (como el
segundo maestro) no pueden ser conectados directamente al lazo, se deben conectar en paralelo al
transmisor o a la resistencia de carga, en la figura 2.5, entre los puntos A y B. Un equipo con
protocolo de comunicacin Hart no debe introducir ninguna carga DC a la lnea. Para asegurarse de
que as sea se debe conectar al lazo mediante un condensador de 5F o ms.
Algunos de los dispositivos de campo con lazo de 4-20mA son activos, es decir, estos son los
que alimentan el lazo. Con este tipo de dispositivos no hace falta la fuente de poder. En este caso en la
conexin se elimina la fuente.
12

2.2.4.-Conexin de mltiples dispositivos


Mltiples dispositivos pueden ser conectados al mismo maestro, ya que en los mensajes se
incluye la direccin de los dispositivos que se comunican. Al asignarle a los dispositivos direcciones
diferentes, una cantidad mxima de 15 dispositivos

pueden ser conectados a un solo lazo. Las

consecuencias de este tipo de conexin son dos principalmente, retardo en la comunicacin entre
maestro y dispositivo y prdida de la seal analgica. Debido a la existencia de este tipo de
conexiones, existe la direccin de multipunto, que se asigna a cada dispositivo que este conectado en
paralelo, comenzando del cero al quince.
Entre otras de las especificaciones que requiere el protocolo Hart se encuentra la definicin de
las cargas respectivas de los equipos (maestro primario resistencia de recepcin 230-1100ohm,
resistencia de transmisin 700 ohms mximo). El lmite de los 65ms, que hace que la frecuencia de
corte sea de 2500Hz (para 3dB de atenuacin). Con lo anterior se impide retardos de la seal y de las
frecuencias que la componen. Especificaciones para el cableado, puestas a tierra, fuente de poder,
ancho de banda de la seal analgica, y ms.
Sin embargo, estas especificaciones no son necesarias para el desarrollo del proyecto, puesto
que el equipo al que se incluir el protocolo HART ser incluido en una red ya existente, por
supuesto, deber cumplir con las normas para esclavos que establezca el protocolo.
Seccin 2.3.- Procedimiento de transacciones, cdigo y estructura del mensaje
En esta seccin se describe de modo ms detallado los comandos del protocolo, los comandos
universales, los comandos de prctica comn y los comandos de dispositivo especfico. Incluyendo
los tipos de datos que corresponden a cada uno de estos. Los bytes de estado son aquellos que indican
errores en la comunicacin, en esta seccin se da a conocer el valor de estos y su significado.
Se profundiza sobre la transaccin de datos entre dispositivos Hart y la estructura de los
mensajes, esto corresponde a la capa 2 o nivel 2 del protocolo de referencia o modelo OSI.
Hart, como se ha mencionado a lo largo de los captulos anteriores, es un protocolo de maestroesclavo. Esto significa que cada transaccin es originada por el maestro, el dispositivo de campo o
esclavo solo responde cuando recibe un comando con su direccin. En la respuesta del esclavo se
incluye un comando recibido, y puede que contenga los datos requeridos por el maestro. En el caso de

13

que exista un maestro secundario, estos tiene direcciones diferentes, por lo cual pueden distinguir si la
respuesta es para el principal o secundario.
2.3.1.- Procedimiento de transaccin:
HART es un protocolo Half-Duplex, con lo cual se quiere decir que al terminar cada mensaje,
la portadora debe ser desactivada para permitir que la otra estacin transmita. Las reglas de tiempo de
la portadora establecen que la portadora debe ser activada no ms del tiempo de 5 bits antes del inicio
del mensaje (prembulo) y ser desactivada no ms del mismo tiempo despus de la transmisin del
ltimo byte del mensaje (la suma de verificacin).
El maestro es el responsable de las transacciones de mensajes. Si no hay respuesta a un
comando dentro de cierto tiempo, el maestro debe retransmitir el mensaje. Despus de unos cuantos
intentos debe abandonar la transaccin y notificar el problema. La longitud y retardo tpicos de los
mensajes, permiten dos transacciones por segundo.
2.3.2.-El modo rfaga
Para lograr una tasa de transmisin de datos mayor, algunos dispositivos utilizan el modo
rfaga. Cuando un dispositivo se encuentra en este modo enva un mensaje repetidas veces. Este
modo se activa y desactiva mediante los comandos especiales #107, #108 y #109 (si se implementa el
modo rfaga, los comandos bsicos son #1 y #3, los dems son opcionales). Existe una pequea pausa
entre mensaje y mensaje, para permitir que el maestro enve la seal de desactivacin, o para iniciar
cualquier otra transaccin simple.
Este modo solo funciona para la configuracin punto a punto, y se pueden enviar ms de tres
mensajes por segundo. En la tabla 2.2 se encuentran las especificaciones de tiempo para los mensajes
en modo de rfaga.

14

Dispositivo y tipo del mensaje


El maestro primario enva un comando
El maestro secundario enva un comando
Esclavo en modo BURST enva mensaje
Maestro sincronizado enva comando
Esclavo, modo normal, responde comando
Esclavo en modo BURST enva mensaje

Intervalo t
>= 305 ms
>= 380 ms
>= 305 ms
20* - 75 ms
>= 75 ms
0-256 ms
75-256 ms
0-20 ms

despus de que la lnea est desocupada


despus de la respuesta al otro maestro
despus de la respuesta a si mismo
despus del comando
despus de su mensaje anterior
despus de que responde al comando
inicial "activar el modo BURST", despus
de la respuesta a otro comando.

Tabla 2.2 Especificaciones de tiempo en modo de rfaga


2.3.3.-Codificacin de caracteres:
Los mensajes de Hart son codificados como series de 8 bits, es decir bytes. Estos se transmiten
de modo serial, utilizando una UART convencional (Universal Asynchronous Receiver/Transmitter)
para serializar cada byte, aadiendo un bit de inicio, un bit de paridad impar y un bit de fin, esto
permite que la UART receptora identifique el inicio de cada caracter, y para detectar errores en la
transmisin debidos a ruido u otro tipo de interferencia. La cadena completa de bits se muestra en la
siguiente figura 2.6.

Figura 2.6 Cadena de bits de caracteres


El bit menos significativo, D0 se enva primero. La mayora de los protocolos seriales permiten
pausas entre los caracteres, debido a las especificaciones de tiempo de Hart esto no es posible, de
ocurrir dicho retraso se asume que la comunicacin no fue establecida.
2.3.4.- Formato del mensaje:
El mensaje tiene un formato como el observado en la figura 2.7.

Figura 2.7 Formato de los mensajes Hart


15

Existen el formato largo y el formato corto. Los primeros instrumentos Hart (inclusive la
revisin 4) siempre utilizaron el formato corto. En este formato, la direccin del esclavo un byte, de
valor cero, para configuracin punto-punto o del 0 al 15 para configuracin multipunto. Esta corta
direccin se denomina direccin multipunto. La revisin 5 introduce el formato largo. En este, la
direccin del esclavo es un nmero de identificacin nico, un nmero de 38 bits derivado del cdigo
del fabricante, el cdigo del tipo de dispositivo y el nmero de identificacin del dispositivo. Este
formato impide que los esclavos tomen mensajes que no le corresponden. De un modo estricto, el
identificador nico, no es nico, pueden haber hasta cuatro veces el mismo nmero, ya que del cdigo
del fabricante solo se toman 6 bits, cuando el nmero en realidad consta de 8 bits.
La mayora de los dispositivos maestros deben incluir ambos formatos en su totalidad, de modo
que puedan trabajar correctamente con los dispositivos ya existentes as como con los nuevos. La
revisin 5 establece que todos los dispositivos deben implementar el comando #0 ( leer identificacin
nica) en ambos formatos del mensaje. Un maestro normalmente utilizar el comando # 0 para la
primera conexin con el dispositivo, ya que en ese momento el nmero nico de identificacin no se
conoce, sin embargo como el mensaje tambin incluye el nivel de revisin de HART, el maestro sabr
que formato deber utilizar.
El prembulo:
El prembulo consiste de 5 a 20 bytes con caracteres hexadecimales FF (todos 1s). Esto
permite que el receptor sincronice la frecuencia de la seal y la cadena de caracteres que recibe,
despus de la deteccin inicial del mensaje Hart. Para el primer intento y cualquier intento sucesivo
de comunicacin, se deberan utilizar 20 bytes de prembulo , para tener la mayor probabilidad de
xito. La respuesta al comando #0 le dice al maestro cuantos caracteres de prembulo le gustara
recibir al dispositivo; el maestro puede utilizar el comando #59 para indicarle cuantos bytes de
prembulo debe incluir en la respuesta.
El caracter de inicio (start byte):
El caracter de inicio en Hart tiene diversos valores posibles, indicando cual formato est siendo
utilizado, la fuente del mensaje, y si es o no un mensaje tipo rfaga. Estos se muestran en la tabla 2.3.

16

Tipo de mensaje
Maestro a esclavo
Esclavo a maestro
Mensaje BURST del esclavo

Formato corto
2
6
1

Formato largo
82
86
81

Tabla 2.3 Valores del byte de inicio


Cuando estn en espera de un mensaje, los receptores se encuentran en la bsqueda de estos
caracteres , como el primer caracter despus de por lo menos dos caracteres FF, para indicar el inicio
del mensaje. Estos mensajes se pueden identificar completamente con el contenido de los bits 0,1,2 y
7. Se ha propuesto que para mejoras futuras se utilicen los bits 5 y 6 del caracter de inicio para
indicar la presencia de bytes extra entre la direccin y el comando.
La direccin (address bytes):
El campo de direccin contiene tanto la direccin del maestro como la del esclavo del mensaje
enviado. Esta contenida en un byte, para el formato corto y en 5 bytes para el formato largo. El bit
ms significativo de la direccin, indica si el maestro es el primario (1) o el secundario (0) . Los
mensajes de tipo rfaga son una excepcin, en la cual el dispositivo alterna ambas direcciones, lo que
le da oportunidad a ambos maestros de interrumpir.
Tambin en ambos formatos, el bit que le sigue al ms significativo indica si el mensaje
proviene de un dispositivo en modo rfaga, lo que no implica que el mensaje sea de tipo rfaga. En el
formato corto, los dispositivos esclavos tienen direcciones de la cero a la quince. Este nmero se
incluye de modo binario en los 4 bits menos significativos del byte de direccin. En el formato largo,
la direccin de multipunto no es utilizada, en cambio, los 38 bits restantes de los cinco bytes del
campo de direcciones contienen el identificador nico como una direccin. En las siguientes se puede
observar la estructura de las direcciones.

Figura 2.8 Estructura del formato corto


17

Figura 2.9 Estructura del formato largo


En la estructura de formato largo, si se asigna cero a todos los bits, se puede utilizar como un
mensaje de transmisin sin destinatario especfico, un mensaje que sea aceptado por todos los
dispositivos; esto es solo posible si los datos en el mensaje determinan cual de los dispositivos debe
responder. Por ejemplo, el comando #11 (leer el identificador nico asociado a la etiqueta)
normalmente utiliza direcciones de transmisin sin destinatario especfico con una etiqueta en el
campo de datos, de modo que todos los dispositivos conectados reciben el mensaje pero solo uno de
ellos responde.
Comando:
El campo de comando contiene un entero del 0 al hexadecimal FD o al decimal 253, como su
nombre lo indica representa el comando HART. El comando recibido se incluye en la respuesta del
esclavo al ser enviada. Ya que para cada comando se define una estructura especfica para el campo
de datos, y una respuesta en particular, se dedica una seccin a ste campo.
Cuenta de bytes:
Este campo contiene un entero, que indica el nmero de bytes que forman el resto del mensaje
(eso es los campos de estado y de datos, la suma de verificacin no se incluye). El dispositivo
receptor utiliza esto para identificar el byte de suma de verificacin y saber cuando el mensaje est
completo. Como el campo de datos esta limitado a 25 bytes mximo, esta cuenta puede ser cualquier
nmero entre 0 y 27.

18

Estado:
El campo de estado tambin es llamado el cdigo de respuesta, solo se incluye en el mensaje
de respuesta de un esclavo. Consta de dos bytes, que reportan cualquier error de comunicacin, el
estado del comando recibido (como por ejemplo dispositivo ocupado o que no reconoce dicho
comando), y el estado de operacin del esclavo.
Datos:
No todas las respuestas contienen datos. Para aquellas que si lo hacen, y de modo que cumplan
con las reglas de tiempo, el campo de datos no puede exceder los 25 bytes. Los datos pueden estar en
forma de enteros sin signo, nmeros de punto flotante o cadenas de caracteres ASCII. El nmero de
bytes del campo de datos, y el formato de datos utilizado para cada tem se especifican de acuerdo al
comando recibido.
Suma de verificacin (checksum):
El byte de suma de verificacin contiene el OR exclusivo (paridad longitudinal) de todos los
bytes que le preceden en el mensaje, comenzando con el caracter de inicio. Esto provee un segundo
chequeo para la integridad de la transmisin despus del de paridad por byte. La combinacin de estos
dos garantiza la deteccin de hasta tres errores en un mensaje y tiene buenas probabilidades de
detectar errores en ms bits.
2.3.5.- Ejemplo de transacciones:
En las figuras siguientes se observan ambos formatos. En cada mensaje, los valores de los bytes
se muestran en hexadecimal, con los campos de direccin escrito de modo binario para mostrar
claramente su composicin. Los nombres de cada campo se encuentran indicados con sus siglas en
ingles. START es el byte de inicio, ADDR es el byte de direccin, COM es el byte de comando,
BCNT es el byte de cuenta de bytes y el CHKS es el byte de suma de verificacin.

19

Maestro a Esclavo:

Esclavo a Maestro:

Figura 2.10 Transaccin en formato corto

20

Maestro a Esclavo:

Esclavo a Maestro:

Figura 2.11 Transaccin en formato largo

21

Seccin 2.4.- Comandos y datos respectivos, bytes de estado.


En este captulo se describe la clasificacin de los comandos de HART, y se da detalles en
cuanto a la estructura de datos utilizados en la mayora de ellos. La codificacin y significado del
campo de estado tambin se describe. Esto corresponde al nivel nmero 7 del modelo OSI, el nivel de
aplicacin.
El campo de comandos como ya se mencion en la seccin anterior, contiene un entero entre 0
y 253, en decimal, que representa los comandos de Hart. Los nmeros 31, 127, 254 y 255 se
encuentran reservados. Adems, los comandos se dividen en tres grupos especficos, a saber, los
comandos universales, los comandos de prctica comn y los comandos especficos del dispositivo.
2.4.1.-Los comandos universales:

Los comandos universales se encuentran

entre 0 y 30. Estos proveen funciones que son

implementadas en todos los dispositivos Hart. La tabla 2.4 contiene un resumen de estas funciones, la
tabla que se encuentra en el anexo 2 los describe de un modo mucho ms detallado.
Comandos
0,11
1,2,3
6
12,13,17,18
14,15

16,19

Funcin
Identificar dispositivo (fabricante, tipo de dispositivo, etiqueta de revisin)
Leer variables medidas
Establecer direccin de escaneo.(y modo multipunto).
Leer y escribir informacin introducida por el usuario (tag, fecha,mensaje)
Leer informacin del dispositivo (numero serial del sensor, lmites del sensor,
operacin de alarma, valores del rango, funcin de transferencia,
constante de tiempo de muestreo)
Leer y escribir nmero final de ensamble.

Tabla 2.4 Comando universales


Los comandos #0 y #11 (comandos universales):
Los comandos #0 y #11, son utilizados para identificar un dispositivo de campo. Desde la
revisin 5, todos los equipos utilizan el formato largo, pero el comando #0 debe ser tambin aceptado.
Esto permite que el maestro Hart identifique un dispositivo nuevo, sin antes saber su nmero de
identificacin nico. Los datos en la respuesta al comando #0 incluyen el cdigo de identificacin del
22

fabricante, el cdigo del tipo de dispositivo, y el nmero de identificacin del mismo. De estos, el
maestro puede construir el nmero de identificacin nica para ser utilizado en los mensajes
siguientes.
Los comandos #1,#2 y #3 (comandos universales):
Estos se utilizan para leer las variables medidas de diversas formas. Los comandos #2 y #3
incluyen la actual corriente de salida en mA. Como la verdadera salida analgica, estos valores en mA
representan la variable primaria (VP) solo cuando est dentro del rango configurado. No cuando el
dispositivo se encuentra en operacin multipunto ni tampoco cuando la salida tiene un valor fijo,
saturado o un valor fuera del rango. Sin embargo, la VP y otras variables dinmicas retornadas con
sus respectivas unidades a travs de estos comandos, no son limitadas por el rango establecido, sino
que siguen la medicin del sensor. El porcentaje del rango indicado por el comando #2 tambin sigue
la salida del sensor fuera de los limites, de modo que se puede ir del 0 al 100 % y por encima de esto.
El comando de prctica comn #61 es equivalente al comando #3, para instrumentos similares
con salidas analgicas diferentes a corriente. El comando #110 tambin devuelve variables dinmicas
(sin el nivel de salida de la seal analgica). El comando #33 provee una seleccin de hasta cuatro
variables del transmisor. Para mltiples dispositivos de salida, el comando #60 lee cualquier nivel de
seal analgica de salida seleccionada y el porcentaje del rango, y finalmente el comando #62 provee
la seleccin de hasta 4 niveles de salida.
El comando #6:
Este comando establece la direccin de escner del dispositivo. Cuando se establece en cero, el
dispositivo funciona en modo punto a punto, generando una seal analgica de salida. Para cualquier
valor entre 1 y 15, el dispositivo se cambia al modo multipunto y su salida analgica se fija en 4 mA.
Los comandos #12 y #19:
Estos se utilizan para leer y escribir una seleccin de la informacin del dispositivo. Para las
revisiones menores e igual a 4, los comandos eran #4 y #5, con nmeros de bloques utilizados para
seleccionar una particular seccin de la informacin.

23

2.4.2.-Comandos de prctica comn:


Estos se encuentran en el rango 32 a 126. Proveen funciones comunes a muchos dispositivos de
campo. Si estas funciones son implementadas en el dispositivo, estos comandos deben ser utilizados
para invocarlas. En la tabla 2.5 se observa un resumen de dichos comandos.
Los comandos de prctica comn #123 y #126 no son pblicos. Tpicamente son utilizados
por los fabricantes para insertar informacin especfica del dispositivo durante su instalacin, por
ejemplo el nmero de identificacin del dispositivo, que nunca ser alterado por los usuarios, o para
comandos de lectura y escritura directa a la memoria. Frecuentemente se necesita de una clave para
acceder estos comandos.
Comandos
33,61,110
34-37,44,47

Funcin
Leer variables medidas
Establecer parmetros de operacin (rango, unidades, funcin de transferencia)

38

Reiniciar la bandera de "Configuracin modificada".

39

Control de la EEPROM

40-42
43,45-46

Funciones de diagnstico (modo de corriente fija, auto prueba, reset)


Ajuste de la entrada y salida analgica.

48

Leer estados adicionales.

49

Escribir el nmero serial del sensor.

50-56

Uso de variable del transmisor.

57-58

Informacin de la unidad (tag, descriptor, fecha).

59

Escribir el nmero de bytes de prembulo necesitados.

60,62-70

Uso de mltiples salidas analgicas.

107-109

Control del modo rfaga.

Tabla 2.5 Comandos de prctica comn


Los comandos de prctica comn, del #50 al #56 estn relacionados a estas variables del
transmisor, sus sensores y rangos. En particular, en dispositivos que lo implementan, el comando #51
permite la seleccin de las variables del transmisor para las primeras cuatro variables. Estas pueden
ser ledas utilizando el comando #3. De otro modo, el comando #33 especfica cuatro variables para
ser enviadas en un mismo mensaje.
Los transmisores multi-variables tambin tienen la posibilidad de ms de una salida analgica.
Por definicin, las salidas enumeradas 1 a 4 representan las variables dinmicas de Hart (VP, VS, VT
24

y VC) respectivamente. Los comandos de prctica comn #60 y # 62 al #70 tienen que ver con la
configuracin y control de estas salidas.
2.4.3.-Comandos especficos de dispositivo:
Los comandos especficos de dispositivo se encuentran en el rango 128 a 253. Sus funciones
son ms o menos nicas para cada dispositivo. En la tabla del anexo 2 se muestran algunos ejemplos
de estos. En la revisin 4 y anteriores, los comandos especficos de dispositivo siempre incluan el
cdigo del tipo de dispositivo como el primer byte del campo de datos, para asegurarse de que un
comando nunca llegara a un dispositivo no compatible. Esto fue abandonado en la revisin 5, cuando
se incluy el nmero identificador nico, que cumple con la misma funcin.
Datos:
No todas las respuestas a comandos contienen datos. Para esos que si lo hacen, se pueden
incluir un mximo de 25 bytes. Los datos pueden ser representados como:
Enteros 8,16,24 o 32 bits sin signo.
Nmeros de punto flotante- Formato de IEEE 754 de punto flotante de precisin .
Cadenas de caracteres ASCII-usualmente 4 caracteres por cada 3 bytes.
tem enumerados para una lista estndar.
Si un comando no tiene xito (indicado por error en el campo de estado), las respuestas no
deben contener datos. La respuesta a un comando exitoso siempre incluye el mismo set de variables
como las contena el mensaje de comando; sin embargo, los valores en la respuesta son los
actualmente utilizados, tomados de la memoria del dispositivo de campo, al igual que cualquier
aproximacin involucrada. El nmero de bytes de datos, y el formato de los mismos (de cada
elemento) son especificados para cada comando.
2.4.4.-Elementos (tem) enumerados:
Los elementos de datos para los cuales se permite seleccionar de una lista de alternativas se
codifican como nmeros que corresponden a cada alternativa. La tabla 2.6 muestra algunas de las
listas enumeradas estndar. Existen tambin muchas listas especficas para cada dispositivo.
25

Variable

Valores

Identificacin del fabricante

1-249, establecidos por la fundacin HART

Tipo de dispositivo

0-249, establecidos por cada fabricante

Unidades

0-249: 6 = psi, 7 = bar, 32 = C, 33 = F, etc.

Funcin de transferencia

0 = lineal, 1= raz cuadrada, etc.

Material

0-249 : 2 =316 acero inoxidable, 10 = PTFE, 18 = cermica, etc.

Seleccin de alarma

0 = bajo, 1 = alto, 239 = mantener el ltimo valor de la salida.

Proteccin a escritura

0 = no protegido contra escritura, 1 = protegido.

Control del modo RAFAGA

0 = salir del modo RAFAGA, 1 = activar el modo RFAGA.

Sealizacin fsica

0 = corriente BELL 202, 1 = voltaje BELL 202, 2 = RS-485.

Tabla 2.6 Variables enumeradas


Resumen de comandos:
La tabla 1 del anexo 2 contiene un listado de la estructura de los datos de los comandos
universales. Adems contiene las diferencias entre los comandos para las distintas revisiones de Hart.
La tabla 2 del anexo 2 contiene los comandos de prctica comn de la revisin 5.
Nota: en estas tablas los tipos de los datos se indican como sigue.
A Cadena de caracteres ASCII (empacados 4 caracteres en 3 bytes);
B Bits de banderas
D Fecha (3 bytes, da, mes, ao-1900)
F Nmero de punto flotante (4 bytes IEEE 754)
H Enteros xxxxx yyy (xxxxx = revisin del hardware, yyy = cdigo de sealizacin fsica)
2.4.5.-Bytes de estado:
Dos bytes de estados, tambin conocidos como cdigo de respuesta, estn incluidos en cada
mensaje de los dispositivos de campo. Entre ellos, estos dos bytes guardan tres tipos de informacin
diferente: errores de comunicacin, respuestas a comandos, y estado del dispositivo de campo. La
tabla muestra como se hace esto con solo dos bytes. Si se detecta un error en un mensaje de salida , el
bit ms significativo (bit 7) del primer byte se fija en 1, y los dems detalles del error se indican en los
bits siguientes; el segundo byte contiene puros ceros. De otra forma, si la comunicacin fue exitosa, el
26

bit 7 del primer byte es cero, el resto del byte contiene la respuesta al comando, indicando cualquier
problema con el comando recibido, y el segundo byte contiene el estado del dispositivo de campo,
indicando el estado operacional del; dispositivo.
Los errores de comunicacin son aquellos que podran ser detectados por la UART. Adems
informa cualquier incongruencia entre el registro de recepcin y la suma de verificacin. Los
comandos de respuesta (enteros en el rango de 0 a 127) se categorizan como errores o advertencias. Y
teniendo mltiples o un simple significado. La tabla muestra los rangos especficos para cada tipo.
La tabla muestra aquellos que tienen mltiples significados especficos para cada comando universal
o de prctica comn.
El campo de estado de los dispositivos de campo incluye ambos, condicin de falla o de
operacin anormal, por lo que no implica que el dispositivo est fallando. Muchos dispositivos
ofrecen ms informacin de estado de la que se puede codificar en un solo byte. Para esto, el bit 4 del
campo de estado se puede colocar en 1, indicando que existe mayor informacin disponible; el
comando #48 puede ser entonces utilizado para leer la informacin adicional. Originalmente, el uso
de los bytes de datos en el comando #48 estaba libre para ser implementado por el diseador, pero
desde la revisin 5.1 de Hart, los bytes 6 al 13 deben tener significado especfico, indicando los
modos de operacin y el estado de las mltiples salidas analgicas.

27

CAPITULO 3 .- DESCRIPCION DEL SISTEMA


El siguiente captulo se refiere al sistema. Las partes que integran el sistema se tratan como
puntos apartes, comenzando con el circuito digital o hardware, del cual se describe los integrados
utilizados y las partes que conforman cada uno de estos, comenzando por el mdem Hart HT2012 y
todos los circuitos externos que requiere, el circuito integrado de conversin TTL - RS 232, el circuito
de generacin del lazo de corriente, el conversor analgico digital, y el microcontrolador. En cuanto
al programa del microcontrolador o firmware se describe las rutinas implementadas y la forma en la
que las mismas se relacionan y finalmente se trata el software o programa de interfaz para el usuario
del maestro, que en este caso es el computador personal.
Sin embargo, antes de entrar en los detalles del diseo, se menciona los implementos necesarios
para llevar acabo el proyecto en el cual se disea el sistema de la figura 3.1.

Figura 3.1 Diagrama del sistema a realizar


3.1.- Cmo implementar el protocolo HART en los medidores de flujo?

Para poder implementar un protocolo en cualquier dispositivo remoto o esclavo, se necesita un


microprocesador, en especial si el protocolo de comunicacin es el protocolo Hart, ya que como se
vio en el captulo 2 , el protocolo requiere dispositivos inteligentes, refirindose con este adjetivo al
hecho de contener un microcontrolador. El microcontrolador que la compaa Flotech S.A. utiliza en
sus instrumentos medidores de flujo es el Basic TIGER, de Wilke Technology. Este microcontrolador
posee una gran capacidad de memoria y un puerto serial que se utiliza al momento de conectar el
mdem Hart. Para que el microcontrolador sea capaz de responder a los mensajes Hart, se debe

28

realizar un programa que reciba y decodifique el mensaje, para luego ensamblar una respuesta al
mismo tomando los valores necesarios desde el sensor (firmware).
El mdem Hart es la parte fsica del protocolo en s, es el que se encarga de transformar la seal
digital del microprocesador en una seal analgica con codificacin por desplazamiento en
frecuencia, que viaja por un par de cables hasta el mdem del maestro. Este mdem se describir con
ms detalle en el captulo de hardware y materiales.
El microprocesador, el TIGER, se programa en Basic, un lenguaje de alto nivel bastante
sencillo. El microprocesador en si, incluye un software que maneja perifricos, como pantallas LCD y
tambin puertos seriales. Luego, con simples comandos se puede enviar la informacin a la pantalla
de visualizacin y al mdem. Lo complicado de la programacin del TIGER es saber Cundo es
correcta la informacin que recibe?, Cmo decodificar o desensamblar el mensaje una vez recibido?
y Qu se debe responder a dicho mensaje?.
Para

la realizacin del proyecto no se dispona de un maestro, de un dispositivo que

estructurase los mensajes y los enviase al microcontrolador; de modo que tambin hubo que disear
un software que se pudiese utilizar en un PC y que cumpliese el papel de maestro. Luego, para el
programa en el PC, se utiliz el reciente lenguaje de programacin de alto nivel, JAVA. Y para
asegurar que el protocolo estuviese implementado de acuerdo al estndar de la Fundacin Hart, se
realizarn pruebas con PDVSA que posee un maestro aprobado por la fundacin.
Detalles sobre los programas tanto del microprocesador TIGER, como del PC, los encontrar en
el captulo de programas del microcontrolador (firmware) y programas en lenguaje Java para el PC
(software), en donde se da respuesta a las preguntas anteriores. Cabe destacar que no se presentan las
rutinas como tal (ya que explicar cada comando o instruccin dentro de la rutina no es objetivo de
este libro), se muestra mediante un diagrama de flujo la conexin entre las diferentes rutinas o
programas que ejecutan funciones diferentes, desde capturar datos hasta ensamblar el mensaje de
respuesta hacia el dispositivo maestro.
Seccin 3.2.- Hardware y materiales
A continuacin se proceder a describir en detalle la parte fsica del instrumento o dispositivo
de campo, esta se basa en la tarjeta digital del circuito que se diseo, dicha tarjeta posee la siguiente
estructura (figura 3.2):
29

Figura 3.2 Diagrama de la tarjeta digital


3.2.1.-Microcontrolador
Los sensores de flujo de la compaa Flotech S.A., a los que se les desea instalar el protocolo
Hart, funcionan con el microcontrolador Basic TIGER, de Wilke Technologies (figura 3.3 ). Este
microprocesador tiene las siguientes especificaciones:

Figura 3.3 Microcontrolador TIGER


Es un procesador multitareas, con la capacidad de ejecutar hasta 32 tareas por separado.
La velocidad en instrucciones por segundo que ejecuta es de hasta 100.000, las
operaciones con dispositivos I/O son ms lentas, dependiendo de su complejidad.

30

Capacidad de memoria: aproximada de 2000 a 5000 instrucciones de Basic con la


memoria FLASH de 128Kb y de 10000 a 30000 instrucciones, con la memoria FLASH
de 512Kb, el mximo en memoria Flash en venta es de 4Mb.
La arquitectura de los pines de I/O del Basic TIGER se disea para otorgar flexibilidad y
expansin sencilla. El modulo tiene 38 pines I/O que pueden ser utilizados en una gran
variedad de formas. Se pueden asignar otras funciones a los pines de I/O con la
programacin apropiada en Basic.
Dos puertos seriales, puerto serial 1 que tiene las respectivas entradas RxD y TxD, y el
puerto serial cero, que adems de TxD y RxD tiene unos pines de RTS y CTS, con la
posible eleccin entre TTL o drivers de V24 (pines 24-29) que se pueden configurar
mediante el software.
Los parmetros de comunicacin son de 300, 600, 2400, 4800, 9600, 19200, 38400,
76800, 153600 Baudios; con 7 u 8 bits de datos; paridad O/E o N y un bus RS-485.
Posee convertidores anlogo a digital de 8, 10 o 12 bits que poseen una tasa de muestreo
de hasta 50000 muestras por segundo.
Posee un controlador interno de pantalla LCD 15, con sets de caracteres definibles, con 8
caracteres cada uno. Control del cursor, secuencias de ESC, seleccin de men,
smbolos en movimiento etc.
Fuente de alimentacin o de poder de 4.7voltios a 5.5 voltios y corriente de 45mA a
80mA (en modo inactivo de 50 a 100 micro amperios)
Capacidad de memoria de 128Kb a 2 Mb en memoria SRAM y 128Kb a 4Mb de
memoria FLASH.
RESET, tiene una entrada o pin para reiniciar el modulo.
Reloj de tiempo real con calendario y alarmas, se requiere de una batera externa para
instalar esta aplicacin.

31

Salidas digital anlogas de PWM, 2 canales, con resolucin de 6 a 8 bits y frecuencias


desde 0.6kHz a 39kHz.
En la siguiente tabla se encuentra la especificacin de cada pin:
Pin No.

Nombre

Descripcin

VCC

Voltaje de alimentacin

L60

Puerto 6 - Pin 0

L61

Puerto 6 - Pin 1

L62

Puerto 6 - Pin 2

L63

Puerto 6 - Pin 3

L64

Puerto 6 - Pin 4

L65

Puerto 6 - Pin 5

L66

Puerto 6 - Pin 6

L67

Puerto 6 - Pin 7

10

L70

Puerto 7 - Pin 0

11

L71

Puerto 7 - Pin 1

12

L72/PWM

Puerto 7 - Pin 2 o PWM salida

13

L73/PWM

Puerto 7 - Pin 3 o PWM salida

14

L80

Puerto 8 - Pin 0

15

L81

Puerto 8 - Pin 1

16

L82

Puerto 8 - Pin 2

17

L83

Puerto 8 - Pin 3

18

L84

Puerto 8 - Pin 4

20

L86

Puerto 8 - Pin 6

21

L87

Puerto 8 Pin 7

22

Reset in

Entrada de reset

23

GND

Tierra

Tabla 3.1 Especificaciones de pines del microcontrolador

32

Pin No.

Name

Description

24

L90/TxD0

Puerto 9 - Pin 0 o lnea RxD del puerto serial 0

25

L91/RxD0

Puerto 9 - Pin 1 o lnea TxD del puerto serial 0

26

L92/CTS0

Puerto 9 - Pin 2 or CTS0

27

L93/TxD1

Puerto 9 - Pin 3 o lnea RxD puerto serial 1

28

L94/RxD1

Puerto 9 - Pin 4 o lnea TxD puerto serial 1

29

L95/RTS0

Puerto 9 - Pin 5 o RTS0

30

L33

Puerto 3 - Pin 3

31

L34

Puerto 3 - Pin 4

32

L35

Puerto 3 - Pin 5

33

L36

Puerto 3 - Pin 6

34

L37

Puerto 3 - Pin 7

35

L42/I2C-clock Puerto 4 - Pin 2 o I2C-BUS puerto 3 lnea de reloj

36

L40/I2C-Data Puerto 4 Pin 0 or I2C-BUS data Line

37

L41/PC

Pin de modo PC

38

Alarm out

39

Analog in 0

Entrada analgica 0 (0 -> VCC)

40

Analog in 1

Entrada analgica 1 (0 -> VCC)

41

Analog in 2

Entrada analgica 2 (0 -> VCC)

42

Analog in 3

Entrada analgica 3 (0 -> VCC)

43

A/D-Ref-in

A/D referencia de voltaje : 3,5 -> 5,0 volts

44

Analog GND

45

Battery in

Conexin para batera externa

46

VCC (5V)

Fuente de alimentacin o poder

Salida de la alarma (con reloj, en otro caso NC)

Tierra analgica

Tabla 3.1 (Cont.) Especificaciones de pines del microcontrolador


3.2.2.- Desarrollo de la tarjeta digital
Al principio del proyecto se utiliz la tarjeta que inclua el Basic TIGER, cuando la
computadora y el microcontrolador se conectaban directamente por el puerto serial para comenzar a
programar las rutinas de comunicacin, recepcin y anlisis. Una vez que se dispona de las dems
partes del dispositivo, se instal el microcontrolador en una tarjeta diferente, en la que pude elegir que
era necesario de lo que contena el kit y aadir las cosas que el mismo no inclua y eran necesarias.
La tarjeta desarrollada durante el proyecto, contena lo siguiente:

33

Un conversor analgico digital, para convertir la entrada del sensor de nivel o flujo a un valor
digital de 12 bits. Este se conecta al microcontrolador mediante los pines 20 (Puerto 8 pin 6) y 21
(Puerto 8 pin7), que son puertos controlables mediante software. El conversor ADC utilizado fue el
LTC1298, cuyo circuito interno se muestra en la figura 3.4:

Figura 3.4 Bloque interno del LTC1298


Extrado de las hojas de datos de Analog Devices AD694

Para mayor informacin sobre ste integrado y el modo de conexin del mismo, refirase al
anexo 6 , este contiene algunas de las hojas de datos de este integrado.
Un circuito que genera el lazo de corriente en mA, ya que el dispositivo que estamos creando es
de tipo activo lo cual implica que este debe generar su propio lazo. Luego este circuito se basa en el
integrado AD694

de Analog Devices. Este integrado se coloca en la tarjeta digital mediante el

siguiente montaje (figura 3.5):

34

Figura 3.5 Conexin del generador del lazo de corriente AD694


Extrado de las hojas de datos de Analog Devices AD694

Para mayor informacin sobre ste integrado y el modo de conexin del mismo, refirase al
anexo 5 , este contiene algunas de las hojas de datos de este integrado.
Esto, junto con conectores DB-9 para ambos puertos seriales, conectadores para alimentacin
(ya que la fuente no est incluida en esta tarjeta) y un interruptor que se utiliza en el microcontrolador
para elegir entre modo de programacin y modo de corrida; adems unos leds para indicar en que
modo se encuentra y si el circuito est encendido o no.
Esto es lo que contiene la tarjeta digital, no se incluye el diseo del mdem Hart ya que para
este se disea un circuito impreso individual que se conecta a la tarjeta digital
Para ilustrar lo anterior observe el siguiente diagrama de bloques en la figura 3.6, en el que se
muestra los mdulos de la tarjeta digital:

35

Figura 3.6 Elementos de la tarjeta impresa del circuito digital


3.2.3.-El Mdem HART
Al iniciar el proyecto de pasanta, la empresa dispona de 3 integrados SYM20C15, mdems
para transmitir en protocolo Hart. Estos integrados eran de montaje superficial, luego para poder
conectarlos en el protoboard, donde inicialmente se ensambl el circuito hasta hacerlo funcionar, eran
necesarias unas bases especiales. Se hizo un listado de los componentes para ensamblar el circuito y
realizar las pruebas pertinentes, sin embargo, uno de los integrados necesarios para hacer funcionar el
circuito era el AD421, que en el momento de pedirlo a la empresa NEWARK, no notific la
disponibilidad del mismo, el integrado estaba agotado y no se fabricaba otro lote hasta marzo del
2001; luego fue necesario cambiar el mdem a utilizar.
De todos modos sera necesario el cambio, ya que la empresa que en un principio vendi estos
mdems a Flotech S.A., Symbios Logic, haba sido comprada y no venderan mas de los circuitos
integrados fabricados por la misma. Ya que no tena sentido disear un producto que no se podra
fabricar porque los componentes al momento del diseo ya estaban obsoletos, se realiz una rpida
investigacin (utilizando Internet), sobre la disponibilidad de algn otro mdem, y se encontr la
empresa SMAR RESEARCH CORP. Esta es una empresa que vende equipos industriales con
protocolo de comunicacin Hart y adems algunos integrados, entre ellos el mdem que se requera.
Tambin disponan de circuito con el mdem incluido que bastaba con conectarlo al puerto serial y
luego al lazo de corriente, sin embargo, este costaba $300 y el mdem como integrado solo $5,
36

adems, para poderlo conectar al micro esta interfaz Hart, que es el nombre de su producto (para
mayor detalle refirase al anexo 4), requerira de todas las conexiones que tiene la computadora hacia
el puerto serial, y que como ya se mencion en la parte del microcontrolador, este no dispone de todos
los pines de conexin serial estndar. Finalmente, adquirimos el circuito integrado

HART2012

(anexo 3) . Este Integrado requera un filtro de entrada y filtro de salida, adems de un circuito
integrado MAX232 o MAX202, para compatibilidad con el puerto serial del microcontrolador. Cabe
destacar que los microcontroladores tienen la posibilidad de ser adquiridos sin el conversor RS232
interno, y de ese modo no hara falta este integrado en el diseo del impreso del mdem HART, sin
embargo, la empresa adquiri stos, para poder realizar la programacin de los mismos de modo
directo, de modo que la redundancia (TTL a RS 232 y RS 232 a TTL de nuevo) es necesaria y no se
modificar en ningn momento.
Una vez que se dispone de los circuitos integrados y componentes necesarios, se ensamblo el
circuito en el protoboard , para realizar pruebas hasta que funcionase correctamente. Se mont segn
el siguiente esquema (figura 3.7):

Figura 3.7 Circuito completo del Mdem Hart


Aqu, como podemos observar, el circuito dispone de un filtro de entrada, un filtro de salida, el
mdem HART 20 12, y un conversor TTL RS 232.

37

El filtro de entrada, consiste en un amplificador operacional, que en este caso es el LM2904,


que enva su salida a un comparador, el TLC71, luego la salida del comparador es una seal 0 5
voltios que entra al mdem HART. En la siguiente figura 3.8 se puede observar en detalle el circuito
del filtro de entrada.

Figura 3.8 Filtro de Entrada del Mdem


El filtro de salida, se basa en un filtro pasa banda RC, con frecuencias de corte 1000Hz y
2500Hz, adems un condensador en serie para eliminar el DC de la seal. Observe la figura 3.9, en
esta se incluyen los tres estados que controlan el medio:

Figura 3.9 Filtro de Salida del Mdem


Para poder controlar lo que recibe el mdem y lo que enva, ya que la comunicacin es halfduplex (la seal transmitida y la recibida comparten el canal o medio de transmisin, por lo que no se
puede hacer ambas cosas al mismo tiempo), se requiere de unas compuertas de tres estados 74HC126,
que se controlan con la seal de RTS.
38

Para la seal de reloj del mdem, se requera de un cristal de 460.8kHz, se utiliz la siguiente
configuracin de circuito oscilador (figura 3.10):

Figura 3.10 Reloj del mdem


3.2.4.-Descripcin del modulador HT2012
El mdem posee las siguientes caractersticas:
Funciona bajo el estndar Bell 202 con una tasa de baudios de 1200 bits por segundo.
Utiliza las frecuencias de 1200 Hz y 2200 Hz del estndar Bell 202.
Bajo consumo de potencia (consumo tpico 40 A).
Deteccin de portadora (Carrier Detect) mejorado.
Modulacin por desplazamiento en frecuencia en un solo integrado.
Recepcin y transmisin de datos a 1200 baudios
Fuente de alimentacin requerida de 3 a 5 voltios.
Compatible con CMOS y TTL.
Se optimiza para aplicaciones intrnsecamente seguras.
Utiliza tecnologa CMOS de confianza.
Soporta el rango de temperaturas industrial (-40C to 85C)
A continuacin, en la figura 3.11, podr observar los pines del integrado HT2012:

39

Figura 3.11 Mdem Hart HT2012


El mdem funciona del siguiente modo:
La seal RTS (ready to send) se encuentra siempre activa de modo que ninguno de los dos, ni el
maestro ni el esclavo, ocupe la lnea. Las salidas TTL del MAX 232 van directamente a los pines
respectivos del mdem, IRxD (input receive signal) y OtxD (output receive signal). Al bajar la seal
de RTS, el mdem comienza a modular con desplazamiento en frecuencia, dependiendo del valor del
pin IRxD, la frecuencia ser de 2200Hz o 1200Hz, como lo establece el estndar Bell 202.
Las pruebas que se realizaban eran en un principio con los terminales de dos computadoras, si
el puerto serial se conectaba a los respectivos mdems (se requiri de la fabricacin de dos de ellos
como mnimo) y se comunicaban entre ellos a una tasa de bits de 1200bps, como se encuentra en los
parmetros del protocolo Hart y del mdem en s.
En cuanto al montaje, para llegar al actual diseo de la tarjeta del mdem, se fabricaron dos
prototipos. Los primeros eran circuitos con pistas de cobre de un solo lado, lo cual haca necesaria la
conexin mediante cables, estos primeros prototipos los puede observar en la figura 3.12 y en el
anexo 8 encontrar el diseo del circuito impreso.

40

Figura 3.12 Primeros circuitos impresos para el mdem


Luego se realiz un segundo diseo con correcciones de errores del primero y de doble cara, es
decir, con pistas de cobre por ambos lados de la tarjeta; este es el diseo final del impreso del mdem.
Este se conecta a la tarjeta en la cual se encuentra el microcontrolador mediante un conectador de 10
pines, como se observa en la siguiente figura 3.13:

Figura 3.13 Conexin del mdem Hart a la tarjeta digital


41

Esto concluye la descripcin de la parte fsica del sistema, la tarjeta digital que se incluir en el
dispositivo, sin embargo este no es un diseo que pueda ser fabricado en cantidad, ya que el circuito
se ensambl en una lmina perforada sin conectadores de cobre de ningn tipo, se debe disear un
circuito impreso para colocar todos los mdulos de un modo ms eficiente, que reduzca el espacio.
Ahora procedemos a describir el firmware del equipo, el programa del microcontrolador que se
encarga del procesamiento de los mensajes en el dispositivo remoto o sensor.
3.3.- Programas del microcontrolador ( firmware)
El programa del microcontrolador se define mediante la siguiente estructura (figura 3.14):

Figura 3.14 Estructura del firmware


A continuacin se describe brevemente cada una de las partes del programa o rutinas y las
funciones que llevan a cabo, se mencionan los nombres utilizados para cada una durante la
programacin, de modo que en caso de observar el anexo 10 el lector pueda comprender con mayor
facilidad el fragmento del programa.

42

3.3.1.-Recepcin y anlisis
Para iniciar el desarrollo del firmware era necesario crear una rutina que recibiese el mensaje.
Para ello se trabaj conectando los puertos seriales del PC y del TIGER directamente. La rutina toma
los caracteres o bytes y los imprime en el LCD. Una vez que se verific que la rutina recibiera
correctamente los bytes, se proceda a un nivel superior de complejidad, ya que era necesaria una
rutina que analizar lo que reciba como si fuese un mensaje Hart, para este momento fue necesario
realizar un pequeo programa en JAVA que transmitiese un mensaje fijo pero con la estructura
HART, es decir, 20 bytes de prembulo, direccin, comando y otros. Luego, el TIGER recibe el
mensaje y asignando a un arreglo de bytes lo que se recibe del puerto, divide el mensaje en sus
respectivas partes, e imprime en el LCD el comando (nmero del comando). Sin embargo, esto no
requera mayor esfuerzo, ya que el mensaje era fijo y se conoca exactamente que longitud, en bytes,
tiene cada parte del mensaje. En el protocolo Hart, como se vio en el captulo 2, el mensaje puede
variar su longitud, y adems puede tener dos formatos diferentes. De modo que, para poder recibir el
mensaje, deba ser analizado a medida que llegaba al puerto serial, por lo que hubo que integrar la
rutina de recepcin con la de anlisis.
La rutina de recepcin y anlisis revisa el puerto constantemente en busca de informacin o
bytes de datos, al momento de recibir alguno de ellos, lo compara con FF hex (que son los primeros
20 bytes de un mensaje HART) para poder sincronizar, detectar la existencia de un mensaje en la
lnea y adems eliminar ruido de modo digital. Si la cantidad de bytes con valor FF era igual a la
cantidad de bytes de prembulo asignados al dispositivo, el mensaje contina siendo almacenado en el
arreglo de bytes, siendo el siguiente byte, el byte de inicio o como se denomina el arreglo en el
programa, byte de START.
El byte de inicio indica el formato del mensaje, si es de formato corto o de formato largo, esto
se implement en el programa mediante un IF, y el valor por descarte es un mensaje de respuesta que
indica que el mensaje es errado. De modo que si el byte de inicio es 2 o 186 (02 hex y 82 hex
respectivamente) se descifra el largo del campo de direccin o address, que en un caso es de 5 bytes y
en otro de un solo byte. Luego, si el formato es largo, se reciben los cinco bytes siguientes y son
almacenados en un arreglo denominado ADRESSA, si es un byte se almacena en ADDRESSB.
La direccin debe ser tambin analizada en el momento en que se recibe, ya que si no es la
direccin del dispositivo ste no debe emitir respuesta alguna. Esto corresponde al primer rombo de la
43

figura de la estructura del programa que se presenta al principio de esta seccin. Una vez que se sabe
que el mensaje es para el dispositivo, se contina la recepcin de bytes. El siguiente es el byte de
comando (COMMAND), de modo que de acuerdo a lo establecido por la fundacin Hart, ya se conoce
lo que se encuentra en el mensaje, ms sin embargo an no se conoce su longitud. Un breve ejemplo
podr aclarar lo antes mencionado. El comando nmero 17 es un mensaje de mximo 32 caracteres,
pero pueden ser menos, de modo que se debe saber cuantos bytes de informacin han sido enviados.
Para ello, se incluye el byte de cuenta de bytes (BYTECOUNTBYTE), el cual es un entero del 0 al 25
que facilita ese dato y viene inmediatamente despus del byte de comando. Luego, se recibe la
cantidad de bytes que este BYTECOUNTBYTE indica y se almacenan en un arreglo denominado
DATAS. Finalmente, en el byte de verificacin de suma, que en el programa es CHECKSUM, se
guarda el XOR de todos los bytes desde el de inicio hasta el ltimo dato, para verificar que no hubo
errores de transmisin y que el mensaje est intacto.
3.3.2.-Respuesta al comando

Una vez que se dispone de cada una de las partes del mensaje en arreglos, se procede a realizar
lo que el maestro indica mediante el nmero del comando. Segn el nmero de comando recibido se
debe realizar o invocar rutinas diversas. La que la mayora de las veces se ejecuta (la mayora de los
comandos incluyen este dato) es la medicin de la variable primaria, para lo cual se realiz una rutina
aparte.
Para separar estas rutinas, se utiliza un SWITCH con los posibles casos o comandos disponibles
en el dispositivo(para este proyecto, solo fueron incluidos los comandos universales).
En la mayora de los comandos, los datos enviados son fijos, son parmetros del dispositivo o
de las pocas variables que el mismo mide (variable transmitida en mA). De modo que estas se
almacenan en la memoria del TIGER para ser invocadas y/o modificadas en cuanto sea necesario. En
el anexo 2 se incluye una tabla con todos los parmetros necesarios para satisfacer los requerimientos
de informacin de los comandos universales.
No se detallar cada uno de los 13 comandos disponibles (los comandos universales), pero ms
adelante se incluir un ejemplo de aquellos que sirvan para describir las dems rutinas del programa.

44

3.3.3.-Transformacin de valores
El mensaje recibido se almacena como bytes, de modo que los nmeros decimales negativos y/o
mayores a un byte deben ser incluidos en una rutina de conversin. Esta rutina se denomina en la
estructura del programa ByteToFloat, ya que en el mensaje los nmeros son enteros (un byte mximo)
o de tipo flotante. Siendo de tipo flotante (segn el protocolo Hart), cuatro bytes, que representan el
nmero en dos partes, la mantisa M y el exponente E, siendo el nmero decimal igual a M x 2E . La
mantisa ocupa los dos primeros bytes ms 7 bits del tercero, el exponente ocupa el cuarto byte sin el
bit superior ms el bit restante del tercer byte y el ltimo bit indica el signo de la cantidad decimal.
En el momento de transmitir la respuesta se invoca una rutina que hace lo opuesto, pasar del nmero
flotante recibido del sensor a bytes individuales que se denomina FloatToByte.
3.3.4.-Codificacin o compresin de caracteres
Es necesaria una rutina de codificacin y decodificacin de caracteres, en realidad dos rutinas
diferentes. En el captulo 2 , se describi el modo en el que los bytes de tipo caracter son
comprimidos, o mejor dicho, los parmetros de tipo caracter, como el tag (nmero identificador del
dispositivo o etiqueta), el DESCRIPTOR y los mensajes de texto de 32 caracteres. Esta codificacin
es del modo siguiente. Los caracteres son tipo ASCII, pero cada cuatro bytes (8 bits) se comprimen en
tres, se eliminan los dos bits superiores del byte, es decir, el byte ya no es ASCII sino de 6 bits.
Luego, solo se utiliza una parte del cdigo ASCII que son los caracteres desde el 20 hex hasta el 5F ,
estos incluyen signos de uso frecuente y letras maysculas. Para codificar, simplemente se eliminan
los dos bits superiores de cada byte y con una serie o secuencia de SHIFTs, ANDs y Ors, se
comprimen a los 3 bytes. Para decodificar es un poco ms complejo, de acuerdo a los dos bits ms
significativos (de los 6 bits) se aaden los bits que faltan. Si estos dos bits son 00 entonces se cambia
la parte superior del byte a 0100, pero si son 01, se cambian a 0101, de modo que los bytes superiores
sern 2, 3, 4 5 ( del 20 al 5F hex).
3.3.5.-Conversin analgico a digital
Esta es una pequea rutina que lee el puerto nmero 8 del TIGER, al cual se ha conectado
previamente la salida de un ADC, circuito integrado que transforma un valor analgico introducido,
en un valor digital a su salida, en forma serial. Al invocar la rutina ADC12bit se obtiene el valor
medido por el sensor, que es el que se asigna a la variable primaria.
45

Conociendo la existencia de estas rutinas de transformacin de enteros a flotante, de


compresin de caracteres y obtencin de valores, podemos dar ejemplos de comandos y su
implementacin en el programa.
Cuando el maestro enva el comando nmero 18, en el campo de datos se encuentran el tag el
descriptor (con compresin de caracteres) y la fecha (sin comprimir). Luego, se decodifica y se
asignan los valores enviados a los parmetros del dispositivo, la respuesta debe ser igual o incluir los
mismo datos que envi el maestro o los nuevos valores de los parmetros tag, descriptor y fecha.
De los comandos universales, los nicos que incluyen datos del maestro al dispositivo de
campo, son los tres ltimos, el 17, 18 y 19. El 17 es el que transmite un mensaje al dispositivo (un
mensaje de 32 caracteres que debe presentarse en la pantalla LCD), el 18 es el antes mencionado y el
19 modifica el nmero de ensamble final (NFE), uno de los parmetros del dispositivo.
Al recibir los dems comando se debe emitir una respuesta con los datos que segn el comando
le correspondan, por ejemplo, el comando nmero uno es el que transmite la variable primaria (la
medicin del sensor) junto con las unidades de la medicin. Las unidades se indican de acuerdo a una
tabla con nmeros enteros. Luego el primer byte del campo de datos se utiliza para incluir la unidad, y
los siguientes cuatro bytes, es decir, del 1 al 4, para almacenar los bytes que resulten de transformar el
valor flotante de la variable primaria a bytes. El comando 3 es bastante similar, solo que este incluye
las cuatro variables posibles del protocolo, cada una con su unidad de medicin, excepto los primeros
cuatro byte, que indican la corriente del lazo en mA.
El comando 13 enva al maestro el tag, descriptor y la fecha, luego se debe invocar a la rutina
de codificacin de caracteres. Para el tag que es de 8 caracteres, se asignan 6 bytes del mensaje; para
el descriptor, de 16 caracteres, se asignan 12 bytes; pero la fecha no necesita compresin, ya que tres
bytes son suficientes, da, ao y mes respectivamente. Este comando permite observar los valores sin
poder modificarlos ( cosa que se realiza con el comando 18 se mencion anteriormente).
Un comando interesante es el comando 12, este es aquel en el que el maestro recibe un mensaje
(de 32 caracteres) del dispositivo remoto, pero dado que el dispositivo remoto en el momento del
diseo del proyecto no inclua un teclado para poder ingresar mensajes, se implement un mensaje
fijo que se transmite siempre que se le enve ese comando. En un futuro se pretende aadir pequeos
teclados a los dispositivos, para poder modificar su programacin en el campo y enviar mensajes de
texto.
46

Algunos fragmentos del cdigo se encuentran en el anexo 9 de este libro. Finalmente, el


software o programa del maestro (computador personal).
3.4.-Programa para el maestro o interfaz para el usuario
El programa realizado para el maestro de prueba, posee una estructura similar a la del programa
del Basic TIGER, sin embargo, la diferencia entre los lenguajes de programacin Basic y Java, hacen
que las rutinas sean algo ms complicadas. Para llevar acabo la programacin en este lenguaje se
acudi a la interfaz de aplicacin de programacin de Java (API, clases y objetos ya existentes); y se
procedi a realizar lo mismo que en el programa del TIGER, pero incluyendo una interfaz grfica
que permite interactuar con el usuario.
Java es un lenguaje de programacin orientado a objetos (si desea saber ms sobre esto se le
sugiere revise la bibliografa), luego, en vez de programas o rutinas, se les denomina clases, las
mismas se invocan las unas a las otras para lograr el mismo resultado que el programa del TIGER. En
nuestro caso, el maestro dispone de una clase principal que crea la interfaz grfica y activa los
botones que el usuario utilizar para controlar la aplicacin. Al presionar o seleccionar alguno de los
tem de la ventana de interfaz, se llama a otra clase que determina cual de las acciones se debe
realizar.

47

La interfaz es la siguiente (figura 3.15):

Figura 3.15 Interfaz grfica del programa maestro


Como puede observar, la interfaz no es para ser utilizada por cualquier usuario, se planea hacer
modificaciones a la misma una vez que todo el dispositivo este completo, para ofrecer el servicio de
instalacin completo de dispositivos de campo y maestro, pero cabe notar que para la empresa es
prioridad el dispositivo (hardware y firmware) y no el software. La interfaz contiene campos que
pueden ser editados y otros que no, ya que son los que se calculan al momento de ensamblar el
mensaje.
El primer campo es la cantidad fija de bytes de prembulo que poseen los mensajes hacia el
dispositivo.
El segundo indica el valor hexadecimal del byte de inicio, de acuerdo a lo que el usuario
seleccione con los checkbox el valor que aparece en dicho campo se modifica.

48

El tercer campo es el de la direccin. Dicha direccin se escribe en valores decimales byte por
byte, de no introducir correctamente la direccin el programa genera errores (no se ha incluido
en el programa dilogos de error, de modo que de cometer algn error este ser visible en el
command prompt o el terminal desde el cual se corri el programa java Hart).
El cuarto no es un campo sino una lista de seleccin con los comandos disponibles del
dispositivo, aunque, siendo este un maestro para utilizar con cualquier dispositivo Hart, debera
permitir escritura, de no poseer el dispositivo dicho comando, deber enviar un mensaje en el
cual los bytes de estado o estatus indican que el mismo no dispone del comando.
La cuenta de bytes se genera automticamente al presionar el botn Componer.
El campo de datos presenta lo que se aade al mensaje, de no poseer ningn dato se indica o
simplemente aparece el comando que se ha seleccionado. Recuerde que, como se mencion en
la parte del programa del TIGER, solo los comandos 17, 18 y 19, son los que envan datos del
maestro al dispositivo.
Finalmente, un campo de texto en el que se escribe lo que el programa esta realizando o recibe
del dispositivo de campo.
Los botones:
RESET, inicializa todos los campos de la interfaz.
EXIT, cierra el programa.
SEND, enva el mensaje.
COMPONER, ensambla el mensaje.
De modo que para poder enviar un mensaje al dispositivo ocurren los siguientes eventos:
Se selecciona el formato del mensaje, se escribe la direccin y se le da al botn de componer
(en caso de que el comando a enviar sea diferente del 17, en cuyo caso tambin se introduce el
mensaje de 32 caracteres en el campo de datos), al seleccionar cualquiera de los botones de la interfaz
se invoca la clase ManejaEventos, que decide cual de las dems clases debe ser llamada, y asigna
valores a los campos de texto de la interfaz.
49

Al presionar el botn de componer la ventana se actualiza. Para este momento, ya se ha


asignado valores a cada byte que compone el mensaje, al invocar una clase denominada
ComposicionMensaje, la cual adems contiene mtodos (subrutinas) que codifican los bytes de tag,
descriptor y del mensaje de 32 caracteres.
Luego se presiona el botn de SEND o enviar, al hacerlo, se invoca la misma rutina
composicin de mensaje y la clase SerialConection, que transmite el mensaje al mdem Hart de modo
serial. Mientras el mensaje es enviado al dispositivo y se espera una respuesta se le informa al usuario
mediante el campo de mensaje del TIGRE, en el cual se imprimen las palabras enviando el
mensaje, para que el usuario sepa que ha funcionado la comunicacin del maestro hacia el
dispositivo (es decir, entr a la rutina que enva los datos por el puerto serial al mdem).
Finalmente al obtener una respuesta del TIGER se invoca la clase MessageAnalisis que se encarga
de dividir el mensaje en las partes respectivas y segn el comando que se envi se muestra en el
campo de Mensaje del TIGER los valores de los bytes o campos individuales del mensaje ms
importantes y luego lo que el comando en si debe enviar. Por ejemplo el comando 3 incluye la
corriente del lazo, las unidades y variables (de la primaria a la cuarta) y se muestran de la siguiente
forma:
Corriente en mA: valor recibido
Unidades variable primaria: valor recibido
Variable primaria: valor recibido
Unidades de la segunda: valor recibido
Segunda variable: valor recibido
Unidades tercera variable: valor recibido
Tercera variable: valor recibido
Unidades cuarta variable: valor recibido
Cuarta variable: valor recibido
Para cada comando se muestra la estructura de lo recibido de un modo similar, descripcin y
despus de los dos puntos el valor recibido o asignado.

50

El programa del maestro no es un programa secuencial, a diferencia del programa del TIGRE,
este llama a las diferentes clases o rutinas a medida que se necesita de ellas, por ejemplo, por cada
byte que se recibe se invoca la clase SerialConection y la clase MesageAnalisis.
De este modo se culmina la descripcin del sistema diseado y se procede al captulo de
pruebas y resultados.

51

CAPITULO 4.- PRUEBAS Y RESULTADOS


4.1.-El circuito impreso digital y programa del microcontrolador:
El resultado final de este proyecto es un prototipo, como se mencion anteriormente, la tarjeta
digital se muestra en la siguiente figura 4.1:

Figura 4.1 Tarjeta digital con todos sus elementos


Como se puede observar, la tarjeta digital incluye todo lo que se mencion en su descripcin.
Se puede observar el mdem (la tarjeta que se encuentra conectada por encima de ambos
conectadores DB-9), el circuito conversor analgico digital, que se observa en el lado izquierdo del
microcontrolador y el circuito generador del lazo que se encuentra debajo de la tarjeta del mdem.
Este circuito contiene el hardware y firmware del diseo.

52

4.2.- Interfaz para el usuario


La interfaz grfica para el usuario en el PC, o en otras palabras el maestro funciona del
siguiente modo:

Figura 4.2 Interfaz grfica del maestro


Al iniciar el programa aparece la ventana principal en blanco, como se muestra en la figura
anterior; los campos se encuentran vacos y esperando que el usuario proceda a llenar y seleccionar
los valores deseados. Una vez introducidos los valores deseados se presiona el botn de componer y
la ventana muestra los valores calculados para el resto del mensaje, como se muestra a continuacin
(figura 4.3):

53

Figura 4.3 Interfaz una vez presionado COMPONER


Como se puede observar para este momento, los campos contiene los valores introducidos por
el usuario y los establecidos por el sistema, en este caso el nmero de bytes de prembulo es 20, el
formato de mensaje elegido es el formato largo, el cual contiene un campo de direccin de cinco
bytes, el valor de sta direccin se encuentra en el siguiente campo de texto. El comando que haba
sido elegido, la cuenta de bytes que en este caso es cero (recuerde que el comando 3 no contiene datos
del maestro hacia el dispositivo) y el campo de datos que muestra el comando elegido (se mencion
anteriormente que en caso de que el comando no contuviese ningn dato se mostrara en este campo
el comando elegido. Una vez listo el mensaje se presiona el botn de SEND y la pantalla aparece esta
vez del siguiente modo (figura 4.4):

54

Figura 4.4 Interfaz despus de presionar SEND


En la figura se nota que el botn SEND queda inhabilitado una vez que se presiona, esto es para
impedir que el usuario presione el mismo varias veces y cree un conflicto dentro del programa, este se
reactivar una vez que se presione componer de nuevo.
El botn de RESET reinicia la ventana, quedando esta como se muestra en la figura 4.2 en la
cual se borra el contenido del mensaje del TIGRE, para poder continuar enviando mensajes sin la
necesidad de utilizar las barras deslizantes del rea de texto (scrollbars) , sin embargo deber rescribir
los campos de direccin para cada vez que utilice el RESET.
Finalmente, aparecen los resultados de la comunicacin, esto despus de que el programa ha
procesado el mensaje recibido, y se muestran como se ilustra en la figura 4.5:

55

Figura 4.5 Interfaz con los resultados del proceso de comunicacin


Como puede observarse, los resultados incluyen el valor de los bytes de inicio, la direccin, el
comando y el de estado; sin embargo a un usuario que no est programando no le interesa el valor de
estos, sino la frase que indica que el mensaje fue recibido correctamente y los valores que pidi
mediante el comando elegido.
4.3.- El sistema completo
Una vez realizadas las conexiones entre el hardware, firmware y software o entre el
microcontrolador, el mdem del dispositivo de campo al mdem del maestro mediante el lazo de
corriente, y el mdem del maestro al computador mediante un cable serial; se procedi a correr en el
PC el programa del maestro Hart, realizado en JAVA. Para correrlo es necesario abrir el command
prompt del computador y ejecutar el comando java Hart5. Luego se procedi a elegir todos los
comandos disponibles, los cuales para el momento son los comandos universales, y verificar que la
respuesta fuese la asignada por la Fundacin Hart; observando los cambios en los valores de la
variables primaria, la recepcin de mensajes de texto de 32 caracteres, y que no respondiese a
mensajes con direcciones diferentes a la asignada a este dispositivo en particular, entre otras.
56

Una de las principales cosas a probar era el correcto funcionamiento de las rutinas de recepcin
y anlisis, para lo cual se incluy en el programa maestro de PC unas lneas que indican el estado en
el que se recibi el mensaje (esto se verifica comparando el byte de suma de verificacin recibido, con
uno calculado por el programa) e imprimiendo lneas con los valores de cada byte individual, para
verificar que, por ejemplo, el byte de inicio tuviese valores 06 0 86, y no cualquier otro, en cuyo caso
habra algn error en el sistema o en la comunicacin.
Al notar que todos los comandos implementados reciban la respuesta esperada, se dio por
culminado el diseo. Tomando en cuenta que an faltaban detalles, como los datos enumerados y la
implementacin de los

muchos otros comandos, pero que para ese momento era imposible

implementar, ya que el diseo de la parte analgica del sensor no haba sido realizada y las rutinas de
calibracin y dems opciones que permite el protocolo no podan ser programadas sin ste.
El resultado concreto de este proyecto es un sistema que se basa en el protocolo de
comunicacin Hart, una tarjeta digital que mediante el uso de un microcontrolador procesa una seal
analgica FSK de frecuencias 1200 Hz y 2200 Hz para emitir una respuesta al mensaje de comando
del maestro, cuya interfaz es el programa del computador. Con esto vemos que se cumplen los
objetivos del proyecto, an faltando cosas para poder ser un diseo final de venta al pblico, pero que
realiza las funciones deseadas: comprender el protocolo Hart.
En la foto que se presenta al final de sta seccin (figura 4.6) puede observar todo el sistema
conectado, el circuito digital, con el microcontrolador, el mdem y dems partes, y la conexin
mediante solo dos hilos hacia el mdem del computador que se conecta al mismo va serial. Se
observa en la pantalla del computador el programa o interfaz funcionando y en la pantalla LCD un
mensaje que da la bienvenida a Hart de Flotech S.A.

57

Figura 4.6 Sistema con capacidad de manejar el protocolo Hart

58

CAPITULO 5.-CONCLUSIONES Y RECOMENDACIONES


Seccin 5.1.- CONCLUSIONES
Se diseo una tarjeta digital con capacidad de comunicacin mediante el protocolo Hart.
El dispositivo diseado contiene nicamente los comandos universales, a pesar de ello cumplen
el requisito bsico de la fundacin Hart.
El diseo del firmware se realiz de modo modular, es decir, basta con incluir un case nuevo
en cada switch para poder implementar los comandos de prctica comn tanto como los
comandos especficos de dispositivo.
Al realizar la programacin del protocolo en una rutina aislada de aquella que controla el sensor
como tal, se hace posible la implementacin de la misma en mltiples sensores o equipos que
utilicen dicho protocolo.
Se diseo una interfaz grfica que corre en cualquier mquina o computador personal ya que
fue desarrollada en el lenguaje Java, de uso relativamente sencillo y fcil comprensin visual.
El uso de dispositivo como el diseado en este proyecto permite ahorros al momento de la
digitalizacin de campos industriales, ya que el protocolo hace uso de los cables instalados
para comunicacin analgica de 4 20 mA , y no es necesario ir hasta el punto en el cual se
encuentra ubicado el sensor para cambiar la fecha, ajustes de datos o incluso calibrarlo (sta
opcin aun no se encuentra disponible).

59

Seccin 5.2.- RECOMENDACIONES


Se recomienda adquirir un software maestro para el computador, aprobado por la
Fundacin Hart, para probar los equipos una vez que estn listos para ser vendidos.
Para ello se puede contactar a la compaa a la cual se le compraron los circuitos
integrados del mdem hart, Smar Research Coorporation , la cual se puede contactar
mediante Internet a la siguiente direccin: http://www.smarresearch.com/.
Adquirir de la fundacin las hojas de datos y especificaciones del protocolo, las cuales si
se registra la compaa en la Fundacin son enviadas como uno de los materiales de
ingreso, pero de no pretender ser miembro de la fundacin se venden por separado por
un precio de $400. Para adquirir estas especificaciones de protocolo deber contactar a
la Fundacin Hart. Direccin electrnica : http://www.hartfundation.com
Incluir en el programa del dispositivo remoto o TIGER las tablas que indican las
unidades de medida y dems smbolos que se interpreten mediante las mismas. Por
ejemplo, las unidades de metros corresponden a algn entero del 0 al 255 (se asigna 1
byte para unidades, es decir, 255 unidades de medicin posibles).
Si no se pretende adquirir el software del maestro se recomienda realizar diversas
modificaciones al programa actual en Java, dado que este no es un programa para ser
utilizado por personas ajenas a la programacin en Java y al programa en s.
Realizar un circuito impreso final que incluya todos los componentes digitales, el
microcontrolador, el generador del lazo de corriente, el mdem hart con la circuitera
correspondiente y el conversor anlogo digital. sta deber conectarse al circuito
impreso o a la tarjeta analgica mediante conectadores y fijarse de modo que ambas
queden estables dentro de la caja a prueba de explosin.
Se recomienda redisear el filtro de salida del mdem para convertirlo de un simple
circuito RC a un filtro activo. O la inclusin de un filtro integrado, disponibles en el
mercado de componentes.

60

REFERENCIAS BIBLIOGRFICAS

1. Bowden R., "HART Field Communications protocol. A Technical Oveview", Segunda Edicin,
Agosto de 1997, 85 pginas.
2. Wilke Technology GmbH, BASIC TIGER MANUAL , Versin 2.8, Junio de 1998, todo el
manual.
3. Smar Research, HT2012 HART Modem Datasheet
4. Linear Technology, LTC1286/LTC1298 Micropower Sampling 12-Bit A/D Converters in S0-8
Packages
5. Analog devices, 4 20 mA Transmitter
6. Smar Research, HI 311 HART Serial Interface
7. http:// www.hartfundation.com
8. http:// www.smarresearch.com
9. http:// www.javasun.com

61

ANEXO 1
HART field communication protocol
An introduction for users and manufacturers

ANEXO 2
Tablas resumen de los comandos
del protocolo Hart

ANEXO 3
Hojas de datos del integrado HT2012

ANEXO 4
Hojas de datos de la interfaz Hart HT311

ANEXO 5
Hojas de datos del integrado AD694

ANEXO 6
Hojas de datos del integrado LTC1298

ANEXO 7
Primer diseo del circuito impreso
Del mdem Hart

ANEXO 8
Fragmentos del cdigo de
el microcontrolador

'--------------------------------------------------------------------------' Variables para la compresin de mensajes ASCII


'--------------------------------------------------------------------------ARRAY PACKCHAR(25) OF BYTE 'arreglo que contiene el mensaje comprimido
ARRAY UNPACKCHAR(33) OF BYTE 'arreglo que contiene el mensaje sin comprimir
BYTE C
BYTE BIT2220
'diferentes bytes para la compresin de
BYTE BIT0002
'los caracteres o mensajes de texto ASCII
BYTE BIT2200
BYTE BIT0022
BYTE BIT2000
BYTE BIT0222
BYTE BIT0200
BYTE BIT0220
BYTE TEMP
BYTE TEMPA
BYTE M,O,P,R,S,T
BYTE Packet_size
BYTE Unpacket_size
' variable que me da el tamao de lo que se
BYTE Unpacket_to
' comprime o descomprime.
BYTE Packet_to
'--------------------------------------------------------------------------'Rutina Principal
'--------------------------------------------------------------------------TASK MAIN
' inicio de la rutina MAIN
#INCLUDE DEFINE_I.INC
' definicion de simbolos
'--------------------------------------------------------------------------' Drivers de los dispositivos y parmetros
'--------------------------------------------------------------------------INSTALL DEVICE #LCD, "LCD1.TDD"
' instala el display (BASIC-Tiger)
' instala el driver serial y fija la tasa de baudios:
INSTALL DEVICE #SER, "SER1.TDD",BD_1_200, DP_8O, JA, BD_1_200, DP_8O, JA
'
<-----Ser-Ch-0-----> <-----Ser-Ch-1----->
'--------------------------------------------------------------------------CALL INIT_KEYB ( LCD )
' inicializa el teclado con LCD
PRINT #LCD, "<01>";
' limpia la pantalla
PRINT #LCD, "Flotech S.A. HART" ' salida al Display
'--------------------------------------------------------------------------' Variables que componen el protocolo HART
'--------------------------------------------------------------------------BYTE D
D=0
CIF=02h
' codigo de identificacin del fabricante
CTDDF=03h
' codigo del tipo de dispositivo del fabricante
PREAMBLE=14h
' numero de bytes del preambulo requeridos
COMMANDREV=05h
' revision de los comandos universales
COMMANDSDREV=04h ' revision de los comandos especificos de dispositivo
SOFTREV=01h
' revision del software
HARDREV=01h
' revision del hardware
BFDD=00100000b
' banderas del funcionamiento del dispositivo
'BIT 0 = si es un dispositivo multisensor
'BIT 1 = si se requiere control por EEPROM
'BIT 2 = si es un dispositivo de puente
NID(0)=25h
' numero de identificacion del dispositivo
PVU=01h
' unidades de la variable primaria
SVU=02h
' unidades de la variable secundaria

TVU=03h
FVU=04h
FOR D=0 TO 3
PV(D)=01h
SV(D)=02h
TV(D)=03h
FV(D)=04h
CURRENTLOOP(D)=05h
PORRANGO(D)=06h
NEXT
POLLADD=0Fh
UIDTAG(0)=45h
UIDTAG(1)=52h
UIDTAG(2)=49h
UIDTAG(3)=4Bh
UIDTAG(4)=41h
UIDTAG(5)=46h
UIDTAG(6)=45h
UIDTAG(7)=42h
FOR D=0 TO 32
MESAGE(D)=0
NEXT

' unidades de la variable terciaria


' unidades de la cuarta variable
' variable primaria
' variable secundaria
' variable terciaria
' cuarta variable
' corriente en mA en el lazo
' porcentaje (mA) en el rango del lazo
' polling address direccion de "polling"
' identificador unico asociado al tag

' mensaje de hasta 32 caracteres

FOR D=0 TO 16
DESCRIPTOR(D)=0
NEXT
FECHA(0)=01h
FECHA(1)=0Bh
FECHA(2)=00h

' fecha
' fecha
' fecha

' Informacin especfica del sensor


SERIAL(0)=23h
SERIAL(1)=24h
' nmero serial del sensor
SERIAL(2)=25h
UNITS=0
' unidades de los lmites y el rango
FOR D=0 TO 3
LNS(D)=01h
' lmite nivel superior
LNI(D)=02h
' lmite nivel inferior
MS(D)=03h
'minimun span
NEXT
' Informacin de salida
ALARMA=01h
' codigo de seleccion de alarma
TF=01h
' codigo de funcion de transferencia
PVUNITS=04h
' unidades de la PV y del rango
FOR D=0 TO 3
MAXVR(D)=08h
' mayor valor del rango
MINVR(D)=04h
' minimo valor del rango
DAMPV(D)=06h
' damping value en segundos
NEXT
CPE=46h
' codigo de proteccion a escritura
EPD=98h
' etiqueta privada del distribuidor
NFE(0)=00h
' numero de ensamble final
NFE(1)=01h
NFE(2)=02h
'--------------------------------------------------------------------------' Variables para la compresion de mensajes ASCII
iii

'--------------------------------------------------------------------------' al hacer la operacin And


BIT2220=11111100b
' solo se extraen los 6 bits superiores
BIT0002=00000011b
' solo se extraen los 2 bits inferiores
BIT2200=11110000b
' solo se extraen los 4 bits superiores
BIT0022=00001111b
' solo se extraen los 4 bits inferiores
BIT2000=11000000b
' solo se extraen los 2 bits superiores
BIT0222=00111111b
' solo se extraen los 6 bits inferiores
BIT0200=00110000b
' solo se extraen los 2 bits medio izq
BIT0220=00111100b
' solo se extraen los 4 bits medio
FOR C=0 TO 32
' inicializacion de los arreglos
UNPACKCHAR(C)=0
' que comprimen los datos para
NEXT
' ser enviados en ASCII
FOR C=0 TO 24
PACKCHAR(C)=0
NEXT
'---------------------------------------------------------------------------PERMANENTADDRESS(0)=45h
' 69 en decimal
PERMANENTADDRESS(1)=46h
' 70 en decimal
PERMANENTADDRESS(2)=47h
' 71 en decimal
PERMANENTADDRESS(3)=48h
' 72 en decimal
PERMANENTADDRESS(4)=49h
' 73 en decimal
PERMANENTADDRESSB=45h
RUN TASK MesageReceiver
END

' 69 en decimal
' llamada a la rutina principal
' encargada de recibir los mensajes
' de entrada (comandos del maestro)

'--------------------------------------------------------------------------' Rutina que recibe el mensaje completo desde el puerto serial


'--------------------------------------------------------------------------TASK MesageReceiver
DIR_PIN 7,3,0
BYTE D,N,Z,M
M=20
chek=54
N=0
Z=0
D=0

' byte que se utilizan como contadores


' el preambulo tiene 20 bytes
' inicializacin del final del mensaje
' inicializacion de los contadores

WHILE Z=0
begin:
OUT 7,00000100b,4

MesageIn(N)=00h
WAIT_DURATION 50

' ciclo infinito


' inicio de la rutina
' RTS puesta en 1 para recibir

' inicializo MesageIn


' espera por el proximo byte

WHILE MesageIn(N)=00h
GET #SER,#1,0,MesageIn(N)

' mientras no haya entrada


' recibe caracteres del puerto

IF N<20 AND MesageIn(N)=0FFh THEN ' si el caracter recibido se encuentra


N=N+1
' si lo es se pasa al byte siguiente
GOTO begin
' y se recibe el proximo
iv

ELSE
IF N>19 THEN
GOTO program
ENDIF

' si no es FFh pero es mayor que 19


' adelante recibe y analiza el mensaje

MesageIn(N)=00h
N=0
GOTO begin
ENDIF
ENDWHILE

' 20 entonces inicializo el mensaje y


' el contador y me regreso al pricipio

ANEXO 9
Fragmentos del cdigo de
la interfaz grfica o maestro Hart

// esta es la clase Hart5.java


import javax.swing.*;
import javax.swing.JComponent.*;
import java.awt.*;
import java.awt.Component.*;
import javax.swing.SwingConstants.*;
import javax.swing.plaf.*;
import java.awt.GridBagConstraints.*;
import javax.comm.*;
class Hart5
{
Byte size;
static TextField preambelbytes = new TextField("",20);
static TextField startbyte = new TextField("",20);
static TextField addressbytes = new TextField("",20);
static TextField commandbyte = new TextField("",20);
static TextField bytecountbyte = new TextField("",20);
static TextField databytes = new TextField("",32);
static TextArea mensajeout = new TextArea("",1,50,TextArea.SCROLLBARS_HORIZONTAL_ONLY);
static Choice commandchoice = new Choice();
static TextArea mensajein = new TextArea("",10,50);
public static void main(String a[])
{
//definicion de variables
JFrame f = new JFrame("MASTER TERMINAL");
JPanel p1,p2,p3;
Button borrar = new Button("RESET");
Button salir = new Button("EXIT");
Button enviar = new Button("SEND");
Button ensamble = new Button("COMPONER");
CheckboxGroup grupo = new CheckboxGroup();
Checkbox largo = new Checkbox("Formato Largo",grupo,true);
Checkbox corto = new Checkbox("Formato Corto",grupo,false);
JLabel label1= new JLabel("Partes del mensaje HART:");
JLabel label2= new JLabel("Mensaje Enviado:",JLabel.RIGHT);
JLabel label3= new JLabel("Preambulo:",JLabel.RIGHT);
JLabel label4= new JLabel("Byte de Start:",JLabel.RIGHT);
JLabel label5= new JLabel("Direccion:",JLabel.RIGHT);
JLabel label6= new JLabel("Comando:",JLabel.RIGHT);
JLabel label7= new JLabel("Cuenta de bytes:",JLabel.RIGHT);
JLabel label8= new JLabel("Datos:",JLabel.RIGHT);
JLabel label10= new JLabel("Mensaje del TIGER:");
JLabel label11= new JLabel("Tamao de direccin:");
JLabel label12= new JLabel(" ");
SerialConnection4 conect = new SerialConnection4(mensajeout,mensajein);
ManejaEventos4 eVentos = new ManejaEventos4(mensajein,mensajeout,
preambelbytes,startbyte,
addressbytes,commandbyte,

bytecountbyte,databytes,
conect,enviar);
ManejadordeSelecion selecion = new ManejadordeSelecion(startbyte,
addressbytes );
ManejadordeComando comando = new ManejadordeComando(commandbyte);
Font letra1 = new Font("Helvetica",Font.BOLD,14);
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
commandchoice.addItem("0");
commandchoice.addItem("1");
commandchoice.addItem("2");
commandchoice.addItem("3");
commandchoice.addItem("6");
commandchoice.addItem("11");
commandchoice.addItem("12");
commandchoice.addItem("14");
commandchoice.addItem("15");
commandchoice.addItem("16");
commandchoice.addItem("17");
commandchoice.addItem("18");
commandchoice.addItem("19");
commandchoice.addItemListener(comando);
//crear el panel donde van los botones
p1 = new JPanel();
p1.setBackground(Color.blue);
p1.setFont(letra1);
p1.add(borrar);
p1.add(salir);
p1.add(enviar);
p1.add(ensamble);
//crear el panel donde van los campos del mensaje
p2 = new JPanel();
p2.setLayout(gridbag);
preambelbytes.setEditable(false);
bytecountbyte.setEditable(false);
startbyte.setEditable(false);
mensajeout.setEditable(false);
commandbyte.setEditable(false);
c.anchor=GridBagConstraints.EAST;
c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
gridbag.setConstraints(label3,c);
p2.add(label3);
c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(preambelbytes, c);
p2.add(preambelbytes);
iii

c.anchor=GridBagConstraints.EAST;
c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
gridbag.setConstraints(label4, c);
p2.add(label4);
c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(startbyte,c);
p2.add(startbyte);
c.anchor=GridBagConstraints.EAST;
c.gridwidth = GridBagConstraints.RELATIVE;
gridbag.setConstraints(label11,c);
p2.add(label11);
c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(largo,c);
p2.add(largo);
c.gridwidth = GridBagConstraints.RELATIVE;
gridbag.setConstraints(label12,c);
p2.add(label12);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(corto,c);
p2.add(corto);
c.fill=GridBagConstraints.NONE;
c.weightx = 0.0;
c.anchor=GridBagConstraints.EAST;
c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
gridbag.setConstraints(label5, c);
p2.add(label5);
c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(addressbytes , c);
p2.add(addressbytes );
c.anchor=GridBagConstraints.EAST;
c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
gridbag.setConstraints(label6, c);
p2.add(label6);

c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(commandbyte , c);
//p2.add(commandbyte );
c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(commandchoice , c);
p2.add(commandchoice );
c.anchor=GridBagConstraints.EAST;
c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
gridbag.setConstraints(label7, c);
iv

p2.add(label7);
c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(bytecountbyte , c);
p2.add(bytecountbyte );
c.anchor=GridBagConstraints.EAST;
c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
gridbag.setConstraints(label8, c);
p2.add(label8);
c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(databytes , c);
p2.add(databytes );
/**
c.anchor=GridBagConstraints.EAST;
c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
gridbag.setConstraints(label2, c);
p2.add(label2);
c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(mensajeout, c);
p2.add(mensajeout);
*/
c.anchor=GridBagConstraints.EAST;
c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row
gridbag.setConstraints(label10, c);
p2.add(label10);
c.anchor=GridBagConstraints.WEST;
c.gridwidth = GridBagConstraints.REMAINDER; //end row
gridbag.setConstraints(mensajein, c);
p2.add(mensajein);
ensamble.addActionListener(eVentos);
borrar.addActionListener(eVentos);
enviar.addActionListener(eVentos);
salir.addActionListener(eVentos);
largo.addItemListener(selecion);
corto.addItemListener(selecion);
//agregar el panel al frame
f.getContentPane().add("North",p2);
f.getContentPane().add("South",p1);
//reduce la pantallita al tamao de los objetos
f.pack();
conect.openConnection();
//hace visible el panel llamado primero
f.setVisible(true);
}

También podría gustarte