RS232 es el nombre del interfaz de comunicación serie más utilizado del mundo. La norma serie está disponible en prácticamente el 99% de los ordenadores. Entre ellos el IBM PC compatible que habitualmente está equipado con dos puertos serie RS232, uno de ellos utilizado para conectar el ratón. El Apple Macintosh es una notable excepción, utilizando otra norma serie, la RS 422.

La norma RS232 fue originalmente diseñada para conectar terminales de datos con dispositivos de comunicación (como módems y AITs). Desde un principio, fue también utilizada para conectar casi cualquier dispositivo imaginable. Los usos de la RS 232 en el entorno doméstico son muchos y ampliamente conocidos. Desde la conexión del ratón, el módem/fax, agendas electrónicas de bolsillo, impresoras serie, grabadores de memoria (tipo EPROM), digitalizadores de vídeo, radios de AM/FM, etc. La lista sólo está limitada por la imaginación de los diseñadores.

En el entorno industrial el peso de la RS 232 es también muy importante. Si bien existen soluciones de comunicación serie más robustas y versátiles, como la RS 422 o la RS 475, la RS 232 sigue siendo por su sencillez, su diseño económico y, sobre todo, por su gran difusión, la norma más frecuente. Así, es fácil ver cómo robots industriales, manipuladores, controles de todo tipo, utilizan la RS 232. Existen hasta cafeterías industriales (de las utilizadas en bares y restaurantes) que disponen de una RS232 para ser conectadas a un PC e informar de cuántos cafés han hecho en el transcurso del día, permitiendo al gerente de la empresa un control de caja, estadísticas de uso, etcétera.

Transmisión serie/paralelo

Conceptualmente una transmisión paralelo consiste en utilizar simultáneamente varios circuitos de transmisión serie. Dejando al margen problemas específicos de una transmisión en paralelo, como puede ser el efecto crosstalk o interferencia inducida de símbolos, la transmisión paralelo es el recurso lógico cuando un solo circuito no proporciona un ancho de banda suficiente. Si en un diseño, un problema de transmisión puede resolverse (a coste similar) con una transmisión serie, esta opción es en principio deseable frente a una paralelo. Piénsese que en una transmisión con múltiples circuitos la probabilidad de fallo de línea y la necesidad de mantenimiento es proporcional al número de líneas utilizadas.

Transmisión síncrona/asíncrona

Independientemente de si la transmisión es serie o paralelo, ésta puede ser síncrona o asíncrona. Para entender la diferencia es interesante fijarse en la etimología de las palabras. Ambas vienen del griego cronos --tiempo (reloj)--. Síncrona significa "mismo reloj" y asíncrona lo contrario, es decir, relojes distintos.

Entre dos equipos, emisor y receptor, existe un problema básico en la identificación de los distintos símbolos (bits en este caso) que se transmiten por una línea de transmisión. Supongamos dos computadores A y B, y una línea de transmisión por la que se comunican. Supongamos que A manda a B 50 bits a una velocidad de 1000 bits/s. Esto quiere decir que cada bit estará en la línea de transmisión una milésima de segundo. La máquina B necesita conocer este dato y necesita un reloj, o base de tiempos, que le permita medir con precisión esa milésima de segundo para saber cuándo ésta en la línea el segundo bit, el tercer bit, etcétera. El lector debe conocer que la forma normal en que el equipo receptor decide si un bit es "0" o "1" es muestreando (haciendo un muestreo de) la línea de transmisión durante el intervalo del bit, preferiblemente a mitad del intervalo.

Es evidente que si el reloj utilizado por el receptor no mide el tiempo con precisión y la secuencia de bits es lo suficientemente larga, entonces cometerá un error en el muestreo de la línea e identificará una secuencia de bits incorrecta. Si, por ejemplo, el reloj receptor atrasa y cuando indica al sistema que ha pasado 1ms en realidad ha pasado 1,1ms (un error del 10%, sin duda un poco exagerado) entonces se producirá un primer error de muestreo en el 6º a 7º bits transmitido (si asumimos que el primer bit lo muestreó correctamente en el centro del intervalo del bits) (ver figura).

La figura muestra claramente cuál es el problema. Debe quedar claro que aunque el planteamiento del ejemplo hace culpable al reloj del receptor, en una situación real encontraremos que, de usar dos relojes, es imposible garantizar que ambos midan el tiempo (batir segundos) exactamente igual. Y aunque el error entre ambos sea mucho menor, nótese que si la secuencia de bits es lo suficientemente larga, el error de muestreo terminará por ocurrir.

Problema: determinar la diferencia (error) máxima admisible entre los relojes del emisor y receptor para transmitir un carácter de ocho bits (suponemos existe un mecanismo que permite siempre leer el primer bit de cada carácter correctamente).

De esta situación se pueden deducir dos conclusiones:

  •   La transmisión síncrona (emisor y receptor comparten el mismo reloj) permite que el receptor pueda interpretar (muestrear) sin error de sincronismo una secuencia (bloque) arbitrariamente larga de bits.
  •   La transmisión asíncrona, a diferencia de la síncrona, esta orientada a la transmisión de caracteres (bloque mínimo de tan sólo siete u ocho bits).
  •   Uso de un único reloj en la transmisión síncrona
  •   Si se utiliza el reloj de una de las dos máquinas (o un reloj tercero) se puede transmitir la señal de reloj por una línea auxiliar a la otra máquina. La figura muestra como a partir de la señal de reloj el muestreo es siempre exacto.

  •  El emisor puede utilizar una codificación para los datos de las denominadas "auto-reloj",como por ejemplo el código Manchester (utilizado por ejemplo en redes locales Ethernet).

La figura muestra una secuencia de bits codificada en código Manchester.

Se puede observar que la codificación Manchester tiene la propiedad de que existe siempre una transmisión en la mitad del intervalo del bit. El receptor aprovecha esta propiedad para sincronizarse en cada bit. Es como si hubiera un reloj entre los datos que marca el ritmo del muestreó que debe hacer el receptor, de ahí el nombre de auto-reloj.

Sincronización del principio de cada carácter en la transmisión asíncrona

Cuando el emisor no transmite, en el periodo entre caracteres, la línea se mantiene a "1" lógico. Cuando decide transmitir un carácter, primero transmite un "0" que se denomina bit de START y sirve para que el receptor sincronice (empieza a contar tiempos desde ese momento). El instante de sincronismo es el flanco de bajada de la señal (ver figura). Tras el bit de START se transmiten los bits de datos y después es obligatorio al menos un bit de STOP a "1" lógico. La secuencia se repite tantas veces como caracteres se transmitan. Obsérvese que este mecanismo de sincronización con el bit de START impide que la deriva de muestreo por diferencias entre los relojes continúe en el siguiente carácter. Se asume que la deriva de muestreo no debe ser tan grande que provoque un error de muestreo en los bits de cada carácter.

RS-232

La norma serie RS232 fue diseñada para conectar DTEs (Data Terminal Equipment) o equipos terminales de datos (como un terminal, un ordenador,...) con DCEs (data communication equipment) o equipos de comunicación de datos, como módems, codecs, AITs, etcétera.

La diferenciación entre DTE y DCE es fundamental para la comprensión de la norma como se verá más adelante.

La RS 232 permite la transmisión síncrona y asíncrona. La subnorma asíncrona es sin duda la más frecuente por lo que nos centraremos en ella.

La transmisión asíncrona se lleva a cabo tal y como se describe en el punto anterior. En concreto además del bit de START utiliza:

  •   5, 6, 7 o 8 bits de datos,
  •   0 o 1 bit de paridad (la paridad puede ser "par"(Even), "impar"(Odd), "siempre a cero"(Reset) y "siempre a uno"(Set).
  •   1, 1.5 o 2 bits de STOP.

Para agilizar el lenguaje se suele emplear una nomenclatura abreviada como, por ejemplo, "8N1" que indica que la transmisión serie RS232 se ha configurado para transmitir 8 bits de datos, No paridad y 1 bit de STOP. Otro ejemplo sería "6E2" que indica 6 bits de datos, paridad par y 2 bits de STOP.

El estándar RS232 normaliza los aspectos mecánicos, eléctricos y funcionales.

Mecánicos

La RS 232 utiliza un conector Cannon DB-25 (ISO 2110) macho para el DTE y hembra para el DCE (ver figura).

La conexión entre DTE y DCE es simple. Cada pin conecta con su par (el 1 con el 1, el N con el N) existen versiones de DB-25 para cable plano que simplifica el mecanizado de las conexiones. Cada pin tiene asignado una función tal y como se muestra en la figura. Los nombres de las líneas están puestos desde el punto de vista del DTE. Así, el pin 2 es la línea TxD (transmisión de datos) pero obviamente eso no es cierto en ambos equipos, sólo en el DTE. En el DCE, por el contrario, es la línea por la que recibe los datos del DTE. Cuando sólo se utiliza la transmisión asíncrona, sólo es necesario utilizar nueve líneas. Se puede utilizar el conector Cannon-DB-9. Igualmente el macho es el DTE y la hembra el DCE. (Desgraciadamente esta norma, y otras de la RS 232, no siempre es seguida por todos los fabricantes, razón por la cual no siempre es fácil manejar esta interfaz).

La longitud máxima del cable entre DTE y DCE depende de la calidad de éste y de la velocidad de transmisión utilizada. En principio la norma recomienda que no sea superior a 15 metros para una velocidad de 20 Kb/s.

Eléctrica

La subnorma eléctrica de la RS 232 es la V 28. La norma fija una transmisión en modo común (cada circuito tienen una referencia a tierra y esta es común para todos los circuitos). Los circuitos son punto a punto, es decir, un driver con un sólo receptor de la señal.

La señal es bipolar con lógica invertida, utilizando los siguientes valores:

  •  1 lógico =- 3 a - 15 voltios
  •   0 lógico = + 3 a + 15 voltios

La ausencia de señal (0 voltios) queda diferenciado del 0 y 1 lógicos.

La RS 232 es cortocircuitable. Esto quiere decir que, al menos teóricamente, los drivers de salida de las puertas disponen de un mecanismo de auto-protección contra

sobrecalentamientos. La tensión máxima de operación es +/-25voltios y la carga máxima es de 3 KΩ a 7 KΩ, con una corriente máxima de 500 mA.

Funcional (sobre norma asíncrona)

La norma asíncrona la forman nueve líneas.

 

La línea GND conecta la masa de ambos equipos y no merece mayor comentario. Las restantes ocho líneas pueden ser agrupados en tres bloques funcionales que se explican fácilmente si recordamos que la norma fue diseñada para conectar un PC (DTE típico) con un modem (DCE típico).

Primer bloque

Lo denominaremos "de establecimiento de conexión". Está formado por las líneas:

DTR (Data Terminal Ready): Terminal de datos preparado. (El PC y su RS232 están listos).

DSR (Data Set Ready): Equipo de comunicación preparado. (El modem está listo).

RI (Ring Indicator): Indicador de llamada. (El modem indica a su PC que ha recibido una llamada).

El objetivo es que ambos ordenadores sepan que se ha establecido un canal de comunicación (normalmente a través de la línea telefónica).

Las líneas DTR y DSR del equipo local y del remoto deben estar activas (set) durante todo el proceso. (De hecho cuando un PC desea dar por terminada una conexión basta con que, momentáneamente, desactive (reset) su DTR).

La conexión se inicia manualmente (el usuario llama con el teléfono al modem remoto) o automáticamente (el modem tiene capacidad de marcar un número de teléfono – dialling ) y se gestiona en los módems (que negocian, de forma automática, los parámetros de transferencia como la velocidad, compresión, etc).

Se asume que el usuario del PC que llama activará el proceso que va a utilizar la conexión (un programa de transmisión de ficheros, por ejemplo). En el PC llamado se asume que el proceso homólogo está ya activo (porque, por ejemplo, lo está permanentemente) o se puede activar automáticamente al recibir de su modem la señal de RI. Sea como fuera, la conexión queda establecida. A partir de este momento los ordenadores pueden intercambiar información.

Segundo bloque "Control de flujo"

Estas líneas tienen sentido en el caso de que el canal de comunicación establecido tenga una gestión half-duplex (ver a continuación “gestión simplex, half-duplex y full-duplex...”). Si el canal está establecido, el protocolo software de nivel de enlace de datos que se esté utilizando (Xmodem, Ymodem, HDLC,...) fijará cuál de los dos DTEs debe comenzar a hablar/transmitir.

Las líneas en este bloque son usadas de la siguiente manera:

RTS (Request To Send): Petición de transmisión. El PC indica a su modem que quiere transmitir a la máquina remota.

CTS (Clear To Send): Canal libre para la transmisión. El modem indica a su PC que puede transmitir. Previamente habrá transmitido una señal portadora por el canal de comunicación para avisar al otro modem que ocupa el canal.

DCD (Data Carrier Detected): Detectada portadora. El modem indica a su PC que el canal de comunicación está ocupado por el equipo remoto.

El PC que quiere transmitir activa RTS, entonces su modem manda una señal portadora (sin modular, sin datos) para avisar al modem remoto que se reserva el canal. Una vez reservado el canal comunica a su DCE que ya puede transmitir activando la línea CTS.

Cuando un PC haya terminado de transmitir, desactivará RTS, el modem quitará la portadora y desactivará CTS. Entonces el otro modem podrá reservar el canal si su PC desea transmitir.

En caso de que la gestión del canal sea full-duplex todo es más sencillo. Cuando un PC quiere transmitir activa su RTS. Automáticamente su modem le da paso activando CTS.

Tercer Bloque “Transmisión/recepción de datos”

El funcionamiento de las líneas de este bloque es obvio.

TxD: Transmisión de datos.

RxD: Recepción de datos

La transmisión serial de los datos, tal y como se ha explicado, con el bit de START, de STOP, etcétera, se produce en estas líneas.

Gestión Simplex, Half-duplex y Full-duplex de un canal de comunicación

 

Un canal de comunicación puede ser gestionado de tres maneras: simplex, semi-duplex (o half-duplex) y duplex (o full-duplex).

Simplex: La comunicación sólo es posible en un sentido. Por ejemplo, las emisiones de radio o televisión gestionan el éter en modo simplex.

Half-duplex: La comunicación es posible en ambos sentidos pero de modo alternado, nunca simultáneamente. Por ejemplo un walkie-talkie gestiona el éter en modo half-duplex.

Full-duplex: La comunicación es posible en ambos sentidos simultáneamente. Por ejemplo los teléfonos móviles utilizan el éter en modo full-duplex.

Debe quedar claro que se trata de un modo de gestión del canal, no de una propiedad de éste. En los ejemplos queda claro que un mismo medio, el éter, puede ser gestionado de modos distintos.

Conexionado DTE-DTE: Null-Modem

Como ya se ha mencionado, es frecuente que la norma RS232 se utilice para otros propósitos distintos de los originales. Uno de los más frecuentes es conectar un DTE con otro DTE. En este caso el cableado normal DTE a DCE no tiene sentido y estaríamos cortocircuitando las líneas de salida. Existe una solución, un cableado cruzado que se conoce como Null-modem. Es fácil de entender si lo analizamos usando los tres bloques funcionales.

Bloque 1:

Conectar DTR con DSR remoto y RI remoto.

De esta manera cuando un PC activa su RS232 se lo comunica al remoto.

Bloque 2:

RTS con CTS local y DCD remoto.

Para entender la lógica de este cableado debe observarse (ver figura a continuación) que hay dos líneas independientes de transmisión de datos, una en cada sentido. Por lo tanto la comunicación es potencialmente Full-duplex. Esto implica que cada DTE puede transmitir cuando lo desee, independientemente de que el otro DTE lo esté haciendo o no. Por lo tanto cuando un PC quiere transmitir activa su RTS, esto activa también su propia CTS lo que le permite transmitir inmediatamente. Además indica que está transmitiendo a la máquina remota activando el DCD remoto.

Bloque 3:

TxD con RxD remoto.

Como habíamos mencionado, la comunicación es potencialmente Full-Duplex.

Terminales y emuladores de terminal

 

Una terminal es un conjunto formado por un teclado, una pantalla y un interfaz serie (típicamente RS232) que permite conectar ambos a un ordenador central o host. El terminal en sí no posee ninguna capacidad de cálculo, se limita a sacar por pantalla la información que recibe del host y a transmitir al host la información/comandos introducida por teclado. Cada vez son menos frecuentes estos equipos. En su lugar se utiliza un ordenador personal con un programa de emulación de terminal (como el TELIX, el PROCOMM+, el HYPERTERMINAL de Windows95, etc.).

Un terminal puede ser Full-Duplex (FD) o Half-duplex (HD) en función de como proceda para mostrar por pantalla las pulsaciones del teclado. Si la pantalla recibe directamente del teclado el código a visualizar entonces es HD (ver dibujo). El modo FD es algo más complejo pues requiere la participación del host. Consiste en que el host haga eco de la información que recibe del teclado. De esta forma el código pulsado "va y viene" al/del host antes de ser mostrado en pantalla (y de ahí que se denomine terminal full-duplex).

 

La ventaja del método FD es que permite al usuario comprobar si ha habido error de transmisión. Si el código en pantalla es el deseado, también es el que ha leído el host. Esto no pasa en HD. Si en HD existiera un error de transmisión y el código de la tecla pulsada no llega o llega mal al host, el usuario no puede, en principio, saberlo.

Control de flujo con RS232

Existen dos posibilidades de control de flujo de datos con la RS 232: Una hardware mediante las líneas RTS/CTS (que ya se ha descrito) y otra software XON/XOFF.

RTS/CTS: la línea CTS indica al PC si puede transmitir o no. En aplicaciones como la conexión de un PC a una impresora serie (dispositivo este normalmente bastante lento) la línea CTS está gobernada por la impresora para impedir que el PC desborde su buffer de entrada.

XON/XOFF: Otra posibilidad es usar el protocolo software XON / XOFF que consiste en lo siguiente:

  •   Cuando la impresora está dispuesta para recibir datos (buffer de entrada vacío o casi vacío) transmite al PC la marca XON (XON y XOFF son códigos ASCII predefinidos).
  •   Si el PC transmite demasiado rápido para la impresora y el buffer está próximo a llenarse, entonces se manda la marca XOFF.
  •   El PC transmite sólo si la última marca recibida fue XON.

Dependiendo de las características de los equipos a conectar se puede hacer un control de flujo RTS / CTS, XON / XOFF, ambos o ninguno.

Cuando se utilizan ambos, normalmente es porque hay que controlar dos buffers de recepción, el del dispositivo físico (UART), que se hace por RTS / CTS, y el buffer de la aplicación que está recibiendo los datos, que se hace con XON / XOFF.