Ich habe ein Programm in PureBasic für Windows geschrieben, mit dem man SCPI-Kommandos an Messinstrumente mit USBTMC-, LXI- oder Raw-TCP-Verbindung senden kann. Das Programm ist aus Interesse enstanden, wie die Steuerung von Messinstrumenten funktioniert. Darum wird auch keine VISA-Installation benötigt, allerdings der Microsoft WinUSB-Treiber, wenn man USBTMC-Instrumente ansprechen will. https://peter.dreisiebner.at/messinstrumente Im Moment kann man nur SCPI-Kommandos senden, andere Funktionen sind geplant. Getestet habe ich nur mit meinen eigenen Instrumenten, die sind auf der Webseite unten aufgelistet. Ansonst habe ich keine Rückmeldung, kann also sein, dass es bei jemand anderen gar nicht funktioniert. Es gibt auch eine Hilfeseite mit kurzer Erklärung, und die Sprache des Programms kann in den Einstellungen auf Deutsch geändert werden. Die Oberfläche ist altbacken und verwendet das Multi Document Interface (MDI). Wobei aber z.B. das SCPI-Fenster auch eigenständig geöffnet werden kann. Hier ist eine Stichwortliste zu dem Programm: - Betriebssystem Windows XP bis 10. - Keine Installation notwendig, entpacken in ein Verzeichnis mit Schreibrechten. - Es werden nirgends ungefragt Daten gespeichert, Registry, Tempverzeichnis, usw. - Die Oberfläche ist skalierbar für HiDPI, ist aber wenig getestet. - Es können beliebig viele Instrumente gleichzeitig verwendet werden. - Fehlermeldungen werden im Log-Fenster ausgegeben. - Beim Suchen nach Instrumenten im Netzwerk werden UDP-Broadcast Pakete gesendet, an Port 111, 5025 und 50000. Eine Firewall wird wahrscheinlich anschlagen, man kann Instrumente auch manuell hinzufügen. - SCPI-Kommandos können in Dateien gespeichert und geladen werden. - Man kann binäre Daten mithilfe einer Datei senden. Vielleicht hat jemand Bedarf an den Programm bzw. Tool, mehr ist es ja noch nicht. Für die weiteren Funktionen wird es noch dauern, und die sind vorerst nur für meine Instrumente geplant. Aber die SCPI-Kommandos sollten für viele Instrumente verwendbar sein. Rückmeldungen sind gerne willkommen. Peter
Ich habe das Programm etwas erweitert. Es werden die Fensterpositionen gespeichert und wiederhergestellt. Man kann den 'Arbeitsbereich' speichern und laden, ist im Menü "Fenster". Wie gehabt können die Fenster auch separat geöffnet werden, wenn beim Öffnen die Strg-Taste gedrückt wird. Die geöffneten MDI-Client-Fenster lassen sich in einen freien Bereich einpassen. Es gibt aber Probleme, wenn mehrere Bildschirme mit unterschiedlicher Skalierung verwendet werden. Da werden die Positionen nicht wiederhergestellt, die Fenster werden dann am Hauptbildschirm angezeigt. Es ist jetzt auch das Einlesen, Anzeigen und Speichern eines Bildschirmfotos vom Instrument möglich. Die Funktionen werden noch erweitert, für automatisch einlesen, andere Farbdarstellung, usw. Für die unterstützten Instrumente gibt es Konfigurationsdateien im Verzeichnis 'Instrument'. Man kann selbst solche Dateien erstellen, oder mir die genaue Bezeichnung des Instruments schicken. Dazu benötige ich auch die Ausgabe vom SCPI-Kommando '*IDN?'. Vorallem die ersten zwei Felder von Hersteller und Modellbezeichnug. Diese Angaben werden für die Erkennung des Instruments und der richtigen Konfigurationsdatei benötigt. Mich würde interessieren, ob sich auch Siglent-Instrumente z.B. im Netzwerk finden und ansprechen lassen. Vielleicht kann das jemand ausprobieren und hier berichten. Peter
Nettes Spielzeug. Finde ich an sich nicht schlecht so etwas zum lernen zu machen. Allerdings werde ich es nicht mit anderen Geräten Testen da es eine Windows Lösung ist und ich meine Messrechner mit Linux per SSH anspreche. Ich benutze das pure python visa Backend der pyVisa Bibliothek um Hersteller unabhängig zu bleiben. So etwas wie du gemacht hast würde mich eher mit Flask gebaut interessieren. Bisher nutze ich für so etwas einfach die Kommandozeile. Ich habe Messgeräte Klassen geschrieben denen man einfach eine Liste an Befehlen geben kann. Tut das gleiche nur eben ohne GUI. Ich mache das allerdings auch nicht zum vergnügen sondern um vorwärts zu kommen. Nachdem ich jetzt für verschiedene Projekte und Messaufbauten Verschiedenen GUI Frameworks durch habe bin ich der Ansicht das Webbasiert das beste ist. Da bei mir Messungen auch schon mal länger dauern könnte ich dann am Telefon kontrollieren ob alles läuft ;-)
Es ist jetzt möglich bei der Bildschirmfoto-Funktion, Optionen für die Steuerung des Instruments auszuwählen. Damit kann z.B. der Single-Modus gestartet werden, auf ein Ereignis gewartet, und danch das Bildschirmfoto eingelesen und gespeichert werden. Es lässt sich auch automatisch ausführen. Getestet habe ich nur mit dem Rigol DS1000Z und dem RTB2000. Die entsprechenden SCPI-Kommandos sind aber für alle unterstützten Instrumente in den Konfigurationdateien gespeichert. https://peter.dreisiebner.at/messinstrumente/ Peter
:
Bearbeitet durch User
Eine serielle Verbindung zu den Instrumenten funktioniert jetzt auch. Bei dem Hameg HM2008 kann man den Bildschirmspeicher auslesen und als Bild speichern. Peter
Für das Hameg HM2008 und den Rigol Oszilloskopen DS/MSO1000Z und DS/MSO2000A ist es jetzt möglich, die eingelesenen Messkurvendaten zu speichern. Mit der Messkurve-Funktion können die analogen und digitalen Kanäle manuell oder automatisch eingelesen werden. Speichern kann man die Daten als CSV- oder Binärdatei pro Kanal. Das Anzeigen der Messkurven ist noch nicht möglich. Das Einlesen und Speichern der digitalen Kanäle konnte ich für das MSO1000Z nicht testen. https://peter.dreisiebner.at/messinstrumente/ Peter
Für das R&S RTB2000 und das Siglent SDS2000X Plus, ist es jetzt ebenfalls möglich die Messkurvendaten der analogen und digitalen Kanäle als CSV-Datei zu speichern. Das Anzeigen ist immer noch nicht möglich, daran arbeite ich als nächstes. Beim RTB2000 kann man die 8 Bit und 10 Bit Daten einlesen. Aber es fehlt z.B. noch die richtige Verarbeitung der Envelope-Darstellung, da werden die Daten falsch gespeichert. Ich habe auch noch nicht viel getestet. LXI-Instrumente werden nicht immer im Netzwerk automatisch gefunden, wenn die LXI-Suche aktiviert ist. Dann kann man die Instrumente manuell als LXI-Instrument hinzufügen, das Programm merkt sich das für den nächsten Start. Wenn jemand das Problem hat, wäre es nett wenn mir die Log-Datei (Menü 'Help'->'Log...') per E-Mail zugeschickt wird. Die Adresse ist im About-Dialog vorhanden. Beim manuellen hinzufügen sollte die Beschreibung genau sein, damit die Vektor-Icons angezeigt werden. z.B. für das Siglent funktioniert "Siglent SDS2354 Plus". Peter
Danke fuer die Mühe. Bitte weitermachen. Gruesse
Hallo @Peter, die Homepage ist nicht erreichbar. Gibt es das Projekt noch? Viele Grüße Alois
Alois N. schrieb: > die Homepage ist nicht erreichbar. Gibt es das Projekt noch? Ja, das Programm gibt es noch, hier ist ein ZIP-Archiv der Webseite:
1 | https://peter.dreisiebner.at/messinstrumente_website.zip |
Peter
kann man das Programm auch mit einer IECbus Karte HP82350B betreiben? Ralph Berres
Danke für die Bereitstellung. Viele Grüße Alois
Die Webseite ist wieder mit dem Programm online.
Ich habe eine Unterstützung für Windows 2000 und dem
libusb-win32-Treiber (libusb0) programmiert.
@Ralph B.
> kann man das Programm auch mit einer IECbus Karte HP82350B betreiben?
Leider nein, es werden nur USBTMC-, serielle und LAN-Instrumente
unterstützt.
USBTMC funktionert nur mit den WinUSB/libusb-Treibern.
Peter
The requested URL /messinstrumente_website.zip was not found on this server.
Ich habe das Programm um eine Skriptfunktion erweitert. Eine neue Testversion v0.3.0 ist online. In der Hilfe gibt es eine kurze Beschreibung, und auch eine eigene Seite für die Skriptanweisungen. https://peter.dreisiebner.at/messinstrumente/hilfe.htm#skript Man kann noch keine Daten aus dem Skript speichern, aber senden und empfangen von SCPI-Kommandos funktioniert. Peter
Hallo Peter, jetzt muss man ja aufpassen die beiden Peter D. nicht zu verwechseln. :-) Ich habe dein Programm mit meinem Rigol DS1054Z ausprobiert. Habe die Screenshotfunktion getestet und es funktioniert. Win10 64Bit. Für mehr habe ich die Rigol Software auch nicht verwendet. Allerdings weiß ich nicht wie ich mit dem Zadig Tool den alten Treiber für den Fall der Fälle laden könnte. Original war "Usbtmc v16.3.17614.0" eingestellt. Das fehlt jedoch in der jetzigen Auswahl. Falls du einen Tipp hast? Ansonsten muss es eben so bleiben. Großes fettes Danke für deine Software.
Hallo Veit, ich glaube es genügt, wenn du den Treiber über den Gerätemanger mit Dateien deinstallierst. Nach neuen anstecken des DSOs sollte wieder der NI/Rigol-Treiber installiert werden. Peter
Hallo Peter, hat leider nicht funktioniert. Mit dem WinUSB Treiber steht es im Gerätemanager ganz unten unter "USB Geräte". Nach Deinstallation und neu anstecken war der "usbser" Treiber installiert und es stand ganz oben unter "Anschlüsse COM LPT" mit ComPort Nummer drin. Habe wieder mittels Zadig den WinUSB Treiber installiert. Ist jetzt nicht so dramatisch. Zur Not müßte ich in der Rigol Installation den Treiber manuell suchen und installieren.
Man kann jetzt auch Daten im Skript speichern. Man kann sich auch einzelne Zeilen mit eingelesenen Werten bzw. Daten zusammenkopieren. Beim Speichern in eine Datei können diese Zeilen angefügt werden. Die Skriptfunktion ist aber keine Programmiersprache, sondern eine einfache Stapelverarbeitung. Datentypen werden automatisch konvertiert so gut es geht. Hier ist ein Beispiel für das Rigol DS1000Z umd Bildschirmkopien einzulesen und zu speichern:
1 | // Beispielskript mit vorhandenen Funktionen. |
2 | instrument $DS1000Z usbtmc 1AB1 04CE // Instrument öffnen. |
3 | instrument $MSO2000 vxi 192.168.1.39 // Instrument öffnen. |
4 | $DS1000Z // Instrument auswählen. |
5 | |
6 | #screencopy set :DISP:DATA? ON,OFF,BMP24 // Konstante. |
7 | #file set "E:\Screencopy - /F /O /Y-/M-/D /H./N./S./Z.bmp" // Konstante, die Anführungszeichen bleiben erhalten. |
8 | #runs set 5 // Konstante. |
9 | |
10 | data screencopy // Variable. |
11 | integer counter // Variable. |
12 | counter set 0 // Zuweisung an Variable. |
13 | |
14 | label loop // Sprungmarke. |
15 | |
16 | function scpi write :STOP // SCPI-Kommando senden. |
17 | function wait 100 // Warte 100 ms. |
18 | screencopy function scpi read #screencopy // SCPI-Kommando senden, empfangen und zuweisen. |
19 | screencopy function remove block last 1 // Das SCPI-Blockformat entfernen, und am Ende das Terminierungszeichen. |
20 | screencopy function save #file // Bildschirmkopie speichern. |
21 | function scpi write :RUN // SCPI-Kommando senden. |
22 | |
23 | function wait 0 // Warte auf Bestätigung, Schaltfläche 'Ausführen' betätigen. |
24 | |
25 | counter add 1 // Die Variable um 1 erhöhen. |
26 | counter compare #runs // Vergleich mit 5. |
27 | false goto loop // Bedingter Sprung zu Label nach Vergleich. |
28 | // Ende nach 5 Durchläufen. |
Peter
Hallo Peter Danke fuer deine Arbeit. Kann man auch mit Hilfe von *IDN? eine Abfrage machen welche Instrumente vorhanden und aktiv sind? Ein art "Scanvorgang" Gruss
Klaus H. schrieb: > Kann man auch mit Hilfe von *IDN? > eine Abfrage machen welche Instrumente vorhanden und aktiv sind? > Ein art "Scanvorgang" Nicht mit dem Skript, aber im Auswahlfenster für die Instrumente. Du musst nur die Optionen im 2. Reiter "Optionen für USB & LAN" die passenden Einstellungen aktivieren. Die Netzwerksuche ist nicht automatisch aktiv, das kann aktive Übertragungen abbrechen, z.B. meine Rigol-Instrumente mögen das nicht. Wenn man im Auswahlfenster ein Instrument öffnet, wird im Log-Fenster eine Zeile für das Skript mit 'instrument ...' ausgegeben. Edit: die Option für 'Nach RawTCP suchen ...' sendet an den Port 5.025 in einer UDP-Verbindung '*IDN?'. Instrumente die antworten, werden in der Auswahlliste angezeigt. Peter
:
Bearbeitet durch User
Ich habe mein Programm 'Messinstrumente' aktualisiert. Die Unterstützung von Instrumenten die ich nicht mehr selbst besitze, habe ich entfernt. Es bleibt nur das R&S RTB2000 Oszilloskop über, und nur für Bildschirmkopien die Rigol-Instrumente DSA800, DG4000 und DP800. Das SCPI-Fenster und Skript-Fenster funktionieren aber für alle Instrumente. Neu ist die Möglichkeit per Waveform-Fenster oder Skript, die Daten der Logikkanäle vom RTB2000 einzulesen, und im VCD-Format für Sigrok PulseView zu speichern. Man kann auch die Daten per Skript aus der History einlesen, zusammenfassen und als eine Datei speichern. Ein Beispielskript ist auf der Hilfeseite vorhanden, und auch im ZIP-Archiv im 'Script'-Verzeichnis. https://peter.dreisiebner.at/messinstrumente/ Peter
:
Bearbeitet durch User
Hallo, schön für die Arbeit aber mit Verlaub, die Entfernung der Meßgeräte macht keinen Sinn. Was drin war kann doch drin bleiben. Nicht jeder hat Rhode & Schwarz Meßgeräte. Zudem deine Seite ewig Offline war.
:
Bearbeitet durch User
Leider wieder offline. Würde das Programm dringends brauchen. Beziehungsweise eins welches periodisch die Messdaten in eine excel schreibt. Hab das Oszi auch extra mitn LAN verbunden um andere Programme zu verwenden. Die können aber auch nur Bildschirmkopien machen. Damit kann man halt keine Entladungskennlinie aufzeichnen -.- Danke an den Peter Dreisiebner für die bisherige Arbeit die meiner Meinung nach Rigol machen sollte.
Die Webseite ist umgezogen auf einen neuen Webhoster, und das Programm heißt jetzt 'Messinstrumente-Skript'. https://www.dreisiebner.at Die Instrumente können nur per Skript-Anweisungen gesteuert werden. Die Ansicht der Daten kann auch nur per Skript geöffnet werden. Das Programm ist in deutsch, die Hilfe ist integriert, und ist auch als PDF vorhanden. Peter
Hallo Peter D. Danke fuer die Arbeit. Ich probiere es mal aus.
Man kann jetzt auch die analogen Kanaldaten vom R&S RTB2000 im mehreren Formaten speichern. Mit dem folgenden Skript werden z.B. alle sichtbaren Kanäle, eine Bildschirmkopie und die Einstellungen gespeichert. Peter
1 | // R&S RTB2000 |
2 | // Die Daten der sichtbaren Kanäle, die Einstellungen |
3 | // und eine Bildschirmkopie speichern. |
4 | |
5 | // Verbindung von der Konstanten-Datei verwenden. IP-Adresse anpassen. |
6 | #rtb-lan |
7 | |
8 | // Konstante für den Dateinamen erstellen. |
9 | // Die Dateierweiterung wird für die Bildschirmkopie und Kanaldaten ersetzt. |
10 | // Die Platzhalter ergeben Model, Datum und Uhrzeit, z.B.: "RTB2004 20230610_113254.set" |
11 | #Dateiname set "T:\/O /Y/M/D_/H/N/S.set" |
12 | |
13 | // Variablen erstellen. |
14 | data Einstellungen |
15 | image Bildschirmkopie |
16 | waveform Kanäle |
17 | |
18 | // Die Einstelllungen einlesen und speichern. |
19 | Einstellungen function scpi read :SYSTem:SET? |
20 | Einstellungen function save #Dateiname |
21 | |
22 | // Die Bildschirmkopie erstellen und im PNG-Format speichern. |
23 | Bildschirmkopie function screencopy |
24 | Bildschirmkopie function save #Dateiname |
25 | |
26 | // Alle sichtbaren analogen und digitalen Kanäle aus dem Bildschirmspeicher mit 10 Bit einlesen. |
27 | // Mit 'memory' oder 'allmemory' anstatt 'screen', werden die Daten aus dem Speicher eingelesen. |
28 | Kanäle function waveform all 16 screen |
29 | |
30 | // Die Daten im CSV-Format speichern, mit dem oben angebenen Dateinamen. |
31 | // Es kann das Format csv, txt, bin, flt, vcd verwendet werden, siehe Hilfe. |
32 | Kanäle function save #Dateiname csv |
Um Skripte einfacher starten zu können, kann man jetzt per Skript ein Ansichtsfenster mit Schaltflächen erstellen. Mit dem Kommandozeilenparameter '/run "..."' kann man das Fenster beim Start des Programms automatisch anzeigen lassen. Beschreibung findet man in der Hilfe unter Datentyp 'launcher' und Ansichtsfenster 'Skriptstarter'. https://www.dreisiebner.at Peter
Die Startseite der Website ist jetzt leer. Hier ist der Link direkt zur Seite für das Programm: https://www.dreisiebner.at/messinstrumente-skript/ Peter
Es wird jetzt auch das Brymen BM869s Multimeter mit BC-86X-Adapter (USB-HID) unterstützt. Die HID-Funktionen sind noch nicht fertig, aber das Einlesen des Hauptwerts funktioniert. Ein Beispielskript ist im Skript-Verzeichnis vorhanden. Peter
Danke fuer die Muehe Gibt es die Moeglichkeit die preiswerten "SparkFun DataLogger" danit abzurufen? Oder kennt jemand ein Program mit dem man die LoggerDaten visualisieren kann ?
Klaus H. schrieb: > Danke fuer die Muehe > > Gibt es die Moeglichkeit die preiswerten "SparkFun DataLogger" danit > abzurufen? > Oder kennt jemand ein Program mit dem man die LoggerDaten visualisieren > kann ? Seit wann können die Dinger SCPI? Wenn ich mich recht entsinne kann man die konfigurieren, dass die Messungen, die eingestellt werden via virtueller serieller Schnittstelle gesendet werden als ASCII. Ein Kollege hat damals da einfach mit einem Skript gearbeitet und in Python das eingelesen, geparst und gespeichert / Plots erzeugt. Da gibts doch haufenweise Beispiele für ähnliche Dinge, ausm QRL kann ich dir den Code nicht rausgeben.
Mein Rigol DP831 Labornetzteil hatte seine Kalibrierung vergessen. Es wurde keine Spannung oder Strom an den drei Kanälen ausgegeben. Eine manuelle Kalibrierung war dadurch auch nicht möglich. Vor langer Zeit hatte ich mir die Standardwerte von den Kalibrierschritten abgeschrieben. Mit einem Skript habe ich die Werte zurückgeschrieben ohne zu Messen, und das Netzteil funktionierte wieder. Allerdings waren angezeigte und ausgegebene Spannung bzw. Strom ungenau. Mit einem zweiten Skript und einem Brymen BM869s mit USB-Adapter habe ich jetzt eine Kalibrierung durchgeführt. Die angezeigten und ausgegebenen Werte stimmen jetzt sehr gut mit dem Multimeter überein, viel besser als beim Kauf. Die Skripte sind sehr lang, da es keine Befehle für Arrays oder Schleifen gibt, sondern nur Vergleiche und Goto. Am Ende des Skripts sind die eigentlichen 'Funktionen' für die Kalibrierung. Eine neue Version des Programms mit den Skripten ist online. https://www.dreisiebner.at/messinstrumente-skript/ Skripte: Rigol DP831 - Kalibrieren mit Brymen BM869s.txt Rigol DP831 - Kalibrierung mit Standardwerten.txt Peter
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.