Knowledge Base

Programación de instrumentación con MATLAB

Este artículo de base de conocimientos presenta la programación de un producto de potencia programable de Magna-Power utilizando MATLAB. MATLAB es un entorno de programación de alto nivel reconocido por su facilidad de uso en computación numérica, visualización y programación. Sus robustas toolboxes y funciones lo convierten en una excelente opción para controlar, medir y graficar datos de instrumentación programable. Además, el amplio soporte de Magna-Power para los Comandos Estándar para Instrumentación Programable (SCPI) garantiza una integración perfecta con MATLAB a través de comandos sencillos e intuitivos.

Los productos de Magna-Power son compatibles con una variedad de interfaces de comunicación, incluyendo RS-232, TCP/IP Ethernet, USB, RS-485 e IEEE-488 GPIB. A pesar de estas diferentes interfaces, los comandos SCPI permanecen consistentes para una serie de productos en particular, tal como se documenta en el manual de usuario de la serie de productos correspondiente. Al crear un programa en MATLAB, la única diferencia entre interfaces será la configuración de la conexión del dispositivo.

Interfaces de comunicación

Conexión USB, serial o RS-485

Para conexiones USB, serial o RS-485, MATLAB utiliza la función integrada serialport para crear una conexión serial con el instrumento:

conn = serialport('COM4', 115200);

La velocidad de baudios serial para productos xGen es 115200, mientras que para productos no xGen es 19200. La ubicación del puerto está definida por su sistema operativo. En Windows, este puerto se puede encontrar en el Administrador de dispositivos.

El envío y recepción posterior de comandos a través de la conexión serial será de la siguiente manera:

writeline(conn, '*IDN?');
response = readline(conn);
disp(response);

Conexión TCP/IP Ethernet

Para conexiones TCP/IP Ethernet, MATLAB utiliza la función tcpclient:

t = tcpclient('192.168.0.86', 50505);

El envío y recepción posterior de comandos a través de la conexión TCP/IP Ethernet será de la siguiente manera:

writeline(t, '*IDN?');
response = read(t);
disp(char(response));

Conexión IEEE-488 GPIB

Para conexiones IEEE-488 GPIB, MATLAB utiliza la función gpib junto con el Instrument Control Toolbox:

g = gpib('NI', 0, 12);
fopen(g);

El envío y recepción posterior de comandos a través de la conexión IEEE-488 GPIB será de la siguiente manera:

fprintf(g, '*IDN?');
response = fscanf(g);
disp(response);

Ejemplos detallados

Los siguientes ejemplos proporcionan programas de MATLAB más detallados utilizando una fuente de alimentación xGen MagnaDC. La programación de una fuente de alimentación DC programable MagnaDC no xGen en MATLAB será casi idéntica, con cambios sutiles en los comandos SCPI tal como se documenta en el manual de usuario de la serie de productos correspondiente.

Ejemplo 1: Control básico por TCP/IP Ethernet

Este ejemplo básico crea una conexión TCP/IP Ethernet, envía algunos comandos de inicialización, habilita la salida DC, eleva el nivel de corriente a 5 A, espera 20 segundos y luego se apaga.

% Create a TCP/IP connection to the instrument
t = tcpclient('192.168.0.86', 50505);

% Send SCPI command requesting the product to identify itself
writeline(t, '*IDN?');
% Receive the product's response and display it in the command window
response = read(t);
disp(char(response));

% Configure the MagnaDC for local control
writeline(t, 'CONF:SOUR 0');
% Set the DC output current to 0 A before enabling DC output
writeline(t, 'CURR 0');
% Enable the MagnaDC power supply output
writeline(t, 'OUTP:START');
% Set the DC output current to 5 A
writeline(t, 'CURR 5');

% Wait for 20 seconds
pause(20);

% Disable the DC output
writeline(t, 'OUTP:STOP');

% Clear the TCP/IP connection
clear t;

Ejemplo 2: Conexión serial con puntos de ajuste de corriente

Este ejemplo crea una conexión serial con el producto, determina qué producto es y luego envía una secuencia de comandos de corriente con 20 segundos entre cada nivel de corriente. Este tipo de programa puede ampliarse para recorrer valores de voltaje, potencia y resistencia también.

% Create a serial connection object with default baud rate for MagnaLOADs
conn = serialport('COM4', 115200);

% Send SCPI command requesting the product to identify itself
writeline(conn, '*IDN?');
% Receive the product's response and display it in the command window
response = readline(conn);
disp(response);

% Create an array of current set points
currSetPoints = [50, 100, 150, 250];

% Configure the MagnaDC power supply for local control
writeline(conn, 'CONF:SOUR 0');
% Enable the MagnaDC power supply output
writeline(conn, 'OUTP:START');

% Loop through each current set point
for currSetpoint = currSetPoints
    fprintf('Setting Current to %d A\n', currSetpoint);
    writeline(conn, sprintf('CURR %d', currSetpoint));
    pause(20);
end

% Disable the MagnaDC power supply output
writeline(conn, 'OUTP:STOP');

% Clear the serial connection
clear conn;

Ejemplo 3: Descarga de una batería y graficación de datos

En este ejemplo, una fuente de alimentación DC xGen MagnaDC se programa para descargar una batería utilizando puntos de ajuste y tiempos leídos desde un archivo de valores separados por comas (.csv), medir la entrada DC utilizando los comandos de medición de alta precisión del producto y luego proporcionar un gráfico de los datos medidos en función del tiempo. Este programa podría ampliarse aún más para generar un informe de prueba en PDF, integrando los datos medidos, gráficos, así como información de otros instrumentos.

% Import data from CSV file
% The CSV file should have two columns:
% Column 1: Current set point in amperes
% Column 2: Time in seconds
data = readmatrix('example_profile.csv');

% Create a serial connection object with default baud rate for xGen products
conn = serialport('COM8', 115200);

% Configure the MagnaDC for local control
writeline(conn, 'CONF:SOUR 0');
% Enable the MagnaDC power supply output
writeline(conn, 'OUTP:START');

% Initialize arrays to store measurements
currents = [];
voltages = [];
times = [];
testStartTime = tic;

% Loop through each set point and duration
for i = 1:size(data, 1)
    currSetpoint = data(i, 1);
    duration = data(i, 2);
    
    % Set the current set point
    writeline(conn, sprintf('CURR %f', currSetpoint));
    
    % Record data for the specified duration
    stopTime = toc(testStartTime) + duration;
    while toc(testStartTime) < stopTime
        % Measure all DC output variables
        writeline(conn, 'MEAS:ALL?');
        response = readline(conn);
        measurements = strsplit(response, ',');
        
        % Store measurements
        currents(end+1) = str2double(measurements{1});
        voltages(end+1) = str2double(measurements{2});
        times(end+1) = toc(testStartTime);
        
        pause(0.5);
    end
end

% Disable the MagnaDC power supply output
writeline(conn, 'OUTP:STOP');

% Clear the serial connection
clear conn;

% Plot Current vs. Time
subplot(2,1,1);
plot(times, currents, 'r--');
ylabel('Output Current (A)');
title('I-V Profile');

% Plot Voltage vs. Time
subplot(2,1,2);
plot(times, voltages, 'b--');
xlabel('Time (s)');
ylabel('Output Voltage (V)');

% Display the plots
figure(gcf);

Nota: Asegúrese de que el archivo CSV example_profile.csv esté correctamente formateado y ubicado en el directorio de trabajo de MATLAB. La primera fila debe contener los encabezados y los datos deben comenzar a partir de la segunda fila.

Conclusión

MATLAB proporciona un entorno potente para controlar los productos de potencia programables de Magna-Power. Con funciones integradas para comunicación serial, TCP/IP y GPIB, así como amplias capacidades de graficación, MATLAB simplifica el proceso de automatización de pruebas, recopilación de datos y visualización de resultados. Al aprovechar los comandos SCPI y las funcionalidades de MATLAB, los usuarios pueden desarrollar programas de control sofisticados adaptados a sus aplicaciones específicas.

Para conjuntos detallados de comandos SCPI y mayor personalización, consulte el manual de usuario de la serie específica de productos Magna-Power que esté utilizando.

Originally published octubre 29, 2024

Stay connected and informed.

Subscribe to receive emails—no more than once per month—with new technical articles, product releases and factory updates from Magna-Power.

Have any questions or feedback?
We'd love to hear from you.
Contact us