¿Es redundante la información en el código de función MODBUS 16?

3

El código de función MODBUS 16 es "Escribir registros de retención". La estructura de comandos de la función es:

Address (1 byte)
Function code (1 byte)
First register address (2 bytes)
Number of registers to write (2 bytes)
Number of bytes to follow (1 byte)
Data (N bytes)
CRC (2 bytes)

Si los registros siempre tienen una longitud de 2 bytes, ¿no es el número de registros y la cantidad de bytes de información redundante? ¿En qué circunstancias lo haría

number of bytes = number of registers * 2

no es cierto?

Si tuviera que recibir un comando donde este no era el caso, ¿debería rechazar el comando?

    
pregunta jfowkes

1 respuesta

4

Es redundante y si mira la Especificación del protocolo de aplicación MODBUS figura 22 en la página 31, especifica para verificar: (0x0001 ≤ Cantidad de registros ≤ 0x007B) Y (Recuento de bytes == Cantidad de registros x 2), si no es verdadero, devuelva ExceptionCode 03 (VALOR DE DATOS ILEGAL).

Supongo que intentaron seguir un formato coherente que en este caso dio lugar a la redundancia.

    
respondido por el Tut

Lea otras preguntas en las etiquetas