Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Protocolo Hart
Protocolo Hart
INGENIERA ELECTRNICA
POR
Erika Febres Urdaneta
Proyecto de Pasanta
Presentado ante la Ilustre Universidad Simn Bolvar
Como requisito Parcial para Optar al Titulo de
Ingeniero Electrnico
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
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
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
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
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.
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).
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.
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.
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.
10
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.
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
Intervalo t
>= 305 ms
>= 380 ms
>= 305 ms
20* - 75 ms
>= 75 ms
0-256 ms
75-256 ms
0-20 ms
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
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:
20
Maestro a Esclavo:
Esclavo a Maestro:
21
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.
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
Funcin
Leer variables medidas
Establecer parmetros de operacin (rango, unidades, funcin de transferencia)
38
39
Control de la EEPROM
40-42
43,45-46
48
49
50-56
57-58
59
60,62-70
107-109
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
Tipo de dispositivo
Unidades
Funcin de transferencia
Material
Seleccin de alarma
Proteccin a escritura
Sealizacin fsica
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
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
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
30
31
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
13
L73/PWM
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
32
Pin No.
Name
Description
24
L90/TxD0
25
L91/RxD0
26
L92/CTS0
27
L93/TxD1
28
L94/RxD1
29
L95/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
36
37
L41/PC
Pin de modo PC
38
Alarm out
39
Analog in 0
40
Analog in 1
41
Analog in 2
42
Analog in 3
43
A/D-Ref-in
44
Analog GND
45
Battery in
46
VCC (5V)
Tierra analgica
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:
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
34
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
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):
37
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):
39
40
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):
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
47
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
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
52
53
54
55
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
58
59
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
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
FOR D=0 TO 16
DESCRIPTOR(D)=0
NEXT
FECHA(0)=01h
FECHA(1)=0Bh
FECHA(2)=00h
' fecha
' fecha
' fecha
' 69 en decimal
' llamada a la rutina principal
' encargada de recibir los mensajes
' de entrada (comandos del maestro)
WHILE Z=0
begin:
OUT 7,00000100b,4
MesageIn(N)=00h
WAIT_DURATION 50
WHILE MesageIn(N)=00h
GET #SER,#1,0,MesageIn(N)
ELSE
IF N>19 THEN
GOTO program
ENDIF
MesageIn(N)=00h
N=0
GOTO begin
ENDIF
ENDWHILE
ANEXO 9
Fragmentos del cdigo de
la interfaz grfica o maestro Hart
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);
}