WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Oszi mit VISA auslesen

 

realRSN
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 11.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2012, 21:27     Titel: Oszi mit VISA auslesen
  Antworten mit Zitat      
Hallo,

ich versuche für eine Messung mit vier Agilent 3014A DSOs, jeden der 4x4 Kanäle mit Matlab auszulesen. Im Internet hab ich ein m-file gefunden und für mich angepasst. Die entsprechenden Treiber und der VISA Verwalter von Agilent sind installiert.

Die Oszis sind mittels USB an den Rechner angeschlossen.

Hier mein Code:

Code:

function [CH,T]=oszi(Kanal)

switch Kanal
     case {1,2,3,4}
         C=Kanal;
         visaObj = visa('agilent','USB0::0x0957::0x17A8::MY51138047::0::INSTR');
     case {5,6,7,8}
         C=Kanal-4;
         visaObj = visa('agilent','USB0::0x0957::0x17A8::MY51137873::0::INSTR');
     case {9,10,11,12}
         C=Kanal-8;
         visaObj = visa('agilent','USB0::0x0957::0x17A8::my51138052::0::INSTR');
     case {13,14,15,16}
         C=Kanal-12;
         visaObj = visa('agilent','USB0::0x0957::0x17A8::MY51138054::0::INSTR');
             
     otherwise
       error('Nicht zulässig')
       return;
 end
       



visaObj.InputBufferSize = 100000;
visaObj.Timeout = 10;
visaObj.ByteOrder = 'littleEndian';
fopen(visaObj);

%fprintf(visaObj,':STOP');
fprintf(visaObj,[':WAVEFORM:SOURCE CHAN' num2str(C)]);
fprintf(visaObj,[':DIGITIZE CHAN' num2str(C)]);

% Wait till complete
operationComplete = str2double(query(visaObj,'*OPC?'));
 while ~operationComplete
     operationComplete = str2double(query(visaObj,'*OPC?'));
 end
fprintf(visaObj,':WAV:POINTS 4000');
preambleBlock = query(visaObj,':WAVEFORM:PREAMBLE?');
fprintf(visaObj,':WAV:DATA?');
waveform.RawData = binblockread(visaObj,'uint16'); fread(visaObj,1);

fclose(visaObj);
delete(visaObj); clear visaObj;

preambleBlock = regexp(preambleBlock,',','split');
waveform.Points = str2double(preambleBlock{3});
waveform.XIncrement = str2double(preambleBlock{5}); % in seconds
waveform.YIncrement = str2double(preambleBlock{8}); % V
waveform.YOrigin = str2double(preambleBlock{9});
waveform.YReference = str2double(preambleBlock{10});

CH = (waveform.YIncrement.*(waveform.RawData - waveform.YReference)) + waveform.YOrigin;
T = (waveform.XIncrement.*(1:length(waveform.RawData))) - waveform.XIncrement;
 


ich möchte die Funktion mit [a,b]=oszi(8) aufrufen.

Das Problem ist, dass die Funktion manchmal einwandfrei funktioniert und dann wieder mit unterschiedlichen Fehlern abbricht.

Mal wird die Adresse nicht erkannt, mal gibt es nen VISA timeout.....

Wenn ich Matlab schließe und neustarte gehts immer die ersten ein zwei drei mal. Das kann aber nicht die Lösung sein, da ich die Funktion eigentlich in einer Schleife 16 mal aufrufen möchte um alle Kanäle auszulesen.

Hat irgendjemand ne Idee, was ich anders machen kann. Oder unter Umständen einen ganz anderen Ansatz wie ich die Daten vom Oszi in Matlab bekommen.

Vielen Dank schon im vorraus.
Private Nachricht senden Benutzer-Profile anzeigen


realRSN
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 11.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2012, 14:32     Titel:
  Antworten mit Zitat      
Nur falls es von interesse sein sollte. Es läuft jetzt wie es soll.

Hab an den Anfang vor der case abfrage folgendes eingefügt:

Code:

oldobjs=instrfind;
if ~isempty(oldobjs)
disp('Cleaning up ...')
delete(oldobjs);
clear oldobjs;
end
 


bis lang läuft es ohne Probleme
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.