Beruflich Dokumente
Kultur Dokumente
llamado MODBUS, pero qu es y cmo funciona el MODBUS? antes de comenzar con el MODBUS,
necesitamos conocer algunos detalles bsicos, como los siguientes:
Qu es la comunicacin serial.
Que es el RS-485.
Como se implementa una red RS-485.
Qu es la comunicacin serial?
La comunicacin serial consiste en el envi secuencial de un bit a la vez de informacin entre dos o
ms dispositivos, por eso se le llama serial, porque cada bit va uno seguido de otro o dicho de otra
manera cada bit va en serie, ahora esto implica que para la transmisin de datos es necesario un
solo cable entre los dispositivos y una referencia o tierra, tal y como se observa en la siguiente figura.
Como se observa, la seal es por un solo cable, lo que implica que solo halla dos valores, denotados
en electrnica digital por un 1 o un 0, esto es si llega voltaje al cable (1) o si no le llega (0).
En la figura anterior el dispositivo 1 transmite la informacin y el dispositivo 2 la recibe, as no se
utiliza mucho, pues no hay forma que el dispositivo 2 regrese informacin al dispositivo 1,
obviamente es mejor la transmisin con dos cables como la mostrada en la figura siguiente:
Ahora si es posible transmitir de forma serial los datos del dispositivo 1 al dispositivo 2 y viceversa.
Cada dispositivo tiene dos cables, uno es el transmisor que es el cable que enva los datos a otro
dispositivo, generalmente se le representa como Tx, y el otro cable es el receptor que se le
representa con Rx, y es el encargado de recibir la informacin, observe la imagen siguiente:
Observe como el transmisor (Tx) de un dispositivo se conecta al receptor (Rx) del otro, los datos que
se envan de un dispositivo a otro, como ya se mencion arriba es un bit a la vez, juntos esos bits
forman datos, recuerde que para cada lnea de datos solo hay dos posibles valores o el dato enviado
es un 0 o es 1, por ejemplo observe la imagen siguiente, ah se puede observar cuales son 0s y
cuales son 1s de una tpica seal serial enviada por el Tx:
Por supuesto que para que funcione correctamente la transmisin de unos y ceros los dos
dispositivos deben estar enviando y recibiendo la informacin a la misma velocidad, de esto
hablamos ms adelante.
Notas:
1. Se enva siempre, del bit menos significativo al bit ms significativo.
2. Generalmente se enva los datos de forma serial en bloques de 8 bits, el cdigo ASCIII de la
letra es de 7 bits, por lo que se agrega un 0 al final, en el bit ms significativo.
3. El envi de datos es a una velocidad previamente establecida por los dispositivos, por eso
es posible saber cundo es 0 y cuando es 1.
De esta forma se pueden enviar informacin, cualquier tipo de informacin, letras, nmeros y
caracteres. Se puede enviar el cdigo ASCII de una letra seguida de otra y as sucesivamente para
formar palabras, y as enviar la informacin que nosotros queremos, as de simple es la
comunicacin serial.
El bit de inicio es un 0 y el bit de paro es un 1, siempre que se enven datos seriales generalmente
llevan este formato, por ejemplo si se enva la palabra HOLA serialmente, se vera como la figura
siguiente la trama de bits, donde ahora no se muestran los unos y ceros, por simplicidad se usaran
bloques representando datos y bits de inicio y paro.
Bit de paridad
Existe otro bit que se agrega a la trama, es el llamado bit de paridad, que sirve para detectar errores
en las tramas enviadas, no entraremos en detalle de este bit, pues es opcional su uso.
Velocidad de transmisin
Finalmente debemos tener en cuenta la velocidad a la que se envan lo bits serialmente, es de suma
importancia pues como se menciono arriba, ambos dispositivos deben estar a la misma velocidad
para transmitir y recibir bits, si no lo estn, simplemente la transmisin serial no sera correcta.
La velocidad de transferencia de informacin indica el nmero de bits que se transmiten en un
segundo, se mide en bauds (baudios) algunas velocidades de transmisin que son muy usadas son
las siguientes: 1200, 2400, 4800, 9600, 19200. Por ejemplo la tarjeta de relevadores usa una
velocidad de 9600 bauds para enviar la informacin.
Qu es el protocolo RS-485?
Es un protocolo de comunicacin serial, qu a la fecha es un estndar, es usado como sistema de
interconexin entre dispositivos a grandes distancias y funciona en ambientes elctricamente
ruidosos sin problema alguno. Existen dos opciones para crear una red RS-485:
Ahora observe en la siguiente figura, la conexin para formar la red RS-485, con nicamente dos
dispositivos seriales.
Ese es el hardware necesario para la comunicacin RS485 a 4 hilos, el transmisor y receptor son
totalmente independientes, en un instante ambos pueden estar transmitiendo y recibiendo
informacin, por eso es llamado full-duplex pues es ms rpida este tipo de conexin que su
contraparte, la conexin RS-485 a 2 hilos.
Como se mencion arriba, la ventaja en modo half dplex es evidente, requiere solamente dos
cables para su conexin, lo que ahorra en cableado, sobre todo si son largas las distancias entre los
dispositivos.
MODBUS
El MODBUS es un protocolo de comunicacin serial basado en el modelo maestro/esclavo, a la fecha
es un estndar de facto, es pblico, muy seguro, no requiere licencias y su implementacin es
relativamente fcil en dispositivos electrnicos, por ejemplo nuestros ingenieros, usan el
microcontrolador PIC16F648A programado para responder comandos MODBUS, esas son algunas
de las razones por las que goza de muchsima aceptacin, adems de que tiene ms de 30 aos en
la industria.
Cada esclavo tiene su propia direccin, que puede ir desde 1 hasta 247.
El maestro siempre inicia la comunicacin enviando un paquete de informacin bien
estructurado a todos los esclavos, entre otras muchas cosas en la informacin se incluye el
nmero del esclavo.
El esclavo elegido responde, enviando lo que se le pide por medio tambin de un paquete
de informacin bien estructurado.
Respuesta de esclavo
0000 9998
10001 - 19999
0000 9998
30000 - 39999
0000 9998
40001 - 49999
0000 9998
- 9999
Observe que hay dos direcciones, una es usada para diferenciar entre las tablas de datos, la
llamamos direccin MODBUS y la otra es la direccin usada en la comunicacin entre el maestro y
el esclavo, est es la direccin usada en la trama o paquetes de datos enviados entre maestros y
esclavos, en otras lecciones se hablar ms de estas direcciones para que queden ms claros estos
conceptos. Por lo pronto solo entreramos en detalle sobre dos elementos del MODBUS, los coils y
los regstros Holding.
Output Coils
En MODBUS un coil representa un valor booleano tpicamente usado para representar una salida,
solo hay dos estados para el coil el ON y el OFF. Por ejemplo la tarjeta de relevadores usa dos coils,
para activar o desactivar precisamente dos relevadores.
El coil entonces, puede verse como una celda o un bloquecito de memoria que me permite
almacenar el estado de un bit, que puede tener solo dos valores como se vio arriba, el ON o el OFF,
o en lgica binaria, un 1 o un 0, o ms cerca de la realidad fsica, tierra (0 Volts) y voltaje (5 Volts),
como el lector quiera verlo, eso s debe quedar claro que son solo dos valores por cada coil.
Hablemos de las direcciones, el coil segn la tabla de datos puede tener una direccin MODBUS, la
cual yo elijo y segn la tabla anterior, puede ser entre 1 y 9999 valores, por simplicidad, se puede
elegir el coil 1 y el coil 2 para, activar o desactivar, en nuestro caso, los relevadores de la tarjeta,
pero por supuesto que yo puedo elegir el coil 9998 y coil 9999, si yo as lo quisiera, cualquier
direccin en ese rango se puede usar sin ningn problema.
Holding Registers
Los registros Holding, representan cantidades de 16 bits, se puede ver cada registro como un bloque
o celda de memoria, que es capaz de almacenar nmeros entre 0 y 65535.
Las direcciones usadas para los registros holding inician en la direccin 40001, pero puede usarse
cualquiera de las mencionadas en la tabla para los registros holding.
Estos registros son de lectura/escritura, es decir que el maestro puede hacer peticiones de
informacin para leer el dato que est almacenado, o puede enviar peticiones para escribirle un
valor al registro holding en el momento que se requiera.
En nuestras tarjetas usamos los registros Holding para almacenar el nmero de vueltas que va dando
un encoder debido al paso de gas LP, cuando se inicia un servicio a un cliente, el encoder gira al
pasar el gas, cada vuelta del encoder, hace que el registro holding 40006 aumenten en una unidad,
en el momento deseado el registro electrnico puede hacer peticiones de informacin para saber
exactamente, el valor de cada registro. Como se vio anteriormente, el maestro siempre inicia las
peticiones de informacin, el maestro puede pedir el valor de los registros holding y el esclavo
entonces responde justo con el valor almacenado en el instante de la peticin.
Output Coils
Cdigo de operacin
Accin
Descripcin
01 (01 Hexadecimal)
05 (05 Hexadecimal)
15 (0F Hexadecimal)
Cdigo de operacin
Accin
Descripcin
02 (02 Hex)
Input Contact
Input Register
Cdigo de operacin
Accin
Descripcin
04 (04 Hex)
Cdigo de operacin
Accin
Descripcin
03 (03 Hex)
06 (06 Hex)
Escritura de un holding
16 (10 Hex)
Holding Registers
Para nuestro ejemplo, se pide conocer el valor del coil #5, esto es entonces una lectura de un solo
coil, por tanto el cdigo de operacin es obviamente el 01 (Hex), como se vio en las tablas de arriba.
As pues la trama de informacin o paquete de datos MODBUS va formndose como se observa en
la figura siguiente:
La direccin MODBUS es el coil que se elige por el usuario, para nuestro ejemplo es el coil #5, pero
la verdadera direccin que se usa en la trama est en la siguiente columna, que como se mencion
arriba es un nmero entre 0 y 9998, el lector debe observar que para el coil #1, le corresponde la
direccin 0, esto implica que se debe restar una unidad para conocer la direccin absoluta que debe
ir en la trama de informacin, as pues para nuestro ejemplo, el coil es el #5, entonces le corresponde
la direccin 4, que en hexadecimal y para dos bytes es: 0004, siendo este nmero el que se debe
enviar en la trama de informacin.
El primer coil que se desea leer es el coil 1, por eso es que la direccin es la 0000, en total los coils a
leer son 7 por es que el cuarto byte es: 0007.
Respuesta del esclavo
Uff para esta peticin puede haber muchsimas respuestas, pues los esclavos pueden tener 0 o 1s,
vamos a suponer algunos ejemplos especficos por facilidad.
Supongamos que el coil #1=0, #2=1, #3=0, #4=1, #5=0, #6=1, #7 =1, para este caso la respuesta del
esclavo es como la mostrada en la imagen siguiente:
os aspectos a destacar, el nmero de byte, sigue siendo un 1, esto debido a que con un byte puedo
representar los 7 coils, si me hubieran pedido por ejemplo el estado de 15 coils, entonces ah si el
byte de datos seria 02, puesto que solo con dos byte de datos puedo mostrar el dato de 15 coil, por
otro lado observe el byte de datos 6A, este valor es asi porque es el valor que se obtiene de la
representacin del estado de cada uno de los coils, ms claro en esta imagen: