Académique Documents
Professionnel Documents
Culture Documents
REDES INDUSTRIALES
PROTOCOLO MODBUS
Mayo 2004
Seminario de Titulación Protocolo de Comunicación Modbus
ÍNDICE
CAPITULO 1
CAPITULO 2
Protocolo Modbus.. 21
CAPITULO 4
Subfunciones de Diagnostico………………… 95
4.1 Función 08 Diagnósticos…………………….. 96
-Efectos del diagnostico en el esclavo……. 96
CAPITULO 5
INTRODUCCIÓN
JUSTIFICACIÓN
El tema de protocolo de comunicación Modbus fue elegido por ser uno de los protocolos más
utilizados en la industria, y el cual a sufrido modificaciones al original Modbus creado por
Modicon, llegando a ser un estándar para la industria, este tema es poco conocido afuera del
área de instrumentación y control, pero la mayoría de los equipos industriales tienen este
protocolo para la transmisor de sus datos y/o configuración del mismo equipo.
OBJETIVOS
PROBLEMAS
CAPITULO 1
CONSIDERACIONES DE DISEÑO
Puntos básicos, sobre la arquitectura de una red industrial y las necesidades que
se tienen en una empresa a nivel proceso, así como las razones por las que los
protocolos de los diferentes fabricantes deben poder ser integrados para formar un
solo sistema.
Seminario de Titulación Protocolo de Comunicación Modbus
Los puntos siguientes deben ser considerados al diseñar una red de comunicación
para un sistema de automatización industrial.
En la mayoría de los ambientes industriales, hay mucho ruido, emitido por las
fuentes de ruido como robots soldando y grandes motores. El desempeño de una
red de comunicación puede ser degradada por la interferencia de ruido, los efectos
de ruido en el desempeño de una red de comunicación deben ser estudiados para
obtener un desempeño practico de una red de comunicación aplicada a un ambiente
ruidoso, qué es común en aplicaciones prácticas.
A fines de los sesenta, Mollins del Reino Unido anunció su Sistema 24. Este sistema
fue diseñado para operar varias máquinas bajo el control de una sola computadora.
Se esperaba que con esto aumentara la productividad más allá del nivel alcanzable
por el mismo número de máquinas trabajando independientemente. Este concepto
de sistema industrial flexible (flexible manufacturing system (FMS)) actualmente es
de gran interés como estructura conveniente para la creciente utilización en la
máquina, reduciendo tiempo de manufacturado y un proceso de inventario. Con la
introducción de FMS, el concepto de la fabricación integrada por computadora
(computer integrated manufacturing (CIM)) hizo que se tomara atención en el área
de automatización industrial para integrar los procesos de fabricación a
computadoras digitales en todos los aspectos. Ahora el término CIM es usado en
todos los tipos de sistemas industriales lo que significa la integración completa de
las computadoras industriales, redes de comunicación, y sistemas de control de
proceso en todas las funciones industriales.
Con el uso más extenso de computadoras digitales y las tecnologías asociadas, las
redes de comunicación industriales llegaron a ser desarrolladas con o transformar
a la transmisión digital. La red de comunicación digital para uso industrial empezó
en los años sesenta como computadoras para sistemas de automatización y fueron
las primeras en unirse.
Seminario de Titulación Protocolo de Comunicación Modbus
Es ahora común para usuarios conectados a una red de área local comunicarse con
computadoras o dispositivos de automatización en otra red de área local unidas
por una red de área ancha.
Nivel de campo
Nivel de célula
Nivel de área
El nivel del área consiste en células combinadas dentro de grupos. Las células están
diseñadas con aplicaciones orientadas al funcionamiento. Por los controladores de
nivel de área o operadores de control, él controlando y las funciones intermedias
están hechas como objetivos de producción, el encendido de la máquina y apagado,
y actividades de emergencia.
Nivel de planta
Medios de transmisión.
El par trenzado puede ser usado para transmitir datos en banda base a varios Mbit/s
en distancias de 1 Km o más pero cuando la velocidad se aumenta la longitud
máxima del cable es reducida. El par trenzado se ha estado usado durante muchos
años y este también se usa ampliamente en redes de comunicación industrial. Es
menos caro que el cable coaxial, pero no proporciona alta capacidad de transmisión
o buena protección de la interferencia electromagnética.
Métodos de transmisión
La comunicación de datos puede ser analógica o digital. Los datos analógicos toman
continuamente los cambios en el valor.
Topología de red
Una configuración estrella contiene un control central, en que todos los nodos están
conectados directamente. Esto permite una conexión fácil para las redes pequeñas,
pero los controles adicionales deben ser agregados cuando un número máximo de
nodos se alcanza. El fallo de un nodo en una configuración de estrella no afecta
otros nodos.
En la topología de anillo, el cable forma una vuelta y los nodos están unidos a
intervalos alrededor de la vuelta. El mensaje es transmitido alrededor del anillo que
comunica los nodos unidos a él. Si un solo nodo falla, la red entera pudiese
detenerse a menos que un mecanismo de recuperación se lleve a cabo.
Topología de anillo
Figura 1.2 topologías de las redes industriales
Costo
Desempeño
Fiabilidad o disponibilidad
Servicio o funcionamiento de la Red
Tolerancia con respecto al medio ambiente
Medios físicos
Expansión
Mantenimiento
Seguridad
Costo
El costo de conectar una red de computadoras consiste en los costos iniciales y los
costos continuos. Los costes iniciales incluyen la compra de nuevo hardware y
software, el diseño, la instalación y la puesta en marcha. Los costos continuos
incluyen el mantenimiento del hardware y software, el pago a las personas que lo
operan y arreglan la red y los costos para la expansión de la red y cambios de
configuración.
Desempeño
Las medidas típicas del funcionamiento para las redes de comunicación incluyen lo
siguiente.
El diseñador de la red debe saber qué tipo de datos maneja la red y qué
funcionalidad se requiere para encontrar la meta. La típica funcionalidad requerida
en las redes de comunicación industriales incluye:
Transferencia de archivos
Seminario de Titulación Protocolo de Comunicación Modbus
Medios Físicos
Expansión
Mantenimiento
Seminario de Titulación Protocolo de Comunicación Modbus
Todas las redes deben tener mantenimiento y servicio. El buen diseño de la red
debe permitir un mantenimiento preventivo, actualización, y llevar a cabo
reconfiguraciones con un mínimo o ninguna ruptura de funcionamiento de la red.
Seguridad
Tolerancia para el medio ambiente rudo. Cuando una red de nodos se mueve al
campo, el hardware del sistema debe ser diseñado para resistir la interferencia
Seminario de Titulación Protocolo de Comunicación Modbus
Seguridad. El acceso al sistema de control debe ser diseñado para prevenir usos
accidentales o no autorizados que puedan dañar el proceso de la planta.
Estudio de fiabilidad
Análisis
Diseño
Implementación
Mantenimiento y
Actualización
CAPITULO 2
PROTOCOLO MODBUS
Seminario de Titulación Protocolo de Comunicación Modbus
alcance es más allá, ya que es posible comunicarse con redes estándares como
son MAP y Ethernet. Estas redes son acezadas por puertos construidos por el
controlador o por adaptadores de red, módulos opcionales y puertas de enlace que
son disponibles por Modicon.
El lenguaje común usado por todos los controladores Modicon es el protocolo
Modbus, este protocolo define una estructura de mensaje que el controlador
reconocerá y usara, sin tener en cuenta sobre el tipo de red que estén montados los
dispositivos, describiremos el proceso que usa un controlador para pedir acceso a
otro dispositivo, como responderá a las peticiones de otros dispositivos y como los
errores serán detectados y reportados todo esto establecerá un formato común para
el tamaño y contenido de cada mensaje.
paquetes de mensaje, compatible con el protocolo de esta red en el punto final del
envió, sin embargo por ejemplo un controlador, el contenido del mensaje
empaquetado. Escrito usando Protocolo Modbus define la acción que será tomada
por el dispositivo al cual se le esta atendiendo.
La figura 2.1 muestra como pueden ser conectados algunos dispositivos en una
jerarquía de redes que emplean técnicas de comunicación ampliamente diferentes.
En el intercambio de mensajes, el protocolo Modbus insertado en cada paquete de
la red específica proporciona el lenguaje común mediante el cual cada dispositivo
intercambia los datos.
Seminario de Titulación Protocolo de Comunicación Modbus
Host
Procesador
MAP
984-985 Programador
(Modbus Modbus P230
Plus) y
S980 (MAP)
Modbus Plus
Modbus Modbus
Programador
P230
Cuatro dispositivos
Modbus o 4 redes.
Figura 2.1 Diagrama general de una posible aplicación con el protocolo Modbus
Los puertos de Modbus estándar sobre controladores Modicon usan una interfase
serial compatible con RS-232 que define los pines de entrada y salida, el cableado,
los niveles de señal velocidad de transmisión en bauds y el chequeo de la paridad,
los controladores pueden ser conectados a la red directamente o vía MODEM.
Sobre este tipo de redes, los controladores comunican mediante una técnica de par
a par, en donde cualquier controlador puede iniciar envíos con los otros
controladores. Así un controlador puede operar como un esclavo o como un maestro
en envíos diferentes.
Seminario de Titulación Protocolo de Comunicación Modbus
Los controladores pueden ser configurados para comunicar sobre redes standard
Modbus utilizando cualquiera de los dos modos de transmisión: ASCII o RTU. Los
usuarios seleccionan el modo deseado, junto con los parámetros de comunicación
del puerto serie (velocidad, paridad, etc), durante la configuración de cada
controlador. El modo y los parámetros serie deben ser los mismos para todos los
dispositivos conectados a una red Modbus. La selección del modo ASCII o RTU
tiene que ver únicamente con redes Modbus standard. Define los bits contenidos en
los campos del mensaje transmitido en forma serie en esas redes. Determina cómo
debe ser empaquetada y decodificada, la información en los campos del mensaje.
En otras redes como MAP y Modbus Plus, los mensajes Modbus son situados en
tramas sin relación con la transmisión serie. Por ejemplo una solicitud para leer
registros sostenidos (holding reg.) puede ser manejada entre dos controladores en
Modbus Plus, con independencia de la configuración actual de los puertos serie
Modbus de ambos controladores.
Modo ASCII
Seminario de Titulación Protocolo de Comunicación Modbus
Cuando los controladores se configuran para comunicar en una red Modbus según
el modo ASCII (American Standard Code for Information Interchange), cada byte –
8 bits - en un mensaje se envía como dos caracteres ASCII. La principal ventaja de
este modo es que permite intervalos de tiempo de hasta un segundo entre
caracteres sin dar lugar a error.
Modo RTU
Cuando los controladores son configurados para comunicar en una red Modbus
usando el modo RTU (Remote Terminal Unit), cada byte de 8 bits en un mensaje
contiene dos dígitos hexadecimales de 4 bits. La principal ventaja de este modo es
que su mayor densidad de carácter permite mejor rendimiento que el modo ASCII
para la misma velocidad. Cada mensaje debe ser transmitido en un flujo continuo.
Seminario de Titulación Protocolo de Comunicación Modbus
En redes como MAP o Modbus Plus, el protocolo de red manipula la trama de los
mensajes con delimitadores de comienzo y final que son específicos de la red. Esos
protocolos también manipulan el envío al dispositivo de destino, haciendo
innecesario el campo de la dirección Modbus integrado en el mensaje para la
transmisión actual. (La dirección modbus es convertida a una dirección de nodo de
la red y enrutada por el controlador remitente o sus adaptadores de red.)
Trama ASCII
En modo ASCII, los mensajes comienzan con un carácter ( : ) ‘dos puntos’ (ASCII
3A hex) y terminan con un par de caracteres (CRLF) ‘Retorno de Carro + Avance
de Línea) (ASCII 0D hex y 0A hex).
Los caracteres a transmitir permitidos para todos los demás campos son 0-A, A-F
hexadecimal. Los dispositivos conectados en red monitorizan el bus de red
continuamente para detectar un carácter ‘dos puntos’. Cuando se recibe, cada
dispositivo decodifica el próximo campo (el campo de dirección) para enterarse si
es el dispositivo direccionado.
Pueden haber intervalos de hasta un segundo entre caracteres dentro del mensaje.
Si transcurre más tiempo entre caracteres, el dispositivo receptor asume que ha
ocurrido un error.
Trama RTU
Seminario de Titulación Protocolo de Comunicación Modbus
En modo RTU, los mensajes comienzan con un intervalo silencioso de al menos 3.5
tiempos de carácter. Esto es más fácilmente implementado como un múltiplo de
tiempos de carácter a la velocidad de transmisión configurada en la red (mostrado
como T1-T2-T3-T4 en la figura 2.4). El primer campo transmitido es entonces la
dirección del dispositivo destinatario.
Los caracteres a transmitir permitidos para todos los campos son 0-A, A-F
hexadecimal. Los dispositivos conectados en red monitorizan el bus de red
continuamente incluso durante los intervalos ‘silencioso’. Cuando el primer campo
(el campo de dirección) es recibido, cada dispositivo lo decodifica para enterarse si
es el dispositivo direccionado.
La trama completa del mensaje debe ser transmitida como un flujo continuó. Si un
intervalo silencioso de más de 1.5 tiempos de carácter tiene lugar antes de
completar la trama, el dispositivo receptor desecha el mensaje incompleto y asume
que el próximo byte será el campo de dirección de un nuevo mensaje.
Cuando el esclavo responde al maestro, utiliza el campo del código de función para
indicar bien una respuesta normal (libre de error) o que algún tipo de error ha tenido
lugar (denominado respuesta de excepción). Para una respuesta normal, el esclavo
simplemente replica el código de función original. Para un respuesta de excepción,
el esclavo devuelve un código que es equivalente al código de función original con
su bit más significativo puesto a valor 1. Por ejemplo, un mensaje desde un maestro
a un esclavo para leer un grupo de registros sostenidos tendría el siguiente código
de función:
0000 0011 (Hexadecimal 03)
El campo datos puede ser inexistente (de longitud cero) en ciertos tipos de
mensajes. Por ejemplo, en una petición de un dispositivo maestro a un esclavo para
que responda con su anotación de eventos de comunicación (Código de función 0B
hexadecimal), el esclavo no requiere ninguna información adicional. El código de
función por sí solo especifica la acción.
Dos tipos de métodos de comprobación de error son utilizados para las redes
Modbus Standard. El contenido del campo Comprobación de Error depende del
método que esté siendo utilizado.
ASCII
Cuando el modo ASCII es usado para trama de carácter, el campo Comprobación
de Error contiene dos caracteres ASCII. Los caracteres de comprobación de error
son el resultado de un cálculo Comprobación Longitudinal Redundante (LRC) que
es realizado sobre el contenido del mensaje, excluyendo los ‘dos puntos’ del
comienzo y los caracteres CRLF de finalización.
Los caracteres LRC son añadidos al mensaje como el último campo que precede a
los caracteres CRLF.
RTU
Cuando el modo RTU es usado para trama de carácter, el campo Comprobación de
Error contiene un valor de 16 bits implementado como dos bytes de 8 bits. El valor
de comprobación de error es el resultado de un cálculo Comprobación Cíclica
Redundante (CRC) realizado sobre el contenido del mensaje.
La forma de hacerlo es, añadir primero el byte de orden bajo del campo, seguido
del byte de orden alto. El byte de orden alto del CRC es el último byte a enviar en el
mensaje.
Cuando los mensajes son transmitidos sobre redes serie standard Modbus, cada
carácter o byte es enviado en este orden (izquierda a derecha):
Las redes series standard Modbus utilizan dos tipos de comprobación de error. La
comprobación de paridad (par o impar) puede ser aplicada opcionalmente a cada
carácter. La comprobación de la trama (LRC o CRC) es aplicada al mensaje
completo. Ambas comprobaciones, de carácter y de trama de mensaje son
generadas en el dispositivo maestro y aplicadas a los contenidos del mensaje antes
de la transmisión. El dispositivo esclavo comprueba cada carácter y la trama del
mensaje completo durante la recepción.
Otras redes tales como MAP y Modbus Plus utilizan comprobación de trama a un
nivel por encima del contenido Modbus del mensaje. En esas redes, el campo de
comprobación LRC o CRC del mensaje Modbus no se aplica. En caso de error de
transmisión, el protocolo de comunicación específico a esas redes notifica al
dispositivo que inició la comunicación que ha ocurrido un error y le permite reintentar
o abortar de acuerdo a cómo ha sido configurado. Si el mensaje ha sido enviado,
pero el dispositivo esclavo no puede responder, puede ocurrir un error de tiempo
excedido que puede ser detectado por el programa del maestro.
Control de Paridad
Seminario de Titulación Protocolo de Comunicación Modbus
Los usuarios pueden configurar los controladores para Control de paridad Par o
Impar, o Sin Control de paridad. Esto determinará cómo será iniciado el bit de
paridad en cada carácter. Si se especifica cualquier control de paridad Par o Impar,
se contabilizará la cantidad de bits que tienen valor 1 en la porción de datos de cada
carácter (siete bits de datos para modo ASCII, u ocho para RTU). Al bit de paridad
habrá de darse valor 0 o 1, para que se obtenga finalmente un número par o impar,
respectivamente, de bits con valor 1.
Por ejemplo, estos 8 bits de dato forman parte de una trama de carácter RTU:
1100 0101
Comprobación LRC
El campo LRC es un byte, conteniendo un valor binario de ocho bits. El valor LRC
es calculado por el dispositivo emisor, que añade el LRC al mensaje. El dispositivo
receptor calcula el LRC durante la recepción del mensaje y compara el valor
calculado con el valor recibido en el campo LRC. Si los dos valores no son iguales,
resulta un error.
El valor LRC se calcula sumando entre sí los sucesivos bytes del mensaje,
descartando cualquier acarreo y luego complementando a dos el valor resultante.
Se realiza sobre el contenido del campo de mensaje ASCII excluyendo el carácter
‘:’ de comienzo del mensaje y excluyendo el par CRLF de final de mensaje.
Comprobación CRC
En modo RTU, los mensajes incluyen un campo de comprobación de error que está
basado en un método Comprobación de Redundancia Cíclica (CRC). El campo CRC
Seminario de Titulación Protocolo de Comunicación Modbus
Para calcular el valor CRC Modbus se precarga un registro de 16 bits, todos ellos a
1. Luego comienza un proceso que toma los sucesivos bytes del mensaje y los
opera con el contenido del registro y actualiza éste con el resultado obtenido. Sólo
los 8 bits de dato de cada carácter son utilizados para generar el CRC. Los bits de
arranque y paro y el bit de paridad, no se tienen en cuenta para el CRC.
CAPITULO 3
Este capitulo pretende dar un panorama de las funciones que realiza un controlador
Modbus, de cómo un maestro realiza las peticiones y como es la respuesta de un
dispositivo esclavo. Así como la explicación de cual es el propósito de cada función
y los controladores que soportan a dichas funciones.
Seminario de Titulación Protocolo de Comunicación Modbus
A menos que se especifique otra cosa, los valores numéricos (tales como
direcciones, códigos, o datos) se expresan como valores decimales en el texto de
esta sección. Son expresados como valores hexadecimales en los campos del
mensaje de las figuras.
Todos las direcciones en los mensajes Modbus son referenciadas a cero. La primera
unidad de cada tipo de dato es direccionada como parte número cero. Por ejemplo:
El registro mantenido 40108 es direccionado como registro 006B hex (107 decimal).
La respuesta del esclavo replica el código de función, indicando que esto es una
respuesta normal. El campo ‘Cómputo de Bytes’ especifica cuántas unidades de
datos de 8 bits se devuelven. Muestra la cantidad de bytes de datos que vienen a
continuación, bien ASCII o RTU. En el modo ASCII, este valor representa la mitad
del cómputo real de caracteres ASCII en el dato, ya que en este modo, cada dígito
hexadecimal de 4 bits requiere un carácter ASCII y por lo tanto, debe haber dos
caracteres ASCII para contener cada unidad de dato de 8 bits.
Por ejemplo, el dato: 63 hex se envía como un byte – ocho bits - en modo RTU
(0110 0011).
El mismo valor, enviado en modo ASCII requiere dos caracteres ASCII, el ASCII ‘6’
(011 0110) y el ASCII ‘3’ (011 0011). El campo ‘Cómputo de bytes’ contabiliza este
dato como una sola de dato de 8 bits , con independencia del método de trama de
carácter (ASCII o RTU).
Los mensajes Modbus enviados sobre redes Modbus Plus están integrados en la
trama dentro del nivel Logical Link Control (LLC). Los campos del mensaje Modbus
sobre Modbus Plus consisten en bytes de 8 bits de forma similar a la utilizada con
la trama RTU.
La figura 3.3 muestra cómo se integraría una petición Leer Registros sostenidos en
una trama para transmisión Modbus Plus.
Seminario de Titulación Protocolo de Comunicación Modbus
El listado de más abajo muestra los códigos soportados por los controladores
Modicon. Los códigos se listan en decimal.
‘Y’ indica que la función está soportada. ‘N’ indica que no está soportada.
09 Programar 484 N Y N N N N
10 Selección 484 N Y N N N N
11 Buscar Contador de Eventos de Y N Y N N Y
Comunicación
12 Buscar Anotac de Eventos de Comunic Y N Y N N Y
13 Programar Controlador Y N Y N N Y
14 Selección Controlador Y N Y N N Y
15 Forzar Múltiples Bobinas Y Y Y Y Y Y
16 Preestablecer Múltiples Registros Y Y Y Y Y Y
17 Reportar Identificación de Esclavo Y Y Y Y Y Y
18 Programar 884/M84 N N N Y Y N
19 Resetear Enlace de Comunicaciones N N N Y Y N
20 Leer Referencia General N N Y N N Y
21 Escribir Referencia General N N Y N N Y
22 Escribir con máscara en Registros 4X N N N N N (1)
23 Leer/Escribir Registros 4X N N N N N (1)
24 Leer Cola FIFO N N N N N (1)
Pregunta
A continuación un ejemplo de una petición para leer las bobinas 20-56 del esclavo
17:
Seminario de Titulación Protocolo de Comunicación Modbus
Respuesta
Los estatus de las bobinas en el mensaje es empaquetado como una bobina por bit
de el campo de dato, Los estados son indicados como 1= ON; 0=OFF, el bit menos
significativo de el primer byte de datos contiene la bobina direccionada en la
pregunta, las otras bobinas siguen hacia el extremo del orden alto de este byte, y
de ‘el orden bajo al orden alto ' en los bytes subsecuentes.
Los estatus de las bobinas 27-20 son mostrados como el byte con valor CD en
hexadecimal o el binario 11001102. el estatus de la bobina numero 27 es el bit mas
significativo del byte, y la bobina 20 el bit menos significativo. De izquierda a derecha
el estatus de la bobina 27 hasta la 20 son:, ON–ON–OFF–OFF–ON–ON–OFF–ON.
Por convención, el bit mas significativo del byte es puesto a la izquierda y el menos
significativo a la derecha de dicho byte. Así las bobinas en el primer byte son de la
“27 a la 20”, de izquierda a derecha. El siguiente byte tiene las bobinas “35 a la 28”
de izquierda a derecha. Como los bits son trasmitidos serialmente, estos fluyen del
bit menos significativo (LSB) a el más significativo (MSB): 20…..27, 28…..35, y así
sucesivamente.
En el ultimo byte de datos, el estatus de las bobinas son mostrados como el byte
cuyo valor es 1B en hexadecimal o 00011011 en binario. La bobina numero 56 esta
en la cuarta posición de la izquierda y la bobina numero 52 es el bit menos
significativo del byte (LSB). Los estatus de las bobinas “56 a la 52” son ON-ON-
OFF-ON-ON. Note como los 3 bit restantes bits son llenados con ceros (hacia el
extremo mas alto).
Pregunta
Seminario de Titulación Protocolo de Comunicación Modbus
Aquí se muestra un ejemplo de una petición para leer las estradas de 10197-10218
del dispositivo esclavo numero 17.
Los estatus de las entradas 10204-10197 son mostrados como el byte con valor AC
en hexadecimal, o 10101100 en binario. La entrada 10204 es el bit más significativo
de este byte, y la entrada 10197 es el bit menos significativo.
De izquierda a derecha, los estatus de las entradas 10204 hasta 10197 son: ON-
OFF-ON-OFF-ON-ON-OFF-OFF.
Los estatus de las entradas 10218-10213 son mostrados como el byte con valor 35
hexadecimal, o 00110101 binario. La entrada 10218 esta en la posición del tercer
bit de la izquierda, y la entrada 10213 es el bit menos significativo (LSB). El estatus
de las entradas 10218 hasta 10213 son ON-ON-OFF-ON-OFF-ON. Note como los
dos bits sobrantes son llenados con cero (hacia el extremo más significativo).
Descripción
Lee el contenido binario de registros sostenidos (referencia 4x)
En transmisión modo broadcast esta opción no esta soportada.
El apéndice B muestra los parámetros máximos soportados por varios modelos de
controladores.
Pregunta
Seminario de Titulación Protocolo de Comunicación Modbus
Aquí hay un ejemplo de una petición para leer los registros 40108 a 40110 del
dispositivo esclavo 17.
Respuesta
El dato del registro es empaquetado en el mensaje de respuesta como dos bytes
por registro, tonel contenido en binario correctamente justificado en cada byte. Para
cada registro, el primer byte contiene los bits de la parte alta, y el segundo contiene
los bits de la parte baja.
Los datos son revisados en el esclavo a razón de 125 registros por revisión para
controladores 984-SEX (984-685, etc), y a razón de 32 registros por revisión para el
resto de controladores. La respuesta es regresada cuando el dato es
completamente integrado.
El contenido del registro 40108 es desplegado como el valor de los dos bytes con
valor de 02 2B en hexadecimal, o 555 en decimal. El contenido de los registros
40109-40110 son 00 00 y 00 64 en hexadecimal o 0 y 100 en decimal.
Descripción
Pregunta
Respuesta
Los datos son revisados en el esclavo a razón de 125 registros por revisión para
controladores 984-SEX (984-685, etc), y a razón de 32 registros por revisión para el
resto de controladores. La respuesta es regresada cuando el dato es
completamente integrado.
El contenido del registro 30009 es representado con dos bytes cuyo valor es 00 0A
en hexadecimal o 10 en decimal
Descripción
Obliga a una simple bobina a tomar alguno de sus valores ON/OFF (referencia 0X).
Cuando se usa un broadcast la función obliga a las mismas bobinas en todos los
dispositivos adjuntados al mensaje.
Pregunta
Respuesta
Descripción
Poner un valor predeterminado a un registro sostenido simple (referencia 4x).
Cuando ocurre un broadcast, la función pone la misma referencia del registro en
todos los esclavos adjuntos.
Pregunta
Esta función proporciona un método simple para acceder a esta información, porque
las referencias de las bobinas de excepción son conocidas (no se necesita la
referencia de la bobina).
Respuesta
La respuesta normal contiene el estatus de excepción de las 8 bobinas. Las bobinas
son empaquetadas en un solo byte, con un bit por bobina. El estatus de la bobina
con referencia menor es contenido en el bit menos significativo.
Si el controlador es un 984, estos bits son los estatus de las bobinas 8 hasta 1.
Si el controlador es a 484, estos bits son los estatus de las bobinas 264 hasta 257.
en este ejemplo la bobina 257 esta en ON, indicando que la batería del controlador
esta en perfecto estado.
Seminario de Titulación Protocolo de Comunicación Modbus
Descripción
El contador de eventos del controlador es incrementado una vez por cada mensaje
exitoso completo. Este contador no es incrementado por respuestas de excepción,
comandos de encuesta, o comandos de traída del contador de eventos de
comunicaciones.
Pregunta
Respuesta
Seminario de Titulación Protocolo de Comunicación Modbus
Descripción.
El campo de bytes de eventos contiene 0-64 bytes. En donde cada byte corresponde
al estatus de una operación Modbus enviada o recibida por el dispositivo esclavo.
Los eventos son ingresados por el esclavo dentro del campo en orden cronológico.
El byte cero es el byte con el estatus del evento más reciente. Cada nuevo byte
recorre a los demás en el campo de los 64 bytes.
Pregunta
Respuesta
La respuesta normal contiene un campo de dos bytes con una palabra de estatus,
un campo de dos bytes con el contador de eventos, un campo de dos bytes para el
contador de mensajes, y un campo de 0-64 bytes de eventos. Un campo de contador
de bytes define la longitud de los datos en estos cuatro campos.
Este tipo de bytes de eventos son almacenados por el esclavo cuando un mensaje
de respuesta es recibido. Es almacenado antes que el esclavo procese el mensaje.
Este evento es definido por el bit 7 puesto el estado lógico de 1. Los otros bits serán
puestos con un uno lógico si las siguientes condiciones son ciertas. El esquema de
bits es:
Bit Contenido
0 No usado
1 Error de comunicación
2 No usado
3 No usado
4 Carácter desbordado
5 Actualmente en modo de solo escuchar.
6 Broadcast recibido
7 1
Este tipo de bytes de eventos son almacenados por el esclavo cuando este termina
de procesar un mensaje de petición. Este byte es almacenado por el esclavo si
regresa una respuesta normal o de excepción, o no responde. Este evento es
definido por el bit 7 puesto en un cero lógico, con el bit 6 puesto en uno lógico. Los
otros bits serán puestos en 1 lógico si la condición correspondiente es verdadera.
El esquema de bits es:
Bit Contenido
0 Excepción de lectura enviado (código de excepción 1-3)
1 Excepción de interrupción de esclavo (código de excepción 4)
2 Excepción de esclavo ocupado (código de excepción 5-6)
3 Excepción de programa NAK esclavo (código de excepción 4)
4 A ocurrido un error de tiempo de espera para escritura
5 Actualmente en modo de solo escuchar.
6 1
7 0
Este tipo de byte de evento es almacenado por el esclavo cuando entra en el modo
de solo escuchar. El evento es definido por un contenido de 04 hexadecimal. El
esquema de bits es el siguiente:
Bit Contenido
0 0
1 0
2 1
3 0
4 0
5 0
6 0
7 0
Esta función también pone al esclavo en el modo de “continuar con error” o “parar
con error”. Si el esclavo es puesto en el modo “continuar con error”, el byte de evento
es sumado al registro existente de eventos. Si el esclavo es puesto en el modo de
“parar con error”, El byte es sumado al registro y el resto del registro es borrado con
ceros.
Bit Contenido
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
Forzar cada bobina (referencia 0X) en una secuencia para ponerlas en encendido
o apagado. Esta función tiene la posibilidad de ser enviada en un broadcast lo que
ocasionara que las mismas bobinas sean forzadas en todos los esclavos de la red.
Pregunta
Los datos contenidos en la pregunta son dos bytes: CD 01 hexadecimal (1100 1101
0000 0001 binario). Los bits binarios corresponden a las bobinas en el siguiente
orden:
Bit: 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1
Bobina 27 26 25 24 23 22 21 20 - - - - - - 29 28
Respuesta
Descripción
Esta función pretende predefinir los valores en una secuencia de registros
sostenidos (referencia 4X). Esta función soporta ser enviada por un broadcast y
Seminario de Titulación Protocolo de Comunicación Modbus
cuando esto ocurra la función fijara los mismos registros referenciados en todos los
dispositivos esclavos.
Pregunta
El mensaje de pregunta especifica las referencias de los registros que serán fijados.
Los registros son direccionados iniciando en cero: el registro “1” es diseccionado
como “0”.
Los valores solicitados para ser fijados están especificados en el campo de datos
de la pregunta. Los controladores M84 y 484 usan un valor binario de 10 bits. Con
los seis bits de más alto orden puestos a cero. Todos los demás controladores usan
un valor de 16 bits. Los datos son empaquetados como dos bytes por registro.
Aquí se muestra un ejemplo de una petición para fijar dos registros iniciando en
40002 en 00 0A y 01 02 hexadecimal respectivamente en el esclavo 17:
Seminario de Titulación Protocolo de Comunicación Modbus
Respuesta
Descripción
Pregunta:
Aquí esta un ejemplo de una petición para reportar el identificador del dispositivo
esclavo 17:
Respuesta:
Estos son los códigos de identificadores de los esclavos regresados por los
controladores Modicon en el primer byte de los campos de datos:
184/384
El controlador 184 o 384 regresa una cantidad de bytes que será 4 o 74 (4A
hexadecimal). Si el controlador esclavo de Modbus es el J346 y se encuentra
instalado apropiadamente, y la su tabla interna de PIB es normal, la cantidad de
bytes será 74. En cualquier otro caso los bytes serán 4.
Byte Contenido
1 ID del esclavo (2 para los controladores 184/384). Ver los bytes 3,4 para
más información.
Byte Contenido
5, 6 Dirección de inicio de la tabla PIB
7, 8 Numero de serie del controlador
9, 10 identificador ejecutivo
Los bytes 11 a 74 contienen a la tabla PIB. Estos datos son
validos solo si el controlador esta corriendo (ver byte 2) la tabla
contiene lo siguiente:
11,12 Numero máximo de bobinas de salida
13,14 Tabla de bobinas de salida habilitadas.
15,16 Dirección de bobina de entrada/tabla corriendo
17,18 Cantidad de bobinas de entrada.
19,20 Tabla de bobinas de entrada habilitadas.
21,22 Primer numero de picaporte (deberá ser múltiplo de 16)
23,24 Ultimo numero de picaporte (deberá ser múltiplo de 16)
Seminario de Titulación Protocolo de Comunicación Modbus
584
Byte Contenido
1 ID del esclavo (3 para el 584)
2 Indicador de estatus corriendo (0= apagado, FF= encendido)
3 Cantidad de secciones de 4k de paginas en memoria
4 Cantidad de secciones de 1k en RAM
5 Cantidad de segmentos de lógica del usuario
6,7 Palabra de estado de maquina (configuración de palabra 101, 65
hexadecimal)
La palabra es organizada como sigue:
Byte 6:
Bit 15 (MSB del byte 6) = configuración del puerto 1
Bit 14= configuración puerto 2
Bit 13= puerto 1 dirección fija
Bit 12 = puerto 2 dirección fija.
Bit 11= no asignado
Bit 10= estatus de barrido constante (0 = barrido constante apagado, 1
= encendido)
Bit 9 = estatus de barrido simple (0 = barrido simple apagado, 1=
encendido)
Bit 8 = nodos de 16/24 bits (0= nodo de 24 bits, 1= nodo de 16 bits)
Byte 7
Bit 7 (MSB del byte 7) = Alimentación (1= encendido, nunca debe ser
0).
Bit 6= indicador de estatus corriendo (0= encendido, 1 =apagado).
Bit 5= estatus de protección a la memoria (0= encendido, 1= apagado).
Bit 4 = bateria OK (0=OK, 1= problema).
Bit 3-0= no asignado
Byte 9
Bit 7 (MSB of byte 9) = expiración del watchdog timer.
Bit 6= error del reloj de tiempo real.
Bit 5= diagnostico del CPU fallido.
Bit 4 = tipo de trafico invalido
Bit 3 = tipo de nodo invalido.
Bit 2 = error en la lógica del checksum
Bit 1 =error en el checksum de respaldo
Bit 0 =configuración ilegal.
984
Byte 7
Bit 7 (MSB del byte 7) = Alimentación (1= encendido, nunca debe ser 0).
Bit 6= indicador de estatus corriendo (0= encendido, 1 =apagado).
Bit 5= estatus de protección a la memoria (0= encendido, 1= apagado).
Bit 4 = bateria OK (0=OK, 1= problema).
Bit 3-1= no asignado
Bit 0: bandera de tamaño bajo de memoria ( 0= No, 1= Tamaño bajo)
Byte 9
Bit 7 (MSB of byte 9) = expiración del watchdog timer.
Bit 6= error del reloj de tiempo real.
Bit 5 (984A, B, X)= diagnostico del CPU fallido.
Bit 5 (otro 984)= bobina dañada uso la tabla
Bit 4 = S908 fallo de cabeza remota de IO
Bit 3 = tipo de nodo invalido.
Bit 2 = error en la lógica del checksum
Bit 1 =error en el checksum de respaldo
Bit 0 =configuración ilegal.
MICRO 84
Byte Contenido
1 identificador del esclavo (0 para el micro 84)
2 Indicador de estatus corriendo (0= apagado, FF= encendido).
3 Número de puerto actual
Seminario de Titulación Protocolo de Comunicación Modbus
4 Tamaño de la memoria
5-8 No usados (todos en ceros)
484
Byte Contenido
1 identificador del esclavo (1 para el 484)
2 Indicador de estatus corriendo (0= apagado, FF= encendido).
3 Estado del sistema
4 Primer byte de configuración
5 Segundo byte de configuración
884
Byte Contenido
1 identificador del esclavo (8 para el 884)
2 Indicador de estatus corriendo (0= apagado, FF= encendido).
3 Número del puerto actual
4 Tamaño de la lógica del usuario mas el estado de la RAM, en
kilobytes (1 palabra = 2 bytes).
5 Reservado
6 Bits de enganche
Bit 0 – 2 = reservado
Bit 3 =desviación del trazador: 1 no usar el trazador estándar.
Bit 4 = fin de la prueba de análisis, 1= fin del análisis de los links.
Bit 5 = reservado
Seminario de Titulación Protocolo de Comunicación Modbus
Descripción:
Esta función regresa el contenido de los registros ubicados en el archivo de
referencias de la memoria extendida (6XXX). El broadcast no esta soportado.
La función puede leer grupos múltiples de referencias. El grupo puede ser separado
(no necesariamente grupos contiguos), pero las referencias dentro de cada grupo
deberán ser secuénciales.
Pregunta
La cantidad de registros a ser leídos, combinados con todos los otros campos en la
respuesta esperada, no podrán exceder la longitud de un mensaje modbus: 256
bytes.
Seminario de Titulación Protocolo de Comunicación Modbus
Para controladores diferentes a los 984 – 785 con registros extendidos, el último
registró (el mayor) en el último archivo es:
Para los controladores 984 – 785 con registros extendidos, el último registró (el
mayor) en el ultimo archivo es mostrado en las dos tablas siguientes.
Un ejemplo de una petición para leer dos grupos de referencias del esclavo 17 es
mostrado a continuación:
Grupo 1 consiste de dos registros del archivo 4, iniciando en el registro 1 (dirección
0001).
Grupo 2 consiste de dos registros del archivo 3, iniciando en el registro 9 (dirección
0009).
La respuesta normal es una serie de “sub – respuestas”, cada una de las “sub -
peticiones”. La campo de cantidad de bytes es el total combinado de la cantidad en
Seminario de Titulación Protocolo de Comunicación Modbus
todas las sub respuestas. En suma, cada “sub – respuesta” contienen un campo
que muestra su propia cantidad de bytes.
Descripción:
Esta función escribe el contenido de los registros ubicados en el archivo de
referencias de la memoria extendida (6XXX). El broadcast no esta soportado.
Pregunta
Seminario de Titulación Protocolo de Comunicación Modbus
La cantidad de registros a ser escritos, combinados con todos los otros campos en
la pregunta, no podrán exceder la longitud de un mensaje modbus: 256 bytes.
Para controladores diferentes a los 984 – 785 con registros extendidos, el último
registró (el mayor) en el último archivo es:
Tamaño de memoria extendida Ultimo archivo Ultimo registro (decimal)
16K 2 6383
Seminario de Titulación Protocolo de Comunicación Modbus
32K 4 2767
64K 7 5535
96K 10 8303
Para los controladores 984 – 785 con registros extendidos, el último registró (el
mayor) en el ultimo archivo es mostrado en las dos tablas siguientes.
Respuesta:
La respuesta normal es un eco de la pregunta
Descripción
Pregunta
La pregunta especifica la referencia 4XXXX a ser escrita, el dato a ser usado con la
mascara AND, y el dato a ser usado con la mascara OR.
Por ejemplo:
Hexadecimal Binario
Contenido actual = 12 0001 0010
mascara_AND = F2 1111 0010
mascara_OR = 25 0010 0101
El contenido del registro puede ser leído con la función de lectura de registros
sostenidos (código de función 03). Pero los registros pueden serán cambiados por
la lógica del controlador cuando este entre en esta parte de su rutina.
Descripción
Pregunta
La respuesta normal contiene los datos del grupo de registros que fueron leídos. El
campo de cantidad de bytes especifica la cantidad de bytes que seguirán en el
campo de lectura de datos.
Descripción
Esta función da lectura a una cola de registros 4X del tipo primero en entrar primero
en salir. La función regresa la cantidad de registros en la cola, seguidos pos los
datos de la cola. Hasta 32 registros pueden ser leídos: el contador, mas 31 registros
almacenados en la cola. El contador de la colado es regresado primero y después
los datos.
La función da lectura a los datos que están contenidos en la cola, pero no limpia la
cola después de realizar dicha operación. Broadcast no esta soportado.
Pregunta
Respuesta
CAPITULO 4
SUBFUNCIONES DE DIAGNOSTICO
SUBFUNCIONES DE DIAGNOSTICO
Descripción
Pregunta
Este ejemplo es una petición para el esclavo 17 para regresar los datos. Este
ejemplo usa una código de subfunción cero (00 00 hexadecimal en los dos bytes
del campo). El dato a ser regresado es enviado en los dos bytes del campo de datos
(A5 37 hexadecimal).
Respuesta
modifica el estado de solo lectura del puerto. Si el puerto no esta en el modo de solo
lectura ocurrirá una respuesta normal. Esto ocurrirá antes de que se reinicie todo.
el carácter que es pasado en la pregunta dentro del campo de datos vendrá a ser el
carácter delimitador del fin de mensaje para los futuros mensajes (remplazando el
Seminario de Titulación Protocolo de Comunicación Modbus
carácter por default Line Feed). Esta función es útil donde el line feed no es
esperado en el final de los mensajes ASCII.
Para controladores diferentes a los 584 o 984, es posible borrar todos los
contadores y el registro de diagnostico. Par el 584 o 984 solo es posible borrar los
Seminario de Titulación Protocolo de Comunicación Modbus
CAPITULO 5
Seminario de Titulación Protocolo de Comunicación Modbus
MODBUS TCP/IP
DESCRIPCIÓN FUNCIONAL
Petición Modbus
Confirmación Modbus
Indicación Modbus
Respuesta Modbus
protocolo Modbus sobre redes o buses específicos puede agregar algunos campos
adicionales a la unidad de datos de la aplicación (ADU).
la petición
recibida
Longitud 2 Bytes Numero de Iniciado por el Iniciado por el
bytes cliente servidor
siguiendo (petición) (respuesta)
Identificador de 1 Byte Identificación Iniciado por el Recopilado por
unidad de un esclavo cliente el servidor de
conectado la petición
remotamente recibida
en una línea
serial o sobre
otro bus.
Administrad
or TCP
Pila TCP/IP
Cuatro áreas pueden componer esta interfase: entradas discretas, salidas discretas
(bobinas), entrada de registros y salida de registros. Un trazado entre esta interfase
y la aplicación de datos del usuario tiene que ser realizada (edición local).
Entradas discretas
Petición MODBUS
Bobinas
Registros de
entrada
Registros de salida
El cliente Modbus permite a la aplicación del usuario tener control del intercambio
de la información con un dispositivo remoto. El cliente Modbus construye una
petición Modbus de los parámetros contenidos en una petición enviada por la
aplicación del usuario a la interfase del cliente Modbus.
Servidor Modbus
Seminario de Titulación Protocolo de Comunicación Modbus
Con la recepción de una petición Modbus este modulo activa una acción local para
leer, escribir o realizar alguna otra acción. El procesamiento de estas es realizado
de una manera transparente para las aplicaciones del programador. El servidor
principal de Modbus es esperar por una petición Modbus en el puerto 502 de TCP,
para tratar esta petición y entonces construir una respuesta Modbus dependiendo
del contexto del dispositivo.
La interfase trasera es una interfase del servidor Modbus para la aplicación del
usuario en donde los objetos de la aplicación son definidos.
Administrado de conexión.
Una comunicación entre el cliente y el servidor Modbus requiere el uso de un modulo
de administración de conexión TCP. El cual esta a cargo de manejar globalmente
los mensajes en las conexiones TCP.
Dos posibilidades son proporcionadas para el administrador de conexión. La
aplicación del usuario maneja las conexiones TCP o la administración de conexión
esta hecha en su totalidad por el modulo y sin embargo es transparente para la
aplicación del usuario. La última solución implica menos flexibilidad.
El puerto de escucha 502 esta reservado para las comunicaciones en Modbus. Esto
es obligatorio por default escuchar en este puerto. Sin embargo, algunas marcas o
aplicaciones podrían requerir que otro puerto este dedicado a Modbus sobre TCP.
En este caso cuando la interoperatividad es requerida con productos que no son
similares como suele pasar en un cuarto de control. Por esta razón es altamente
Seminario de Titulación Protocolo de Comunicación Modbus
La pila TCP/IP puede ser parametrizada para adaptar el control de flujo de datos, el
administración de direcciones y el administrador de conexión para diferentes
equipos o sistemas. Generalmente la interfase del socket BSD es usada para
administrar las conexiones TCP.
Para equilibrar el flujo de los mensajes de entrada y salida entre el cliente Modbus
y el servidor, el mecanismo de control de flujo de datos es proporcionado en todas
las capas de pilas de mensajes Modbus.
El administrador de código y él modulo de control esta basado principalmente sobre
el control de flujo interno en TCP sumado con algún control de flujo de datos en la
capa de enlace de datos y también en el nivel de la aplicación del usuario.
Descripción general
En el primer caso una interfase aplicación de interfase programada tendrá que ser
proporcionada en el modulo de la aplicación del usuario para administrar
completamente la conexión. Esta solución proporciona flexibilidad para el
programador de la aplicación pero requiere de una buena experiencia sobre
mecanismos TCP/IP.
Reglas de implementación:
5)En el caso de una comunicación bidireccional entre dos entidades remotas (cada
una de ellos es cliente y servidor), es necesario abrir conexiones separadas para el
flujo de datos del cliente y para el flujo de datos del servidor.
6) una trama de TCP podrá transportar solo un ADU Modbus. Esto es avisado antes
de enviar múltiples peticiones o respuestas de Modbus sobre el mismo PDU TCP.
Él moduló de la aplicación del usuario esta a cargo de manejar todas las conexiones
TCP: establecidas activamente o pasivamente, fin de conexión.......Este
administrador esta hecho para todas las comunicaciones Modbus entré un servidor
y un cliente. La interfase del socket BSD es usada en él modulo de la aplicación del
usuario para administrar la conexión TCP. Esta solución ofrece una total flexibilidad
pero implica que el programador de la aplicación tenga suficiente conocimiento
sobre TCP.
Seminario de Titulación Protocolo de Comunicación Modbus
Una conexión con una pareja remota es establecida en el primer paquete recibido
de un cliente remoto o de la aplicación del usuario local. Esta conexión será cerrada
si una terminación llega de la red o se decide localmente por el dispositivo. En la
recepción de una petición de conexión, la opción de control de acceso puede ser
usado para prohibir la accesibilidad a dispositivos clientes no autorizados.
dispositivo para evitar que el mismo dispositivo use todas las conexiones
posibles.
La segunda conexión (conexión sin prioridad en el poleo) contiene conexiones
para dispositivos no marcados. Las reglas a tomar para este caso es cerrar las
conexiones más viejas cuando una nueva conexión es solicitada por un
dispositivo no marcado y cuando no existen más conexiones disponibles.
Una petición tiene que ser enviada a la conexión TCP correctamente abierta. La
dirección IP del dispositivo remoto es usada para encontrar la conexión TCP. En
caso de varias conexiones TCP abiertas con el mismo dispositivo. Se elegirá una
conexión para que el mensaje de Modbus sea enviado. Diferentes criterios de
elección son usados como son la conexión más antigua, la primera. La conexión
permanecerá abierta durante toda la comunicación Modbus. El cliente puede
establecer varias transferencias Modbus con un servidor sin que la transferencia
anterior finalice.
Terminación de comunicación
El objetivo de este modulo es checar cada conexión nueva y usando una lista de
direcciones IP remotas autorizadas el modulo puede autorizar o prohibir una
conexión de un cliente remoto.
Seminario de Titulación Protocolo de Comunicación Modbus
Una pila de TCP/IP proporciona una interfase para administrar conexiones, para
enviar y recibir datos, y también para hacer algunas parametrizaciones para adaptar
el comportamiento de la pila para el dispositivo.
Esperar por una respuesta que aparecerá por la misma conexión TCP,
opcionalmente se puede incluir un tiempo de espera en este punto, si se
desea tener algún aviso de problemas de comunicación tan rápido como
TCP normalmente reporta.
Leer con alguna función los 6 primeros bytes de la respuesta, que indicara
la longitud actual del mensaje de respuesta.
En los eventos donde ser incluye un tiempo de espera para una respuesta se emitirá
un aviso de cierre unilateralmente, abrirá una nueva conexión, y reenviara la
pregunta. Esta técnica permite al cliente el control de tiempos de respuesta que es
superior al proporcionado por TCP. Esto permite también alternar estrategias de
fallback, como es enviar la petición a otra IP alterna, usando una red de
comunicación totalmente independiente, en caso de una falla de la infraestructura
de la red.
Seminario de Titulación Protocolo de Comunicación Modbus
Servidor Multi-hilos
Sistemas operativos o lenguajes que alientan el uso de múltiples hilos como es java
usan la estrategia de multi-hilos descrita aquí:
Emitir una pregunta de los 6 bytes de la cabecera de Modbus TCP/IP. No poner una
interrupción aquí, pero en cambio estará esperando hasta que una pregunta venga
o la conexión sea cerrada. Ambas situaciones invocaran al hilo automáticamente.
Usar una función de recibo para los siguientes bytes del mensaje, cuya longitud ya
conocemos. Podemos notar que al usar una función de recepción con una longitud
conocida tolerara clientes que insisten en encimar peticiones.
Generar el prefijo Modbus para la respuesta, como un solo buffer para ser
transmitido en la conexión, usando una función de envió.
Algunos sistemas integrados con sistemas viejos como es UNIX o MS-DOS alientan
el manejo de múltiples conexiones usando la llamada de “select” de la interfase de
Seminario de Titulación Protocolo de Comunicación Modbus
Usar una función de escucha para las conexiones entrantes en el puerto 502.
Desde la perspectiva de un cliente, el tiempo deberá ser extendido por los retardos
de transmisión a través de la red. Para determinar un tiempo se respuesta
Seminario de Titulación Protocolo de Comunicación Modbus
razonable. Tales retardos de transporte pueden ser de mili segundos para redes
Ethernet o cientos de segundos para una red de área amplia.
Así en la práctica, siempre es probable que las interrupciones del cliente usadas en
aplicaciones de alto desempeño son siempre dependientes a la topología de la red
y la actuación esperada del cliente.
CAPITULO 6
APLICACIÓN
MONITOREO DE DENSITOMETROS
Seminario de Titulación Protocolo de Comunicación Modbus
El propósito de este capitulo es mostrar algunos ejemplos prácticos del uso de este
protocolo, donde quedara claro las ventajas y alcance de las aplicaciones, no es el
objetivo dar a detalle los pormenores del desarrollo ya que esto es información de
las empresas desarrolladoras.
Control de válvulas
Totalización por lotes
Totalización por estación
Control con programas de calibración de sus medidores
Control del proceso por presión y/o por flujo
Seminario de Titulación Protocolo de Comunicación Modbus
Los equipos fueron evolucionando hasta poder manejar los puntos anteriores, pero
no existía una interfase hombre maquina, la configuración y operación del equipo
se realizaba frente a panel, siendo un trabajo cansado y que requeria amplio
conocimiento del equipo.
Así pues las principales marcas en el desarrollo de los computadores de flujo tiene
la necesidad de proporcionar una interfase hombre maquina, y el protocolo Modbus
es elegido por OMNI Flor Computer, al ser OMNI el computador más vendido a nivel
mundial el resto de los fabricantes tienen que diseñar computadores de flujo con
Modbus en sus puertos, para poder ofrecer una interfase hombre maquina a través
de una PC.
OMNI baja su poder en el mercado mundial y muchas marcas empiezan a colocar
mejor sus equipos en la industria del petróleo, y nos encontramos con equipos
nuevos como es AcuLoad, y la familia de computadores 795X de Solartron Mobrey,
estos últimos con un desarrollo tremendo de tecnología, y sobre todo desarrollo en
el aspecto de comunicaciones, teniendo puertos seriales con el protocolo Modbus,
esto podrá sonar trivial ya que OMNI contaba también con protocolo Modbus, pero
Solartron implemento cosas realmente innovadoras como es la total configuración
del Modbus del computador, ya que permite elegir el modo de transmisión entre
ASCII o RTU, así como la velocidad de esta transmisión.
Pero esta característica es solo una parte del desarrollo de Solartron Mobrey, el
equipo que funciona como esclavo puede ser también un maestro, pero se debe de
tener la precaución de no intentar esto por el mismo puerto ya que eso no es posible
y causaría una colisión de datos, lo que provoca que los equipos se reinicien, con
lo que perderán su totalización y si el equipo esta controlando válvulas puede causar
problemas operativos, es por ello que se cuenta con 3 puertos seriales y con la
posibilidad de tener un puerto Ethernet por medio del cual se puede tener acceso
vía TCP/IP.
como “Duty” sufre algún daño la computadora “Stand by” toma su lugar en el control
del proceso.
A sistema de
Supervisión
Ambos tienen las señales de campo para medición, pero solo una de ellas tiene el
control del proceso así que cuando la computadora Duty se apaga, es necesario
que la computadora Stand by tome el control, pero no puede tomar el control si no
tiene los valores que estaban siendo aplicados, como pueden ser el porcentaje de
apertura de una válvula reguladora, tiempo de inicio de lote, etc.
Esta es la razón por la que el computador Duty actuara como maestro y fijara estos
valores al computador Stand by, cuando ocurra el Hand over la computadora se
intercambiaran las posiciones la computadora 1 será esclavo y la computadora 2
maestro.
Seminario de Titulación Protocolo de Comunicación Modbus
Por ultimo mostramos una pantalla del sistema supervisorio que se desarrollo para
control de medición, este sistema tiene la intención de llevar el control de lote, así
como cuantificación cada 24 hrs.
El control del proceso lo realiza el equipo 7955 Solartron pero el operador tiene
acceso a través de los sistemas Yokogawa.
Seminario de Titulación Protocolo de Comunicación Modbus
GLOSARIO DE TÉRMINOS
BIBLIOGRAFÍA
"Instrumentación Industrial".
CREUS A.
5ª Edición.
Ed. Marcombo. (1993).
APÉNDICE A
RESPUESTAS DE EXCEPCIÓN
RESPUESTAS DE EXCEPCIÓN
CÓDIGOS DE EXCEPCIÓN
Seminario de Titulación Protocolo de Comunicación Modbus
Excepto para mensajes tipo difusión, cuando un dispositivo maestro envía una
petición a un dispositivo esclavo, espera una respuesta normal.
Uno de cuatro posibles eventos pueden ocurrir desde la petición del maestro:
Con el MSB del código de función activado, el programa de aplicación del maestro
puede reconocer la respuesta de excepción y puede examinar en el campo de datos
el código de excepción.
La figura A.1 muestra un ejemplo de una petición del maestro y una respuesta de
excepción de un esclavo. Los campos del ejemplo se muestran en hexadecimal.
APÉNDICE C
El LRC se calcula sumando entre sí los sucesivos bytes del mensaje, descartando
cualquier acarreo y luego complementando a dos el valor resultante. El LRC es un
campo de 8 bits, por lo tanto cada nueva suma de un carácter que resultara ser
Seminario de Titulación Protocolo de Comunicación Modbus
mayor de 255 simplemente ‘hace pasar el valor del campo por cero. Dado que no
hay un noveno bit, el acarreo se descarta automáticamente.
Un procedimiento para generar un LRC es:
1.- Sumar todos los bytes del mensaje, excluyendo los ‘dos puntos’ de comienzo y
el par CRLF del final. Sumarlos en un campo de 8 bits, así serán descartados los
acarreos.
2.- Restar el resultado del paso anterior de FF hex (todos los bit a 1), para producir
el complemento a uno.
3.- Sumar 1 al resultado del paso anterior para producir el complemento a 2.
Cuando los 8 bits del LRC (2 caracteres ASCII) son transmitidos en el mensaje, el
carácter de orden alto será transmitido en primer lugar, seguido por el carácter de
orden bajo.
Ejemplo
Se muestra mas abajo un ejemplo de función en lenguaje C que genera el LRC.
La función toma dos argumentos:
Seminario de Titulación Protocolo de Comunicación Modbus
{
unsigned char uchLRC = 0; /* LRC inicializado */
while (usDataLen--) /* a lo largo de todo el buffer de mensaje */
uchLRC += *auchMsg++; /* suma un byte del buffer, sin acarreo */
return ( (unsigned char) (- ((char) uchLRC))); /* devuelve el complemento a dos */
}
Para calcular el valor CRC Modbus se precarga un registro de 16 bits, con todos
ellos a 1. Luego comienza un proceso que toma los sucesivos bytes del mensaje y
los opera con el contenido del registro y actualiza éste con el resultado obtenido.
Seminario de Titulación Protocolo de Comunicación Modbus
Sólo los 8 bits de dato de cada carácter son utilizados para generar el CRC. Los bits
de arranque y paro y el bit de paridad , no afectan al CRC.
1. Cargar un registro de 16 bits que denominaremos registro CRC, con FFFF (todos
1).
2. XOR del primer byte - 8 bits - del mensaje con el byte de orden bajo del registro
CRC de 16 bits, colocando el resultado en el registro CRC.
(Si el LSB era 1): Hacer XOR entre el registro CRC y el valor
polinómico A001 hex (1010 0000 0000 0001).
6. Repetir los pasos 2 al 5 para el próximo byte – 8 bits – del mensaje. Continuar
haciendo ésto hasta que todos los bytes hayan sido procesados.
8. Cuando el CRC es situado en el mensaje, sus bytes de orden alto y bajo han de
ser permutados como se describe mas abajo.
Por ejemplo, si el valor del CRC es 1241 hex (0001 0010 0100 0001):
Un ejemplo de una función C que genera CRC se muestra en las siguientes páginas.
Todos los valores CRC posibles son cargados previamente en dos matrices fila, que
son simplemente indexadas a medida que la función va procesando los bytes del
buffer de mensaje. Una de las matrices contiene los 256 valores posibles de CRC
Seminario de Titulación Protocolo de Comunicación Modbus
del byte de orden alto del campo CRC de 16 bits y la otra matriz contiene todos los
valores de byte de orden bajo.
Indexar el CRC de esta manera proporciona una ejecución más rápida, que la que
pudiera alcanzarse calculando un nuevo valor CRC con cada nuevo carácter del
buffer del mensaje.
Por lo tanto el valor CRC devuelto desde la función puede ser colocado
directamente en el mensaje para la transmisión.
{
unsigned char uchCRCHi = 0xFF; /* byte alto del CRC inicializado */
unsigned char uchCRCLo = 0xFF; /* byte bajo del CRC inicializado */
unsigned uIndex; /* indexará a la tabla de valores CRC */
while (usDataLen--) /* a lo largo de todo el buffer de mensaje */
{
uIndex = uchCRCHi ^ *puchMsg++ ; / *calcula el CRC */
uchCRCHi = uchCRCLo ^ auchCRCHi [uIndex] ;
Seminario de Titulación Protocolo de Comunicación Modbus