Un mapa de registros Modbus TCP para toda la planta
Coils, holding e input registers
Indices con nombre en lugar de numeros magicos
Un contrato vivo y verificable
Un fragmento de la implementación
Tal cual del ejemplo desplegado en el M-Duino — cópialo libremente:
void setup() {
Serial.begin(115200);
// Publish the three blocks starting at address 0
modbus.addCoils(0, coils, 18);
modbus.addHoldingRegisters(0, holdingRegs, 10);
modbus.addInputRegisters(0, inputRegs, 12);
modbus.begin(); // listen on port 502
// Consistent initial values (what a SCADA would read on connecting)
holdingRegs[HR_TEMP_SP1] = 185; // 18.5 C x10
holdingRegs[HR_TEMP_SP2] = 185;
holdingRegs[HR_RPM_SP1] = 250; // 250 rpm
holdingRegs[HR_RPM_SP2] = 250;
}El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.
Preguntas frecuentes
Cual es la diferencia aqui entre coils y registers?
Los coils son valores de un solo bit on/off para reles, pilotos y resets. Los holding registers son valores de 16 bits de lectura/escritura para consignas y ordenes, y los input registers son medidas de solo lectura de 16 bits.
Por que usar enums con nombre para los indices de registro?
Hacen que el codigo se lea como el mapa de registros y evitan errores de direccionamiento por uno. HR_TEMP_SP1 es mucho mas claro que holding register 4 cuando alguien revisa el codigo mas tarde.
Puedo probar el mapa antes de que existan los dispositivos de campo?
Si. El mapa se publica en el puerto 502 con update() en marcha, asi que cualquier cliente Modbus puede conectarse y confirmar el direccionamiento mientras las enfriadoras, variadores y caudalimetros aun se estan cableando.