Knowledge Base

Programmation d'instrumentation avec MATLAB

Cet article de base de connaissances présente la programmation d'un produit d'alimentation programmable Magna-Power à l'aide de MATLAB. MATLAB est un environnement de programmation de haut niveau reconnu pour sa facilité d'utilisation en calcul numérique, visualisation et programmation. Ses boîtes à outils et fonctions robustes en font un excellent choix pour le contrôle, la mesure et la représentation graphique des données provenant d'instruments programmables. De plus, le support étendu de Magna-Power pour les commandes standard pour l'instrumentation programmable (SCPI) garantit une intégration transparente avec MATLAB grâce à des commandes simples et intuitives.

Les produits Magna-Power prennent en charge une variété d'interfaces de communication, notamment RS-232, TCP/IP Ethernet, USB, RS-485 et IEEE-488 GPIB. Malgré ces différentes interfaces, les commandes SCPI restent cohérentes pour une série de produits donnée, comme documenté dans le manuel d'utilisation de la série de produits correspondante. Lors de la création d'un programme MATLAB, la seule différence entre les interfaces réside dans les paramètres de connexion de l'appareil.

Interfaces de communication

Connexion USB, série ou RS-485

Pour les connexions USB, série ou RS-485, MATLAB utilise la fonction intégrée serialport pour créer une connexion série avec l'instrument :

conn = serialport('COM4', 115200);

Le débit en bauds série pour les produits xGen est de 115200, tandis que pour les produits non-xGen, il est de 19200. L'emplacement du port est défini par votre système d'exploitation. Sous Windows, ce port se trouve dans le Gestionnaire de périphériques.

L'envoi et la réception ultérieurs de commandes via la connexion série se feront comme suit :

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

Connexion TCP/IP Ethernet

Pour les connexions TCP/IP Ethernet, MATLAB utilise la fonction tcpclient :

t = tcpclient('192.168.0.86', 50505);

L'envoi et la réception ultérieurs de commandes via la connexion TCP/IP Ethernet se feront comme suit :

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

Connexion IEEE-488 GPIB

Pour les connexions IEEE-488 GPIB, MATLAB utilise la fonction gpib ainsi que l'Instrument Control Toolbox :

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

L'envoi et la réception ultérieurs de commandes via la connexion IEEE-488 GPIB se feront comme suit :

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

Exemples approfondis

Les exemples suivants fournissent des programmes MATLAB plus détaillés utilisant une alimentation MagnaDC xGen. La programmation d'une alimentation programmable CC MagnaDC non-xGen dans MATLAB sera quasi identique, avec des modifications subtiles des commandes SCPI telles que documentées dans le manuel d'utilisation de la série de produits correspondante.

Exemple 1 : Contrôle de base via TCP/IP Ethernet

Cet exemple de base crée une connexion TCP/IP Ethernet, envoie quelques commandes d'initialisation, active la sortie CC, augmente le niveau de courant à 5 A, attend 20 secondes, puis effectue l'arrêt.

% 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;

Exemple 2 : Connexion série avec points de consigne de courant

Cet exemple crée une connexion série avec le produit, détermine de quel produit il s'agit, puis envoie une séquence de commandes de courant avec 20 secondes entre chaque niveau de courant. Ce type de programme peut être étendu pour parcourir également des valeurs de tension, de puissance et de résistance.

% 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;

Exemple 3 : Décharge d'une batterie et tracé des données

Dans cet exemple, une alimentation xGen MagnaDC est programmée pour décharger une batterie en utilisant des points de consigne et des durées lus à partir d'un fichier de valeurs séparées par des virgules (.csv), mesurer l'entrée DC à l'aide des commandes de mesure haute précision du produit, puis fournir un tracé des données mesurées en fonction du temps. Ce programme pourrait être étendu davantage pour générer un rapport de test PDF, intégrant les données mesurées, les tracés, ainsi que des informations provenant d'autres instruments.

% 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);

Remarque : Assurez-vous que le fichier CSV example_profile.csv est correctement formaté et situé dans le répertoire de travail MATLAB. La première ligne doit contenir les en-têtes, et les données doivent commencer à partir de la deuxième ligne.

Conclusion

MATLAB offre un environnement puissant pour le contrôle des produits d'alimentation programmables Magna-Power. Avec des fonctions intégrées pour la communication série, TCP/IP et GPIB, ainsi que des capacités de tracé étendues, MATLAB simplifie le processus d'automatisation des tests, de collecte des données et de visualisation des résultats. En exploitant les commandes SCPI et les fonctionnalités de MATLAB, les utilisateurs peuvent développer des programmes de contrôle sophistiqués adaptés à leurs applications spécifiques.

Pour les jeux de commandes SCPI détaillés et des personnalisations supplémentaires, consultez le manuel d'utilisation de la série de produits Magna-Power spécifique que vous utilisez.

Originally published octobre 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