Anda di halaman 1dari 43

Diseo de Sistemas Informticos Industriales

Apuntes de

Comunicacin serie. RS-232 y RS-485


Licencia

Ingeniera Tcnica Industrial (Electrnico) Departamento de Informtica de Sistemas y Computadores Escuela Tcnica Superior de Ingeniera del Diseo
comunicaciones_serie_r10.odt

Contenido

6. Comunicacin serie..................................................................................................................3 6.1 Introduccin.......................................................................................................................3 6.2 Objetivos............................................................................................................................3 6.3 Esquema.............................................................................................................................3 6.4 Serie us paralelo.................................................................................................................4 6.5 Transmisin asncrona y sncrona.......................................................................................4 6.6 Conexin serie RS-232.......................................................................................................5 6.6.1 Especificaciones..........................................................................................................6 6.6.2 Control de flujo............................................................................................................9 6.6.3 Conexin estndar entre un computador y un modem.................................................9 6.6.4 Conexin null-modem...............................................................................................10 6.1.1 Terminales serie y emuladores...................................................................................11 6.6.5 Programacin de la interfaz serie en el PC................................................................12 6.6.6 Aplicacin general a dispositivos industriales...........................................................17 6.7 Ejemplo: Visor de pesoMicrogram IE-21.........................................................................21 6.8 Conexin serie RS-485.....................................................................................................23 6.8.1 Especificaciones y caractersticas..............................................................................23 6.8.2 Uso del RS-485 con el PC.........................................................................................25 6.9 Ejemplo: Mdulos NuDAM de ADLink...........................................................................27 6.9.1 Introduccin...............................................................................................................27 6.9.2 Configuracin de la red..............................................................................................28 6.9.3 Mdulo conversor RS-232 a RS-485 NuDAM-6520.................................................29 6.9.4 Mdulo de E/S digital. NuDAM-6050.......................................................................31 6.10 Puertos serie virtuales.....................................................................................................36 6.10.1 Bluetooth Serial Port Profile (SPP)..........................................................................37 6.10.2 Puerto serie sobre IrDA...........................................................................................40 6.10.3 Puertos serie virtuales sobre USB............................................................................41 6.1.2 Emulador de puertos NULL-MODEM......................................................................42 6.11 Resumen.........................................................................................................................42 6.12 Bibliografa y enlaces.....................................................................................................42

6.Comunicacin serie.

COMUNICACIN SERIE. RS-232 Y RS-485.

6.1INTRODUCCIN
El objetivo de este tema es saber qu es una conexin serie y poder aprovechar las normas RS-232 y RS-485 que emplean muchos sistemas industriales desde el punto de vista del conexionado fsico y de su aprovechamiento desde una aplicacin para computador. Las normas RS-232 y RS-485 aqu descritas corresponde al nivel fsico (1) de referencia del estndar OSI. Sobre dichas normas se pueden construir nuevas capas que aporten otras funcionalidades. Este tema est pensado para trabajarlo de forma lineal sin necesidad de acudir a otras fuentes ni materiales adicionales. En puntos concretos se intercalan actividades que permitirn practicar los conocimientos adquiridos. En caso de dificultad en la resolucin de actividades s se recomienda acceder a fuentes externas, por ejemplo, a la bibliografa recomendada.

6.2OBJETIVOS
Comprender qu es trasmisin serie y paralelo. Conocer la norma RS-232. Aprender a desarrollar aplicaciones que hagan uso de la norma RS-232. Aplicar tcnicas de comunicacin serie a dispositivos industriales. Conocer la norma RS-485.

6.3ESQUEMA
El esquema de la unidad coincide con el desarrollo ordenado de los objetivos y que se plasman en la correspondiente tabla de contenidos.

4 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

6.4SERIE US PARALELO
La transmisin serie de informacin digital consiste en el envo/recepcin de secuencias de bits uno a uno. Como contraposicin, la transmisin paralela permite el envo/recepcin de ms de un bit a la vez. Como caractersticas destacables de la transmisin serie estn: Ms barata, al necesitar menos conductores. No sufre grandes problemas de autoinduccin entre lneas, pues usa pocas lneas. Menor velocidad de transmisin que la paralela.

Estas caractersticas la hacen adecuada para comunicaciones a distancias superiores a unos metros, donde el coste del cableado o su tamao son factores a considerar. Las transmisiones en paralelo son las ms adecuadas para alcanzar velocidades de transferencia altas al nivel de placas de circuito impreso o de circuito integrado.

6.5TRANSMISIN ASNCRONA Y SNCRONA


Supngase el siguiente escenario en una transmisin serie: Imagnese que un emisor emite una secuencia de bits a 10 millones de bits por segundo 10 Mbps, --> un bit dura 1/107= 01s. Un receptor, para recibirlos debe muestrear la lnea a la misma velocidad, es decir, cada 01s. Cada uno basa la medida del tiempo en su propio reloj, que pueden no estar sincronizados con precisin. Si, por ejemplo, la diferencia de velocidad entre uno y el otro es del 1%, entonces el primer muestreo estar desplazado 0001s. Tras 200 muestras, los relojes estarn desplazados 200*0001s=02s por lo que no se estar recogiendo adecuadamente la informacin.

Para resolver el problema ilustrado es necesario introducir tcnicas de sincronizacin que permiten ponerse de acuerdo en las temporizaciones. Hay dos grupos de soluciones: utilizar transmisin asncrona o utilizar transmisin sncrona. La transmisin asncrona intenta evitar el problema enviando secuencias de bits que no sean muy largas y sincronizando los relojes al principio de cada secuencia.

X reposo

bit

bit

bit

bit

bit

bit

lecturas

lecturas

sincronizacin reloj

BIBLIOGRAFA

En la transmisin sncrona los relojes se mantienen sincronizados usando una lnea de reloj o una codificacin de datos "autorreloj". Usando lnea de reloj, lnea de reloj lnea de datos X b X b b b b b b b b b b

Por ejemplo el bus I2C utiliza dos lneas, una para datos y otra para reloj Usando una codificacin autorreloj "1" 0110010 reloj datos Por ejemplo, la codificacin Manchester empleada en el protocolo CSMA/CD usado en redes tipo Ethernet. La forma en que se sincroniza la informacin en ambos tipos de transmisin da lugar a los conceptos de sincronismo de bit, de carcter y de bloque. (?ampliar) codificador autoreloj 0 1 1 0 0 1 0 "0"

6.6CONEXIN SERIE RS-232


EIA RS-232 es un conjunto de normas del nivel fsico de la terminologa OSI para la conexin DTE-DCE con velocidades de hasta 20 Kbits/s. Inicialmente se desarroll para conectar un ordenador con un mdem, pero su aceptacin ha hecho que se aplique a infinidad de equipos industriales y domsticos. Este tipo de interfaz fsica tiende a desaparecer con la aparicin de nuevos interfaces serie de alta velocidad (USB, FireWire, etc.), pero los principios aqu descritos son igualmente aplicables. FICAR FOTO D'EQUIP Permite transmisin serie asncrona y sncrona entre equipos. El modo de transmisin asncrono es el ms implantado y el que se ver aqu. Son tres especificaciones: Mecnica: ISO 2110 Funcional: norma CCITT V.24 Elctrica: norma CCITT V.28

6 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

6.6.1ESPECIFICACIONES
Especificaciones mecnicas La norma original utiliza un conector tipo DB-25 mostrado en la Figura 4-1. La Tabla 4-1 muestra el nombre de los pines ms importantes para nuestro trabajo.

Figura 4-1. Conectores macho y hembra tipo DB-25 Pin 1 2 3 4 5 6 7 8 20 22 Seal PGND (Protective Ground) TXD (Transmit Data) RXD (Receive Data) RTS (Ready to Send) CTS (Clear to Send) DSR (Data Set Ready) SG (Signal Ground) CD (Carrier Detect) DTR (Data Terminal Ready) RI (Ring Indicator)

Tabla 4-1. Nombre de seal asignado a los pines del conector tipo DB-25 La desvirtuacin de la especificacin ha llevado a simplificar la interfaz y es muy habitual encontrarnos dispositivos con interfaz RS-232 con muchas lneas eliminadas y con un conector tipo DB-9. Hay desvirtuaciones mayores que llegan a dejar solo la linea de referencia (SG) y YXD y RXD (telfonos mviles, camaras fotogrficas digitales, GPS, etc.).

Figura 4-2. Conectores macho y hembra tipo DB-9 Pin 1 2 3 4 5 6 7 8 9 Seal CD (Data Carrier Detect) RD (Recive Data) TD (Trasmit Data) DTR (Data Terminal Ready) SG (Signal Ground) DSR (Data Set Ready) RTS (Request To Send) CTS (Clear To Send) RI (Ring Indicator)

BIBLIOGRAFA

Tabla 4-2. Nombre de seal asignado a los pines del conector tipo DB-9 Especificaciones funcionales Las especificaciones funcionales indican el significado y funcionalidad de cada seal. Se resumen a continuacin las ms interesantes para nuestro trabajo. Seales para establecimiento de conexin: DTR (Data Terminal Ready), DTE operativo. DSR (Data Set Ready), DCE operativo. RI (Ring Indicator), el telfono est sonando. RTS (Request To Send, Ready To Send), DTE indica al DCE cuando tiene un carcter a transmitir. CTS (Clear To Send), DCE est listo para aceptar un carcter del DTE. CD (Carrier Detect), DCE indica que la conexin remota est activa. TXD envo de datos en el DTE, recepcin en el DCE. RXD recepcin de datos en el DTE, envo en el DCE. SG (Signal Ground), referencia de las seales. PGND (Protective Ground), masa de proteccin.

Seales para el control de flujo de datos:

Seales de transmisin de datos:

Otras:

El formato de los datos que circula por los pines TXD y RXD tiene el siguiente formato:

lnea inactiva nivel SPACE nivel MARK START

lsb (b0) Datos

msb

PARIDAD

STOP

1 bit

4,5,6,7 u 8 bits

0 1 bit 1, 15 2 bits

Una forma habitual de expresar la configuracin de datos a usar y su velocidad consiste en una cadena de la forma:
velocidad en bps paridad (N=none, E=even/par, O=odd/impar, M=mark, S=space)

9600 8 N 1

8 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

bits de datos (4, 5, 6, 7 u 8)

bits de stop (1, 1'5 2)

Los dos equipos que comunican deben ser configurados con el mismo formato de datos. A partir de ese momento, los datos transmitidos entre los dos extremos deber seguir ese formato. Algunas velocidades de comunicacin habituales son 150, 300, 600, 1200, 2400, 4800, 9600, ... baudios. Especificaciones elctricas Define los niveles de tensin, corriente, etc. a emplear. Destacar: Transmisin no balanceada (referencia de tensin comn a todas las seales). Limitacin de corriente a 0,5 A. Capacidad mxima de conductor de 2.500 pF Tiempo de flanco de seal de un mnimo del 4% del tiempo de bit Longitud mxima recomendada de 15 metros Niveles de tensin segn diagrama

BIBLIOGRAFA

+15 V +5 V 0 voltios -5 V -15 V Actividad.

Datos "0" MARK estado no definido "1" SPACE

+15 V +5 V 0 voltios -5 V -15 V

Control ON estado no definido OFF

Dibuja el cronograma que resulta de enviar la cadena "Hola" por una conexin RS-232 utilizando la configuracin 2400 8N1. Calcula el tiempo mnimo que se necesitar para transmitir la cadena. Actividad. Suponiendo que un modem transmite al DTE a una velocidad mxima de 56 kbps 8N1 por una conexin RS-232. Cuntos bytes tiles se transmiten realmente por segundo? Cunto tiempo tardar en transmitir 1 Mbyte como mnimo?

6.6.2CONTROL DE FLUJO
La interfaz serie RS-232 permite control de flujo half-duplex y full-duplex. Para ello se pueden emplear protocolos hardware, basados en el uso de las seales asignadas a los pines; o software, basados en el envo de cdigos especiales que controlan el flujo. Para los protocolos hardware, los ms extendidos son: RTS-CTS. Por CTS se indica que se est listo para aceptar datos. DTR-DSR. Lo mismo, pero por DSR. XON (11h), XOFF (13h). Basado en enviar caracteres especiales para indicar que se pueden enviar o no datos. ENQ (?5h), ACK (?6h). Basado en solicitud y contestacin.

Para los software, los ms extendidos son:

La ventaja de los protocolos software es su compatibilidad con todos los equipos, pero a costa de un menor rendimiento. En algunos casos no se emplea ningn tipo de control de flujo, debindose asegurar de que no se van a perder datos o de que las prdidas no afectan al funcionamiento de la aplicacin.

6.6.3CONEXIN ESTNDAR

ENTRE UN COMPUTADOR Y UN MODEM

El diseo original de la norma estaba pensado para conectar un computador a un mdem. En la Figura 4-3 se indican las conexiones fsicas que habr entre un mdem y un conector tipo DB-25 disponible en cualquier computador que cumpla la norma.

10 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

DTE

DCE

Figura 4-3. Conexi RS-232 con conector DB-25 entre un computador y un modem. Es posible emplear un adaptador DB-9 a DB-25 siguiendo el conexionado mostrado en la Tabla 4-3. Seal CD (Data Carrier Detect) RD (Receive Data) TD (Transmitted Data) DTR (Data Terminal Ready) SG (Signal Ground) DSR (Data Set Ready) RTS (Request to Send) CTS (Clear to Send) RI (Ring Indicator) 9 Pin DTE 1 2 3 4 5 6 7 8 9 25 Pin DCE 8 3 2 20 7 6 4 5 22 Fuente DTE o DCE Desde el mdem Desde el mdem Desde el Comp. /Term. Desde el Comp. /Term. Desde el mdem Desde el mdem Desde el Comp. /Term. Desde el mdem Desde el mdem

Tabla 4-3. Conversin DB-9 a DB-25

6.6.4CONEXIN NULL-MODEM
La norma RS-232 se aplica a una gran cantidad de productos comerciales. Dichos productos pueden ser diseados como DTE o como DCE. En muchos casos puede ser interesante interconectar DTE-DTE o DCE-DCE. Para ello es necesario utilizar un cable que "engae" a las partes para que parezca una conexin DTE-DCE. Para esto se utilizan los denominados cables null-modem (anulador de mdem). Un cable mnimo NULL-MODEM consiste en cruzar las seales TXD y RXD y conectar las referencias de seal, tal como se muestra en el esquema de la Figura 4-4. Dicho cable no permitir control de flujo hardware, por lo que, si es necesario un control de flujo, este ser obligatoriamente software.

BIBLIOGRAFA

11

TXD RXD SG

TXD RXD SG

Figura 4-4. Conexin NULL-MODEM mnima La interpretacin y simplificacin de la norma ha hecho que no exista un cable null-modem universal, por lo que es imposible dar un esquema universal para este tipo de cable. La Figura 4-5 muestra algunas posibilidades para conexin DB-25.

1 2 3 4 8 7 5 6 20
Cable-I EYN253C

1 2 3 4 8 7 20 5 6

1 2 3 7 5 6 8 20

Cable-I EYN254C

1 2 3 7 5 6 8 20

1 2 3 4 8 6 20 7 17 24
Cable-I EYN255C

1 2 3 4 8 6 20 7 17 24

1 2 3 7 11 5 6 8 20
Cable-I EYN256C

1 2 3 7 11 5 6 8 20

Figura 4-5. Diferentes modelos de conexin NULL-MODEM para DB-25

6.1.1TERMINALES SERIE Y EMULADORES


La interfaz serie est muy ligada a los antiguos computadores que basaban su funcionamiento en terminales conectados a ellos mediante una conexin serie directa o un modem. La siguiente figura muestra el aspecto de un antiguo terminal serie.

12 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

Ilustracin 1: Un terminal serie


Un terminal serie es un equipo constituido por una pantalla, un teclado y una conexin serie que permite representar en pantalla los datos que se reciben por el serie como cdigos ASCII, mientras que los grafos que se pulsan en el teclado son enviados codificados en el correspondiente cdigo ASCII. Los terminales disponen de microinterruptores que permiten configurar los parmetros de la conexin serie (bits de datos, paridad, bit de stop, velocidad, etc.). Los terminales serie han desaparecido del mercado pero se siguen utilizando ampliamente en la industrial y en el desarrollo de hardware (y en muchos bancos y hospitales) sustituyendo el terminal por un programa ejecutndose sobre un computador que lo emula, y aportando ventajas aadidas como mayor flexibilidad en la configuracin y posibilidad de transferencia de ficheros. Los emuladores de terminales se suelen utilizar en la configuracin de dispositivos, reprogramacin, depuracin, etc. Para Microsoft Windows hay gran cantidad de emuladores de terminal, incluso viene uno incorporado en el SO que se llama Hyperterminal y que se recomienda no usar. En su lugar, un buen emulador de terminal con muchas posibilidades es Teraterm (http://en.wikipedia.org/wiki/ TeraTerm). Para los sistemas *nix suele estar muy extendido en uso del emulador minicom (), pero es demasiado complejo para la moayora de casos. Para empezar, es mejor recurrir a GtkTerm, que est disponible en cualquier repositorio de Linux.

6.6.5PROGRAMACIN DE LA INTERFAZ SERIE EN EL PC


Conceptos El PC suele disponer de 1 2 conexiones serie tipo RS-232. El conector exterior suele ser del tipo DB-9 macho, pero tambin puede ser un conector DB-25 macho. Este tipo de interfaz tiende a desaparecer en los PC de sobremesa y porttiles para el hogar (est, pero no tiene puesto el conector), y se mantiene en los PC de tipo negocio e industriales. En caso de no disponer de ella, se puede utilizar un conversor USB-serie disponible en el mercado.

BIBLIOGRAFA

13

La funcionalidad hardware interna se implementa mediante circuitera UART (??Universal Asynchronous Receiver Transmiter) compatible INTEL 8250 o INTEL 16550A. Para usar este hardware se dispone de unos registros de entrada/salida y de una lnea de interrupcin hardware para cada canal serie. Para que un software pueda hacer uso directo de estos circuitos, deber hacer directamente las lecturas/escrituras de estos puertos y aportar una rutina de servicio para la interrupcin. Dicha interrupcin se disparar cuando se reciban datos y cuando se termine de transmitir un dato. En la web de la asignatura hay disponible un ejemplo de este tipo para MS/DOS y tambin se puede recurrir al cdigo fuente de Linux para ver cmo se hace. Los sistemas operativos suelen ofrecer servicios que permiten usar ms fcilmente estos puertos. Una de las formas estndar de tratar los puertos serie es como unos ficheros en los que las rdenes de escritura envan caracteres y las de lectura permiten recoger los caracteres recibidos. Tanto MS-DOS/WINDOWS como Unix proporcionan este tipo de servicio. Desde el punto de vista de los sistemas operativos MS-DOS y WINDOWS, los puertos serie son dispositivos de tipo fichero que se nombran como COM1, COM2, COM3 COMn. En el caso de sistemas tipo *nix (Linux, MacOSX, Android, Solaris, ...), los dispositivos de este tipo se suelen nombrar como /dev/ttyS0, /dev/ttyS1 ... En la web de la asignatura hay ejemplos de como usar el puerto serie accediendo a la fubncionalidad de tratamiento de ficheros, tanto desde los sistemas operativos Windows como de Linux. Con Borland C++/Buider Con C++ Builder podemos usar la propuesta anterior o conseguir mejores caractersticass accediendo a los servicios del API (??Application Program Interface) de WINDOWS para uso del puerto serie. La programacin de las caractersticas bsicas es sencilla, pero el mximo aprovechamiento se consigue slo con conocimientos ms avanzados de programacin multihilo. Para sacar el mximo partido al puerto serie sin necesidad de conocimientos de programacin avanzados se puede recurrir a un componente prefabricado. En C++ Builder no se incluye un componente para el uso de puerto serie, pero se puede recurrir al de una tercera compaa. Un posible componente es recurrir al componente ActiveX que incorpora Visual Basic, que puede ser incorporado fcilmente a Builder. La funcionalidad aportada por dicho componente no suele ser muy satisfactoria en la prctica, as que se recomienda evitar su uso para evitar futuras sorpresas. Otro ejemplo es el componente de cdigo abierto ComPort (http://comport.sourceforge.net) que permite acceder a prcticamente todas las caractersticas del puerto serie con las ventajas que nos ofrecen la programacin orientada a eventos. Se recomienda el uso de este componente por ser muy superior a otros componentes comerciales y disponer del cdigo fuente para poder modificarlo, si es necesario. Para hacerse una idea de su funcionalidad, supngase el objeto ComPort1 instancia de la clase TComPort, establecer la configuracin del puerto podra ser: ComPort1->Port = "COM2"; ComPort1->BaudRate = br9600; ComPort1->DataBits = dbSeven; ComPort1->Parity->Bits = prOdd; ComPort1->StopBits = sbTwoStopBits; // // // // // usar com2 velocidad 9600 bits de datos paridad impar dos bits de stop

14 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

Antes de "usar" el puerto hay que "abrirlo". Se debe "cerrar" si se deja de usar o se quiere cambiar la configuracin. Este mecanismo permite al S.O. proporcionar a una tarea el uso exclusivo de un puerto. ComPort1->Open(); // intentar abrir el puerto

Ahora ya se puede enviar algo al puerto. Por ejemplo, se puede enviar cualquier secuencia de datos, unsigned char datos[]={54,97,10,234}; ComPort1->Write (datos, 4); Y la secuencia 54, 97, 10, 234 se enva por el serie. En el caso de que la configuracin del puerto no admita la totalidad de bits del dato, entonces los bits ms significativos son descartados. Por ejemplo, si elegimos 6 bits de datos, se descartan los 2 bits de mayor peso de cada dato. Es importante destacar que el programa no espera a que se haya enviado la informacin fsicamente por el cable. sta es colocada en un "buffer" y es el S.O. el encargado de ir envindolo mediante el mecanismo de interrupciones. As se consigue que nuestro programa contine haciendo otras tareas. Para obtener en una variable la informacin recibida por el canal serie se podra hacer: char buffer[1000]; int num_datos; num_datos = ComPort1->Read(buffer, 10); que indica que se saquen 10 datos del tampn de entrada. Si al llamar a la funcin no estn disponibles 10 datos, entonces se esperar a que lo esten. Es muy habitual que lo enviado por el canal serie sean datos correspondientes a cadenas de caracteres, por lo que se suele facilitar el envo y recepcin de caracteres. Por ejemplo, se puede usar la siguiente sintaxis, ComPort1 -> WriteStr("Hola"); y la secuencia H, o, l,a, se enva por el serie. Para obtener en una variable de cadena la informacin recibida por el canal serie se podra hacer: AnsiString a; int num_datos; num_datos = ComPort1 -> ReadStr(a,10); En realidad no existe diferencia alguna entre enviar/recibir caracteres y datos, pues se trata en los dos casos de datos binarios de n bits.

BIBLIOGRAFA

15

(parlar de com configurar els protocols) La mejor forma de "recibir" informacin sin utilizar tcnicas de encuesta (polling) que desperdicien el tiempo de la CPU es aprovechar el evento OnRxChar, que se genera cuando han llegado datos por el puerto serie. ... OnRxChar (TObject Sender, int Count) { ... ComPort1->ReadStr(Label1 -> Caption, Count); } Ejemplo: Se desea conectar dos PC por el puerto serie y desarrollar una aplicacin de consola de manera que lo que se teclee en uno de los ordenadores aparezca en el otro. En primer lugar hay que interconectar los dos ordenadores. Si tienen conectores tipo DB-9 se puede realizar un cable NULL-MODEM bsico segn el siguiente esquema. DB-9 pin 2 (TXD) pin 3 (RXD) pin 5 (SG) DB-9 pin 2 (TXD) pin 3 (RXD) pin 5 (SG)

El siguiente programa sirve para enviar caracteres por el serie utilizando el componente.

Enviado

//--------- PROGRAMA PARA ENVIAR ------------------------------------------#include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma link "CPort" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)

16 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

: TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender) { ComPort1->Port = "COM1"; // 9600, 8N1 ComPort1->BaudRate = br9600; ComPort1->Parity->Bits = prNone; ComPort1->DataBits = dbEight; ComPort1->StopBits = sbOneStopBit; ComPort1->Open(); } //--------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender) { ComPort1->Close(); } //--------------------------------------------------------------------------void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { ComPort1->Write(&Key,1); } //---------------------------------------------------------------------------

El siguiente listado permite recibir caracteres por el puerto serie y mostrarlos por pantalla.

//-------------- PROGRAMA PARA RECIBIR -------------------------------------#include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma link "CPort" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender) { //ComPort1->Port = "COM1"; ComPort1->BaudRate = br9600; ComPort1->Parity->Bits = prNone; ComPort1->DataBits = dbEight; ComPort1->StopBits = sbOneStopBit; ComPort1->Open(); } //--------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender) { ComPort1->Close(); } //--------------------------------------------------------------------------char buffer[1000]=""; //buffer vacio void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count) { AnsiString a; ComPort1->ReadStr(a,Count); strcat(buffer,a.c_str());

BIBLIOGRAFA

17

Label2->Caption = buffer; } //---------------------------------------------------------------------------

Actividad. Modificar los programas anteriores para que en ambas partes se puedan teclear y recibir datos.

6.6.6APLICACIN GENERAL A DISPOSITIVOS INDUSTRIALES


La norma RS-232 es utilizada en una gran variedad de dispositivos de dos maneras no excluyentes: Configuracin del dispositivo. Para establecer el comportamiento del dispositivo. Trabajo normal. El dispositivo trabajar en colaboracin con otro dispositivo, recibiendo y/o enviando informacin durante el trabajo normal.

Un ejemplo tpico del primer caso sera la programacin de un autmata programable, donde, en una primera fase, se transfiere a travs de una conexin serie el programa de control que ejecutar el autmata. Un ejemplo del segundo caso sera un mdulo GPS conectado a travs de su salida serie a un sistema de seguimiento de vehculos. Para la configuracin de dispositivos suele ser habitual utilizar un terminal serie. Un terminal serie es un equipo constituido por una pantalla, un teclado y una conexin serie que permite representar en pantalla los datos que se reciben por el serie como cdigos ASCII, mientras que los grafos que se pulsan en el teclado son enviados codificados en el correspondiente cdigo ASCII. Los terminales disponen de microinterruptores que permiten configurar los parmetros de la conexin serie (bits de datos, paridad, bit de stop, velocidad, etc.). Actualmente suele ser muy habitual sustituir el terminal por un programa ejecutndose sobre un computador que lo emula, y aportando ventajas aadidas como mayor flexibilidad en la configuracin y posibilidad de transferencia de ficheros. (Ficar fotos de terminal y ordinador amb hyperterminal). El uso habitual de los terminales hace que muchas veces la informacin transferida entre los dos equipos sea textual y con significado fcilmente comprensible por el usuario. De lo dicho se deduce que hay dos modalidades de transferir datos en RS-232: informacin binaria o informacin en forma de cadenas de texto (en realidad la segunda es un subconjunto de la primera). Desde el punto de vista del programador, ambas aproximaciones son equivalentes, la diferencia es que, en el segundo caso, la interpretacin humana del significado es ms sencilla. El aprovechamiento de la conexin serie consistir entonces en saber generar las secuencias a enviar por el canal serie y en interpretar dichas secuencias, aspecto que se trata en este apartado.

18 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

Partiendo de que el puerto serie del computador est abierto y configurado adecuadamente, supngase que se tienen dos funciones generales que permiten usar la conexin serie y cuyos prototipos son void serie_envia(unsigned char *datos, int cant_datos); void serie_recibe(unsigned char *datos, int *cant_datos); La funcin serie_envia(), deposita en el buffer de transmisin serie del sistema operativo (es decir, no espera a que termine la transmisin de datos) una secuencia de cant_datos datos que sern transmitidos uno a uno a travs del serie. Como resultado devuelve si los datos han sido correctamente volcados en el buffer. En funcin de la configuracin del nmero de bits, los bits de mayor peso de los bytes son descartados. Por ejemplo, para transmitir los datos 125, 33, 40, 100 en ese orden se podra hacer: unsigned char info[] = {125, 33, 40, 100}; serie_envia( info, 4); Para transmitir la cadena Hola se podra hacer: char *cad = Hola; serie_envia( cad, strlen(cad)); Obsrvese que realmente no hay diferencia entre las dos posibilidades. La funcin serie_recibe() copia en la direccin indicada por el puntero los datos recibidos a travs del serie. En cant_datos se deposita la cantidad de datos copiada, pudiendo valer 0 si no se ha recibido nada (ello permite comprobar si se ha recibido algo sin bloquear el programa que utiliza dicha funcin aplicando una tcnica de encuesta o polling). Para recoger la informacin recibida del serie, independientemente de si es texto o datos, se podra hacer, unsigned char buffer[1000]; int n_datos; //deposito datos

serie_recibe( buffer, &n_datos); Si los datos son textuales, podramos mostrarlos por pantalla de la siguiente forma, buffer[n_datos] = '\0'; //para que sea cadena C printf("Se ha recibido %s\n", buffer);

BIBLIOGRAFA

19

En el caso de informacin textual, se deber tener especial precaucin con los 'retornos de carro' para que sean compatibles con el sistema utilizado. Como recomendacin, nunca se deber utilizar '\n' para evitar la traslacin CR+LF de MS-DOS/Windows. Estas funciones son lo suficientemente genricas como para que puedan aplicarse a cualquier software que utilice el serie, incluido el componente elegido. Como estrategia de aprendizaje y afianzamiento del uso de programas que aprovechen el puerto serie se propone la resolucin de las siguientes actividades mediante el mtodo del descubrimiento guiado. Actividad. Se desea controlar una red industrial basada en RS-485 (suponemos ahora que es lo mismo que RS-232) usando un PC. Cada mdulo conectado a la red tiene un identificador diferente y se desea acceder a un mdulo de salidas digitales que acepta el formato de mensaje abajo mostrado. Disear una funcin para C++Builder que haga uso de la funcin envia_rs232() y construya un mensaje y lo enve por el serie a partir de los parmetros que se le pasan como argumento. Formato mensaje: #mmssvccc mm identificador de mdulo, nmero decimal de 2 cifras ss salida a modificar, nmero decimal de 2 cifras v valor de la salida (0 o 1) ccc suma de comprobacin, la suma de mm, ss y v con 3 cifras decimales Ejemplo: #07011009 mdulo 7, salida 1, valor 1, suma de comprobacin 9 La funcin a rellenar es void maneja_modulo(int num_modulo, int num_salida, int valor) { } Y un ejemplo de uso: maneja_modulo(7,1,1);

Siguiendo con la metodologa del descubrimiento se propone ahora una actividad que pretende ensear las bases del tratamiento de la informacin que se recibe por una conexin serie.

20 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

En este caso se supone la llegada de un flujo continuo de informacin. Dado que el programa abre el puerto en un momento indefinido, el flujo de informacin puede encontrarse en cualquier punto de la secuencia. Para interpretar la informacin se sigue el siguiente planteamiento: 1. Acumular fragmento recibido en un buffer. 2. Comprobar la completitud del mensaje. Actividad. Un mdulo industrial de entradas digitales emite continuamente la secuencia de caracteres mostrada abajo, donde el carcter numrico de ms a la derecha corresponde a la entrada 1 y el de ms a la izquierda a la entrada 8. Los caracteres "H" y "L" representan un nivel alto y bajo respectivamente en la entrada correspondiente. Suponiendo que se conecta el mdulo a una entrada serie de un PC y se usa la funcin recibe_rs232(), desarrollar el programa que analiza los caracteres recibidos y, en funcin del valor de la entrada 7, poner la propiedad Visible a true (para un 1) o a false (para un 0) de un objeto llamado Puerta. ...*HLLHHLHL... Actividad. Adapta las actividades anteriores al componente TComPort. En el segundo caso se deber emplear el evento de recepcin de caracteres. SI: Interpretar y eliminar mensaje. NO: Continuar con 1.

BIBLIOGRAFA

21

6.7EJEMPLO: VISOR DE PESOMICROGRAM IE-21


El visor de peso industrial modelo IE-21 de la empresa Microgram Instruments Espaola S.A. posee una salida de comunicacin serie RS-232 configurable en velocidad, bits de datos, bits de stop, y paridad. El formato de la transmisin de datos, puede variar entre 7 modalidades distintas, configurables externamente. Gracias a la gran flexibilidad de la configuracin del visor, se puede conectar a cualquier plataforma o sistema de pesaje (tolvas, silos, basculas areas, etc.). El visor posee un conversor analgico/digital de 16 bits, lo que supone mas de 65000 subdivisiones del peso. El peso se muestra a travs de 6 displays de 7 segmentos con punto decimal. Internamente, se puede configurar el modo de funcionamiento (valor de la divisin, valor de fondo de escala, transmisin bruto / neto, n de decimales, brillo de los displays, etc.) y ajustar la ganancia del peso, y los parmetros para la conversin. Tiene un pulsador para tarar el peso, situado en ese momento sobre la plataforma, que desaparece automticamente cuando se detecta una pesada estable superior al peso tarado seguida de una bajada del peso hasta el nivel cercano al cero. Otro pulsador sirve para bloquear la tara, y que esta se mantenga hasta que esta se desbloquee mediante una nueva pulsacin del mismo. Tambin muestra informacin adicional mediante 5 leds, con los que informa cuando el peso es estable, cero, o esta dentro de la zona de pesada mnima. Dos de ellos sirven para sealar cuando acta la tara y el bloqueo de tara.

Figura 4-6. Visor de peso modelo IE-21. Para interconectar el visor con un PC a travs de la conexin serie se debe tener en cuenta que los dos lados actan como DTE, por lo que el cable de conexin es una variante null-modem con un conector DB-9 hembra para el PC y un conector DB-9 macho para el lado del visor. Las seales RXD y TXD van cruzadas al igual que las seales RTS y CTS. En el conector del lado del ordenador hay un puente entre las seales DTR y DSR

22 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

Figura 4-7. Esquema del cable de conexin RS-232 de PC / IE-21. El comportamiento de la salida serie se puede configurar de distintas maneras, por ejemplo, que la transmisin de datos se haga solo por peticin o como un flujo continuo. En el caso particular del visor disponible, la configuracin es 9600-7O1 y transmisin continua del peso tomado. El formato de los datos utiliza codificacin ASCII de la siguiente forma: carcter de comienzo de trama 2 caracteres para estado del peso <blanco>,<blanco> peso estable D, <blanco> peso inestable I,+ fuera de rango superior I, - fuera de rango inferior carcter para signo del peso <blanco> peso positivo - peso negativo 9 caracteres con el peso y coma decimal inglesa <blanco> "kg" <blanco> retorno de carro

\x0D

\x0A

BIBLIOGRAFA

23

6.8CONEXIN SERIE RS-485


Como actualizaciones de la norma RS-232 se propusieron nuevas normas, por ejemplo: RS-422. Especificacin elctrica diferencial. RS-423. Conexin sistemas RS-422 y RS-232. RS-485. Especificacin elctrica multimaestro. Las limitaciones de la norma RS-232 se pueden superar con las mejoras que aportan estas normas posteriores. Gracias al uso de una transmisin balanceada, RS-485 aporta como beneficio inmediato una mayor velocidad de transmisin, una longitud de lnea del orden de kilmetros y una buena inmunidad al ruido. FICAR FOTO, UN OMROM AMB RS_485 i PROFIBUS ESTARA B.

6.8.1ESPECIFICACIONES Y CARACTERSTICAS
La norma RS-485 engloba caractersticas de propuestas posteriores a la RS-232. Las siguientes caractersticas y especificaciones son las ms destacables: Red multipunto, con hasta 32 emisores/receptores Medio fsico Par trenzado (mejor si se apantalla). Terminadores de 120 . Opcionalmente, resistencias pull-up y pull-down. Tensiones Voltaje en modo comn de 7 a +12 V. Histresis de 200 mV. "1">= +0.2 V, "0" <= -0.2 V. Formato de los datos idntico a RS-232 Control de flujo half-duplex. La distancia mxima que se puede alcanzar depende de la velocidad de transmisin. Por ejemplo: a 10 Mbps 12 metros. a 100 Kbps 1200 metros

24 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

La Figura 4-8 muestra un diagrama de una conexin tipo RS-485. Las estaciones transmisoras se conectan, en cualquier punto, a los conductores de un nico par trenzado. A los extremos del par se conectan resistencias terminadoras de 120 Ohms. En la Figura 4-9 se muestra en ms detalle la circuitera implicada en la transmisin y recepcin de datos. Como el medio se comparte entre todas las estaciones, la transmisin solo podr ser half-duplex.

tra n s m is o r

tra n s m is o r

tra n s m is o r

Figura 4-8. Esquema de una conexin RS-485

Figura 4-9. Circuitera del emisor/receptor El estndar RS-485 est ampliamente extendido en la industria, utilizndose para los siguientes tipos de comunicacin: Punto a punto. Maestro-esclavos. Multimaestro. En funcin del tipo de comunicacin seleccionado aparecern diferentes problemticas a la hora de compartir el medio fsico. La problemtica a este nivel la debe resolver el software que se desarrolle en el nodo de transmisin. La Figura 4-10 muestran una configuracin maestro-esclavo. En esta configuracin, el maestro es el nico autorizado a iniciar una transmisin, que sern bsicamente rdenes a los esclavos para que hagan determinadas cosas o respondan con su estado (por ejemplo, la lectura de un sensor).

BIBLIOGRAFA

25

Nodo Maestro

Figura 4-10. Configuracin maestro-esclavos (DRETS) La Figura 4-11 muestra una configuracin multimaestro. Al compartirse un medio fsico y ser la transmisin half-duplex, es necesario establecer un reparto del uso del medio por parte de los maestros. Una opcin empleada suele ser crear un anillo lgico, que consiste en un mecanismo de paso de turnos entre los maestros mediante el intercambio de un testigo.

Figura 4-11. Configuracin multimaestro (DRETS) La Tabla 4-4 resume las caractersticas de algunas normas RS.

Tabla 4-4. Comparacin de distintas normas RS (DRETS)

6.8.2USO DEL RS-485 CON EL PC


El hecho de que el formato de datos utilizados por RS-232 y RS-485 capacita al PC a usar fcilmente una conexin RS-485. Para ello se utilizan los adaptadores de seal disponibles en el

26 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

mercado que, bsicamente, adaptan los niveles de tensin y el modo de transmisin de la conexin RS-232 del PC a la norma RS-485. Con uno de estos adaptadores capacitaremos al PC para comunicarse, por ejemplo, con sensores y actuadores industriales, PLCs, reguladores, etc. En la Figura 4-12 puede verse una configuracin tpica. Para alcanzar mayores velocidades que el RS-232 especfico del PC ser necesario adquirir una tarjeta RS-485 para instalarla en una ranura de expansin del PC. Desde el punto de vista del programador, las conexiones serie se vern en Windows como COMx adicionales.

adaptador 232-485 RS-232/RS-485

sensores y actuadores

Autmata programable

Regulador

Figura 4-12. Configuracin tpica con un PC conectado a un RS-485 Actividad Localizar informacin en Internet sobre aplicaciones del RS-485 y sus precios. Antes de empezar el trabajo se deber decidir sobre que se quiere localizar informacin y comentarlo con el profesor. Al final de la actividad, cada grupo expondr lo ms interesante que ha encontrado. Si tenis inters en algn tipo de producto especfico, por ejemplo, autmatas y reguladores: www.omrom.com, autmatas y reguladores www.embedded.com, de todo sobre informtica industrial www.adlink.co.tw, mdulos NuDam que se estudiarn y usarn ms adelante www.advantech.com, mdulos ADAM similares a los anteriores www.qnv.com, suministrador de equipos informticos industriales en Espaa, dispone de lista de precios.

Se puede recurrir tambin a las siguientes direcciones para localizar informacin:

Un buscador tambin es una buena opcin

BIBLIOGRAFA

27

6.9EJEMPLO: MDULOS NUDAM DE ADLINK


6.9.1INTRODUCCIN
NuDAM son una coleccin de mdulos de adquisicin de datos de la empresa ADlink Technologies (www.adlink.com.tw) que proporcionan una solucin muy completa para sistemas distribuidos de control y adquisicin datos en configuracin maestro-esclavos. El sistema de interconexin de los mdulos se basa en el estndar RS-485. Se pueden interconectar hasta 256 mdulos remotos utilizando un par trenzado y cubrir una distancia de hasta 1200 metros (4000 pies). Se puede ampliar la red utilizando repetidores que unan segmentos. Los mdulos se pueden controlar utilizando un sencillo protocolo de rdenes y respuestas ASCII a travs del RS-485. Cada mdulo tiene una direccin identificativa nica en la red que permite distinguir a unos de otros. Algunos mdulos disponibles son: De comunicacin: NuDAM-6520, conversor RS-232 a RS-485. NuDAM-6510, repetidor RS-485. Entrada analgica: NuDAM-6011, entradas analgicas de alta ganancia con E/S digital. NuDAM-6012, entradas analgicas. NuDAM-6013, 3 canales RTD. NuDAM-6017, 8 canales de entrada analgica. NuDAM-6018, 8 canales para termopar. Salidas analgicas: NuDAM-6021, salida analgica. E/S digital: NuDAM-6050, 7 entradas digitales y 8 salidas digitales. NuDAM-6052, entradas digitales lejanas. NuDAM-6060, salidas de rels y entrada digital. Contadores: NuDAM-6080, entrada de contador/frecuencia. Para conectar el sistema a un computador con conexin RS-232 se podr emplear el conversor NuDAM 6520.

28 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

6.9.2CONFIGURACIN DE LA RED.
Para montar una red se pueden usar hasta 256 mdulos y un mximo de 128 mdulos por segmento. En la Figura 4-13 se muestra un esquema de la conexin de un PC a un segmento. Obsrvese que cada segmento del bus se debe acabar con una resistencia terminadora de 120 .

Terminator

Figura 4-13. Configuracin sencilla con mdulos Nu-DAM En el caso de necesitar extender ms la red o crear bifurcaciones se pueden emplear repetidores, tal y como se muestra en la Figura 4-14 y en la Figura 4-15.

Figura 4-14. Configuracin ramificada

BIBLIOGRAFA

29

Figura 4-15. Configuracin libre Para el cableado se usar par trenzado, y se recurrir a par trenzado apantallado en caso de interferencias, teniendo especial precaucin en cuidar la conexin a tierra. La Figura 4-16 muestra una recomendacin para la derivacin a tierra.

Figura 4-16. Conexin a tierra

6.9.3MDULO CONVERSOR RS-232 A RS-485 NUDAM-6520.


Para poder aprovechar una red con estos mdulos desde un PC es necesario disponer de una conexin RS-485, para ello se puede recurrir a tarjetas de expansin disponibles en el mercado, que, una vez instalada en el computador, se comportarn como una conexin serie cualquiera, identificndose como un COMx ms y configurndose de igual forma. En el caso de que no se desee instalar una nueva tarjeta de expansin es posible recurrir a un conversor RS-232 a RS-485. La empresa ADLink proporciona el mdulo NuDAM 6520 para este menester.

30 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

Para utilizar el mdulo basta con conectarlo con un cable serie DTE-DCE (sin ningn cruce de cables) al PC, alimentarlo y conectarlo al par trenzado. En la Tabla 4-5 se pueden comprobar las especificaciones.

Tabla 4-5. Especificaciones del mdulo NuDAM 6520 La Figura 4-17 muestra el aspecto del mdulo y el significado de cada una de las conexiones disponibles.

Figura 4-17. Aspecto del mdulo NuDAM 6520 y significado de las conexiones En el mdulo se deber configurar previamente la velocidad en bps a la que se desea transmitir. Para su conexin al PC se deber respetar el interconexionado mostrado en la Figura 4-18 Como ya se ha dicho, se deduce de l que se trata de una conexin DTE-DCE.

BIBLIOGRAFA

31

Figura 4-18. Conexin fsica entre un DB-9 en el PC y el DB-9 del mdulo

6.9.4MDULO DE E/S DIGITAL. NUDAM-6050


Todos los mdulos NuDAM siguen un esquema de uso muy similar. Para describir la forma de aprovecharlos a travs de la conexin RS-485 se tomar como referencia el mdulo de entradas y salidas digitales NuDAM-6050. Este mdulo tiene una serie de entradas digitales que permiten monitorizar seales activas TTL o interruptores ON/OFF pasivos gracias a una resistencia PULL-UP interna. Las salidas digitales consisten en transistores en colector abierto que pueden drenar una corriente mxima de 30 mA. La Tabla 4-6 resume sus especificaciones.

32 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

Tabla 4-6. Especificaciones del mdulo NuDAM 6050 La Figura 4-19 muestra el aspecto del mdulo y la funcin asignada a cada conexin. La referencia de las entradas y salidas digitales corresponde al pin GND.

Figura 4-19. Aspecto del mdulo NuDAM 6050 y significado de las conexiones Para manejar todos los mdulos de emplean rdenes con el formato:

BIBLIOGRAFA

33

Por ejemplo,

Para realizar entrada digital se usar:

34 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

Cuidado, el manual est mal, 11h es 00010001b

Y para la salida digital

BIBLIOGRAFA

35

Actividad. Escribe la cadena que pone a 1 la salida digital 5 del mdulo A7h. Escribe la cadena que pone a 1 las 4 salidas digitales de ms peso y a 0 el resto

36 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

Actividad. Realizar una funcin para el mdulo NuDAM 6050 cuyo prototipo sea int salida_digital(int modulo, int salida, int estado); a la que, pasndole como parmetros el identificador del mdulo, la salida a manipular y el valor que se quiere dar a la salida, cree el mensaje necesario y lo enve a travs del RS-232 utilizando la funcin genrica envia_rs232(). Actividad. Ampla la funcin de manera que compruebe que la operacin de salida se realice correctamente. Utiliza la funcin genrica recibe_rs232(). La funcin devolver 0 si la operacin ha ido bien y un nmero negativo en caso contrario. Qu problemas presenta la solucin propuesta? Cmo se pueden solucionar? Actividad. Analizar un mdulo NuDAM, indicando: Referencia numrica y propsito. Precio aproximado. Caractersticas y especificaciones ms destacables. Conexionado al proceso. Formato de las rdenes y respuestas. E/S digital: 6052, 6056, 6060 (6053, 6054, 6058, 6063) E analgica: 6011, 6013, 6017, 6018, (6012, 6014) S analgica: 6021, 6024 Contador: 6080

comunicaciones_serie_r10.odt

6.10PUERTOS SERIE VIRTUALES


La interfaz serie RS-232 est ampliamente establecida y se incorpor, en su momento, a infinidad de dispositivos, por lo que hay gran cantidad de software capaz de explotarla y personas que lo conocen. Por otra parte, la llegada de nuevas interfaces inalmbricas, USB, etc con mayores prestaciones supera muchos de los inconvenientes de RS-232. El hecho de que RS-232 sea un estndar muy aceptado ha fomentado que los nuevos sistemas de comunicacin incorporen los denominados perfiles para puerto serie. Estos perfiles simulan el comportamiento de un puerto serie estndar creando un puerto serie virtual. La aplica-

BIBLIOGRAFA

37

cin que haga uso de estos puertos series virtuales no notar que no es un puerto real, siendo el desarrollo del programa idntico al de uno clsico. Los puertos serie virtuales estn estndarizados en Bluetooth, IrDA, fibra ptica, etc. y se dispone tambin en el mercado de productos no estndar para crear puertos virtuales sobre Wifi, Ethernet, USB, etc. Desde el punto de vista del sistema operativo Microsoft Windows, estos puertos virtuales se nombrarn igual que los reales (COMx). Desde del punto de vista de los SO tipo *nix, el nombre del puerto puede variar de una plataforma a otra. Este apartado pretende mostrar el uso de los perfiles serie ms habituales.

6.10.1BLUETOOTH SERIAL PORT PROFILE (SPP)


El perfil SPP del estdar Bluetooth permite crear puertos serie virtuales estndar basados en RS-232 y con las seales de control tpicas. Este perfil es utilizado habitualmente para la conexin de GPSs, telfonos mviles, maquinas de fax, etc. Un dispositivo Bluetooth puede ofrecer este tipo de servicio de dos maneras (no excluyentes): ofertando el puerto para que un equipo externo se pueda conectar a l (saliente), o conectndose a otro dispositivo que hace el ofrecimiento (entrante). Sin profundizar mucho, y para hacerse una idea, se mostrar un conexin tpica a una pastilla GPS Holux GPSSlim236 en los SO WindowsXP y Linux. Para WindowsXP, el primer paso es explorar los dispositivos Bluetooth para descubrir los servicios que ofrecen. La siguiente imagen muestra el servicio SPP ofrecido por el GPS.

Ilustracin 2: Servicios ofrecidos por el GPS


Una vez habilitado el servicio, es posible hacer una conexin al puerto ofrecido, en este caso COM8. Por ejemplo, podemos emplear el emulador de terminal Windows y abrir dicho puerto.

38 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

En la siguiente imagen se ha usado el emulador de terminal TeraTerm y se ha seleccionado la apertura del puerto COM8.

Ilustracin 3: Seleccin del puerto COM8 en TeraTerm.


Una vez abierto el puerto, tanto el PC como el GPS pueden transmitirse informacin. Por defecto, los GPSs envan continuamente la informacin de posicin bsica. La siguiente imagen muestra lo que el GPS enva, que son cadenas de texto fcilmente legibles.

BIBLIOGRAFA

39

Ilustracin 4: Informacin volcada por el GPS.


Destacar que los parmetros de velocidad, paridad, etc. no suelen ser relevantes, pues al tratarse de una emulacin, esos parmetros no tienen tanta utilidad. En Linux vamos a partir de que la distribucin Linux tiene instaladas las utilidades blueZ (es casi seguro que ya es as). Aunque se pueda hacer muy parecido a como se ha hecho en Windows, se ha decidido mostrar cmo se hace desde la lnea de ordenes, que aporta mayor flexibilidad que una utilidad grfica. Primero se puede explorar el ambiente para ver que dispositivos estn disponibles usando la orden hcitool.
aperles@bacterio:~$ hcitool scan Scanning ... 00:0B:0D:6C:C2:ED HOLUX GPSlim236

Ahora se dispone de los identificador de dispositivo que desean ser visibles. Podemos seleccionar uno e interrogar los servicios que ofrece mediante la orden sdptool.
aperles@bacterio:~$ sdptool browse 00:0b:0d:6c:c2:ed Browsing 00:0B:0D:6C:C2:ED ... Service Name: SPP slave Service Description: Bluetooth SPP V1.52 Service RecHandle: 0x10000 Service Class ID List: "Serial Port" (0x1101) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1

40 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100

El protocolo RFCOMM es el que ofrece el servicio de conexin serie, y lo hace por el canal 1. Ahora podemos usar la orden rfcomm para crear un canal serie virtual. Esto se puede configurar para que sea automtico para siempre siempre que se encienda el ordenador.
aperles@bacterio:~$ rfcomm connect 3 00:0B:0D:6C:C2:ED 1 Connected /dev/rfcomm3 to 00:0B:0D:6C:C2:ED on channel 1 Press CTRL-C for hangup

Ahora se debera disponer de la conexin serie virtual /dev/rfcomm3, Se puede utilizar, por ejemplo, gtkterm para abrir el dispositivo. Las velocidades, bits, etc. dan igual porque es virtual tal cual.

Ilustracin 5: Gtkterm mostrando la salida del GPS.


Tambin se podra utilizar cualquier navegador para utilizar ese gps utilizando el puerto que hemos creado.

6.10.2PUERTO SERIE SOBRE IRDA


Bluetooth ha desplazado rpidamente las interfaces infrarrojas IrDA. Como no lo voy a usar, no me preocupo en buscar si hay un puerto serie estndar para esto.

BIBLIOGRAFA

41

Hay un driver GPL disponible en http://www.ircomm2k.de/ que lo utilizan bastantes dispositivos para emular una conexin serie, sobre todo mviles. En Linux hay informacin en http://oasis.dit.upm.es/~jantonio/documentos/revistas/irda/irda3.html

6.10.3PUERTOS SERIE VIRTUALES SOBRE USB


La especificacin USB incorpora la emulacin de un puerto serie virtual usando uno de los modelos de la CDC (Communication Device Class) de USB. Tanto en Windows como en Linux, estas especificaciones ya estn incorporadas en el sistema operativo, por lo que los dispositivos que cumplan esta especificacin, sern automticamente reconocidos y se crear la conexin virtual correspondiente. Un ejemplo de dispositivo USB es CheapDAQ(http://www.disca.upv.es/aperles/CheapDAQ/CheapDAQ.html) , un proyecto para conseguir una tarjeta de adquisicin de datos de muy bajo coste y abierta.

Ilustracin 6: Mdulo Silabs C8051F342 utilizado para CheapDAQ


Muchos de los dispositivos mviles actuales han eliminado la conexin RS-232 fsica y la han sustituido por un conector USB. Ello aporta muchas ventajas, pues el uso de la emulacin de puerto serie har que las aplicaciones clsicas sigan funcionando y que, por la misma conexin USB, se puedan aportar ms servicios. En el mercado hay tambin disponibles conversores USB-RS-232 que s precisan de la instalacin de un driver. Estos conversores pueden dar bastantes problemas en Windows. En Linux funcionan sin necesidad de instalar nada (ya estn soportados por el SO). Como inciso, la mayora de los microcontroladores del mercado incorporan RS-232, pero no USB. Una buena solucin es emplear chips conversores RS-232/USB en nuestros diseos y conseguir un sistema USB que emplea un puerto serie virtual para la comunicacin. Se recomienda emplear el chip conversor de Silabs (http://www.silabs.com) o de FTDI (http://www.ftdichip.com).

42 COMUNICACIONES INDUSTRIALES. COMUNICACIN SERIE (NIVEL FSICO)

6.1.2EMULADOR DE PUERTOS NULL-MODEM


Para facilitar el desarrollo y prueba de aplicaciones, se pueden utilizar emuladores de NULL-MODEM. Para esta tarea se recomienda la aplicacin com0com (http://com0com.sourceforge.net/), que es un generador de NULL-MODEM virtuales para Windows que permite, por ejemplo, conectar dos aplicaciones mediante un falso NULL-MODEM en el mismo ordenador. Esta aplicacin crea pares de puertos, por ejemplo, COM30 y COM31 a los que deberemos conectar cada aplicacin. El flujo de datos serie que entra por un puerto sale por el otro y viceversa, por lo que se comportan como si de un cable null-modem se tratara. Por defecto, com0com crea puertos con nombres "raros" que pueden no gustar a algunos programas. Se recomienda leer el tutorial de la pgina para crear pares con los nombres habituales. Otro detalle importante es que cuando se usa QextSerialPort para hacer la aplicacin. Parece ser que el nombre del puerto es sensible a las maysculas, as que no es lo mismo com30 que COM30, el segundo es el que funciona.

6.11RESUMEN
En este tema se han visto y practicado las comunicaciones serie entre computadores y dispositivos industriales. La amplia aceptacin de las normas RS-232 y RS-485 hacen que estn presentes en infinidad de dispositivos industriales, por lo que ser requisito imprescindible el dominar las tcnicas de programacin que permiten explotarlos. Hoy en da, las normas RS-232 y RS-485 estn siendo desplazadas por otros tipo de interfaces como USB o conexiones inalmbricas. En muchos casos, este desplazamiento no afecta a las tcnicas practicadas, pues es muy habitual la existencia de puertos serie virtuales que sobre los nuevos interfaces que permitirn continuar aplicando las mismas tcnicas.

6.12BIBLIOGRAFA Y ENLACES
manual visor manual Nudam Puertos serie virtuales/redirectores

http://lpccomp.bc.ca/remserial/ http://www.dest-unreach.org/socat/ <- viene con Ubuntu http://sourceforge.net/projects/ser2net <- viene con Ubuntu "sredird" <- viene con Ubuntu

BIBLIOGRAFA

43

Emuladores de NULL-modem

http://sourceforge.net/projects/ttypatch/ http://com0com.sourceforge.net/ (Windows)

Sniffers de puerto serie

"snooper" es para capturar trfico entre dos dispositivos <- viene con Ubuntu

Lantronix dispone de puertos serie virtuales hardware (Wifi, ethernet, ...).

Anda mungkin juga menyukai