Knowledge Base

Instrumentenprogrammierung mit MATLAB

Dieser Wissensdatenbank-Artikel stellt die Programmierung eines programmierbaren Stromversorgungsprodukts von Magna-Power mit MATLAB vor. MATLAB ist eine höhere Programmierumgebung, die für ihre Benutzerfreundlichkeit bei numerischen Berechnungen, Visualisierung und Programmierung bekannt ist. Die leistungsstarken Toolboxen und Funktionen machen es zu einer ausgezeichneten Wahl für die Steuerung, Messung und grafische Darstellung von Daten programmierbarer Instrumente. Darüber hinaus gewährleistet die umfassende Unterstützung von Magna-Power für Standard Commands for Programmable Instrumentation (SCPI) eine nahtlose Integration mit MATLAB durch einfache und intuitive Befehle.

Magna-Power-Produkte unterstützen eine Vielzahl von Kommunikationsschnittstellen, darunter RS-232, TCP/IP Ethernet, USB, RS-485 und IEEE-488 GPIB. Trotz dieser unterschiedlichen Schnittstellen bleiben die SCPI-Befehle für eine bestimmte Produktserie konsistent, wie im jeweiligen Benutzerhandbuch der Produktserie dokumentiert. Bei der Erstellung eines MATLAB-Programms besteht der einzige Unterschied zwischen den Schnittstellen in den Einstellungen für die Geräteverbindung.

Kommunikationsschnittstellen

USB-, serielle oder RS-485-Verbindung

Für USB-, serielle oder RS-485-Verbindungen verwendet MATLAB die integrierte serialport-Funktion, um eine serielle Verbindung zum Instrument herzustellen:

conn = serialport('COM4', 115200);

Die serielle Baudrate für xGen-Produkte beträgt 115200, während sie für Nicht-xGen-Produkte 19200 beträgt. Der Port wird von Ihrem Betriebssystem festgelegt. Unter Windows finden Sie diesen Port im Geräte-Manager.

Das anschließende Senden und Empfangen von Befehlen über die serielle Verbindung erfolgt wie folgt:

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

TCP/IP-Ethernet-Verbindung

Für TCP/IP-Ethernet-Verbindungen verwendet MATLAB die tcpclient-Funktion:

t = tcpclient('192.168.0.86', 50505);

Das anschließende Senden und Empfangen von Befehlen über die TCP/IP-Ethernet-Verbindung erfolgt wie folgt:

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

IEEE-488-GPIB-Verbindung

Für IEEE-488-GPIB-Verbindungen verwendet MATLAB die gpib-Funktion zusammen mit der Instrument Control Toolbox:

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

Das anschließende Senden und Empfangen von Befehlen über die IEEE-488-GPIB-Verbindung erfolgt wie folgt:

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

Ausführliche Beispiele

Die folgenden Beispiele zeigen detailliertere MATLAB-Programme unter Verwendung eines xGen MagnaDC-Netzgeräts. Die Programmierung eines Nicht-xGen MagnaDC programmierbaren DC-Netzgeräts in MATLAB ist nahezu identisch, mit geringfügigen Änderungen der SCPI-Befehle, wie im jeweiligen Benutzerhandbuch der Produktserie dokumentiert.

Beispiel 1: Grundlegende TCP/IP-Ethernet-Steuerung

Dieses grundlegende Beispiel erstellt eine TCP/IP-Ethernet-Verbindung, sendet einige Initialisierungsbefehle, aktiviert den DC-Ausgang, erhöht den Stromwert auf 5 A, wartet 20 Sekunden und fährt dann herunter.

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

Beispiel 2: Serielle Verbindung mit Strom-Sollwerten

Dieses Beispiel erstellt eine serielle Verbindung zum Produkt, ermittelt, um welches Produkt es sich handelt, und sendet dann eine Folge von Strombefehlen mit jeweils 20 Sekunden zwischen den einzelnen Stromstufen. Diese Art von Programm kann erweitert werden, um auch Spannungs-, Leistungs- und Widerstandswerte zu durchlaufen.

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

Beispiel 3: Entladen einer Batterie und Datenvisualisierung

In diesem Beispiel wird ein xGen MagnaDC Netzteil programmiert, um eine Batterie anhand von Sollwerten und Zeiten aus einer CSV-Datei (Comma-Separated Values, .csv) zu entladen, den DC-Eingang mithilfe der hochpräzisen Messbefehle des Produkts zu messen und anschließend eine grafische Darstellung der Messdaten über die Zeit zu erstellen. Dieses Programm könnte weiter ausgebaut werden, um einen PDF-Testbericht zu generieren, der die Messdaten, Diagramme sowie Informationen von anderen Instrumenten integriert.

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

Hinweis: Stellen Sie sicher, dass die CSV-Datei example_profile.csv korrekt formatiert ist und sich im MATLAB-Arbeitsverzeichnis befindet. Die erste Zeile sollte Überschriften enthalten, und die Daten sollten ab der zweiten Zeile beginnen.

Fazit

MATLAB bietet eine leistungsstarke Umgebung zur Steuerung programmierbarer Stromversorgungsprodukte von Magna-Power. Mit integrierten Funktionen für serielle, TCP/IP- und GPIB-Kommunikation sowie umfangreichen Darstellungsmöglichkeiten vereinfacht MATLAB den Prozess der Testautomatisierung, Datenerfassung und Ergebnisvisualisierung. Durch die Nutzung von SCPI-Befehlen und den Funktionen von MATLAB können Anwender anspruchsvolle Steuerprogramme entwickeln, die auf ihre spezifischen Anwendungen zugeschnitten sind.

Detaillierte SCPI-Befehlssätze und weitere Anpassungsmöglichkeiten finden Sie im Benutzerhandbuch der jeweiligen Magna-Power Produktserie, die Sie verwenden.

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