¿Cómo podemos ayudar?
Lectura del estado de la bobina 0x (FC=01) en Modbus RTU con HMI
Este tutorial sólo cubre la función Modbus master de la HMI FC01. Se trata de una función especial para casos especiales y expertos.
Código de función Leer estado de bobina 0x (FC=01) en la HMI Modbus
Por defecto, el código de función Leer estado de bobina 0x (FC=01) en la HMI Modbus lee el registro de bits en bytes.
Esto significa que para leer el bit en el registro 34, la HMI enviará una solicitud «Read Coil Status FC01» para leer el registro 32 (INT(34/8)*8) con una longitud de 8 bits (es decir, los bits 32 a 40). A continuación, recupera el bit 34.
Así, para leer los bits 33, 34, 35 y 36 de la misma pantalla, enviará una única petición (registro 32 longitud 8)
Sin embargo, algunos dispositivos no admiten este tipo de lectura.
Leer sólo los bits solicitados, no por bytes
En la imagen de la derecha, podemos ver que estamos leyendo el registro 34 de la bobina sólo para la longitud 1.
- Copie estos 2 ficheros (modbus_rtu_master.dll y modbus_rtu_master.so) en sus respectivos directorios donde se encuentra el software HMI-Tool (C:\NProgram Files (x86)\NNNHMITool7.0)
- Añada esta macro al «Init Script».
#include "MacroInit.h"
void Macro_main(IN *p)
{
MarcoInit
/Hacer
//RemoveHMIError = 0;// Para que "ReadCoilStatus FC=01" sea correcto: Añade los ficheros modbus_rtu_master.dll y modbus_rtu_master.so
LocalWord[50100]=1; // Poner a 1 para tener un "ReadCoilStatus FC=01" que lea por bit y no por byte
}
- Asegúrate de que los símbolos (Bit Lamp,…) para los bits que quieres leer están en una pantalla diferente a la de inicio (debe haber un cambio de pantalla para que esto tenga efecto)
- Cargue el proyecto y pruébelo