La comunicacion serial es fundamental para la transferencia de datos para su posterior procesamiento. Generalmente se aplica para la interaccion de distintos dispositivos electronicos con nuestra PC de escritorio o personal. Esto fue lo que encontre en la pagina de National Instrument:


Comunicación Serial: Conceptos Generales

1.¿Qué es la comunicación serial?
2.¿Qué es RS-232?
3.¿Qué es RS-422?
4.¿Qué es RS-485?
5.¿Qué es handshaking (o intercambio de pulsos de sincronización)?


1.¿Qué es la comunicación serial? Regresar al inicio
La comunicación serial es un protocolo muy común (no hay que confundirlo con el Bus Serial de Comunicación, o USB) para comunicación entre dispositivos que se incluye de manera estándar en prácticamente cualquier computadora. La mayoría de las computadoras incluyen dos puertos seriales RS-232. La comunicación serial es también un protocolo común utilizado por varios dispositivos para instrumentación; existen varios dispositivos compatibles con GPIB que incluyen un puerto RS-232. Además, la comunicación serial puede ser utilizada para adquisición de datos si se usa en conjunto con un dispositivo remoto de muestreo.

El concepto de comunicación serial es sencillo. El puerto serial envía y recibe bytes de información un bit a la vez. Aun y cuando esto es más lento que la comunicación en paralelo, que permite la transmisión de un byte completo por vez, este método de comunicación es más sencillo y puede alcanzar mayores distancias. Por ejemplo, la especificación IEEE 488 para la comunicación en paralelo determina que el largo del cable para el equipo no puede ser mayor a 20 metros, con no más de 2 metros entre cualesquier dos dispositivos; por el otro lado, utilizando comunicación serial el largo del cable puede llegar a los 1200 metros.

Típicamente, la comunicación serial se utiliza para transmitir datos en formato ASCII. Para realizar la comunicación se utilizan 3 líneas de transmisión: (1) Tierra (o referencia), (2) Transmitir, (3) Recibir. Debido a que la transmisión es asincrónica, es posible enviar datos por un línea mientras se reciben datos por otra. Existen otras líneas disponibles para realizar handshaking, o intercambio de pulsos de sincronización, pero no son requeridas. Las características más importantes de la comunicación serial son la velocidad de transmisión, los bits de datos, los bits de parada, y la paridad. Para que dos puertos se puedan comunicar, es necesario que las características sean iguales.

a.Velocidad de transmisión (baud rate): Indica el número de bits por segundo que se transfieren, y se mide en baudios (bauds). Por ejemplo, 300 baudios representa 300 bits por segundo. Cuando se hace referencia a los ciclos de reloj se está hablando de la velocidad de transmisión. Por ejemplo, si el protocolo hace una llamada a 4800 ciclos de reloj, entonces el reloj está corriendo a 4800 Hz, lo que significa que el puerto serial está muestreando las líneas de transmisión a 4800 Hz. Las velocidades de transmisión más comunes para las lineas telefónicas son de 14400, 28800, y 33600. Es posible tener velocidades más altas, pero se reduciría la distancia máxima posible entre los dispositivos. Las altas velocidades se utilizan cuando los dispositivos se encuentran uno junto al otro, como es el caso de dispositivos GPIB.
b.Bits de datos: Se refiere a la cantidad de bits en la transmisión. Cuando la computadora envía un paquete de información, el tamaño de ese paquete no necesariamente será de 8 bits. Las cantidades más comunes de bits por paquete son 5, 7 y 8 bits. El número de bits que se envía depende en el tipo de información que se transfiere. Por ejemplo, el ASCII estándar tiene un rango de 0 a 127, es decir, utiliza 7 bits; para ASCII extendido es de 0 a 255, lo que utiliza 8 bits. Si el tipo de datos que se está transfiriendo es texto simple (ASCII estándar), entonces es suficiente con utilizar 7 bits por paquete para la comunicación. Un paquete se refiere a una transferencia de byte, incluyendo los bits de inicio/parada, bits de datos, y paridad. Debido a que el número actual de bits depende en el protocolo que se seleccione, el término paquete se usar para referirse a todos los casos.
c.Bits de parada: Usado para indicar el fin de la comunicación de un solo paquete. Los valores típicos son 1, 1.5 o 2 bits. Debido a la manera como se transfiere la información a través de las líneas de comunicación y que cada dispositivo tiene su propio reloj, es posible que los dos dispositivos no estén sincronizados. Por lo tanto, los bits de parada no sólo indican el fin de la transmisión sino además dan un margen de tolerancia para esa diferencia de los relojes. Mientras más bits de parada se usen, mayor será la tolerancia a la sincronía de los relojes, sin embargo la transmisión será más lenta.
d.Paridad: Es una forma sencilla de verificar si hay errores en la transmisión serial. Existen cuatro tipos de paridad: par, impar, marcada y espaciada. La opción de no usar paridad alguna también está disponible. Para paridad par e impar, el puerto serial fijará el bit de paridad (el último bit después de los bits de datos) a un valor para asegurarse que la transmisión tenga un número par o impar de bits en estado alto lógico. Por ejemplo, si la información a transmitir es 011 y la paridad es par, el bit de paridad sería 0 para mantener el número de bits en estado alto lógico como par. Si la paridad seleccionada fuera impar, entonces el bit de paridad sería 1, para tener 3 bits en estado alto lógico. La paridad marcada y espaciada en realidad no verifican el estado de los bits de datos; simplemente fija el bit de paridad en estado lógico alto para la marcada, y en estado lógico bajo para la espaciada. Esto permite al dispositivo receptor conocer de antemano el estado de un bit, lo que serviría para determinar si hay ruido que esté afectando de manera negativa la transmisión de los datos, o si los relojes de los dispositivos no están sincronizados.
2.¿Qué es RS-232? Regresar al inicio

RS-232 (Estándar ANSI/EIA-232) es el conector serial hallado en las PCs IBM y compatibles. Es utilizado para una gran variedad de propósitos, como conectar un ratón, impresora o modem, así como instrumentación industrial. Gracias a las mejoras que se han ido desarrollando en las líneas de transmisión y en los cables, existen aplicaciones en las que se aumenta el desempeño de RS-232 en lo que respecta a la distancia y velocidad del estándar. RS-232 está limitado a comunicaciones de punto a punto entre los dispositivos y el puerto serial de la computadora. El hardware de RS-232 se puede utilizar para comunicaciones seriales en distancias de hasta 50 pies.

Pines del conector DB-9

--------------
1 2 3 4 5 /
6 7 8 9 /
---------
Conector externo de la computadora y expuesto del cable.

Funciones de los pines en RS-232:

Datos: TXD (pin 3), RXD (pin 2)
Handshake: RTS (pin 7), CTS (pin 8), DSR (pin 6), DCD (pin 1), DTR (pin 4)
Tierra: GND (pin 5)
Otros: RI (pin 9)


3.¿Qué es RS-422? Regresar al inicio

RS-422 (Estándar EIA RS-422-A) es el conector serial utilizado en las computadoras Apple de Macintosh. RS-422 usa señales eléctricas diferenciales, en comparación con señales referenciadas a tierra como en RS-232. La transmisión diferencial, que utiliza dos líneas para transmitir y recibir, tiene la ventaja que es más inmune al ruido y puede lograr mayores distancias que RS-232. La inmunidad al ruido y la distancia son dos puntos clave para ambientes y aplicaciones industriales.

4.¿Qué es RS-485? Regresar al inicio

RS-485 (Estándar EIA-485) es una mejora sobre RS-422 ya que incrementa el número de dispositivos que se pueden conectar (de 10 a 32) y define las características necesarias para asegurar los valores adecuados de voltaje cuando se tiene la carga máxima. Gracias a esta capacidad, es posible crear redes de dispositivos conectados a un solo puerto RS-485. Esta capacidad, y la gran inmunidad al ruido, hacen que este tipo de transmisión serial sea la elección de muchas aplicaciones industriales que necesitan dispositivos distribuidos en red conectados a una PC u otro controlador para la colección de datos, HMI, u otras operaciones. RS-485 es un conjunto que cubre RS-422, por lo que todos los dispositivos que se comunican usando RS-422 pueden ser controlados por RS-485. El hardware de RS-485 se puede utilizar en comunicaciones seriales de distancias de hasta 4000 pies de cable.

Pines del conector DB-9

-------------
1 2 3 4 5 /
6 7 8 9 /
---------
Conector externo de la computadora y expuesto del cable.

Funciones de los pines en RS-485 y RS-422:

Datos: TXD+ (pin 8), TXD- (pin 9), RXD+ (pin 4), RXD- (pin 5)
Handshake: RTS+ (pin 3), RTS- (pin 7), CTS+ (pin 2), CTS- (pin 6)
Tierra: GND (pin 1)

5.¿Qué es handshaking (o intercambio de pulsos de sincronización? Regresar al inicio

El método de comunicación usado por RS-232 requiere de una conexión muy simple, utilizando sólo tres líneas: Tx, Rx, y GND. Sin embargo, para que los datos puedan ser transmitidos correctamente ambos extremos deben estar sincronizados a la misma velocidad. Aun y cuando este método es más que suficiente para la mayoría de las aplicaciones, es limitado en su respuesta a posibles problemas que puedan surgir durante la comunicación; por ejemplo, si el receptor se comienza a sobrecargar de información. Es en estos casos cuando el intercambio de pulsos de sincronización, o handshaking, es útil. En esta sección se describirán brevemente las tres formas más populares de handshaking con RS-232: handshaking for software, handshaking por hardware, y XModem.

a.Handshaking por software: Ésta será la primera forma de handshaking que discutiremos. Esta forma de sincronización utiliza bytes de datos como caracteres de control, de manera similar a como GPIB utiliza las cadenas de caracteres como comandos. Las líneas necesarias para la comunicación siguen siendo Tx, Rx, y GND, ya que los caracteres de control se envían a través de las líneas de transmisión como si fueran datos. La función SetXMode permite al usuario habilitar o deshabilitar el uso de dos caracteres de control: XON y XOFF. Estos caracteres son enviados por el receptor para pausar al transmisor durante la comunicación.

A manera de ejemplo, asúmase que el transmisor comienza a enviar datos a alta velocidad. Durante la transmisión, el receptor se da cuenta que el búfer de entrada se está llenando debido a que el CPU está ocupado con otras tareas. Para pausar temporalmente la transmisión, el receptor envía XOFF (cuyo valor es típicamente 19 decimal, o 13 hexadecimal) hasta que el búfer se vacíe. Una vez que el receptor está preparado para recibir más datos envía XON (cuyo valor es típicamente 17 decimal, u 11 hexadecimal) para continuar la comunicación. LabWindows enviará un XOFF cuando el búfer de entrada se encuentre a la mitad de su capacidad. Además, en caso que la transmisión inicial de XOFF haya fallado, LabWindows enviará de nuevo un XOFF cuando el búfer alcance un 75% y 90% de su capacidad. Para que funcione correctamente, es necesario que el transmisor esté utilizando el mismo protocolo.

La mayor desventaja de este método es además lo más importante a considerar: los números decimales 17 y 19 son ahora los límites para la transmisión. Cuando se transmite en ASCII, esto no importa mucho ya que estos valores no representan caracter alguno. Sin embargo, si la transmisión de datos es en binario, lo más probable es que estos valores sean transmitidos como datos regulares y falle la comunicación.

b.Handshaking por hardware: El segundo método de handshaking utiliza líneas de hardware. De manera similar a las líneas Tx y Rx, las líneas RTS/CTS y DTR/DSR trabajan de manera conjunta siendo un par la entrada y el otro par la salida. El primer par de líneas es RTS (por sus siglas en inglés, Request to Send) y CTS (Clear to Send). Cuando el receptor está listo para recibir datos, cambia la línea RTS a estado alto; este valor será leído por el transmisor en la línea CTS, indicando que está libre para enviar datos. El siguiente par de líneas es DTR (por sus siglas en inglés, Data Terminal Ready) y DSR (Data Set Ready). Estas líneas se utilizan principalmente para comunicación por modem, permiten al puerto serial y modem indicarse mutuamente su estado. Por ejemplo, cuando el modem se encuentra preparado para que la PC envíe datos, cambia la línea DTR a estado alto indicando que se ha realizado una conexión por la línea de teléfono. Este valor se lee a través de la línea DSR y la PC comienza a enviar datos. Como regla general, las líneas DTR/DSR se utilizan para indicar que el sistema está listo para la comunicación, mientras que las líneas RTS/CTS se utilizan para paquetes individuales de datos.

En LabWindows, la función SetCTSMode habilita o deshabilita el uso de handshaking por hardware. Si el modo CTS está habilitado, LabWindows aplica las siguientes reglas:

Cuando la PC envía datos:

La librería de RS-232 debe de detectar que la línea CTS se encuentra en estado alto antes de enviar datos.

Cuando la PC recibe datos:

Si el puerto está abierto y el búfer de entrada puede contener más datos, la líbrería envía a RTS y DTR a estado alto.

Si el búfer de entrada está al 90% de su capacidad, la librería manda a estado bajo RTS pero mantiene DTR en alto.

Si el búfer de entrada está casi vacío, la librería manda a estado alto RTS y mantiene DTR en alto.

Si el puerto se cierra, la librería manda a estado bajo a RTS y DTR.

c.Handshaking por XModem: El último modo de handshaking presentado es el protocolo de transmisión de archivos XModem. Este protocolo es muy común en comunicación por modem. Aun y cuando es más utilizado para comunicación por modem, el protocolo XModem puede ser utilizado directamente entre otros dispositivos. En LabWindows, la implementación de XModem se mantiene oculta para el usuario. Mientras la PC se conecte a otro dispositivo que utilice el protocolo XModem, se pueden utilizan las funciones de LabWindows para transferir datos de un lado a otro. Estas funciones son XModemConfig, XModemSend, y XModemReceive.

XModem utiliza un protocolo basado en los siguientes parámetros: start_of_data, end_of_trans, neg_ack, ack, wait_delay, start_delay, max_tries, packet_size. Estos parámetros deben de ser comunes en ambos lados de la comunicación, y el estándar XModem contiene la definición estándar de éstos; sin embargo, se pueden modificar utilizando la función XModemConfig de LabWindows para cumplir cualquier otro requerimiento. Los parámetros en XModem funcionan de la siguiente manera: el receptor envía el caracter "neg_ack". Esto indica al transmisor que ya está listo para recibir datos. El receptor continuará enviado el caracter "neg_ack" en intervalos de tiempo de duración de "start_delay" hasta que iguale la cuenta de "max_tries" o reciba "start_of_data" del transmisor. Si el receptor intenta comunicarse con el transmisor la misma cantidad de veces que "max_tries", informará al usuario que no fue posible comunicarse con el transmisor. Si el receptor sí recibe el "start_of_data" del transmisor, leerá el paquete de información que sigue. Este paquete contiene el número de paquete, el complemento del número de paquete para fines de verificación de errores, el paquete actual de datos con una cantidad de bytes igual a "packet_size", y un checksum para más verificación de errores. Después de recibir el paquete, el receptor mandará llamar el "wait_delay", y luego enviará el "ack" al transmisor. Si el transmisor no recibe el "ack", intentará de reenviar el paquete de datos una cantidad de veces igual a "max_tries" o hasta que reciba el "ack". Si nunca recibe el "ack", informará al usuario que hubo un fallo al momento de querer transferir el archivo.

Los datos deben de ser enviados en paquetes con una cantidad de bytes igual a "packet_size". Debido a esto, cuando se está enviando el último paquete y no se tiene la cantidad suficiente de información válida para llenarlo, el protocolo llenará el paquete con el caracter ASCII nulo (0). Esto puede causar que el archivo recibido sea más grande que el original. Es importante recordar que no hay que usar XON/XOFF con el protocolo XModem, ya que el número de paquete durante la transferencia por XModem se incrementará conforme se envían los caracteres XON/XOFF, lo que puede causar una falla en la comunicación.



Y aqui les dejo el link de referencia...

http://digital.ni.com/public.nsf/allkb/039001258CEF8FB686256E0F005888D1