El Eastron SDM230 es un medidor de energía monofásico para riel DIN que publica voltaje, corriente, potencia activa, factor de potencia y kWh acumulados por RS-485 mediante Modbus RTU. Esta guía incluye el mapa completo de registros de entrada, la conversión IEEE-754 que requieren los valores del medidor y un flujo de Node-RED que envía las lecturas a Ubidots por HTTP.
Las direcciones de registro que aparecen abajo fueron verificadas contra el documento de protocolo Modbus del SDM230 de Eastron. Eastron ha cambiado los mapas de registros entre revisiones de hardware, así que confirme su variante — SDM230-Modbus, SDM230M, V2 o V3 — contra el documento vigente antes de usar una dirección en producción.
Requisitos
Una cuenta activa de Ubidots.
Un Eastron SDM230 con la salida RS-485 (Modbus).
Un maestro Modbus RTU con Node-RED y los nodos node-red-contrib-modbus instalados, además de una interfaz RS-485 USB o integrada.
1. Conecte el medidor y el bus RS-485
Conecte el SDM230 a su red eléctrica de acuerdo con sus requisitos. A continuación se muestra un esquema de conexión breve; para instrucciones detalladas consulte la hoja de datos.
Una vez conectadas las líneas de alimentación, conecte el SDM230 al maestro Modbus por la interfaz RS-485. Termine el bus con 120 Ω únicamente en los dos extremos físicos y lleve el par por un ducto separado de los conductores de potencia. Si el medidor no responde, intercambie A y B: el etiquetado no está estandarizado entre fabricantes.
¿Qué baudios, paridad e ID de esclavo usa el SDM230?
De fábrica el SDM230 se comunica a 9600 baudios, sin paridad, un bit de parada y con ID de esclavo 1. Los cuatro parámetros se pueden cambiar desde el panel frontal del medidor o escribiendo los registros de retención de abajo, y el maestro debe coincidir exactamente en los cuatro. Configúrelos en el escritorio antes de instalar el medidor en el tablero: después, detrás de una tapa, es mucho más difícil.
Parámetro | Valor por defecto | Registro de retención |
Baudios | 9600 | 40029 (0x001C) |
Paridad | Ninguna | 40019 (0x0012) |
Bits de parada | 1 | 40019 (0x0012) |
ID de esclavo | 1 | 40021 (0x0014) |
2. Configure el maestro Modbus en Node-RED
Asegúrese de que su instalación de Node-RED tenga el nodo "Modbus Read". Si no es así, consulte la página de node-red-contrib-modbus para el proceso de instalación.
Navegue a la interfaz de Node-RED en su dispositivo maestro Modbus y busque "Modbus" en la paleta de nodos.
Agregue un nodo "Modbus Read" a su flujo. Una vez colocado, haga doble clic en él y luego en el botón "Add new modbus-client...". Esto mostrará la configuración serial del maestro Modbus:
Configure los parámetros seriales para que coincidan con el medidor. En esta guía se usaron los siguientes ajustes:
Baudios: 9600.
Unit ID / ID de esclavo del medidor: 1.
Paridad: ninguna, 1 bit de parada.
Después de guardar, volverá a la configuración del nodo "Modbus Read". Defina FC en FC 4: Read Input Registers, Address en 0 y Quantity en 2 para leer "Voltios de línea a neutro".
Mapa de registros Modbus del SDM230 (registros de entrada)
Todas las mediciones del SDM230 están en registros de entrada, que se leen con el código de función 04. Hay tres reglas que importan:
La dirección Modbus es el número de registro menos 30001. La energía activa total es el registro 30343, así que la dirección es 342 (0x0156).
Cada valor es un flotante IEEE-754 de 32 bits que ocupa dos registros consecutivos, por lo que siempre debe solicitar una cantidad de 2. Una dirección o cantidad impar cae a la mitad de un valor y el medidor devuelve una excepción.
El orden de palabras por defecto es el registro más significativo primero. Se puede cambiar con el registro de retención "Register Order" del medidor.
Parámetro | Registro | Dirección (hex) | Dirección (dec) | Unidad |
Voltios de línea a neutro | 30001 | 0x0000 | 0 | V |
Corriente | 30007 | 0x0006 | 6 | A |
Potencia activa | 30013 | 0x000C | 12 | W |
Potencia aparente | 30019 | 0x0012 | 18 | VA |
Potencia reactiva | 30025 | 0x0018 | 24 | VAr |
Factor de potencia | 30031 | 0x001E | 30 | — |
Ángulo de fase | 30037 | 0x0024 | 36 | ° |
Frecuencia | 30071 | 0x0046 | 70 | Hz |
Energía activa importada | 30073 | 0x0048 | 72 | kWh |
Energía activa exportada | 30075 | 0x004A | 74 | kWh |
Energía reactiva importada | 30077 | 0x004C | 76 | kVArh |
Energía reactiva exportada | 30079 | 0x004E | 78 | kVArh |
Energía activa total | 30343 | 0x0156 | 342 | kWh |
Energía reactiva total | 30345 | 0x0158 | 344 | kVArh |
¿Por qué hay que convertir la lectura a un flotante?
Porque el medidor devuelve un flotante IEEE-754 de 32 bits repartido en dos registros de 16 bits, y el nodo Modbus Read entrega esos bytes crudos en lugar de un número. Los dos registros deben recombinarse en una palabra de 32 bits y reinterpretarse como flotante para que el valor signifique algo. Eso es lo que hace la función de abajo, con el orden por defecto del medidor (registro más significativo primero).
Arrastre y suelte un nodo "function" por cada lectura y conéctelo a la salida del nodo "Modbus Read" correspondiente:
Haga doble clic en cualquiera de los nodos "function" y pegue el siguiente código. Solo tiene que reemplazar el nombre de la variable:
// Acceder al msg.payload que contiene el objeto
const bufferArray = msg.payload.buffer;
// Extraer bytes del array de buffer
const highByteFirstRegister = bufferArray[0] & 0xFF;
const lowByteFirstRegister = bufferArray[1] & 0xFF;
const highByteSecondRegister = bufferArray[2] & 0xFF;
const lowByteSecondRegister = bufferArray[3] & 0xFF;
// Combinar bytes en un entero de 32 bits (big-endian)
const combinedValue = (highByteFirstRegister << 24) |
(lowByteFirstRegister << 16) |
(highByteSecondRegister << 8) |
lowByteSecondRegister;
// Convertir a número de punto flotante usando el formato IEEE 754
const float32Buffer = new ArrayBuffer(4);
const float32View = new DataView(float32Buffer);
float32View.setUint32(0, combinedValue, false); // false para big-endian
// Reemplace el nombre de la variable aquí en lugar de "voltage"
const voltage = float32View.getFloat32(0, false); // false para big-endian
// Reemplace el nombre de la variable aquí en lugar de "voltage" (la clave)
return { payload: { voltage: voltage } };
Haga lo mismo con los demás nodos function, cambiando los nombres de las variables según los registros que esté leyendo. Luego agregue otro nodo "function" y conecte la salida de los nodos anteriores a su entrada:
Haga doble clic en ese nodo y agregue lo siguiente, reemplazando UBIDOTS-TOKEN por su token de Ubidots:
msg.headers = {
'Content-Type' : 'application/json',
'X-Auth-Token' : 'UBIDOTS-TOKEN'
}
return msg;Nota: Las versiones más recientes de Node-RED implementan la configuración de encabezados de forma nativa, por lo que este paso puede no ser necesario.
3. Envíe los datos a Ubidots
Arrastre y suelte un nodo "http request" y un nodo "debug" y conéctelos a los nodos anteriores como se muestra a continuación:
Haga doble clic en el nodo "http request" y complete los campos así:
Método: se requiere POST para enviar datos.
URL:
https://industrial.api.ubidots.com/api/v1.6/devices/<your-device-label>— reemplace el marcador por la etiqueta de su dispositivo.
Haga clic en "Done" para guardar y luego en "Deploy". Verá un nuevo dispositivo en Ubidots con las variables mencionadas:
Si además lee la potencia activa (registro 30013) y la potencia reactiva (30025) y las etiqueta como active-power y reactive-power, el widget Power Diagram dibujará el diagrama de cuatro cuadrantes de este medidor, que es también la forma más rápida de comprobar que la instalación quedó bien conectada.
Solución de problemas
¿Por qué el medidor no devuelve nada, o devuelve valores evidentemente incorrectos?
Casi todos los problemas de Modbus con el SDM230 se deben a una de seis causas. Revíselas en orden:
Está leyendo registros de retención en lugar de registros de entrada. Las mediciones son registros de entrada: código de función 04, no 03.
Dirección o cantidad impar. Los flotantes ocupan dos registros; tanto la dirección inicial como la cantidad deben ser pares.
Dirección desplazada por el offset del registro. La dirección es el número de registro menos 30001, no el número de registro.
Ajustes seriales que no coinciden. Baudios, paridad, bits de parada e ID de esclavo deben coincidir exactamente con el medidor.
A y B intercambiados. No están estandarizados entre fabricantes; intercambiarlos no representa riesgo.
Orden de palabras incorrecto. Si los valores llegan como NaN, infinito o un número absurdamente pequeño, los dos registros se están combinando en el orden equivocado.
Preguntas frecuentes
¿Qué registro Modbus contiene la energía total del SDM230?
La energía activa total es el registro 30343, dirección Modbus 0x0156 (342 en decimal), en kWh. Como todos los demás valores, es un flotante de 32 bits que ocupa dos registros, así que lea una cantidad de 2 a partir de la dirección 342.
¿El SDM230 usa registros de entrada o registros de retención?
Ambos, para cosas distintas. Todas las mediciones son registros de entrada (3xxxx), que se leen con el código de función 04. Los registros de retención (4xxxx) contienen solo configuración — baudios, paridad, dirección de nodo y orden de registros — y se leen con el código 03 y se escriben con el código 16.
Mis valores llegan como NaN o como un número muy pequeño. ¿Qué está pasando?
Esa es la firma de un desajuste en el orden de bytes o de palabras, no de una falla de cableado. El SDM230 envía primero el registro más significativo. Si su maestro asume lo contrario, intercambie las dos palabras de 16 bits antes de reinterpretar el resultado como flotante, o cambie el registro de retención "Register Order" del medidor para que coincida con su maestro.
¿Puedo poner varios medidores SDM230 en un mismo bus RS-485?
Sí. Modbus admite direcciones de nodo del 1 al 247, y el límite práctico de un segmento del SDM230 es de 32 nodos sobre hasta 1200 m. Asigne a cada medidor un ID de esclavo único, mantenga la misma velocidad en baudios en todo el bus y termine con 120 Ω solo en los dos extremos físicos.
¿Es obligatorio usar Node-RED para llegar a Ubidots?
No. Aquí se usa Node-RED porque es gratuito y corre en casi cualquier equipo, pero sirve cualquier maestro Modbus capaz de hacer una petición HTTP o MQTT. Si prefiere un gateway de hardware en lugar de uno de software, vea el gateway Teltonika TRB140 o, para un enlace RS-485 celular, el SenseCAP Sensor Hub 4G.
¿El SDM230 es solo monofásico?
Sí. El SDM230 es un medidor monofásico que mide un circuito de línea a neutro. Para instalaciones trifásicas, el SDM630 de Eastron expone registros de entrada IEEE-754 del mismo estilo con valores por fase, y la función de conversión de Node-RED de esta página aplica sin cambios.
Las direcciones de registro y los valores de comunicación por defecto de esta página se verificaron por última vez contra el documento de protocolo Modbus del SDM230 de Eastron en agosto de 2026.












