Anda di halaman 1dari 16

Daniel E. Vega M.

COMUNICACIONES SERIALES REMOTAS Emisión:


16/05/03 P. 1 / 6
Ingeniero Electricista

COMUNICACIONES SERIALES REMOTAS

Existe una gran cantidad de opciones para comunicaciones seriales remotas, la escogencia de la
opción adecuada debe hacerse basándose en los requisitos de la aplicación. Las opciones más
populares son el RS-232, RS-422 y RS-485, todas tienen el mismo formato de codificación, por lo
que hacer interfaces para comunicarlos entre sí, es bastante sencillo.

Las comunicaciones mediante señales eléctricas, tienen su orígen en la transmisión telegráfica, lo


que permitió por vez primera asomar el concepto de codificación de la información en dígitos
binarios (bits) y aunque las aplicaciones eran bien distintas a las actuales, las teorías desarrolladas
son totalmente válidas. Con el desarrollo de los sistemas digitales aparecen varios formatos para la
comunicación; mientras una de las orientaciones se dirije a volcar una cantidad de bits
simultáneamente mediante un conjunto de líneas (comunicación paralela), otros esquemas se
orientaron a la transmisión de bits en forma secuencial para luego armar el conjunto, esto se
conoce como transmisión serial y al conjunto básico de información se le llama caracter, varios
formatos se elaboraron y algunos quedaron como normas, algunos ejemplo de éstos son el SPI (de
las siglas en Inglés de Serial Peripheral Interface), el I2C (de las siglas de Inter-Integrated Circuit)
y el RS232C con sus variantes posteriores RS422 y RS485.

1. Los bits en el tiempo

En la transmisión serial los datos son enviados por una línea de transmisión en forma de bits
separados en el tiempo, el receptor los toma según indique una señal de reloj, el cual puede venir
del equipo emisor o ser generado internamente por el receptor, con lo que disponemos de dos
alternativas de sincronización.

- Transmisión síncrona (con señal de reloj): este tipo de transmisión se realiza con dos señales, una
de las líneas lleva los datos y la otra, llamada reloj, indica el momento para la toma,
adicionalmente puede existir una señal de activación. El receptor está preparado para detectar el
final del mensaje según el número de ciclos del reloj (ancho de caracter en bits). La figura 1
muestra un ejemplo de transmisión de un caracter con toma de dato en flanco de subida, el inicio
se detecta mediante una línea de activación y el ancho es de ocho bits por caracter. Nótese que en
ejemplo se envía el bit menos significativo primero.

Activación

Reloj
Fig. 1. Transmisión serial
síncrona del caracter E5h
Datos con señal de reloj
1 0 1 0 0 1 1 1
Menor Mayor

tiempo
Daniel E. Vega M. COMUNICACIONES SERIALES REMOTAS Emisión:
16/05/03 P. 2 / 6
Ingeniero Electricista

La ventaja de este tipo de transmisión, es que a nivel de hardware es bastante sencilla, solo deben
cumplirse las consideraciones de tiempo mínimo, ya que la transición seleccionada (puede ser de
bajada o de subida, como en el ejemplo) activa la toma de dato (igual que en un registro de
desplazamiento) por lo que el reloj no necesariamente debe tener período fijo. Ejemplos de este
tipo de transmisión son los estándares SPI y el I2C.

- Transmisión asíncrona (sin señal de reloj): las características referentes a la organización de bits
por caracter deben ser consistentes para cualquier tipo de comunicación serial, ahora si fijamos una
rata de transmisión igual en todos los equipos, podemos prescindir de la señal externa de reloj (se
tiene un período establecido); de modo que sólo queda garantizar la sincronización inicial. Para
esto, se añade un bit (=1) de inicio, que no forma parte del caracter y sirve para que el receptor
sincronice la toma de los bits siguientes, la figura 2 muestra una transmisión de este tipo.
Inicio Parada

Datos
1 0 1 0 0 1 1 1
Mayor Menor
Período
Espera
Reloj generado

tiempo
Fig. 2. Transmisión serial asíncrona del caracter A7h

El bit de inicio señala el comienzo de la transmisión del caracter , el período queda definido como
1/rata_de_transmisión y la espera inicial corresponde a 1,5 veces el período. Dentro de la espera,
mitad de periodo podemos revisar si realmente se trata de un inicio o es ruido. Después de eso, se
toman los bits según indique el reloj generado. La zona sombreada corresponde a los indicadores
para sincronización y no forman parte del caracter transmitido. Puede aparecer un bit de paridad
antes del bit de de parada.

2. Varios estándares y muchos protocolos.

Un estándar es un conjunto de características normalizadas para garantizar la compatibilidad entre


los dispositivos que se interconectarán para comunicarse. Un estándar está formado por una serie
de especificaciones, como tipo de variable manipulada, niveles de detección, tipo y números de
conductores, y otras características de cumplimiento requerido. Ejemplos de estándares son el SPI,
RS232, RS422 y RS485. Hay que destacar que un estándar no garantiza comunicación efectiva,
dos equipos pueden utilizar el mismo estándar, pero no hay comunicación efectiva a menos que
soporten el mismo protocolo.

Un protocolo es un conjunto de normas que rigen al proceso de comunicación, éste se refiere a los
formatos de transmisión e interpretación de mensajes. Las características eléctricas quedan
Daniel E. Vega M. COMUNICACIONES SERIALES REMOTAS Emisión:
16/05/03 P. 3 / 6
Ingeniero Electricista

definidas por el estándar de transmisión. En algunos casos las características del estándar forma
parte del protocolo.

2.1. Lo que define un estándar

Variable eléctrica manipulada: Una transmisión se realiza manipulando una variable transmisible
en un conductor, el punto que nos interesa es el de las variables eléctricas y un mensaje puede
transmitirse variando alguna propiedad transmisible. La variable manipulada puede ser voltaje o
corriente, ya sea en nivel, frecuencia o fase. Por ejemplo, mediante una línea telefónica (que
transmite señales alternas), un mensaje se transmite variando la frecuencia de una señal presente.
Este método se conoce como modulación de frecuencia y fué muy utilizado para registro digital en
medios magnéticos de audio casero en la década de los ochenta, actualmente se utiliza
extensamente en el acceso telefónico a redes. La figura 3 muestra un ejemplo de manipulación de
variables para codificar un mensaje.

Voltaje o
corriente
1 0 1 0 0 1 1 1

Frecuencia

tiempo
Fig. 3. Transmisión serial por variación de voltaje, corriente o frecuencia

Niveles de detección: cualquiera sea la propiedad manipulada, deben definirse niveles de detección
para discriminar un uno lógico de un cero. Cuando se comunican periféricos a corta distancia y
baja frecuencia en ambientes poco ruidosos pueden aplicarse los criterios que gobiernan las
compuertas lógicas TTL. Pero para transmisiones a mayor distancia, las cosas se complican, y la
selección de niveles de detección debe orientarse a minimizar efectos del ruido electromagnético y
pérdidas. Bajo esa premisa se definen los niveles de detección para cada estándar según su
aplicación.

Características del conductor: dependiendo de las características del estándar, la línea de


transmisión puede generar señales fantasmas que entorpecen la comunicación. Por eso se definen
características necesarias en el conductor y conector para cada caso, algunas de estas son longitud
máxima, impedancia, materiales, tipo de construcción y forma de conexión.

Frecuencia máxima: las características anteriores se definen para una frecuencia máxima de
trabajo, generalmente las frecuencias están normalizadas y en el caso de transmisiones asíncronas,
definirlas es requisito indispensable. La rata de transmisión se define en baudios que significa bits
por segundo.

Transmisión y recepción simultáneas: Cuando se conectan solo dos equipos y existen líneas
separadas para transmisión y recepción (como en RS232C), los mismos pueden transmitir a la vez
Daniel E. Vega M. COMUNICACIONES SERIALES REMOTAS Emisión:
16/05/03 P. 4 / 6
Ingeniero Electricista

que reciben, pero de no ser así, debe establecerse un control para la línea de transmisión, esto lo
define el estándar, que establece la posibilidad de existencia de un dispositivo maestro y el modo
de control de la línea, así como la simultaneidad de recepción y transmisión (full duplex) o su
separación en el tiempo (half duplex).

Dispositivos por línea de transmisión: Los estándares definen el número máximo de equipos que
pueden conectarse a una línea de transmisión (una línea puede tener varios conductores).

Otras particulares: Algunos protocolos definen además de las características antes mencionadas,
otras como son características del conector (incluyendo dimensiones), colores de los cables,
materiales y otras.

2.2. Lo que define un protocolo:

Selección del estándar: Un protocolo de comunicaciones generalmente se define sobre un estándar


pero también puede definirse sobre varios similares, por ejemplo el protocolo Modbus RTU puede
implementarse en estándar RS422 y RS485.

Interpretación de los mensajes: El formato de un mensaje completo, la acción a tomar debido a un


comando recibido, el formato de la respuesta esperada y el método de control de la línea son
algunas de las características definidas en el protocolo, muy necesarias para la correcta
interpretación de los mensajes. Estas definiciones deben ser consistentes para garantizar una
comunicación efectiva.

Selección del destino de comunicación: Cuando varios dispositivos están conectados a una línea, el
protocolo debe establecer la forma de discriminar entre ellos, el índice para discriminación se
llama dirección y por lo general, el ancho en bits de la dirección determina el número máximo de
dispositivos conectables.

No todos los protocolos son normalizados, es más, podemos crear y definir protocolos según los
requisitos de la aplicación.

3. El estandar RS-232

En 1960 fué introducido el estándar RS-232 por la EIA (Electronic Industry Association) para
comunicación de computadoras con periféricos (impresoras, terminales, etc.) y todavía es uno de
los más utilizados.

El estándar RS-232 define niveles de voltaje referidos a tierra, y lo hace de la siguiente manera: la
tensión para transmisión es de +3 a +25V para un cero lógico, y una tensión de –3 a –25V
corresponde a un uno lógico. Para recepción los niveles de detección corresponden a ±3V. De –3 a
+3 V hay una zona muerta para inmunidad al ruido. Normalmente los niveles para transmisión se
implementan de 5 a 12 V y en algunas versiones los niveles de la zona muerta puede bajar hasta
±1V. También quedan definidas las características de velocidad originalmente hasta 19200 bps.
Daniel E. Vega M. COMUNICACIONES SERIALES REMOTAS Emisión:
16/05/03 P. 5 / 6
Ingeniero Electricista

Ya definido el estándar, debe establecerse la forma en que se organizan los bits que serán
transmitidos, el emisor debe separar el carácter en bits para enviarlo y el receptor debe reintegrarlo
de forma consistente, para eso el receptor debe detectar el final de un carácter para recibir el
siguiente (si lo hay). Esto se hace asignando un número fijo de bits por caracter. Para la
separación/integración hay dos opciones lógicas, se transmite de izquierda a derecha, lo que
corresponde al bit más significativo primero o de derecha a izquierda, que corresponde al bit
menos significativo antes (normalmente utilizado).

Un bit de paridad puede estar presente al final de cada caracter, este se recalcula en el receptor para
detectar caracteres mutilados, el bit en cuestión está asociado a la cantidad de unos o ceros en el
caracter, sirve para detectar alteraciones sencillas, cuando cambia un bit, se detecta con el el bit de
paridad; si cambian dos bits, el detector de paridad es consistente y no refleja el error.

Para mensajes de texto, se definió en los Estados Unidos de Norteamérica el código ASCII (de las
siglas de American Standard Code for Information Interchange) en versiones de 7 y 8 bits, pero
evidentemente no todos los mensajes transmitidos son de texto, de modo que una transmisión
serial presenta varias opciones para cantidad de bits por carácter, y la cantidad debe quedar bien
definida para una correcta comunicación.

Para el estandar RS-232 y sus variantes posteriores (RS-422 y RS-485), se define el formato de
caracter según las características presentadas a continuación:

Tabla 1. Características definibles para el estándar RS-232

Característica Posibles valores


bits por caracter 5, 6, 7 ,8
bit de paridad par, impar, ninguna
bits de parada 0, 1, 1 ½ , 2
rata de transmisión (bps) 2400, 4800, 9600, 14400, 19200, 28800, ... 115200...

La figura 4 muestra los niveles de recepción y transmisión para el caracter D (44h) 8 bits por
caracter, ninguna paridad y 1 bit de parada (lsb primero)

+12 V.

0 V. zona Fig. 4. Diagrama de


muerta transmisión RS-232
-12 V. para el caracter 44h
parada
inicio

0 0 1 0 0 0 1 0
lsb msb

El estándar RS-232 además posee señales adicionales para establecer cual es el dispositivo que
tiene el control de la comunicación, sin embargo eso depende del protocolo específico de
comunicación. Hoy en día la mayoría de las comunicaciones seriales basadas en el estándar RS-
Daniel E. Vega M. COMUNICACIONES SERIALES REMOTAS Emisión:
16/05/03 P. 6 / 6
Ingeniero Electricista

232 se hacen con dos conductores (transmisión y recepción) más tierra, con éstos es suficiente para
una comunicación efectiva. La figura 5 muestra la distribución de terminales en los conectores más
populares asociados a este tipo de estándar y la tabla 2 los describe brevemente.

Fig.5. Conectores DB9 y


DB25 para puerto serial.

Tabla 2- Señales presentes en ambos conectores para comunicaciones asíncronas

Señal Significado DB9 DB25 Fuente Función


CD Carrier Detect 1 8 Perif. control para protocolo
RXD Receive Data 2 3 Perif. linea para recibir datos
TXD Transmit Data 3 2 Comp. linea para transmitir datos
DTR Data Terminal Ready 4 20 Comp. control para protocolo
SG Signal Ground 5 7 - tierra de señales
DSR Data Set Ready 6 6 Perif. control para protocolo
RTS Ready To Send 7 4 Comp. control para protocolo
CTS Clear To Send 8 5 Perif control para protocolo
RI Ring Indicator 9 22 Perif. control para protocolo
PGND Protective Ground - 1 - tierra de apantallamiento

4. Trasladando niveles lógicos TTL a RS-232

Los sistemas digitales trabajan en niveles lógicos positivos, por lo tanto se requiere de un circuito
interfaz que transforme los voltajes TTL o CMOS a niveles RS-232, existen varias opciones para
eso, a continuación las figuras 6 y 7 muestran dos circuitos de aplicación.
+5V
1K
1 5
TX RX
2
4
1K 4N3
5
DTR*
1K
5 1
RX TX
4 2

4N3 1K
RTS* 5

Fig. 6. Solución comercial Fig. 7. Solución económica con opto-acopladores.


con MAX-232 Debe garantizarse que DTR=1 (+V) y RTS=0 (-V)
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 1 / 10
Ingeniero Electricista

RS-485 MODBUS

1- Introducción

En 1978, la EIA (Electronic Industry Association) estableció las características de un estándar de


comunicación serial para largas distancias: RS422, el cual constituye una variación mejorada del
estándar RS232 para equipos de oficina. Mientras el RS232 utiliza dos líneas (una para transmitir y
otra para recibir) con tensiones referidas a tierra, RS422 utiliza líneas diferenciales, lo que le
otorga una gran inmunidad al ruido, por otro lado los niveles de tensión e impedancias son
menores, de tal forma que con el cable adecuado se pueden cubrir hasta 1200 metros de longitud
para la conexión frente a los 16 metros disponibles para RS232.

El estándar RS422 es una variación para largas distancias que refleja directamente al RS232 y
sirve para comunicar dos equipos entre sí, utiliza cuatro conductores en pares diferenciales además
del apantallamiento (frente a los dos más tierra del RS232) y permite comunicación bidireccional
completa (Full Duplex), es decir puede transmitir y recibir simultáneamente.

El estándar RS485 es similar al RS422, pero utiliza un solo par de cables para recibir y transmitir,
es decir que mientras hay transmisión, no hay recepción en un mismo equipo, o en todo caso,
recibe lo que está enviando el mismo (half duplex).

El RS485 por utilizar un solo par (además del apantallamiento) se conecta de forma igual en todos
los dispositivos, solo debe respetarse la polaridad, así el puerto de comunicación es bidireccional;
esto permite conectar varios dispositivos a la vez, la cantidad de estos está normalizada a 32 por
cada lazo, todos conectados al mismo par.

Fig. 1 Niveles de tensión y conductores en RS-232 y RS-485

El formato de comandos (protocolo) debe ser capaz de direccionar al dispositivo con el cual se
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 2 / 10
Ingeniero Electricista

desea establecer comunicación; la forma de hacerlo depende del criterio de los diseñadores de un
dispositivo en especial. Al enviar un comando, el dispositivo direccionado responde solo si está
conectado y el comando resulta válido.

Mediante RS-485 se pueden establecer redes de usuarios de computadoras, donde cada equipo
responde a una dirección, sin embargo la aplicación más trascendente que tiene este estándar la
constituye una red de dispositivos esclavos (controladores por ejemplo) encuestados por un
dispositivo maestro.

El dispositivo maestro puede ser una computadora con capacidad de comunicación RS485 o un
PLC, el dispositivo maestro no tiene dirección y su función es la de encuestar y modificar el estado
de cada dispositivo esclavo. Cabe destacar que para elaborar una red de este tipo, se requiere
estudiar a fondo la compatibilidad de los equipos encuestados, pues según la marca, los comandos
y direccionamiento pueden cambiar y hasta ser conflictivos entre sí, por esto se recomienda
conectar dispositivos de una sola familia por lazo, pudiendo haber varios lazos en un PC o PLC
maestro.
1200 m.
CONVERTIDOR

RS-232 / RS-485

PLC 1 PLC 2 PLC 3 PLC 32

Fig. 2 Red Maestro-esclavos RS485

Una vez encuestados y procesados los datos, el programa puede almacenar, elaborar registros de
variables en el tiempo, generar alarmas, cambiar configuraciones de los dispositivos esclavos,
generar acciones correctivas y hasta generar archivos de estado en formatos reconocibles para que
otros usuarios conectados en red al maestro puedan procesar esa información. Con esto, se pueden
generar hasta instrumentos virtuales como registradores o procesadores que permitan obtener
variables calculadas a partir de las primarias sensadas.

Por las características descritas anteriormente, RS485 es el estándar industrial por excelencia a
nivel mundial, utilizado para monitorizar y comandar PLCs, instrumentos remotos, controladores y
otros dispositivos, ofreciendo un manejo inmediato y certero, y si además el maestro tiene
conexión a una red de información (ver figura 3), los datos estarán al alcance de cualquier
departamento interesado en monitorizar las variables y acciones tomadas.
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 3 / 10
Ingeniero Electricista

COMPUTADORAS EN OFICINAS Producción Presidencia

Servidor
de la Red

Datos
compartidos

1200 m.
CONVERTIDOR

RS-232 / RS-485

Ruido electromagnético
en planta: motores, PLC 1 PLC 2 PLC 3 PLC 32
balastos, tiristores
CONTROLADORES EN PLANTA

OTROS LAZOS RS-485

Fig. 3 Aplicación completa RS485 con acceso mediante servidor.

Características del estándar RS485:

Linea de transmisión: Par trenzado con apantallamiento, hasta 1200 metros de cableado.
Comunicación serial asícrona half duplex con ratas de transmisión estándar de RS232.
Variable manipulada: Voltaje diferencial.
Equipos por lazo: 32, algunos fabricantes reportan hasta 128.
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 4 / 10
Ingeniero Electricista

2- Cableado y conexiones para RS485

El cableado para una red RS485 es bastante sencillo, la conexión se hace en paralelo y solo existe
un brazo por cada lazo, debe respetarse la polaridad y poner impedancias terminales en los
extremos del cableado según lo recomendado por el fabricante de la interfaz y los equipos. Por
ejemplo como indica la figura 4. El cable recomendado es de dos conductores multifilares
trenzados y apantallados del tipo Belden 9271 Twinax o similar.
120 Ω
Maestro
D+
D-
Pant.
120 Ω

D - D+ Pant. D - D+ Pant. D - D+ Pant.


Controlador Controlador Controlador
1 2 N

Fig. 4. Ejemplo de diagrama de cableado para comunicación RS485.

Si se dispone de un convertidor RS422, deben conectarse el terminal TX + con RX+, al igual que
TX – con RX- para hacer dos únicos puntos de conexión Data + y Data -.

120 Ω
RX+
+
Maestro con RX-
conexión
RS422 TX+
TX-
+
Pant.

Fig. 5. Diagrama de conexión RS422 a RS485.

3- Protocolos de comunicación para RS485

Como características heredadas de la transmisión serial RS232 parte de las definiciones están
orientadas a establecer parámetros básicos como velocidad de transferencia (en baudios), bits por
dato y tipo de paridad, adicionalmente se establece un formato de codificación propio para cada
modelo de equipo. Por ser una comunicación semi duplex, también se establece la detección de fin
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 5 / 10
Ingeniero Electricista

del mensaje, algunos definen un caracter o una secuencia de éstos y otros utilizan “tiempos
muertos” que se miden para detectar el final de un comando, si no hay transmisión en un periodo
mayor, se asume que el mensaje está completo aunque carezca de sentido. Los protocolos más
difundidos soportados por los controladores son el protocolo ASCII y el protocolo Modbus
Remote Terminal Unit (RTU), este último más comúnmente implementado con vistas a una
estandarización.

Protocolo ASCII:

Es un protocolo sencillo, pero es distinto para cada tipo de equipo, trabaja con un modelo de
pregunta y respuesta mediante cadenas de caracteres de 7 bits de ancho (ASCII). El dispositivo
maestro codifica en un paquete la dirección del dispositivo encuestado más la pregunta o comando
más argumento (si es el caso), el dispositivo encuestado procesa el mensaje, espera un tiempo y
responde (si es el caso) en un formato similar. La cadena de comando puede incluir un apéndice
calculado con los códigos de los caracteres del mensaje para detectar posibles pérdidas de
información, una especie de paridad del mensaje completo, este proceso es normalmente conocido
como “checksum” y es particular según el modelo del equipo.

Protocolo Modbus Remote Terminal Unit (Modbus RTU):

Es muy funcional y algo complejo. Anteriormente llamado Gould Modicon, es el protocolo más
difundido para comunicaciones RS-485, y apunta a una estandarización. El formato de
comunicación es serial con bit de inicio, 8 bits de datos (LSB primero), con paridad opcional y bit
de parada. Las ratas de transferencia son las mismas del RS-232. La encuesta y configuración de
equipos se simplifica a escritura (configuración) y lectura (inspección) de bits y registros de 16
bits. La filosofía es que mediante este protocolo, el equipo esclavo permite que el maestro
manipule directamente la tabla de registros que contienen la información y los parámetros de
configuración del equipo, o al menos lo simula. La ubicación de la información, permisos de
accesos y número de máximo de argumentos dependen del modelo del equipo. La transmisión se
hace mediante paquetes, el paquete contiene la dirección del equipo, un campo para el comando, y
un campo para uno o varios datos. Adicionalmente incluye un campo de seguridad de 16 bits para
detectar errores conocido como CRC (de las siglas en ingles de Cyclic Redundancy Check-sum)
que se transmite en dos bytes.

Tabla 2. Código de funciones más utilizadas del protocolo Modbus RTU

Código Función
01 Lectura de salida digital (lee un bit)
02 Lectura de entrada digital (lee un bit)
03 Lectura de registros internos (lee un grupo de registros)
04 Lectura de registros de entrada (lee un grupo de registros)
05 Escritura de salida digital (escribe un bit)
06 Escribe un solo registro
08 Prueba de comunicación y diagnóstico
16 (10h) Escribe varios registros
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 6 / 10
Ingeniero Electricista

Formato de mensajes en ModBus:

El primer caracter, es la dirección del dispositivo esclavo, un rango válido es 0 a 255. El segundo
caracter es el código de la función. Las funciones que permite el protocolo Modbus, están
codificadas en enteros de ocho bits (0-255) y las más comunes se indican en la tabla 2. Algunos
fabricantes agrupan funciones indiferentemente si se tratan de salidas o entradas, refieriéndose a
los campos como registros internos sin importar su función. Luego de una secuencia de caracteres,
un tiempo muerto de 30 bits o 3 caracteres a la rata de transmisión seleccionada, será interpretado
por los dispositivos esclavos como final del mensaje y se procederá a su interpretación.

Formato del mensaje para Funciones 01 y 02 (leer bits)

Dir func. Dir. 1er bit No. de bits CRC16


1/2 HI LO HI LO

La respuesta viene en un formato similar que incluye un campo para especificar la cantidad de
bytes que conforman la sección de datos.

Dir func. bytes Datos CRC16


1/2

Ejemplo: Leer salidas digitales 0 al 7 del esclavo 02.


El maestro envía el mensaje siguiente: 02 01 00 00 00 07 CRC CRC
El esclavo 02 responde: 02 01 01 42 CRC CRC
Lo que significa que las salidas 1 y 6 están encendidas, las otras apagadas (42h = 0100 0010b)

Formato del mensaje para Funciones 03 y 04 (leer registros)

Dir func. Dir. 1er reg. No. de reg. CRC16


3/4 HI LO HI LO

el formato de la respuesta es

Dir func. bytes Dato 1 Dato 2 Dato n CRC16


3/4 HI LO HI LO HI LO

Ejemplo: Leer registros en direcciones 1800 a 1803 en esclavo 2.


Mensaje enviado: 02 03 18 00 00 04 CRC CRC
Respuesta: 02 03 08 42 C8 00 00 47 AE 42 5D CRC CRC
Lo que significa: Registro 1800 contiene 42C8h. Registro 1801 contiene 0000h. Registro 1802
contiene 47AEh. Registro 1803 contiene 425Dh.
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 7 / 10
Ingeniero Electricista

Formato del mensaje para Función 05 (escribe 1 bit)

Dir func. Dir. de bit Estado CRC16


05 HI LO FF/00 00

ff = prende ; 00 = apaga

Si el comando fué efectivo, la respuesta es un mensaje idéntico (eco) enviado por el esclavo.
Ejemplo: Prender salida digital 06 del esclavo 2.
Mensaje enviado (mismo recibido luego): 02 05 00 06 FF 00 CRC CRC

Formato del mensaje para Función 06 (escribe 1 registro)

Dir func. Dir. del reg. Valor CRC16


06 HI LO HI LO

Si el comando fué efectivo, la respuesta es un mensaje idéntico (eco) enviado por el esclavo.
Ejemplo: Escriba 1F2h en registro 00FAh de esclavo 2.
Mensaje enviado (igual al recibido luego): 02 06 00 FA 01 F2 CRC CRC

Formato del mensaje para Función 08 (Prueba de comunicación y diagnóstico)

Dir func. Cod. de Diag. Valor CRC16


08 HI LO HI LO

Si el comando fué efectivo, la respuesta es un mensaje idéntico (eco) enviado por el esclavo.
Ejemplo: Escriba 1F2h en registro 00FAh de esclavo 2.
Mensaje enviado (igual al recibido luego): 02 06 00 FA 01 F2 CRC CRC

Formato del mensaje para Función 16 <10h> (Prueba de comunicación y diagnóstico)

Dir func. Dir. Inicial Num. de Reg. bytes Dato 1 Dato n CRC16
16 HI LO HI LO HI LO HI LO
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 8 / 10
Ingeniero Electricista

Algoritmos de cálculo del CRC16 se muetran a continuación, no existe un orden normalizado para
la transmisión de los bytes de CRC, pudiendo ser HI-LO o LO-HI, esto lo informa el fabricante.

Rutina en C que retorna CRC a partir de un paquete


#define MASCARA 0xA001;
unsigned int calc_crc(unsigned char *inicio_de_paquete,
unsigned char *final_de_paquete)
{
unsigned int crc;
unsigned char contador_de_bits;
unsigned char *apuntador_de_caracteres;
/* Comienza con el principio del paquete */
apuntador_de_caracteres = inicio_de_paquete;
crc = 0xffff; /* Inicializa CRC */
/* Ciclo a través de todo el paquete */
do
{
/* OR-Exclusivo entre el byte examinado y CRC */
crc ^= (unsigned int)* apuntador_de_caracteres;
/* Ciclo a través de los 8 bits del dato */
contador_de_bit = 0;
do
{
/* Si LSB es 1, desplaza CRC y hace XOR entre MASCARA y CRC */
if(crc & 0x0001){
crc >>= 1;
crc ^= MASCARA;
}
/* Si LSB es 0, sólo desplaza CRC */
else
{
crc >>= 1;
}
} while(contador_de_bits++ < 7);
} while(apuntador_de_caracteres++ < final_de_paquete);
return(crc);
}

Rutina en Pascal que retorna CRC a partir de un paquete contenido en un vector


function TForm1.CRC(paquete: Array of byte; longitud: Integer):Word;
Const
MASCARA: Word=$A001;
Var
i, j: integer; // Variables para ciclos
CRCint: word; // CRC interno para realizar el cálculo
begin
CRCint:= $ffff; // valor inicial de CRC
For i:= 0 to longitud-1 do // recorre todo el paquete
begin
// Hace OR-Exclusivo entre el byte examinado y CRC
CRCint:= CRCint xor paquete[i];
// Ciclo a través de los 8 bits del dato
for j:= 1 to 8 do
begin
// Si LSB es 1, desplaza CRC y hace XOR entre MASCARA y CRC
If (CRCint and 1) =1 then
begin
CRCint:= CRCint shr 1;
CRCint:= CRCint xor MASCARA;
end
else CRCint:= CRCint shr 1; // Si LSB is 0, sólo desplaza CRC
end;
end;
CRC:=CRCInt; // CRC es la variable de retorno
end;
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 9 / 10
Ingeniero Electricista

Ejemplos de aplicación, los valores están en hexadecimal.

Comando: 28 08 55 66 77 88
CRC: 31 B7
Paquete: 28 08 55 66 77 88 31 B7

Comando: 09 06 00 07 00 C8
CRC: 38 D5
Paquete: 09 06 00 07 00 C8 38 D5

Nótese que en este caso se transmite primero el byte menos significativo del CRC.

4- Recomendaciones

Para una buena comunicación:

• Disponga del cable adecuado y las terminaciones correctas, de otro modo, no se cumplirán las
especificaciones de 1200 metros e inmunidad al ruido eléctrico.
• Utilice convertidores con control automático de flujo (automatic flow control), éstos se
configuran para la velocidad deseada, ancho de carácter y paridad. En teoría, el dispositivo
maestro puede controlar el flujo mediante su programa, éste debe tener instrucciones para
liberar la línea de comunicación justo al finalizar una transmisión de modo que pueda tener
lugar la recepción. En la práctica los integrados controladores de comunicación serial tienen
buffers y no siempre se sabe en qué momento se ha transmitido completamente un comando, si
se espera demasiado, se puede superar el tiempo muerto (unos pocos ms), lo que trae como
consecuencia una pérdida en el paquete recibido como respuesta.

Para la elaboración de programas:

• Eficiencia: Con las ratas actuales de transferencia serial, es posible encuestar todas las
variables de una red completa de dispositivos (hasta 32) en el peor de los casos en un tiempo
no superior a los 10 s.; es decir desde la activación de una alarma hasta su información a un
usuario remoto nunca transcurrirán mas de 10 segundos; adicionalmente, si el programa se
elabora previendo este caso, la encuesta se puede separar en dos partes, una de chequeo previo
general (para las variables más dinámicas) y luego establecer prioridades de consulta. Con esto
los tiempos de retardo en actualización bajan considerablemente.
• Seguridad: Evite las complicaciones innecesarias, las aplicaciones deben exhibir robustez, un
programa sencillo tiene menos posibilidades de colapso, y es que una aplicación de este tipo no
puede “trancarse” y perder información, mucho menos configurar erróneamente algún equipo.
En este mismo sentido, prevea la existencia de errores de comunicación para que no hagan
colapsar al sistema. Es frecuente que al mutilarse un mensaje, una aplicación mal diseñada
quede en un ciclo infinito en espera del final del mismo. La filosofía del tiempo muerto en el
programa maestro, como indicador de fin de mensaje es válida y muy recomendable.
Daniel E. Vega M. RS-485 MODBUS Emisión:
16/05/03 P. 10 / 10
Ingeniero Electricista

5- Utilidades para microcontroladores PIC de Microchip

A continuación se muestra un circuito de interfaz RS-485 basado en el IC Maxim MAX487 para


conectar una USART TTL presente en algunos microcontroladores y un programa en ensamblador
de PIC (Microchip) que calcula el CRC16 de un buffer de datos.

RO Vcc=5V
RX
RE B Fig. 6. Interfaz entre USART
DE A TTL y bus RS-485
DI GND
TX

MAX487

CONTROL DEL D-
BUS D+

Programa en ensamblador PIC para calcular el checksum CRC16 (ejemplo para un PIC16F627).

list p=16f627 movf INDF, W; en W el dato


#include p16f627.inc xorwf CRCLO, F;
movlw 0x8;
INIP equ 0x4A; movwf CAD;
CAD equ 0x4B; OTROBIT btfss CRCLO, 0;
ACT equ 0x4C; goto ESCERO;
NBP equ 0x4D; bcf STATUS, C;
CRCLO equ 0x4E; rrf CRCHI;
CRCHI equ 0x4F; rrf CRCLO;
movlw 0x1;
;PROGRAMA xorwf CRCLO, F;
movlw 0xA0;
movlw 0x40; buffer comienza en 40h xorwf CRCHI, F;
movwf INIP goto FINBIT;
ESCERO bcf STATUS, C;
movlw 0x6; rrf CRCHI;
movwf NBP; cantidad de bytes rrf CRCLO;
; datos de ejemplo FINBIT decfsz CAD;
movlw 0x28; goto OTROBIT;
movwf 0x40; 28h en dir 40h decfsz NBP;
movlw 0x08; goto OTROCAR;
movwf 0x41; 08h en dir 41h end
movlw 0x55;
movwf 0x42; 55h en dir 42h
movlw 0x66;
movwf 0x43; 66h en dir 43h
movlw 0x77;
movwf 0x44; 77h en dir 44h
movlw 0x88;
movwf 0x45; 88h en dir 45h
; debe dar 31B7

movlw 0xFF;
movwf CRCLO;
movwf CRCHI; en CRC 0xffff
movf INIP, W;
movwf FSR; apuntador
decf FSR;
OTROCAR incf FSR;

Anda mungkin juga menyukai