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.