¿Qué es Serial?

Un dispositivo serial utiliza un protocolo de comunicación que es estándar para casi cualquier PC. No hay que confundirlo con el bus serial universal (USB). La mayoría de las computadoras incluyen dos puertos seriales RS-232. Serial es también un protocolo de comunicación para instrumentación en muchos dispositivos, y muchos dispositivos compatibles GPIB vienen con un puerto RS-232. Además, usted puede usar comunicación serial para adquisición de datos en conjunto con un dispositivo de muestreo remoto.

El concepto de comunicación serial es simple. El puerto serial envía y recibe bytes de información, un bit a la vez. Aunque esto es más lento que la comunicación paralela, la cual permite la transmisión entera de bytes de una sola vez, es más sencillo y puede utilizarlo en distancias grandes. Por ejemplo, las especificaciones IEEE 488 para comunicación paralela definen que el cableado entre equipos no debe ser mayor de 20 m en total, con no más de 2 m entre dos dispositivos cualquiera; en comunicación serial pueden extenderse hasta 1200 m.

Típicamente, los ingenieros utilizan serial para transmitir datos ASCII. Completan la comunicación utilizando tres líneas de transmisión – referencia, transmisión, y recepción. Debido a que serial es asíncrono, el puerto puede transmitir datos en una línea mientras recibe datos en otra. Otras líneas están disponibles para el intercambio de pulsos de sincronización pero no son requeridas. Las características seriales importantes son: tasa de baudios, bits de datos, bits de paro, y paridad. Para que dos puertos se comuniquen, estos parámetros deben igualarse:

La tasa de baudios es una unidad de medición para comunicación que indica el número de bits transferidos por segundo. Por ejemplo, 300 baudios son 300 bits por segundo. Cuando los ingenieros se refieren a un ciclo de reloj, se refieren a la tasa en baudios, así que si el protocolo indica una razón en baudios de 4800, el reloj está ejecutándose a 4800 Hz. Esto quiere decir que el puerto serial está muestreando la línea de datos a 4800 Hz. Las tasas de baudios para líneas telefónicas son 14400, 28800, y 33600. Tasas de baudios mayores a estas son posibles, pero reducen la distancia disponible para la separación de dispositivos. Utilizan estas tasas de baudios para comunicación donde los dispositivos están localizados entre sí, como sucede típicamente con los dispositivos GPIB.

Bits de datos son mediciones de los bits de datos actuales en una transmisión. Cuando una computadora envía un paquete de información, la cantidad de datos actuales puede ser que no complete 8 bits. Los valores estándar para los paquetes de datos son de 5, 7, y 8 bits. El marco que usted elija dependerá de la información que está transfiriendo. Por ejemplo, el ASCII estándar tiene valores de 0 a 127 (7 bits). El ASCII extendido utiliza de 0 a 255 (8 bits). Si los datos que usted está transfiriendo se encuentran en texto simple (ASCII estándar), enviar 7 bits de datos por paquete, es suficiente para la comunicación. Un paquete se refiere a la transferencia de un sólo byte, incluyendo los bits de inicio/paro, bits de datos, y paridad. Debido a que el número de bits actuales depende del protocolo seleccionado, puede utilizar el término “paquete” para cubrir todas las instancias.

Los bits de paro son utilizados para señalar el término de comunicaciones en un paquete sencillo. Los valores típicos son 1, 1.5 y 2 bits. Debido a que los datos se encuentran sincronizados a través de las líneas y cada dispositivo tiene su propio reloj, es posible que los dos dispositivos pierdan sincronización. Por lo tanto, los bits de paro no solamente indican el final de una transmisión, también le da un margen de error a las velocidades de reloj de la computadora. A medida que se utilizan más bits para bits de paro, mayor oportunidad para sincronizar los diferentes relojes, pero más lenta la razón de transferencia de datos.

Paridad es una forma de revisión de error simple utilizada en la comunicación serial. Existen cuatro tipos de paridad – pares, impares, marcados y espaciados. También puede utilizar los que excluyen de paridad. Para paridad impar y par, el puerto serial fija el bit de paridad (el último bit después de los bits de datos) a un valor que asegura que la transmisión tenga un número par o impar de bits lógicos. Por ejemplo, si el dato es 011, para paridad par, el bit de paridad es 0 para mantener el número par de bits altamente lógicos. Si la paridad es impar, el bit de paridad es 1, resultando en 3 bits altamente lógicos. La paridad marcada y espaciada no revisa específicamente los bits de datos, simplemente fija la paridad de los bit como alta para la paridad marcada o baja para la paridad espaciada. Esto permite que el dispositivo receptor conozca el estado de un bit para así determinar si el ruido esta corrompiendo los datos o si los relojes del dispositivo de transmisión y recepción se encuentran fuera de sincronización.

¿Qué es RS-232?

RS-232 (Estándar ANSI/EIA-232) es el conector serial que se encuentra en las PCs compatibles con IBM. Los ingenieros lo utilizan con diversos propósitos, como el conectar periféricos, impresoras, o módems, así como para instrumentación industrial. Debido a la línea del driver y mejoras en el cableado, las aplicaciones comúnmente incrementan el desempeño del RS-232 más allá de la distancia y velocidad listadas en el estándar. El RS-232 está limitado a conexiones punto a punto entre puertos seriales y dispositivos PC. Usted puede utilizar el hardware RS-232 para comunicaciones seriales en distancias de hasta 50 pies.

Conector DB-9

Tutorial sobre Comunicación Serial 0

Funciones del Conector

Datos: TxD en pin 3, RxD en pin 2

Intercambio de Pulsos de Sincronización: RTS en pin 7, CTS en pin 8, DSR en pin 6,

DCD en pin 1, DTR en pin 4

Común: Com en pin 5

Otros: RI en pin 9

¿Qué es RS-422?

RS-422 (Estándar EIA RS-422-A) es la conexión serial utilizada en computadoras Apple Macintosh. El RS-422 utiliza una señal eléctrica diferencial, opuesta a las señales no balanceadas referenciadas a tierra con RS-232. La transmisión diferencial, que utiliza dos líneas, una para transmitir y otra para recibir señales, resulta en mayor inmunidad al ruido y mayores distancias en comparación con el RS-232. A mayor inmunidad al ruido y distancia, mayores las ventajas en aplicaciones industriales.

¿Qué es RS-485?

RS-485 (Estándar EIA-485) es una mejora sobre el RS-422 porque incrementa el número de dispositivos de 10 a 32 y define las características eléctricas necesarias para asegurar adecuadamente los voltajes de señales bajo la carga máxima. Con el incremento en esta capacidad, usted puede crear redes de dispositivos conectados a un solo puerto serial RS-485. La inmunidad al ruido y la gran capacidad hacen que RS-485 sea la conexión serial preferida en aplicaciones industriales que requieren diversos dispositivos distribuidos en red a una PC o algún otro controlador para colección de datos, HMI, u otras operaciones. RS-485 es un gran conjunto de RS-422; por lo tanto, todos los dispositivos RS-422 pueden ser controlados por RS-485. Usted puede utilizar el hardware RS-485 para comunicación serial para cables de hasta 4000 pies.

¿Qué es un Intercambio de Pulsos de Sincronización?

Este método de comunicación RS-232 permite una conexión sencilla de tres líneas – Tx, Rx, y tierra. Sin embargo, para que los datos sean transmitidos, ambos lados deben presentar los datos de forma sincronizada a la misma tasa de baudios. Aunque este método es suficiente para algunas aplicaciones, se encuentra limitado para resolver problemas como receptores sobrecargados. Aquí es donde los seriales tipo intercambio de pulsos de sincronización (handshake) pueden ayudar. Tres formas de intercambio de pulsos de sincronización son las más populares con RS-232: intercambio de pulsos de sincronización por software, intercambio de pulsos de sincronización por hardware y Xmodem.

Intercambio de Pulsos de Sincronización por Software

Este método utiliza bytes de datos como caracteres de control de manera similar que GPIB utiliza cadenas de comando. También involucra el conjunto de tres líneas de Tx, Rx, y tierra porque los caracteres de control son enviados por una línea de transmisión al igual que los datos regulares. Con la función SetXMode, se pueden habilitar o deshabilitar el uso de dos caracteres de control XON y XOFF. El receptor de datos envía estos caracteres para pausar el transmisor durante la comunicación.

La mayor deficiencia de este método que se debe tener en cuenta es que los decimales 17 y 19 ya no se encuentran disponibles para valores de datos. Esto generalmente no afecta en transmisiones ASCII debido a que estos valores no tienen caracteres; sin embargo, si la transmisión se hace de forma binaria, es muy probable usted transmita estos valores como datos y la transmisión fallaría.

Intercambio de Pulsos de Sincronización por Hardware

Este método en realidad si utiliza líneas de hardware. Así como las líneas Tx y Rx trabajan en conjunto, las líneas RTS/CTS y DTR/DSR también. Una es la entrada y la otra, la salida.

El primer conjunto de líneas son RTS (Request to Send) y CTS (Clear to Send). Cuando un receptor está listo para datos, se acerca a la línea RTS, indicándole que está listo para recibir datos. Esto es leído por el remitente en la entrada CTS, indicándo que el envío de datos puede realizarse.

El siguiente conjunto de líneas son las DTR (Data Terminal Ready) y DSR (Data Set Ready). Los ingenieros utilizan estas líneas básicamente para la comunicación de módem porque permiten que el puerto serial y el módem comuniquen entre sí su estatus. Por ejemplo, cuando el módem está listo para que la PC envíe datos, avisará a la línea DTR, indicando que se ha hecho una conexión a través de las líneas telefónicas. Esto es leído a través de la línea DSR, y la PC puede empezar a enviar datos. La regla general de mayor peso es que se usan las líneas DTR/DSR para indicar que el sistema está listo para que exista la comunicación y las líneas RTS/CTS para paquetes individuales de datos.

En LabWindows/CVI, la función SetCTSMode habilita o deshabilita el uso del intercambio de pulsos de sincronización por hardware. Si el modo CTS es habilitado, LabWindows/CVI utiliza las siguientes reglas:

Cuando la PC envía datos:

La librería RS-232 debe detectar que la línea CTS no tiene la capacidad suficiente para recibir los datos que se enviarán.

Cuando la PC recibe datos:

Si el puerto ha sido abierto y la entrada tiene el espacio para recibir datos, la librería eleva el RTS y DTR. Si el puerto de entrada se encuentra a 90 por ciento de su capacidad, la librería baja el RTS y eleva el DTR. Si el puerto de entrada se encuentra prácticamente vacío, la librería eleva el RTS y mantiene alto el DTR. Si el puerto se cierra, la librería baja tanto RTS como DTR.

Intercambio de Pulsos de Sincronización XModem

Aunque este protocolo es muy común en la comunicación moderna, usted puede utilizar el protocolo XModem entre dos dispositivos directamente siempre y cuando utilicen ambos el mismo protocolo. En LabWindows/CVI, la implementación del XModem actual no está a la vista del usuario. Siempre y cuando la PC esté conectada a otro dispositivo que utiliza el protocolo XModem, puede utilizar las funciones XModem de LabWindows/CVI para transferir archivos de un sitio a otro. Las 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, y packet_size. Ambos lados deben acordar en estos parámetros, y XModem tiene una definición estándar de éstos. Sin embargo, usted puede modificar estos parámetros con la función XModemConfig dentro de LabWindows/CVI para cumplir con su requerimiento. Usted utiliza estos parámetros en XModem haciendo que el receptor envíe el caracter neg_ack. Esto informa al remitente que se está listo para la recepción de datos. El receptor intenta nuevamente con el tiempo start_delay, y entre estos dos intenta alcanzar ya sea max_tries o recibir start_of_data del remitente. Si alcanza max_tries, le informa al usuario que la comunicación con el remitente no pudo llevarse acabo. Si recibe del remitente el start_of_data, lee el paquete de información que le sigue. Este paquete contiene el número de paquete, el complemento del número del paquete como un error marcado, el paquete de datos actual o bytes packet_size, y un resumen de los datos para verificar si existe algún error. Después de leer los datos, el receptor llama a la función wait_delay para después enviar los ack de vuelta al remitente. Si el remitente no lo recibe, regresa el paquete de datos max_tries hasta que éste lo reciba. Si no se logra llevar acabo esto, se le informa al usuario que ha ocurrido un error en la transferencia de archivos.

Debido a que el remitente debe enviar los paquetes de datos en forma de bytes packet_size, el remitente rellena el paquete de datos con ASCII NUL (0) bytes si no hay suficientes datos que llenen hasta el último espacio del paquete. Esto puede ocasionar que el archivo recibido sea más grande que el original. No utilice el XON/XOFF con el protocolo XModem, porque el número de paquete de la transferencia XModem puede incrementar los valores de caracteres de control al XON/OFF, el cual podría causar una interrupción en la comunicación.

Enlaces Relacionados:

Información sobre productos para comunicación serial (en inglés)

Drivers para más de 4,000 instrumentos (incluyendo serial, GPIB, Ethernet, VXI entre otros)