Ir al contenido

Escalar una señal de 4-20 mA en el PLC: fórmula, constantes y código

Respuesta corta: un transmisor 4-20 mA da 4 mA al inicio de su rango, no 0 mA. Resta 4 mA, divide entre el intervalo de 16 mA y multiplica por el rango. Si el programa escala desde cero, un depósito vacío marca un 20 %.

Sirve para cualquier PLC con entradas analógicas. Más abajo tienes las constantes de cada gama de PLC de Industrial Shields y un enlace a código probado.

La fórmula

PV = PVmin + (I − 4 mA) / 16 mA × (PVmax − PVmin)

Ejemplo: un transmisor de 0-10 bar a 12 mA da 0 + (12 − 4) / 16 × 10 = 5 bar.

En una entrada de 0-10 V con una resistencia de 500 Ω

Una resistencia de 500 Ω entre la entrada y 0 V convierte 4-20 mA en 2-10 V: escala desde 2 V, no desde 0 V. La impedancia de la entrada queda en paralelo con la resistencia y baja un poco la lectura. Para más precisión, calibra con un calibrador de lazo a 4 mA y a 20 mA, y usa esas dos lecturas como extremos de la escala.

Constantes para tu gama de PLC

Gama de PLCEntrada analógicaanalogRead() a fondo de escala
M-Duino y Ardbox0-10 V, 10 bits, impedancia de entrada 39 kΩ1023
ESP32 PLC0-10 V, 11 bits2047
ESP32 PLC 14AI0.0 y AI0.1: modo 0-10 V o 4-20 mA, seleccionado por softwareConsulta la hoja de datos del ESP32 PLC 14
Raspberry PLC V4 y V60-10 V, 12 bits4095
Raspberry PLC V30-10 V2047

Fuentes: hojas de datos de cada familia y la librería oficial rpiplc del Raspberry PLC. En una entrada de 0-10 V, 4 mA con 500 Ω se leen como un 20 % del fondo de escala: 205 cuentas de 1023, antes de corregir la impedancia de entrada.

Función de escalado

// counts: valor de analogRead(), adcMax: valor a 10 V en tu gama
// rEq: 500 ohmios en paralelo con la impedancia de entrada (493,7 ohmios en M-Duino)
float countsToMilliamps(float counts, float adcMax, float rEq) {
  return counts * 10.0 / adcMax / rEq * 1000.0;
}

float scale420(float mA, float pvMin, float pvMax) {
  return pvMin + (mA - 4.0) * (pvMax - pvMin) / 16.0;
}

// Por debajo de 3,6 mA: lazo roto o fallo del transmisor (NAMUR NE 43). Alarma, no escalar.

El sketch completo, probado en un M-Duino, con promedio, detección de fallo del lazo y control de fondo de escala, está en la guía cómo convertir una señal de 4-20 mA a 0-10 V en un PLC Arduino.

Cerca de 0 mA es un fallo, no un valor

  • 0 mA o casi: cable roto, sin alimentación del lazo o polaridad invertida. Lanza una alarma y pasa a un estado seguro.
  • Menos de 3,6 mA o más de 21 mA: los transmisores que siguen la NAMUR NE 43 usan estos valores para indicar un fallo.
  • Lectura fija a fondo de escala: la corriente real puede ser mayor de lo que la entrada puede mostrar. Revisa el valor de la resistencia y el rango de la entrada.

No se permite comentar en este curso.