Ir al contenido

← Todas las funcionalidades

Banco de ensayo de fusiblesRaspberry PLC 19RSCPISerie USBControl

Gobernar una fuente de alimentación programable por SCPI desde un PLC

Automatizar una fuente de alimentación SCPI con Python convierte un instrumento manual de laboratorio en el músculo de un banco de ensayo automatizado. Este ejemplo gobierna una Ametek Sorensen XG (0-5 V / 0-220 A) desde un Raspberry PLC 19R por serie USB a 9600 baudios: direccionamiento del equipo con *ADR, consignas de corriente y tensión con SOUR:CURR y SOUR:VOLT, conmutación de la salida y lectura de telemetría. Es exactamente el patrón que ejecutamos en un banco de ensayo de fusibles real en producción.

Por qué SCPI más un PLC gana a un PC de laboratorio

El Raspberry PLC vive cableado permanentemente en el armario: montaje en carril DIN, alimentación a 24 V, E/S industrial para enclavamientos y balizas. La misma máquina Linux que habla SCPI con la fuente también lee el shunt, gobierna relés y renderiza el HMI — un solo equipo, sin un PC de sobremesa frágil sobre el banco. Con el pyserial de Python basta para hablar con el instrumento.

El juego de comandos SCPI que importa

Cuatro comandos cubren todo el flujo de trabajo: *ADR n selecciona la unidad en un bus compartido, SOUR:VOLT limita la tensión (5 V para ensayo de fusibles), SOUR:CURR fija la corriente de ensayo y OUTP ON/OFF conmuta la etapa de potencia. Una pausa de 50 ms tras cada escritura mantiene contento al parser de la XG a 9600 baudios.

Rampa en lugar de escalón

Meter de golpe 200 A en un shunt desde cero castiga cableado y conectores. El ejemplo sube la consigna en pasos de 5 A con lectura de telemetría (MEAS:CURR?) en cada etapa, y un bloque finally garantiza que la salida se corta aunque el script se caiga a mitad de ensayo.

Un fragmento de la implementación

Tal cual del ejemplo desplegado en el Raspberry PLC 19R — cópialo libremente:

def current_ramp(supply, target_a, step_a=5.0, wait_s=0.5):
    """Raise the setpoint in steps to avoid stressing shunt and wiring."""
    setpoint = 0.0
    while setpoint < target_a:
        setpoint = min(setpoint + step_a, target_a)
        supply.set_current(setpoint)
        print("  setpoint %.1f A -> supply measures %.2f A"
              % (setpoint, supply.read_current()))
        time.sleep(wait_s)

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

Preguntas frecuentes

¿Funciona con otras fuentes de alimentación SCPI?

En su mayor parte, sí. SOUR:CURR, SOUR:VOLT y OUTP son SCPI estándar, así que las fuentes Keysight, Rigol o EA aceptan los mismos comandos básicos. Solo el direccionamiento (*ADR) y los detalles de temporización son específicos de Sorensen.

¿Por qué 9600 baudios y no algo más rápido?

La interfaz serie de la XG es más fiable a 9600 con pausas cortas entre comandos. Las secuencias de ensayo cambian consignas como mucho cada pocos cientos de milisegundos, así que el ancho de banda nunca es el cuello de botella.

¿Cómo sé que la corriente real coincide con la consigna?

Midiéndola de forma independiente. En el banco completo la corriente se lee de un shunt a través de un ADC ADS1015, y una rutina de calibración en lazo cerrado ajusta la consigna SCPI hasta que el valor medido converge.

Funcionalidades relacionadas