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. MODBUS sobre conexin RS-485 El protocolo MODBUS es un protocolo que usa lneas seriales, por lo que comnmente se implementa sobre redes de comunicacin RS-485, pero tambin sobre redes que usan la comunicacin serial RS-232, incluso se puede implementar va TCP/IP sobre una red Ethernet, en SDM se usa la implementacin MODBUS sobre una red RS-485 como la que se vio en el articulo pasado. Modos de Transmisin del MODBUS Los modos de transmisin definen como se envan los paquetes de datos entre maestros y esclavos, el protocolo MODBUS define dos principales modos de transmisin: MODBUS RTU(Remote Terminl Unit). La comunicacin entre dispositivos se realiza por medio de datos binarios. Esta es la opcin ms usada del protocolo y es la que se implemento en nuestras tarjetas. MODBUS ASCII (American Standard Code for Information Interchange). La comunicacin entre dispositivos se hace por medio de caracteres ASCII. Comunicacin Maestro-Esclavo en MODBUS El MODBUS siempre funciona con un maestro y uno o ms esclavos, siendo el maestro quin controla en todo momento el inicio de la comunicacin con los esclavos, que segn la especificacin pueden ser hasta 247 en una misma red. El esclavo por otro lado se limita a retornar los datos solicitados por el maestro, as de simple es la comunicacin usando el MODBUS, el maestro enva los mensajes y el respectivo esclavo los responde. Cada esclavo debe tener una nica direccin, as el maestro sabe con quin se debe comunicar. Vea la animacin siguiente, observe cmo funciona el envi de mensajes entre el maestro y el esclavo tome en cuenta lo siguiente: 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.
En la animacin solo se muestra el nmero de esclavo, pero los paquetes de informacin tiene muchos otros datos como se ver ms adelante. Adems recuerde que el MODBUS se realiza sobre una red RS-485, como se observa en la animacin, con ello solo se requieren dos cables entre dispositivos como se vio en el anterior articulo. Representacin de datos en MODBUS El protocolo MODBUS usa el concepto de tablas de datos para almacenar la informacin en un esclavo, una tabla de datos no es ms que un bloque de memoria usado para almacenar datos en el esclavo, las tablas de datos que usa en MODUS son cuatro y se muestran en la siguiente tabla: Direccin MODBUS Direccin Usada en el protocolo Nombre de la Tabla de Datos 1 - 9999 0000 9998 Output Coils (Lectura/escritura) 10001 - 19999 0000 9998 Inputs Contact (Lectura) 30000 - 39999 0000 9998 Inputs Registers (Lectura) 40001 - 49999 0000 9998 Holding Registers (Lectura/Escritura)
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. Observe la animacin siguiente, muestra varias tarjetas de relevadores como esclavos y un registro electrnico como maestro.
Algunas anotaciones En el intercambio de mensajes, ahora aparte de la direccin del esclavo se escribe que estado deseamos para el coil. Aunque la animacin solo muestra los coil con el estado de ON, tambin se enva de la misma forma el estado OFF del coil cuando as se necesite. Note como el esclavo responde a la peticin del maestro, colocando el coil en el estado que se le pide, pero adems regresa una trama de informacin al maestro, que prcticamente es lo mismo que se le pidi. Sobra decir que la trama de informacin enviada por el maestro y la respuesta enviada por el esclavo, son nmeros binarios como se ver en la siguiente leccin. 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 mostro en la animacin anterior, 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, ms detalles de este proceso se vern en el siguiente articulo.