Hallo Zusammen, ich arbeite grad mit dem Oszi Yokogawa DLM2032 und will eine Methode zur Messdatenerfassung mit Hilfe von Scipy-Befehle und C# schreiben. Leider bin ich bei der Suche nach der richtigen Scipy-befehle für Messdatenerfassung gescheitert. weißt jemanden, welche Befehle sind für Datenerfassung durch einer Remotezugriff zuständig. Danke im Voraus
https://cdn.tmi.yokogawa.com/IM710105-03E.pdf S.94 von 108 steht, die USB-Verbindung zum PC kennt zwei Protokolle, ein GPIB488 via USB und ein lesender Zugriff auf Massenspeicher (z.B: USB-Stick?). Hat SciPy überhaupt eigene I/O oder steckt das in Python selbst? https://docs.scipy.org/doc/scipy/tutorial/index.html#user-guide ich sehe da nur File I/O, das ist es nicht.
Wirklich scypi, oder vielleicht scpi..? Zu letzterem gibt's üblicherweise von den Herstellern Beispiele und Manuals. Auch von yokogawa.
oder Skippy https://de.wikipedia.org/wiki/Skippy,_das_Buschk%C3%A4nguruh Hat mich auch gewundert, was ein Zusatzpaket zu Python mit C# zu tun hat. Aber man lernt ja nie aus. https://de.wikipedia.org/wiki/Standard_Commands_for_Programmable_Instruments davon hatte ich noch nicht gelesen. Eine Erweiterung für GPIB, also wird dieses Protokoll wohl benutzt. Seit 1989, letzte Spezifikation von 1999. https://sigrok.org/wiki/Yokogawa_DLM2000_series "The device uses GPIB, USBTMC or LXI via its ethernet port for communication with a host PC. The protocol is based on SCPI commands." und da steht dann auch der Link zum communication-manual https://www.yokogawa.com/pdf/provide/E/GW/IM/0000022842/0/IM710105-17E.pdf SCPI wird zwar nirgends erwähnt, es scheint sich trotzdem um dieses Protokoll zu handeln. Optional ist eine echte GPIB-Schnittstelle erhältlich, aber das selbe müsste auch über USB laufen.
:
Bearbeitet durch User
Scpi ist einfach das übliche an Messgeräten. Egal ob per gpib, rs232, USB, oder Ethernet. Die Kommandos sind eigentlich immer so aufgebaut.
Ist das USBTMC-USB488 eine eigene Klasse oder wird das z.B. wie eine serielle Schnittstelle mit einem FTDI-Chip angesprochen? Dann könnte man probeweise die Texte mit einem Terminalprogramm senden und empfangen. Aber ich habe den Eindruck, das ist etwas ganz eigenes zu dem man auch eine Art Treiber braucht. Nachdem klar ist, dass kein SciPy gemeint war, er muss ja irgendwie mit seinem C#-Programm die ASCII-Befehle an das Oszilloskop schicken und dessen Reaktionen empfangen können. Wäre es die optionale GPIB-Schnittstelle, dann müsste er auch eine GPIB-Karte im PC haben und dazu einen Treiber. Ebenso denke ich braucht er einen Treiber für diese spezielle USB-Schnittstelle. Natürlich mit Handbuch zur Programmierung dazu, wie es bei einer GPIB-Karte der Fall wäre. Die konnte man früher mal z.B. mit gewöhnlichem BASIC ansprechen. Es gab ein paar BASIC-Befehle, mit denen man sein eigenes Programm schreiben konnte. Wir hatten hier mal eine Thread zu SCPI: Beitrag "USB 2.0 (USB-TMC488 protocol)" darin ein Link zu einem anderen Thread ebenfalls hier Beitrag "Re: SCIP VISA / Verbindung über USB mit Funktionsgenerator" Vielleicht ist das hier empfohlene Franzis-Buch ISBN 9783772355097 das richtige, alles andere sind nur Normen.
Christoph db1uq K. schrieb: > Ist das USBTMC-USB488 eine eigene Klasse USBTMC ist eine eigene Klasse. USB488 eine Subklasse. > Dann könnte man > probeweise die Texte mit einem Terminalprogramm senden und empfangen. Man kann USBTMC zwar mit ein bisschen Verbiegen nach oben hin wie eine Terminal-Schnittstelle aussehen lassen (auf Linux schon gemacht). Aber das ändert aber nichts daran, dass man nach unten hin einen USBTMC-Treiber braucht. > Aber ich habe den Eindruck, das ist etwas ganz eigenes zu dem man auch > eine Art Treiber braucht. Profitipp: Einfach mal in den Standard schauen. https://www.usb.org/sites/default/files/USBTMC_1_006a.zip > Ebenso denke ich braucht > er einen Treiber für diese spezielle USB-Schnittstelle. Eine VISA oder VISA.NET (wegen C#) Implementierung kommt normalerweise auch mit einem USBTMC-Treiber. Z.B. von National Instruments oder Keysight (HP). Wenn man dann den ganzen Haufen VISA-Zeugs installiert hat, dann kann man VISA auch zur Programmierung verwenden, statt in Windows direkt auf dem USBTMC-Treiber rumzuackern.
Ich habs befürchtet. Eine USB-Schnittstelle ist selten "einfach", deshalb sind die FTDI-Chips und ähnliche so beliebt. Man kann sie mit einem einfachen Mikrocontroller benutzen. Ansonsten muss man ein ganzes Entwicklungspaket installieren und sich durch die Doku durcharbeiten. Jedenfalls sind wir damit der Beantwortung von Mias Frage (hab den Namen nicht beachtet, tschuldigung) etwas näher gekommen. Sie hat sich leider bisher nicht mehr gemeldet.
Hallo Zusammen Danke erstmal an allem, die mir geantwortet haben. was ich meine war Messdaten von Oszi mit Hilfe von SCPI-Befehle und C# durch Serielle Kommunikation abfragen. Für die Kommunikation mit dem Oszi habe ich mir Visa-Treiber von National Instruments installiert und für das Ansprechen der physikalischen Ports arbeite ich mit Serial Klasse von .NET Klassenbibliothek. Danke im Voraus
:
Bearbeitet durch User
Mia schrieb: > was ich meine war Messdaten von Oszi mit Hilfe von SCPI-Befehle und C# > durch Serielle Kommunikation abfragen. Ich kenne es so, das es egal ist, ob man die SCPI Befehle über den IEEE488 Bus, den USB Bus oder der RS232 Schnittstelle abfragt. Die Verbindung zum Messgerät muss aber sicher gestellt sein. Das hat aber nichts mit dem SCPI Befehl zu tun. Welcher Befehl sehr oft geht ( aber nicht immer ) ist *IDN? Da sollte dann als Antwort der Name des Gerätes und eventuell die Seriennummer zurück kommen. Die SCPI Befehle sollten entweder im Usermanual oder im Programmermanual des jeweilgen Gerätes dokumentiert sein. Manche verstehen aber das * am Anfang nicht, und bei älteren Geräten, welche noch skryptische Befehle haben und kein SCPI verstehen das auch nicht. Damit kann man zumindestens testen, ob eine Kommunikation mit dem Gerät erfolgt. Ralph Berres
:
Bearbeitet durch User
Hallo Ralph
>RS232 Schnittstelle
Das Gerät hat keine RS232 mehr, nur USB oder Netzwerk, optional noch das
alte GPIB. Aber "Visa-Treiber" und "National Instruments" dürfte USB
bedeuten, wie es Hannes J. oben beschrieben hat.
Der "*IDN?"-Befehl steht im Handbuch von Yokogawa drin, liefert
Gerätetyp und Seriennummer.
Christoph db1uq K. schrieb: > Das Gerät hat keine RS232 mehr, nur USB oder Netzwerk, optional noch das > alte GPIB. Aber "Visa-Treiber" und "National Instruments" dürfte USB > bedeuten, wie es Hannes J. oben beschrieben hat. hallo Christoph meines Wissens funktioniert SCPI auch über Netzwerkschnittstelle. Oft haben die Geräte mit Netzwerkschnittstelle sogar einen eigenen Webserver, welches man über einen Internetexplorer direkt aufrufen kann. Das ist praktisch , wenn man einen Screenshort auf den Rechner laden will. Der Agilent MSO 6104 kann das z.B. Ralph Berres
Ralph B. schrieb: > Die Verbindung zum Messgerät muss aber sicher gestellt sein. Das hat > aber nichts mit dem SCPI Befehl zu tun. Die Verbindung zum Messgerät ist sichergestellt und kann mit dem Messgerät mit Hilfe von SCPI-Befehle Abfragen senden und Antwort empfanden. meine Frage ist, welche SCPI-Befehle brauche ich, um die Messdaten von Signal in Stopp-Modus abzufragen.
:
Bearbeitet durch User
Mia schrieb: > meine Frage ist, welche SCPI-Befehle brauche ich, um die Messdaten von > Signal in Stopp-Modus abzufragen. Vielleicht mal das von Christoph verlinkte Manual befragen? Christoph db1uq K. schrieb: > und da steht dann auch der Link zum communication-manual > https://www.yokogawa.com/pdf/provide/E/GW/IM/0000022842/0/IM710105-17E.pdf Oder bist Du zu bequem dazu und hättest es gern vorgekaut auf dem silbernen Tablet?
Zeno schrieb: > Oder bist Du zu bequem dazu und hättest es gern vorgekaut auf dem > silbernen Tablet? das stimmt nicht, ich habe erst gefragt, nachdem ich gesucht und mit verschiedene SCPI-Befehle ohne Erfolg probierte habe.
Mia schrieb: > das stimmt nicht, ich habe erst gefragt, nachdem ich gesucht und mit > verschiedene SCPI-Befehle ohne Erfolg probierte habe. Ich würde an deiner Stelle als erstes mit dem *IDN? versuchen. Wenn der nicht funktioniert, stimmt grundsätzlich was nicht mit der Kommunikation zwischen Rechner und Oszillografen. Erst wenn sich der Oszillograf erfolgreich mit seinen Namen meldet, kannst du andere SCPI Befehle ausprobieren. Ralph Berres
Ralph B. schrieb: > *IDN? Aber noch mit \r oder \r\n terminieren, oder nicht? Steht aber üblicherweise auch im entsprechenden Manual...
Dunno.. schrieb: > Aber noch mit \r oder \r\n terminieren, oder nicht? Das übernimmt normalerweise die Software zu der Schnittstelle im PC, welche dem Dienstprogramm eine Visa oder SICL Schnittstelle zur Verfügung stellt. Zeno schrieb: > https://www.yokogawa.com/pdf/provide/E/GW/IM/0000022842/0/IM710105-17E.pdf Das Teil hat ja einen wirklich mächtigen Befehlsdatensatz. Ralph Berres
:
Bearbeitet durch User
> meines Wissens funktioniert SCPI auch über Netzwerkschnittstelle.
Das muss man natuerlich fuer jedes Geraet einzeln klaeren, aber
bei allem was mich bisher interessiert hat war das genau so.
Das sieht dann so aus: (unter linux, fuer RTB2004)
1 | if ((s=socket(AF_INET, SOCK_STREAM, 0))==-1) err("kein socket"); |
2 | memset((char *) &si_me, 0, sizeof(si_me)); |
3 | si_me.sin_family = AF_INET; |
4 | si_me.sin_port = htons(5025); //Port für SCPI-Kommando über TCP |
5 | inet_aton("192.168.12.220", (struct in_addr *) &si_me.sin_addr.s_addr ); |
6 | if ( connect(s,(struct sockaddr *) &si_me , sizeof(si_me))==-1) err("keinconnect"); |
7 | |
8 | |
9 | sprintf(buf,"*IDN?\n"); |
10 | write(s,buf,strlen(buf)); |
Mit anderen Worten man kann oftmals direkt SCPI in TCP/IP Paketen versenden und sich den ganzen aufgeblasenen Treiberkack sparen. Das macht dann die eigene Anwendung von 1GByte auf 10kByte kleiner und vermutlich 10x schneller. Ich hab hier z.B ein kleines Kommandozeilentool das mir einfach nur ein Bild vom Oszi holt und abspeichert das ist dann 11kb gross. Fuer Detailprobleme hilft dann Wireshark. .-) Olaf
Ralph B. schrieb: > Zeno schrieb: >> https://www.yokogawa.com/pdf/provide/E/GW/IM/0000022842/0/IM710105-17E.pdf > > Das Teil hat ja einen wirklich mächtigen Befehlsdatensatz. Ja und da in dem Manual alles auch beschrieben ist, verstehe ich nicht, wieso man da nichts hinbekommt. Das deutet darauf hin, daß die Verbindung nicht richtig steht oder der Aufbau der Abfragesequenzen fehlerhaft ist. Ich würde auch Deinen Rat befolgen und erst mal den Namen des Gerätes abfragen. Soweit ich das im Manual gelesen habe heißt der Befehl - ohne Gewähr - hierfür IDY. Zudem muß man das Teil auch noch für Remote öffen. Wie das geht ist im obigen verlinkten Manual beschrieben, ebenso wie der Aufbau der Befehlsfolgen. Das Manual macht auf mich einen sehr guten umfassenden Eindruck. Damit sollte es möglich sein was hin zu bekommen. Man muß sich halt auf den Hosenboden setzen und das Manual studieren. Auf der Herstellerseite gibt es außerdem auch Programmierbeispiele. Der Link dazu befindet sich in einem von Christoph verlinkten PDF.
Zeno schrieb: > Soweit ich das im Manual gelesen habe heißt der Befehl - ohne > Gewähr - hierfür IDY. siehe *IDN? (IDeNtify) Function Queries the DLM2000 model. Syntax *IDN? Example *IDN? -> YOKOGAWA,710120,08ELP1024,F1.01 Description The information is returned in this form:<Manufacturer>, <Model>, <Serial no.>, <Firmware version>. The following values are returned for <Model>: 710105 for the DLM2022, 710110 for the DLM2024, 710115 for the DLM2032, 710120 for the DLM2034, 710125 for the DLM2052, Ralph Berres
Falls irgendwo NI-Visa vorhanden ist würde ich erstmal damit probieren ob eine Verbindung möglich ist.
>...habe ich mir Visa-Treiber von National Instruments installiert... scheint also schon vorhanden zu sein https://knowledge.ni.com/KnowledgeArticleDetails?id=kA03q000000x1qzCAA&l=de-DE "USBTMC Instruments NI-VISA will detect USBTMC instruments automatically, so no additional configuration is necessary after installing the NI-VISA driver. The instrument will be installed as a USB Test & Measurement Class Device." Also geht doch vollautomatisch, wenn nicht, war man zu doof für NI-Produkte. https://www.ni.com/docs/de-DE/bundle/ni-visa/page/ni-visa/introprogrammingusbdevicesni-visa.html Die wollen natürlich, dass man mit Labview programmiert.
> Also geht doch vollautomatisch, wenn nicht, war man zu doof für > NI-Produkte. > Die wollen natürlich, dass man mit Labview programmiert. Haelst du es fuer moeglich das man auch zu klug sein kann fuer NI-Produkte? Als Labview-Opfer kommen einen gelegentlich solche Gedanken. Olaf .-)
>Labview-Opfer genau deshalb habe ich es so formuliert. Es gibt den NI-VISA auch für Linux. Aber im Kleingedruckten direkt darunter heißt es: Hinweis: Installieren Sie Programmierumgebungen wie NI LabVIEW oder Microsoft Visual Studio®, bevor Sie dieses Produkt installieren. https://www.ni.com/de-de/support/downloads/drivers/download.ni-visa.html#460385 wo bekomme ich Visual Studio für Linux?
> Es gibt den NI-VISA auch für Linux.
Also bevor ich mir damit mein Linux kontaminiere programmiere
ich mir lieber alles selbst. Genauer gesagt wird das in den
naechsten Tagen sogar mal passieren weil ich auch noch
1-2 alte Messgeraete ansprechen wollte...
Olaf
Eine aus meiner Sicht sehr einfache Lösung um mit Messgeräten zu kommunizieren ist die Python VISA Bibliothek PyVisa. Da bedarf es keiner riesigen Hersteller Treiber Pakete, man kann sie wenn benötigt aber auch als Backend benutzen. PyVisa bring ein eigenes pure Python Visa Backend mit. Wenn das Gerät dem SCPI Standard folgt muss es auch *IDN beherrschen sonst ist es nicht konform. Es sind nur eine handvoll dieser Kommandos vorgeschrieben, die restliche Struktur darf sich der Hersteller ausdenken. Ob USBTMC von der PyVisa Bibliothek unterstützt wird kann ich nicht sagen da es mir bisher nicht untergekommen ist. Rohde, Keysight, Tektronix Geräte lassen sich meistens per LAN oder USB Seriel Interface ansprechen. Das Funktioniert sehr stabil. Zumindest bei mir. Ich habe die Doku vom Oszi nicht gelesen, aber beim auslesen von Daten gibt es meistens mehrere Wege wie die Daten über tragen werden, als ASCII Zeichen oder als Binärdaten, vielleicht hängt es ja an der Interpretation der Rückgabe Werte. Auch immer eine gute Idee ist es den Fehlerspeicher auszulesen wenn etwas nicht funktioniert.
USBTMC scheint unterstützt zu sein: https://pyvisa.readthedocs.io/en/latest/introduction/names.html?highlight=USBTMC#visa-resource-syntax-and-examples USB::0x1234::125::A22-5::INSTR A USB Test & Measurement class device with manufacturer ID 0x1234, model code 125, and serial number A22-5. This uses the device’s first available USBTMC interface. This is usually number 0. https://pyvisa.readthedocs.io/projects/pyvisa-py/en/latest/installation.html?highlight=USBTMC#usb-resources-usb-instr-raw On Windows, you may have to uninstall the USBTMC specific driver installed by Windows and re-install a generic driver. Note that on Windows, devices that are already open cannot be detected and will not be returned by ResourceManager.list_resources. Another useful reference for how to configure your system is https://github.com/python-ivi/python-usbtmc. https://pyvisa.readthedocs.io/projects/pyvisa-py/en/latest/faq.html?highlight=USBTMC#why-putting-pyvisa-in-the-middle
:
Bearbeitet durch User
PyVISA klappt sehr gut, wir nutzen das in Kombination mit dem NI Zeug als Backend. Die direkte Variante ist nicht sonderlich stabil gewesen bei unseren Tests. Die Thread-Starterin möchte aber C# nutzen, da wäre eine .NET Implementierung sinnvoller. Da könnte man z.B. direkt da NI-VISA nehmen: https://www.ni.com/de-de/support/documentation/supplemental/15/national-instruments-visa--net-library.html Das von R&S müsste auch gehen: https://www.rohde-schwarz.com/de/driver-pages/fernsteuerung/3-visa-and-tools_231388.html
mal eine Frage, welches mit dem Trhead nicht direkt was zu tun hat. Wo sind eigentlich so Ausdrücke wie Scypi für SCPI oder Scasi für scsi entstanden? Ist das die Ausdrucksweise von irgendwelchen möchtegernprofis, welche sich mit so einer Ausdrucksweise profilieren müssen? Ralph Berres
Christian R. schrieb: > Die Thread-Starterin möchte aber C# nutzen, da wäre eine .NET > Implementierung sinnvoller. Schon klar, aber anscheinend ist die Person nicht in der Lage das damit umzusetzen, daher ein Vorschlag wie der einstieg vielleicht leichter fällt. Es war ja auch kein Code Beispiel dabei das ein nachvollziehen des Problems erlaubt oder eine Info welche Kommandos erfolglos probiert wurden. Ansonsten schlage ich vor RTFM. :WAVeform:ALL:SEND? Hat ca 2 Minuten gedauert. :WAVeform:ALL:SEND? Function Queries the waveform data specified by the :WAVeform:ALL:TRACe command. Syntax :WAVeform:ALL:SEND? {<NRF>} <NRF> = 0 to the acquisition count Ist das die gesuchte Antwort?
Ralph B. schrieb: > Wo sind eigentlich so Ausdrücke wie Scypi für SCPI oder Scasi für scsi > entstanden? Im englischen, damit man beim reden vorwärts kommt und nicht die Buchstaben einzeln sagen muss. Spricht sich angenehmer und ist am Ende besser zu verstehen, gerade beim fernmündlicher Kommunikation in frühen Jahren. Nur die Leute die sich nicht auskennen schreiben es dann wie gesprochen auf.
Schon mal an Socket session over LAN gedacht. VXI-11 Zum Verbindungstest ping auf das Gerät z.b. Putty connect zum Gerät Telnet - meistens port 5025. Dort *IDN? absenden. (mit \r\n) ! Bug in putty deßhalb den Befehl nochmal senden dann sollte sich das Gerät melden. Aber wo ist eigentlich Mia?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.