COMUNICACIONES SERIE Comunicaciones serie Introducción Un puerto serie es una interfaz de comunicaciones de datos digitales, frecuentemente utilizado por ordenadores y periféricos, en donde la información es transmitida bit a bit, enviando éstos secuencialmente uno tras otro a través de la misma línea, en contraste con el puerto paralelo que envía varios bits simultáneamente. Las comunicaciones serie tienen la ventaja frente a las comunicaciones en paralelo de que permiten enviar datos a través de largas distancias, ya que los bits se pueden modular, convirtiéndolos en señales de audio o montándolos sobre una portadora de radio frecuencia y así transmitirlos incluso al espacio exterior. A lo largo de la mayor parte de la historia de los ordenadores la transferencia de datos a través de los puertos de serie ha sido generalizada. Se ha usado y sigue usándose para conectar los ordenadores a dispositivos como terminales o módems. Los ratones, teclados, y otros periféricos también se conectaban de esta forma. Aunque otras interfaces como Ethernet, FireWire, y USB mandan datos como un flujo en serie, el término "puerto serie" normalmente identifica el hardware más o menos conforme al estándar RS-232, diseñado para interactuar con un módem o con un dispositivo de comunicación similar. En muchos periféricos el puerto USB ha reemplazado al puerto serie; en 2009, la mayor parte de los ordenadores están conectados a dispositivos a través de puertos USB, y a menudo ni siquiera tienen un puerto serie. Sin embargo, los puertos serie todavía se encuentran en sistemas de automatización industrial, sistemas de navegación electrónica y algunos productos industriales y de consumo. Los dispositivos de redes (como routers y switches), receptores de televisión por satélite o TDT, a menudo tienen puertos serie para su configuración o actualización del firmware por medio de un PC. Los puertos serie se siguen usando en estas áreas porque son sencillos, baratos y permiten la interoperabilidad entre dispositivos. La complejidad de este puerto y la necesidad de conocerlo radica en lo siguiente: Cuando se crea el puerto serie RS-232, se hace para comunicar un equipo DTE (Data Terminal Equipment, normalmente un ordenador) con otro DCE (Data Communication Equipment, normalmente un módem) y esta conexión no tenía problemas porque tanto los conectores como el cableado estaban normalizados. El equipo DTE tenía un conector sub-D 25 macho, mientras que el equipo DCE tenía uno sub-D 25 hembra y la conexión era directa, pin a pin. Posteriormente, y con la aparición de los ordenadores AT y los IBM PS/2, se implementó el puerto serie del equipo DTE en un sub-D 9 macho, también normalizado. Al crearse nuevos dispositivos que se conectaban al ordenador mediante un puerto serie, este tipo de conexión muchas veces no respetaba el estándar e incorporaba bien conectores distintos que nada tienen que ver con los típicos sub-D 9 o sub-D 25, o bien conectores sub-D 9 o sub-D 25 pero que solían ser conectores hembra con la asignación de pines correspondientes al conector macho, por lo que el cable normalmente utilizado para el módem no servía para esta conexión. Todo esto se complica más si tenemos en cuenta que en las tiendas encontramos cambiadores de género (macho-macho y hembra-hembra), que pueden inducir a confusión. -1- COMUNICACIONES SERIE Tipos de comunicaciones serie Simplex En este caso el transmisor y el receptor están perfectamente definidos y la comunicación es unidireccional. Este tipo de comunicaciones se emplean usualmente en redes de radiodifusión, donde los receptores no necesitan enviar ningún tipo de dato al transmisor. Half duplex o semi-duplex En este caso ambos extremos del sistema de comunicación cumplen funciones de transmisor y receptor y los datos se desplazan en ambos sentidos pero no simultáneamente. Este tipo de comunicación se utiliza habitualmente en la interacción entre terminales y un computador central. Otro ejemplo sería una comunicación por radio, donde para transmitir hay que esperar primero que el canal esté libre. Full Duplex El sistema es similar al anterior, pero los datos se desplazan en ambos sentidos simultáneamente (como por ejemplo, una comunicación telefónica). Para ello ambos transmisores poseen diferentes frecuencias de transmisión o dos caminos de comunicación separados, mientras que la comunicación semi-duplex necesita normalmente uno solo. Para el intercambio de datos entre ordenadores este tipo de comunicaciones son más eficientes que las transmisiones semi-duplex. Puerto serie asíncrono El puerto serie RS-232 (también conocido como COM) es del tipo asíncrono, quiere decir que utiliza bits de sincronismo para cada byte transmitido, utiliza cableado simple desde 3 hilos hasta 25 y conecta ordenadores o microcontroladores a todo tipo de periféricos: terminales, ratones, módems, sistemas de navegación o de automatización industrial, etc. El circuito encargado de la conversión del byte que llega en paralelo por el bus de datos desde el microprocesador a formato serie para transmitirlo y viceversa se denomina UART (Universal Asynchronous Receiver/Transmitter). Independientemente del tipo de comunicación que se establezca, las UART’s son capaces de funcionar en modo Full-Duplex. También existe otro tipo de circuito integrado implementado en muchos equipos denominado USART, que es capaz de transmitir datos tanto en formato síncrono como asíncrono. Hay que distinguir entre la parte ‘lógica’ y la parte ‘física’ de una comunicación serie. Mientras que la parte lógica establece la forma en que se transmite cada byte o carácter (los distintos bits transmitidos y su orden en la transmisión), la parte física determina el tipo de conector, de cable y las características de las señales eléctricas utilizadas en dicha transmisión, es decir, si al ‘0’ y al ‘1’ lógicos se les asigna un nivel de tensión o de corriente, si la salida es simple o diferencial, los márgenes de tolerancia, etc. Según esto, disponemos de distintos interfaces físicos, como son el RS-232, RS-422/485, o el lazo de 0-20mA, entre otros. -2- COMUNICACIONES SERIE Control de flujo Se conoce como control de flujo (en inglés Handshake) al método que se utiliza en cualquier tipo de comunicación para impedir el envío de información si el receptor no está preparado para recibirla y evitar así la pérdida de la misma. Este control de flujo puede efectuarse vía hardware o vía software. Para el control de flujo por hardware se utilizan señales específicas distintas de las líneas de transmisión y recepción de datos (localizadas como pines individuales del conector) que según estén activas o inactivas, indican al transmisor si puede enviar la información o no. El control por software se realiza por medio de las mismas líneas de transmisión y recepción de datos, donde se especifican dos caracteres (XOn [17] y XOff [19]) que envía el receptor al transmisor para indicarle si puede enviar información o debe parar hasta que le avise. Este control de flujo es opcional, es decir, habrá veces en que interese utilizarlo para evitar que se pierda información, como por ejemplo en una transferencia de archivos, y otras veces interesará que la información se envíe en cuanto esté disponible aunque no haya ningún receptor activo, como es el caso de una navegación en tiempo real. Descripción de las señales Las distintas señales presentes en un puerto serie asíncrono se dividen en dos grandes grupos, señales de datos y señales de control de flujo. Las de control de flujo se dividen a su vez en dos subgrupos, de manera que no siempre se usan todas, muchas veces sólo se usa el par formado por RTS/CTS y en raras ocasiones sólo el formado por DTR/DSR. En la siguiente tabla se enumeran estas señales, acompañadas del número del pin que ocupan en el conector sub-D 9 o sub-D 25 estándar del puerto serie RS-232, para un equipo DTE (en un equipo DCE se invierte el sentido de las señales): Pin DB9 Pin DB25 Nombre Sentido Descripción 3 2 TXD Transmit Data, transmisión de datos 2 3 RXD Receive Data, recepción de datos 4 20 DTR Data Terminal Ready, terminal de datos preparado 6 6 DSR Data Set Ready, dispositivo preparado 1 8 CD Carrier Detect, detección de portadora 7 4 RTS Request to Send, petición de envío 8 5 CTS Clear to Send, preparado para transmitir 9 22 RI Ring Indicator, indicador de llamada entrante 5 7 GND Signal Ground, señal de tierra o masa -3- COMUNICACIONES SERIE En las imágenes de la izquierda se puede observar la asignación de las distintas señales del puerto serie a los pines de los conectores sub-D 9 y sub-D 25 usados como estándar para el puerto serie RS-232. El puerto serie RS-422/485 no tiene normalizado ningún conector y generalmente no usa control de flujo por hardware. A continuación se explica la función de cada una de las señales, tal y como funcionarían en la conexión entre un equipo DTE y otro DCE: TXD: Señales de datos que se transmiten del DTE al DCE. En principio, los datos no se pueden transmitir si alguno de los terminales RTS, CTS, DSR ó DTR está desactivado. Su valor de reposo es el ‘1’ lógico. RXD: Señales de datos transmitidos desde el DCE al DTE. DTR: Señal del DTE que indica que está conectado, al activarse (valor lógico ‘0’) informa al DCE de que está listo para transmitir o recibir. DSR: Señal del DCE que indica que el dispositivo está en modo de transmisión de datos. CD: Señal utilizada cuando el equipo DCE es un módem, para indicarle al DTE que la línea está descolgada y se ha establecido la comunicación con el módem remoto. RTS: Señal mediante la cual el DTE informa al DCE de que dispone de datos para enviar. Una transición de ‘1’ a ‘0’ lógico avisa al DCE para que active sus circuitos y se prepare para la recepción de los datos. CTS: Señal del DCE al DTE indicando que está preparado para la recepción y puede comenzar a transmitirle datos. RI: Señal del DCE (cuando éste es un módem) indicando que está recibiendo una señal de llamada por la línea telefónica. Sólo se activa en los intervalos en que se recibe la señal de timbre. GND: Masa común para todas las líneas. Una secuencia normal a través del puerto serie RS-232, entre un equipo DTE y otro DCE, es la siguiente: Al poner en funcionamiento ambos equipos, el DTE activa la señal DTR y el DCE activa la señal DSR. Una interfaz RS-232 diseñada según el estándar no establecerá la comunicación hasta que estas dos señales estén activas. El equipo DTE esperará la activación de la señal DSR y el DCE la activación de la señal DTR. Aunque DTR y DSR algunas veces pueden ser utilizadas para el control del flujo, estas señales sólo indican que los dispositivos están conectados y en muchas ocasiones no se usan. El equipo DTE pregunta al DCE si éste está listo, para ello activa la señal RTS. El DCE, si está listo, responde activando la señal CTS. Una vez puestos de acuerdo ambos equipos (todas las señales activas), se puede comenzar la comunicación. Los datos son transferidos en ambos sentidos. El DTE envía información al DCE a través del terminal TXD. El DCE envía información al DTE a través del terminal RXD. -4- COMUNICACIONES SERIE Puertos serie según el estándar PC Aunque un ordenador es capaz de soportar hasta 255 puertos serie conectados de distintos modos, tarjetas PCMCIA, tarjetas ISA, PCI o PCI-Express, convertidores USB a serie, puertos asociados al dispositivo Bluetooth, e incluso puertos virtuales, el estándar PC sólo contempla cuatro puertos. Es decir, la BIOS reconoce la presencia física de hasta cuatro puertos serie, denominados ‘COM1:’, ‘COM2:’, ‘COM3:’ y ‘COM4:’ y que a diferencia de lo que ocurre con los puertos paralelo, cada uno de ellos tiene asignada una dirección específica, de manera que en un PC puede existir el puerto serie ‘COM3:’ y no existir el ‘COM1:’ o el ‘COM2:’. Cualquier puerto serie añadido al PC que no cumpla con las especificaciones del estándar debe ir acompañado de sus correspondientes drivers o controladores para informar al sistema operativo del dispositivo de que se trata. La asignación de direcciones e interrupciones según el estándar es la siguiente: Nombre Dirección Interrupción COM1: 03F8h 4 COM2: 02F8h 3 COM3: 03E8h 4 COM4: 02E8h 3 Formato de la transmisión En una transmisión serie asíncrona, al no haber una señal de reloj común que sincronice el envío de datos, esta sincronización se hace añadiendo a cada dato transmitido (normalmente un byte), un bit de arranque que avisa al receptor del comienzo de dicho dato. Además, para cada dato se incorpora un bit de paridad para el control de errores (opcional) y uno o varios bits de parada que marcan el final de la transmisión. Los valores de estos parámetros deben coincidir en todos los equipos que intervienen en la comunicación. Así, el envío de un dato quedaría como sigue: Inicialmente la línea de transmisión se encuentra en su estado de reposo y que corresponde al nivel lógico ‘1’. Se envía el bit de arranque, de valor lógico ‘0’ y que provoca un cambio de estado en la línea de transmisión. Este parámetro no es configurable. A continuación vienen los bits de datos, que pueden ser 5, 6, 7 u 8 bits, según el tipo de dato que se esté enviando, comenzando por el menos significativo (b0 > b1 > … > bn). Después de los bits de datos se envía, si así se ha configurado, el bit de paridad. Éste puede ser par, impar, marca o espacio. o PAR: Se añade un bit del valor lógico adecuado para que la cantidad de unos transmitidos sea par. -5- COMUNICACIONES SERIE Se añade un bit del valor lógico adecuado para que la cantidad de unos transmitidos sea impar. o MARCA: Se añade un bit de valor lógico ‘1’. o ESPACIO: Se añade un bit de valor lógico ‘0’. o IMPAR: Los valores ‘marca’ y ‘espacio’ no se suelen usar, por lo que muchos programas de comunicaciones o adquisición de datos no los contemplan en su configuración. Si se configura como bit de paridad ‘NINGUNO’, no se transmite dicho bit. Por último, el o los bits de parada, de duración 1, 1½ ó 2 bits y de valor lógico ‘1’. Con esto se garantiza que después de la transmisión del dato, la línea vuelve a su estado de reposo y es capaz de detectar así el comienzo de un nuevo dato (transición de ‘1’ a ‘0’ del bit de arranque). A continuación se muestran tres ejemplos de transmisión de un byte, el 01100101, con paridad par, impar y sin paridad, respectivamente: -6- COMUNICACIONES SERIE A todo esto hay que añadir un par de parámetros más a la hora de configurar una comunicación serie asíncrona entre equipos y que son: Velocidad Define la velocidad en bits por segundo (bps) a la que se van a enviar los datos. Como en los parámetros anteriores, este valor debe coincidir en todos los equipos que participen en la transferencia de la información. A este parámetro también se le suele denominar ‘baudio’, aunque por definición, estrictamente hablando, no sea exactamente lo mismo. Los posibles valores de velocidad van desde 50 hasta 115200 bps (máxima soportada por el estándar RS-232) ó 10 Mbps (para el estándar RS-422). Las velocidades más habituales son 9600 bps, como valor normalmente usado en adquisición de datos de GPS y sonda, y 4800 bps como velocidad estándar dentro de la norma NMEA-183 y que es el valor que normalmente habrá que introducir para conectarse con los sistemas de navegación del buque, como son la giroscópica, el piloto automático, etc. Control de flujo Este parámetro sirve para definir si queremos usar o no control de flujo en la comunicación y en caso afirmativo, si queremos que se lleve a cabo vía software (XON/XOFF) o vía hardware, normalmente mediante las señales RTS/CTS. Interfaces físicos Una vez conocida la interfaz ‘lógica’, es decir, cómo se envía un dato (byte, carácter,…) por el puerto serie asíncrono, los distintos bits que intervienen, la velocidad en bps y el control de flujo, se plantea la elección del medio físico por el que se va a enviar a los distintos receptores. Estas normas regulan tanto el tipo de señal (tensión o corriente y sus niveles, simple o diferencial, etc.) como el tipo de conector usado y las longitudes máximas de cable permitidas. Los interfaces físicos más comunes son: RS-232 Es el interfaz típico para puertos serie en equipos comerciales y domésticos, siendo, por tanto, el más extendido. Esta norma contempla dos tipos de conectores, ambos del tipo ‘sub-D macho’ y que pueden ser de 9 o de 25 pines, aunque como se vio al principio, a veces no se respeta en equipos que no sean ordenadores. Cada señal se asigna físicamente a un pin del conector, siendo los márgenes de tensión para cada nivel lógico de +3 .. +15V para el ‘0’ lógico y -3 .. -15V para el ‘1’ lógico, de manera que la tensión de salida en el pin del transmisor suele ser de ±10 o ±12V (pero nunca inferior a ±5V), mientras que se permite una caída de tensión a lo largo del cable bastante amplia, siempre que el nivel de tensión en el pin del receptor no entre en la franja comprendida entre +3 y -3V, franja donde el nivel lógico se vuelve indeterminado y no se puede interpretar ni como ‘0’ ni como ‘1’. -7- COMUNICACIONES SERIE En cuanto a la máxima longitud de cable permitida, originalmente se estableció 50 pies (15.24 mts.) para una velocidad máxima de 20 Kbps (normalmente 19200 bps). Posteriormente y con el desarrollo de cables más eficientes, se cambió el parámetro de referencia para este límite sustituyéndose por el de máxima capacitancia del cable, establecida en 2500 pF. Así, con un cable de 17 pF/pie por ejemplo, se podría tener una longitud máxima de 147 pies (44.81 mts) para esa misma velocidad. Según todo esto y con las calidades de cable adecuadas, a la velocidad habitual de 9600 bps, se podría usar un cable de hasta 150 mts. aproximadamente. Si se quiere aumentar la distancia no hay más que bajar la velocidad de transmisión. RS-422 Esta interfaz, por su robustez y velocidad es usada habitualmente en equipos industriales y en navegación. La norma NMEA especifica que las comunicaciones entre los equipos electrónicos en un buque se deben implementar por medio de puertos serie RS-422. A diferencia del RS-232, aquí la interfaz no establece el tipo de conector a usar, sólo las características eléctricas de la conexión. Según esto, para la transmisión de datos se emplea una línea diferencial y balanceada. Diferencial significa que para la transmisión de los datos se emplean dos señales o hilos, de manera que por uno circula el bit directo y por el otro, invertido; el receptor detecta el nivel lógico por diferencia de tensión entre estos dos hilos, independientemente de su tensión con respecto a masa. Estas dos señales reciben los nombres de ‘T-’ y ‘T+’ para las de transmisión (también llamadas en algunos casos ‘A’ y ‘B’, respectivamente), mientras que se denominan como ‘R-’ y ‘R+’ las de recepción. Balanceada quiere decir que los dos hilos empleados para la transmisión son iguales, con la misma impedancia y generalmente formando un par trenzado. Todo esto hace que este tipo de conexión tenga un fuerte rechazo a interferencias externas, siendo más inmune a alteraciones de la señal transmitida, ya que el ruido afecta por igual a los dos hilos. Los niveles de tensión nominales correspondientes para cada valor lógico son 5V para el ‘1’ y 0V para el ‘0’ en el pin directo y 0V para el ‘1’ y 5V para el ‘0’ en el pin invertido. En el lado del receptor, éste es capaz de discriminar el valor lógico enviado con una diferencia de tensión entre ambos pines de tan solo 200mV. Tanto la velocidad de transmisión como la máxima longitud de cable mejoran bastante con respecto al RS-232, así, por ejemplo, se admiten longitudes de cable del orden de 1200 mts. para una velocidad de 100 Kbps, o 12 metros para 10 Mbps. Otra característica importante de esta interfaz es la capacidad que tiene de conectar hasta diez entradas a una misma salida, frente a las dos o tres (no recomendable) del RS-232. -8- COMUNICACIONES SERIE Interconexión RS-232/RS-422 Los ordenadores que usamos habitualmente, así como los equipos de aplicaciones hidrográficas (GPS, sondadores, perfiladores, etc.), disponen de puertos serie según el estándar RS-232, por lo que su interconexión no presenta ningún problema. El problema surge cuando se quiere conectar un equipo de navegación del buque (giroscópica, ángulo de timón, radar, piloto automático,…) al ordenador de adquisición de datos, ya que según la normativa NMEA, estos deben disponer de puertos serie RS-422 para su interconexión, tal y como se vio en el apartado anterior. Lo ideal sería disponer de adaptadores de interfaz. Este adaptador necesario para conectar una salida RS-232 a una entrada RS-422, como por ejemplo, gobernar el piloto automático desde el ordenador con el programa HyPack, mientras que se puede prescindir de él si lo que se quiere es conectar una salida RS-422 a una entrada RS-232, como por ejemplo, conectar la salida de giroscópica al PC con HyPack. En este segundo caso, la interconexión se establecería de la siguiente forma: RS-422 (salida) RS-232 (entrada) T- (A) T+ (B) RXD GND Conexión NULL-MODEM Como se vio en la introducción, inicialmente el puerto serie se crea para conectar un equipo DTE a un DCE, es decir, un ordenador a un módem y así poder establecer una comunicación de datos entre dos equipos remotos. Esta conexión no tiene problemas ya que tanto el conector como el cableado están normalizados. Llega un momento en que se quiere prescindir de los módems telefónicos para así poder realizar una conexión directa entre los dos ordenadores o equipos DTE. Es para esta nueva conexión para la que se crea el cable conocido como NULL-MODEM. En este caso, el diagrama de conexión del cable ya no es directa pin a pin como antes, sino que es necesario realizar una serie de cruces para conectar entradas con salidas y salidas con entradas, respetando el significado y la función de cada una de las señales del puerto serie. Este nuevo cable recibe el nombre de NULL-MODEM o módem nulo, porque para el equipo DTE (o PC) funciona como si en el otro extremo del puerto serie lo que hay conectado es un módem y no otro DTE. Esta forma de conectar los equipos siempre funciona y lo importante es conocer el significado y la interconexión de las distintas señales y no el pin del conector donde se encuentran, ya que salvo en el caso de un PC, normalmente los conectores de los equipos no se presentan en el formato estándar (sub-D 9 pines, macho), sino que incorporan conectores propios (estancos, militarizados,…). -9- COMUNICACIONES SERIE A continuación se presentan las tres configuraciones NULL-MODEM habituales, según se utilice control de flujo completo (cable de 7 hilos), control de flujo sólo mediante las señales RTS/CTS (cable de 5 hilos) o sin control de flujo (cable de 3 hilos): Aunque en una comunicación en la que no se utilice el control de flujo no sería necesaria la realización de los puentes indicados en el conector, sí es importante habituarse a realizarlos, sobre todo el puente entre RTS y CTS en el cable de tres hilos, para garantizar el flujo de la información en el caso de que no esté claro si alguno de los equipos que intervienen utilicen el control de flujo y necesiten tener dichas señales activas. - 10 -