Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Datenübertragung von Oszilloskop zum Matlab über RS232

 

che_gl
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2008, 19:25     Titel: Datenübertragung von Oszilloskop zum Matlab über RS232
  Antworten mit Zitat      
Hallo

Ich habe hier ein folgendes Problem mit der Seriellschnittstelle Rs232 :
ich möchte die Messdaten von dem Oszilloskop Textronik THS720 zum Matlab über RS232 übertragen, und ich habe seit Tagelang damit beschäftigt aber das funktioniert irgendwie gar nicht ,also kann ich gar nicht was von dem Oszi bekommen .Nun habe ich meine Frage : ob es überhaupt möglich ist , die Datenübertragung zu realisieren oder muss man einen Treiber für den Oszi haben ?

ich bedanke mich im Voraus für alle Antwort
_________________

Student
Private Nachricht senden Benutzer-Profile anzeigen


che_gl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2008, 12:01     Titel:
  Antworten mit Zitat      
Hallo Zusammen

Keine Experte hier oder habt ihr auch noch keine Erfahrung mit solchem Problem gemacht ?

Also die lezte Tage habe ich mich mit der Verbindung zwischen Rechner und Oszil beschäftigt und habe ich folgende gefunden : mit Matlab 2007a gibt ne Tool " Instrument control " , und da sind auch einige Treiber für zB : Tektronix TDS200 aber für THS720P nicht .Also muss man doch einen Treiber für das Gerät als *.mdd file in Matlab importieren (es gibt auch zahlreiche Treibern in der Seite von Mathworks)

Nun habe ne Frage : weiß jemand evt wie man *.mdd file in Matlab importieren muss ? oder wie kann man einen Treiber für Matlab programieren (weil auf der Seite von Mathworks fast alle Treiber für Tektronix Oszilloskop gibt ,aber einen Treiber für THS720P leider auch nicht )

Zum Schluss habe ich ein Programierer-Benutzerhandbuch für das Oszilloskop gefunden, und da sind halt Liste für Befehle , die mann entsprechend seinem Wunsch :d über Seriellschnittstelle anfragen muss , und dann gibt das Oszilloskop dann die entsprechende Daten raus .
Hier ist mal Link für viele Gerätstreiber von Mathworks
http://www.mathworks.com/matlabcent.....Name=Instrument%20Drivers

mfg
_________________

Student
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 803
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 03.02.2008, 17:19     Titel:
  Antworten mit Zitat      
Zitat:
Keine Experte hier oder habt ihr auch noch keine Erfahrung mit solchem Problem gemacht ?

Gibt es hier genug! Jedoch bei vielen Problemen (dazu zählt RS232 auf jeden Fall) kann man nicht mit einem Rat direkt helfen. Das liegt zB. daran, das diejenigen die nie was mit der Schnittstelle gemacht haben, können bei der einfachen RS232 so viele Fehler machen, das derartige Probleme in einem Frage-Antwort-forum kaum nachvollzogen werden können. Auch Deine Problembeschreibung geht nicht auf die Einstellungen ein, sondern zu allgemein ist...


MfG
Mein Rat zu allen, die was mit RS232 haben... probieren, probieren und noch mals probieren... falls es wieder noch nicht funzt - doku (genau) lesen und nochmals probieren.... und so im Kreis... Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
che_gl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2008, 11:07     Titel:
  Antworten mit Zitat      
Hallo Outsider

Ich danke dir für deine Antwort , ich bin momentan im Labor und jedes Mal wenn ich das Oszill irgendwas frage zB : fprintf('*IDN?'), dann sagt MAtlab nur

Warning: A timeout occurred before the Terminator was reached

weisst du vielleicht woran das Problem liegt ? oder muss mann irgend ein Parameter von der Seriellschnittstelle verändern

Mfg
_________________

Student
Private Nachricht senden Benutzer-Profile anzeigen
 
Babel42
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 05.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2008, 11:27     Titel:
  Antworten mit Zitat      
HAllo Che_gl;
du kannst den terminator sebst festlegen. Wenn dieser in den Puffer geladen wird, erkennt matlab diesen und ließt den Puffer aus. Findet MAtlab keinen terminator, kommt irgendwann das timeout. Nun weiß ich nicht wie dein Oszi die daten schickt. Ich konnte es lösen, indem ich mein meßgerät immer nur einen Meßwert schicken lassen habe.(d.h. ich sage ihm schicke mir einen meßwert, lese ihn aus und lasse dannden nächsten schicken) Am besten du schaust dir das Sendesignal deines Oszis an und schaust, ob du was als terminator definieren kannst. Outsider hatte auch immer "BytesAvailableFcnMode" als Stichwort gegeben.
Meist ist die RS232-Kommunikation auch in den Manuals der Geräte beschrieben.
Grüße Babel42
_________________

„I think the problem, to be quite honest with you, is that you've never actually known what the question is.“
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 803
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 05.02.2008, 12:07     Titel:
  Antworten mit Zitat      
Zitat:
jedes Mal wenn ich das Oszill irgendwas frage zB : fprintf('*IDN?'), dann sagt MAtlab nur

Warning: A timeout occurred before the Terminator was reached

Ich denke nicht, das es an fprintf liegt, sondern eher, weil Du (vermutlich) in der nächsten Zeile nach fprintf ein fread hast und versuchst die Daten auszulesen... Wenn Du explizit auf dem Empfangs-Puffer mit fread zugreifst schaltet sich der Timeout ein (default - 10 Sekunden). Ist in der Zeit kein Zeichen eingegangen meldet sich ML mit der Warning.

Ist der Befehl '*IDN?' gültig für den Oszi? Probiere mal die Baudrate auf 9600 zu stellen. Die im Antwort von Babel42 von mir mir bereits oft erwähnte "BytesAvailableFcn" erlaubt ein Ereignisgesteuertes Auslesen von Daten von der seriellen Schnittstelle. d.h. die Daten werden erst dann ausgelsen, wenn diese empfangen wurde (dadurch entfallen lästige WHILE-Schleifen, die MATLAB-blockieren)... Mehr dazu unter der Doku... suche auch in meinen Beiträgen... das Thema kam schon mal mehrmals vor.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
che_gl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2008, 12:49     Titel:
  Antworten mit Zitat      
Babel42 hat Folgendes geschrieben:
HAllo Che_gl;
du kannst den terminator sebst festlegen. Wenn dieser in den Puffer geladen wird, erkennt matlab diesen und ließt den Puffer aus. Findet MAtlab keinen terminator, kommt irgendwann das timeout. Nun weiß ich nicht wie dein Oszi die daten schickt. Ich konnte es lösen, indem ich mein meßgerät immer nur einen Meßwert schicken lassen habe.(d.h. ich sage ihm schicke mir einen meßwert, lese ihn aus und lasse dannden nächsten schicken) Am besten du schaust dir das Sendesignal deines Oszis an und schaust, ob du was als terminator definieren kannst. Outsider hatte auch immer "BytesAvailableFcnMode" als Stichwort gegeben.
Meist ist die RS232-Kommunikation auch in den Manuals der Geräte beschrieben.
Grüße Babel42


Danke für deine Antwort , ich werde mal probieren , also meinst du dass ich den Terminator zB"COM4" feststellen ,weil COM4 ist bei mir die Serielle.Aber laut die Daten von dem get(serial) ist Terminator bei mir als "LF" festgelegt .

Zitat:
ch denke nicht, das es an fprintf liegt, sondern eher, weil Du (vermutlich) in der nächsten Zeile nach fprintf ein fread hast und versuchst die Daten auszulesen... Wenn Du explizit auf dem Empfangs-Puffer mit fread zugreifst schaltet sich der Timeout ein (default - 10 Sekunden). Ist in der Zeit kein Zeichen eingegangen meldet sich ML mit der Warning.

Ist der Befehl '*IDN?' gültig für den Oszi? Probiere mal die Baudrate auf 9600 zu stellen. Die im Antwort von Babel42 von mir mir bereits oft erwähnte "BytesAvailableFcn" erlaubt ein Ereignisgesteuertes Auslesen von Daten von der seriellen Schnittstelle. d.h. die Daten werden erst dann ausgelsen, wenn diese empfangen wurde (dadurch entfallen lästige WHILE-Schleifen, die MATLAB-blockieren)... Mehr dazu unter der Doku... suche auch in meinen Beiträgen... das Thema kam schon mal mehrmals vor.


MfG


Danke dir auch für deine Antwort , ich habe den Befehl '*IDN?' aus dem Benutzer Handbuch genommen. und habe ich nach dem eingestellte 20s Timeout in dem Windowfenster dann fread gegeben ,und sagt ML nun folgende : Warning: The specified amount of data was not returned within the Timeout period.

Sollte ich die Timeout noch länge einstellen

Mfg
_________________

Student
Private Nachricht senden Benutzer-Profile anzeigen
 
Babel42
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 05.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2008, 14:09     Titel:
  Antworten mit Zitat      
Zitat:
Danke für deine Antwort , ich werde mal probieren , also meinst du dass ich den Terminator zB"COM4" feststellen ,weil COM4 ist bei mir die Serielle.Aber laut die Daten von dem get(serial) ist Terminator bei mir als "LF" festgelegt .


Nein LF steht für line feed und meint ein Zeilenende. Du kannst bestimmte Zeichen in deinem Datenstron definierendie immer wieder regelmäßig auftauchen zum Beispiel ein CR (carriage return), Leerzeichen oder andere Ascii-zeichen. entweder über die entsprechende Dezimalzahl oder 'Buchstabe'. Bei meinem Messgerät wird jeder gesendete Wert mit DLE (data link escape) eingeleitet. Wenn ich den als Terminator benutze, wird das erste Auslesen kein Wert liefern, aber alle weiteren.
Grüße
_________________

„I think the problem, to be quite honest with you, is that you've never actually known what the question is.“
Private Nachricht senden Benutzer-Profile anzeigen
 
che_gl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2008, 23:58     Titel:
  Antworten mit Zitat      
Hallo Babel

Also ich habe heute ganze Tag damit probiert , aber funktioniert noch nicht .Hast du für dein Gerät auch einen Treiber für Matlab als *.mdd File , oder war die Einstellung alle manuell eingestellt
ich wollte heute schon mit dem Problem fast aufgeben , wenn das so weiter ist

vielen Dank für deine Antwort
Mfg
_________________

Student
Private Nachricht senden Benutzer-Profile anzeigen
 
Babel42
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 05.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2008, 09:41     Titel:
  Antworten mit Zitat      
Nein, ich brauchte keine Treiber zu installieren. Ich habe auch keine instrument control toolbox bentzen können, der so. Ich habe aber auch bestimmt 3-4 Wochen rumgebastelt bis es dann lief. Also gib nicht auf. Was bei mir problematisch war, ist das senden des strings. Irgenwie hat das nicht hin gehauen. Also bin ich den Umweg über die entsprechenden Zahlen gegangen, in etwa so:

Code:
fprintf(B110, char([16 2 78 16 3 93]));     %Software-Restart


Was in etwa heißt: DLE STX ... DLE ETX BCC. B110 ist mein serielles Portobjekt. Ich habe zum Beispiel den BCC (Block Check Character) per Hand ausgerechnet.

Und was ich immer wieder gern empfehle, ist das Programm serial-watcher. Das ist freeware. Du kannst damit testen. was dein serieller Port eigentlich sendet. Verbinde dein Port mit einem anderen und lass serial-watcher horchen, was auf dem anderen Port ankommt.
Grüße Babel
_________________

„I think the problem, to be quite honest with you, is that you've never actually known what the question is.“
Private Nachricht senden Benutzer-Profile anzeigen
 
che_gl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2008, 21:13     Titel:
  Antworten mit Zitat      
Hallo Babel

Hier ist mal einen interessanten Link mit einem Demo "Using MATLAB with Tektronix Instruments" von Mathworks :
http://www.mathworks.com/products/i.....ent/supportedio13766.html

Mfg
_________________

Student
Private Nachricht senden Benutzer-Profile anzeigen
 
Tuborger
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 15.02.08
Wohnort: Bonn
Version: 2007a
     Beitrag Verfasst am: 15.02.2008, 10:03     Titel:
  Antworten mit Zitat      
Ich steuere einen Signalgenerator über RS232 an, und mache das ohne Instrument Control und ohne Treiber.
Hier mal ein Beispiel-Code
Code:

delete(instrfindall);
s = serial('COM1',...
           'BaudRate', 9600,...
           'Parity', 'none',...
           'DataBits', 8,...
           'StopBits', 1,...
           'InputBufferSize', 1024,...
           'OutputBufferSize', 1024,...
           'Timeout', 2);
fopen(s);
fprintf(s, 'CFRQ:VALUE 94.8MHZ')
fclose (s);
 


Die Parameter der Com-Schnittstelle müssen natürlich angepasst werden.
Im Signalgenerator musste ich z.B. auch RS232 oder GPIB wählen.
Ich hatte lange Probleme, die Schnittstelle zu öffnen.
Mit instrfind und delete(instrfindall) hab ich es endlich geschafft..
Private Nachricht senden Benutzer-Profile anzeigen
 
che_gl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 01.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2008, 01:52     Titel:
  Antworten mit Zitat      
Also ich mache für Schnittstelle immer so bevor ich irgendwas mit der Schnittstelle machen wollte
Code:
s = serial('COM4');

if length (instrfind) > 0
   fclose (instrfind);
end
%s.BytesAvailableFcn = @Serial_Callback;
fopen(s)


Falls irgendeine COM-Schnittstelle noch offen ist

Gruß
_________________

Student
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2019 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.