Ir al contenido

← Todas las funcionalidades

Control de biorreactoresM-DuinoModbus RTUControl

Control de RPM de variador de frecuencia por Modbus RTU

La velocidad del agitador fija la mezcla y la transferencia de oxigeno en un biorreactor, asi que el variador debe seguir su consigna y reportarla con fidelidad. Este ejemplo, procedente de un despliegue real de control de biorreactores, cubre el control de variador por Modbus RTU con un PLC M-Duino: marcha y paro en un registro, una consigna de RPM escalada por cien en otro, y la velocidad real leida de un valor de 32 bits repartido en dos registros de 16 bits. Dos variadores comparten el bus RS485 9600 8N1 en las direcciones 3 y 4.

Registros de marcha, consigna y realimentacion

El registro 0x210D arranca y para el variador. El registro 0x0144 lleva la consigna de RPM multiplicada por cien, de modo que 250 rpm se envia como 25000. La realimentacion vive en 0x2149 como dos registros consecutivos de 16 bits. Mantener separados mando y realimentacion permite al PLC verificar que el variador alcanzo realmente la velocidad ordenada.

Reconstruir una lectura de velocidad de 32 bits

Las RPM reales no caben en 16 bits, asi que el variador las expone como dos registros. El lector solicita ambos, comprueba que la respuesta sea limpia y los combina como (reg0 desplazado 16 a la izquierda) OR reg1. Convertir a un tipo de 32 bits antes del desplazamiento evita el clasico desbordamiento que pone a cero la palabra alta de forma silenciosa.

Supervision periodica

Cada dos segundos el loop lee las RPM reales y las imprime. En produccion este valor sube a los input registers del gateway, de modo que el SCADA puede comparar la velocidad ordenada frente a la medida y disparar una alarma si un variador se cala o se embala cuando el agitador deberia mantener un regimen estable.

Un fragmento de la implementación

Tal cual del ejemplo desplegado en el M-Duino — cópialo libremente:

void setup() {
  Serial.begin(115200);
  master.begin(9600);
  master.setTimeout(300);

  // Example startup: drive 1 at 250 rpm
  startDrive(DRIVE[0]);
  setRPM(DRIVE[0], 250);
}

El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.

Preguntas frecuentes

Por que se multiplica la consigna de RPM por cien?

El variador almacena la velocidad con dos decimales de resolucion como entero, asi que 250 rpm se escribe como 25000. El PLC la escala al escribir.

Por que leer dos registros para la velocidad?

Las RPM reales son un valor de 32 bits que no cabe en un unico registro Modbus de 16 bits, asi que el variador las reparte entre 0x2149 y el registro siguiente; el PLC las recombina.

Como evito que la palabra alta se lea como cero?

Convierte el valor a un tipo de 32 bits antes de desplazar 16 a la izquierda. Desplazar primero un valor de 16 bits desborda y pierde los bits superiores.

Funcionalidades relacionadas