MODBUS

Modbus  es una serie  protocolo de comunicaciones  publicado originalmente por  Modicon  (ahora  Schneider Electric ) en 1979 para su uso con sus  controladores lógicos programables (PLCs). Simple y robusto, desde entonces se ha convertido en una  de facto  estándar de  protocolo de comunicación, y ahora es un medio comúnmente disponibles de conectar industriales  electrónicos  dispositivos . Las principales razones para el uso de Modbus en el entorno industrial son: Modbus permite la comunicación entre los dispositivos conectados a la misma red, por ejemplo un sistema que mide la temperatura y la humedad y comunica los resultados a un  ordenador . Modbus se utiliza a menudo para conectar un ordenador de supervisión con una  unidad terminal remota  (RTU) en  el control de supervisión y adquisición de datos  ( SCADA ) sistemas. Muchos de los tipos de datos se nombran de su uso en los relés de accionamiento: una salida física de un solo bit se llama una  bobina , y una entrada física de un solo bit se llama una entrada discreta  o un  contacto .
El desarrollo y la actualización de los protocolos Modbus ha sido gestionado por la organización Modbus desde abril de 2004, cuando Schneider Electric transfiere los derechos a esa organización. La Organización Modbus es una asociación de usuarios y proveedores de dispositivos compatibles con Modbus que pretende impulsar la adopción y evolución de Modbus

AS VERSIONES DEL PROTOCOLO MODBUS RTU

Existen versiones del protocolo Modbus para  puerto serie  y de  Ethernet  y otros protocolos que soportan el  conjunto de protocolos de Internet . Hay muchas variantes de los protocolos Modbus:

    • Modbus RTU – Esto se utiliza en la comunicación serie y hace uso de una representación compacta, binario de los datos para la comunicación de protocolo. El formato RTU sigue los comandos / datos con un  control de redundancia cíclica  de suma de control como un mecanismo de comprobación de error para garantizar la fiabilidad de los datos. Modbus RTU es la aplicación más común disponible para Modbus. Un mensaje Modbus RTU debe ser transmitida de forma continua y sin vacilaciones entre caracteres. Mensajes Modbus se enmarcan (separados) por períodos de inactividad (silenciosas).
    • Modbus  ASCII – Esto se utiliza en la comunicación serie y hace uso de caracteres ASCII para la comunicación de protocolo. El formato ASCII utiliza una  comprobación de redundancia longitudinal mensajes ASCII Modbus están enmarcadas por dos puntos de ataque ( ‘:’) y posterior salto de línea (CR / LF).
    • Modbus  TCP / IP o Modbus TCP  – Esta es una variante de Modbus utilizada para las comunicaciones a través de redes TCP / IP, que conecta a través del puerto 502. ]  No se requiere un cálculo de suma de comprobación como capas inferiores ya proporcionan protección suma de comprobación.
    • Modbus a través de  TCP / IP o Modbus a través de TCP o Modbus RTU / IP  – Esta es una variante que difiere de Modbus Modbus TCP en que una suma de control está incluido en la carga útil como con Modbus RTU
    • Modbus a través de  UDP – Algunos han experimentado con el uso de Modbus a través de UDP en redes IP, lo que elimina los gastos generales necesarios para  TCP  [7]
    • Modbus Plus (Modbus +, MB + o MBP) Modbus a través de  bus de campo  (Modbus + o + Mo), también existe, pero sigue siendo propiedad de  Schneider Electric . requiere un dedicado co-procesador para manejar rápido  HDLC de rotación del testigo -como. Se utiliza de par trenzado en 1 Mbit / s, e incluye transformador de aislamiento en cada nodo, lo que hace transición / EDGE activa en lugar de tensión / nivel activa. Interfaces especiales se requieren para conectar Modbus Plus a un ordenador, normalmente una tarjeta hecha por la ISA (SA85), PCI o PCMCIA bus.
    • Modbus  PEMEX – Esta variante es una extensión del estándar Modbus con soporte para datos históricos y de flujo. Fue diseñado para el control del proceso y nunca ganó adopción generalizada  [8]
    • Enron Modbus – Esta variante es una extensión del estándar Modbus con soporte para 32 bits de enteros y flotantes variables de punto, y los datos históricos y de flujo. Los tipos de datos se asignan mediante direcciones estándar. [9]  Los datos históricos se utiliza para cumplir con un Instituto Americano del Petróleo  (API) estándar de la industria para los datos ¿Cómo deben almacenarse [10]

modelo de datos y llamadas a funciones son idénticas para las 4 primeras variantes de protocolos; solamente la encapsulación es diferente. Sin embargo, las variantes no son interoperables como los formatos de trama son diferentes.

Comunicación y dispositivos

Cada dispositivo destinado a comunicarse mediante Modbus se le da una dirección única. En las redes de serie y MB +, sólo el nodo asignado como el maestro puede iniciar un comando. En Ethernet, cualquier dispositivo puede enviar un comando Modbus, aunque por lo general sólo un dispositivo maestro lo hace. Un comando Modbus contiene la dirección Modbus del dispositivo está destinado a ser (1 a 247). Sólo el dispositivo destinado actuará en el comando, a pesar de que otros dispositivos puedan recibirla (una excepción es broadcastable comandos específicos enviados al nodo 0, que se actúe en función, pero no reconoció). Todos los comandos Modbus contienen información de suma de comprobación, para que el destinatario para detectar los errores de transmisión. Los comandos básicos Modbus pueden encargar a un RTU para cambiar el valor en una de sus registros, el control o leer un puerto de E / S, y el mando del dispositivo para enviar de vuelta uno o más valores que figuran en sus registros.

Hay muchos módems y gateways que apoyan Modbus, ya que es un protocolo muy sencillo y a menudo copiada. Algunos de ellos fueron diseñados específicamente para este protocolo.Diferentes implementaciones utilizan cable, comunicación inalámbrica, tal como en la  banda ISM , e incluso  servicio de mensajes cortos  (SMS) o  General Packet Radio Service  (GPRS).Uno de los diseños más comunes de las redes inalámbricas hace uso de  redes de malla . Los problemas típicos que los diseñadores tienen que superar son los altos problemas de latencia y de calendario.

formato de trama

Un marco de Modbus se compone de una unidad de aplicación de datos (ADU) que encierra una unidad de datos de protocolo (PDU)

    • ADU = + cheque PDU + error de dirección
    • PDU = código de función + Datos

Todo Modbus variantes de elegir uno de los siguientes formatos de trama.

Modbus  RTU  formato de trama (utilizado principalmente en las líneas asíncronas de 8 bits como  EIA-485 )
NombreLongitud (bits)Función
comienzo28Al menos 3  1 / 2  veces el carácter de silencio (condición de la marca)
Dirección8dirección de estación
Función8Indica el código de función; por ejemplo, leer bobinas / registros de las explotaciones
Datosn × 8Longitud de datos + se llenará en función del tipo de mensaje
CRC16 bitsVerificación de redundancia cíclica
Fin28Al menos 3  1 / 2  veces el carácter de silencio entre bastidores

Nota acerca de la  CDN :

          • Polinomio: x 16 + x 15  + x 2  + 1 (CRC-16-ANSI también conocido como CRC-16-IBM, lo normal polinomio hexadecimal 8005 y siendo invertido A001)
          • Valor inicial: 65.535
          • Ejemplo de marco en hexadecimal: 01 04 02 80 FF FF B8 (CRC-16-ANSI cálculo de 01 a FF da 80B8 que se transmite  menos  byte de  primera )
formato de trama Modbus ASCII (se utiliza principalmente en líneas serie asíncronas de 7 u 8 bits)
NombreLongitud ( bytes )Función
comienzo1Empieza por dos puntos: (valor hexadecimal ASCII es 0x3a)
Dirección2dirección de estación
Función2Indica los códigos de función de lectura como bobinas / insumos
Datosn x 2Longitud de datos + se llenará en función del tipo de mensaje
LRC2Suma de comprobación  ( comprobación de redundancia longitudinal  )
Fin2Retorno de carro – avance de línea (CR / LF) par ( ASCII  valores de 0x0D y 0x0A)

Dirección, función, datos y LRC son legibles por todos los pares hexadecimales de capital de caracteres que representan valores de 8 bits (0-255). Por ejemplo, 122 (7 × 16 + 10) se puede representar como 7A.
LRC se calcula como la suma de los valores de 8 bits, negada ( complemento de dos ) y se codifica como un valor de 8 bits. Ejemplo: si la codificación de direcciones, la función y los datos como 247, 3, 19, 137, 0 y 10, su suma es 416. Complemento a dos (-416) recorta a 8 bits es 96 (por ejemplo, 256 × 2-416) que se representa como 60 en hexadecimal. Por lo tanto el siguiente cuadro: F7031389000A60

Formato de trama Modbus TCP (utilizado principalmente en  Ethernet  redes)

Nombre

Longitud (bytes)Función
identificador de transacción2Para la sincronización entre los mensajes de servidor y cliente
identificador de protocolo2Cero para Modbus / TCP
campo de longitud2Número de bytes restantes en este marco
identificador de la unidad1Dirección del esclavo (255 si no se utiliza)
código de función1Los códigos de función, como en otras variantes
bytes de datosn
Los datos como respuesta o comandos

identificador de la unidad se utiliza con dispositivos Modbus / TCP que son compuestos de varios dispositivos Modbus, por ejemplo, en Modbus / TCP para puertas de enlace Modbus RTU. En tal caso, el identificador de la unidad indica la dirección del esclavo del dispositivo detrás de la puerta de enlace. De forma nativa Modbus / TCP dispositivos con capacidad por lo general ignoran el identificador de unidad.

El orden de bytes de valores en tramas de datos Modbus es  Big-Endian  (MSB, byte más significativo de un valor recibido en primer lugar).

Códigos de función soportados [ editar ]

Los diversos lectura, escritura y otras operaciones se clasifican de la siguiente manera. [12]  La más primitiva lecturas y escrituras se visualizan en negrita. Un número de fuentes usar terminología alternativa, por ejemplo  Force Single Coil  donde el estándar utiliza  Write Single Coil . [13]
entidades prominentes dentro de un esclavo Modbus son:

    • Bobinas: lectura y escritura, 1 bit (encendido / apagado)
    • Entradas discretas: legible, 1 bit (encendido / apagado)
    • Registros de entrada: legibles, 16 bits (0 a 65.535), esencialmente mediciones y estados
    • Registros de retención: lectura y escritura, de 16 bits (0 a 65.535), esencialmente los valores de configuración
códigos de función Modbus
tipo de funciónnombre de la funcióncódigo de función
Acceso a los datosacceso bitsEntradas discretas físicasLeer Entradas discretas2
Los bits internos o bobinas Físicasleer bobinas1
Write Single Coil5
Escribe varias bobinas15
acceso 16 bitsRegistros de entrada físicosLeer registros de entrada4
Registros internos o registros de salida físicosLeer múltiples registros de las explotaciones3
Escribe único registro de retención6
Varios registros de escritura de la explotación agrícola16
Lectura / Escritura múltiples registros23
Máscara de escritura Registro22
Leer FIFO cola24
Acceso a archivos de registroLeer registro del archivo20
Escribir archivo de registro21
DiagnósticoLeer estado de excepción7
Diagnóstico8
Obtener Com contador de eventos11
Obtener Com Registro de eventos12
Informe Esclavo ID17
Leer identificación de dispositivo43
OtroInterfaz de transporte encapsulado43

Formato de los datos de las solicitudes y respuestas para los códigos de función principales

Las solicitudes y las respuestas siguen formatos de trama descritos anteriormente. Esta sección da detalles de los formatos de datos de la mayoría de los códigos de función usados.

Código de función 1 (leer bobinas) y la función de código 2 (leer entradas discretas)

solicitud :

    • Dirección del primer rollo de la entrada / discreta para leer (16 bits)
    • Número de bobinas / entradas discretas para leer (16 bits)

Respuesta normal :

    • Número de bytes de valores de entrada de la bobina / discretas a seguir (8 bits)
    • / valores discretos de entrada de la bobina (8 bobinas / entradas discretas por byte)

Valor de cada bobina de entrada / discreto es binaria (0 para apagado, 1 de encendido). En primer lugar pidió bobina / entrada discreta se almacena como el bit menos significativo del primer byte de la respuesta.
Si el número de bobinas / entradas discretas no es un múltiplo de 8, bit más significativo (s) del último byte se rellena con ceros.
Por ejemplo, si se solicitan once bobinas, se necesitan dos bytes de valores. Supongamos que los estados de esas bobinas sucesivas son  encendido, apagado, encendido, apagado, apagado, encendido, encendido, encendido, apagado, encendido, en , a continuación, parte de datos de la respuesta será 02E506 en hexadecimal.

Código de función 5 (fuerza / escribir una sola bobina)

solicitud :

    • Dirección de la bobina (16-bit)
    • Valor para forzar / escritura: 0 para apagado y 65.280 (FF00 en hexadecimal) para el

Respuesta normal : lo mismo que la solicitud.

Código de función 15 (fuerza / escribir varias bobinas)

solicitud :

    • Dirección de la primera bobina para forzar / escritura (16 bits)
    • Número de bobinas a la fuerza / escritura (16-bit)
    • Número de bytes de valores de la bobina a seguir (8 bits)
    • Los valores de la bobina (8 valores de bobina por byte)

Valor de cada bobina es binario (0 para apagado, 1 de encendido). Primera bobina solicitado se almacena como el bit menos significativo de primer byte en la solicitud.
Si el número de bobinas no es un múltiplo de 8, bit más significativo (s) de último byte debe ser rellenado con ceros. Ver el ejemplo códigos de función 1 y 2.

Respuesta normal :

    • Dirección de primera bobina (16-bit)
    • número de bobinas (16-bit)

Código de función 4 (leer registros de entrada) y la función de código 3 (leer registros de las explotaciones)

solicitud :

    • Dirección del primer registro para leer (16 bits)
    • Número de registros a leer (16 bits)

Respuesta normal :

    • Número de bytes de valores de registro a seguir (8 bits)
    • valores de registro (16 bits por registro)

Debido a que el número de bytes de valores de registro es de 8 bits de ancho, sólo 128 registros se pueden leer a la vez.

Código de función 6 (preestablecido / escritura única registro de retención)

solicitud :

    • Dirección del registro de retención para preestablecer / escritura (16 bits)
    • Nuevo valor de registro de explotación (16 bits)

Respuesta normal : lo mismo que la solicitud.

Código de función 16 (preset / escribir varios registros de retención)

solicitud :

    • Dirección del primer registro de retención para preestablecer / escritura (16 bits)
    • Número de registros de retención para preestablecer / escritura (16 bits)
    • Número de bytes de valores de registro a seguir (8 bits)
    • Los nuevos valores de registros de retención (16 bits por registro)

Debido a que el número de bytes de valores de registro es de 8 bits de ancho, sólo 128 registros de retención pueden estar predefinidos / escrito a la vez.

Respuesta normal :

    • Dirección del primer preset / registro de retención por escrito (16 bits)
    • número de preset / registros de mantenimiento escritas (16 bits)

respuestas de excepción

Para una respuesta normal, esclavo repite el código de función. En caso de que un esclavo que desee informar de un error, que responderá con el código de función solicitada plus 128 (3 se convierte en 131 o 83 en hexadecimal), y sólo incluirá un byte de datos, conocido como el  código de excepción .

Los códigos de excepción principal Modbus

CódigoTextodetalles
1Función ilegalCódigo de función recibido en la consulta no se reconoce o permitido por esclavo
2Dirección de datos ilegalDirección de datos de algunas o todas las entidades requeridas no pueden o no existen en esclavo
3Valor de datos ilegalEl valor no es aceptada por esclavo
4Fallo en el dispositivo esclavoSe produjo un error irrecuperable mientras esclavo intentaba realizar la acción solicitada
5
Reconocer
Esclavo ha aceptado la petición y está procesando, pero se requiere un largo período de tiempo. Esta respuesta se envía para evitar un error de tiempo de espera que se produzcan en el maestro. Maestro puede emitir, a continuación un  completo Programa de sondeo  mensaje para determinar si se ha completado el procesamiento
6Dispositivo esclavo OcupadoEsclavo se dedica a procesar un mandato de larga duración. Maestro debe intentarlo más tarde
7
confirmación negativa
Esclavo no puede realizar las funciones de programación. Maestro debe solicitar información de diagnóstico o error del esclavo
8Error de paridad de memoriaEsclavo detecta un error de paridad en la memoria. Maestro puede volver a intentar la petición, pero el servicio puede ser requerido en el dispositivo esclavo
10Camino de puerta de enlace no disponibleEspecializado para puertas de enlace Modbus. Indica una puerta de enlace mal configurado
11Dispositivo de puerta de enlace de destino no respondióEspecializado para puertas de enlace Modbus. Se envía cuando esclavo no responde

Bobina, entrada discreta, registro de entrada, la celebración de los números de registro y direcciones

Algunas convenciones gobiernan cómo se referencian acceso a Modbus entidades (bobinas, entradas discretas, registros de entrada, llevando a cabo registros).
Es importante hacer una distinción entre la entidad  número  y la entidad de  dirección :

    • Entidad  números combinan tipo de entidad y la ubicación entidad dentro de su tabla de descripción
    • Entidad  dirección es la dirección de inicio, un valor de 16 bits en la parte de datos de la trama Modbus. Como tal, su rango va de 0 a 65.535

En el estándar tradicional,  los números  de las entidades comienzan con un dígito, seguido de un número de cuatro dígitos en el rango de 1 – 9999:

    • bobinas  números comienzan con un  cero  y luego van desde  0 0 001 a  0 9,999
    • de entrada discretos  números comienzan con un  uno  y luego van desde  1 0001 a la  1 9999
    • Registro de entrada  números comienzan con un  tres  y luego van desde  3 0001 a la  3 de 9999
    • Registro de retención  números comienzan con un  cuatro  y luego van desde  4 0001 a la  4 9999

Esto se traduce en  direcciones  entre 0 y 9998 en tramas de datos.
Por ejemplo, con el fin de leer registros de retención a partir de  número  40.001, correspondiente  dirección  en la trama de datos será 0 con un código de función de 3 (como se ve arriba). Para registros de las explotaciones que comienzan en  el número  40100,  la dirección  será 99. Etc.
Esto limita el número de  direcciones  a 9,999 para cada entidad. Una  de facto  de referencia se extiende esto a la máxima de 65.536. [14]
Es simplemente consiste en la adición de un dígito a la lista anterior:

    • bobina  números van desde  0 00,001 mil a  0 65536
    • de entrada discretos  números van desde  1 00001 a la  1 65536
    • Registro de entrada  números van desde  3 00001 a la  3 65536
    • Registro de retención  números van desde  4 00001 a la  4 65536

Cuando se utiliza la referenciación extendida, todos los  números de  referencias deben ser exactamente seis dígitos. Esto evita la confusión entre las bobinas y otras entidades. Por ejemplo, para saber la diferencia entre el registro de retención # 40001 y # 40001 bobina, si la bobina # 40001 es el objetivo, debe aparecer como # 040001.

mapeo JBUS

Otra  de facto  protocolo Modbus fuertemente relacionada con [15]  apareció después de él y se definió por PLC Marca de abril Automatiza, lo que resulta de un esfuerzo de colaboración de las empresas francesas  Renault  Automation y  Merlin Gerin  et Cie en 1985: [16]  JBUS . Las diferencias entre Modbus y JBUS en ese momento (número de entidades, estaciones esclavas) son ahora irrelevante, ya que este protocolo prácticamente desapareció con la serie abril PLC, que AEG Schneider Automation compró en 1994 y luego se hizo obsoleto. Sin embargo, el nombre JBUS sobrevivió hasta cierto punto.

JBUS soporta códigos de función 1, 2, 3, 4, 5, 6, 15, y 16 y por lo tanto todas las entidades descritas anteriormente. Sin embargo numeración es diferente con JBUS: [17]

    • coinciden número y dirección: #x entidad tiene la dirección x en la trama de datos
    • En consecuencia, el número de entidad no incluye el tipo de entidad. Por ejemplo, la celebración de registro # 40010 en Modbus será la celebración de una cuenta # 9, ubicado en la dirección 9 en JBUS
    • Número 0 (y por lo tanto la dirección 0) no es compatible. Esclavo no debe aplicar ningún dato real en este número y dirección y se puede devolver un valor nulo o lanzar un error cuando se le solicite

implementaciones

Casi todas las implementaciones tienen desviaciones de la norma oficial. Las diferentes variedades podrían no comunicarse correctamente entre equipos de diferentes proveedores. Algunas de las variaciones más comunes son:

    • Tipos de datos
        • entero de 32 bits
        • datos de 8 bits
        • tipos de datos mixtos
        • Los campos de bits en números enteros
        • Multiplicadores para cambiar datos a / desde un entero. 10, 100, 1000, 256 …
    • extensiones de protocolo
        • direcciones de esclavo de 16 bits
        • tamaño de los datos de 32 bits (1 address = 32 bits de datos devuelto)
        • intercambiado datos de palabras

limitaciones

    • Desde Modbus fue diseñado a finales de 1970 para comunicar a  los controladores lógicos programables , el número de tipos de datos está limitado a aquellos entendidos por los PLC en el momento. Objetos binarios grandes no son compatibles.
    • No existe manera estándar para un nodo para encontrar la descripción de un objeto de datos, por ejemplo, para determinar si un valor de registro representa una temperatura entre 30 y 175 grados.
    • Desde Modbus es un protocolo maestro / esclavo, no hay forma de que un dispositivo de campo de “informe de excepción” (excepto a través de Ethernet TCP / IP, denominada mbus abierta) – el nodo maestro debe sondear rutinariamente cada dispositivo de campo, y buscar cambios en los datos. Esto consume tiempo y ancho de banda de la red en aplicaciones en las que el ancho de banda puede ser costoso, como sobre un enlace de radio de baja tasa de bits.
    • Modbus se limita a abordar 254 dispositivos en un enlace de datos, lo que limita el número de dispositivos de campo que pueden conectarse a una estación maestra (una vez más, Ethernet TCP / IP es una excepción).
    • Modbus transmisiones deben ser contiguos que limita los tipos de dispositivos de comunicaciones remotas a las que pueden amortiguar los datos para evitar vacíos en la transmisión.
    • protocolo Modbus en sí no proporciona seguridad contra los comandos o interceptación de datos no autorizados.

Esto fue inspirado por Wikipedia.