Messinstrumente - SCPI für USB und LAN (Windows)

OP #6383700
Lesenswert?

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
Angehängte Dateien:
OP #6401546
Lesenswert?

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
Gast #6401592
Lesenswert?

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 ;-)
OP #6409616
Lesenswert?

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
Angehängte Dateien:
OP #6452596
Lesenswert?

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
OP #6460432
Lesenswert?

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
OP #6836216
Lesenswert?

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
OP #6866984
Lesenswert?

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
#6867116
Lesenswert?

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.
#6867480
Lesenswert?

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.
OP #6868569
Lesenswert?

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
OP #6869060
Lesenswert?

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
OP #7168109
Lesenswert?

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
Gast #7274714
Lesenswert?

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.
OP #7431239
Lesenswert?

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
OP #7508951
Lesenswert?

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

Angehängte Dateien:
#7602581
Lesenswert?

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.

OP #7632861
Lesenswert?

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

OP #7826634
Lesenswert?

Ich habe ein erste Test-Version für Linux erstellt. Die Verbindung zu LAN-, USBTMC- und seriellen Instrumenten funktioniert. Bei den LAN-Verbindungen muss man den Port und die lokale IP-Adresse der Netzwerkkarte mitangeben. Es gibt noch Fehler in der Oberfläche, aber die Skripte funktionieren. Eventuell gibt es auch Probleme mit Pfadangaben.

https://www.dreisiebner.at/messinstrumente-skript/

Peter

OP #7834796
Lesenswert?

Man kann die Messkurven vom R&S RTB2000 jetzt auch im OSZI-Format speichern. Elmü hat ja hier sein 'Oszi Waveform Analyzer'-Programm vorgestellt: Beitrag "Neue Open Source Software macht aus deinem Oszilloskop einen Logik Analysator"

Mit diesem Skript werden z.B. alle sichtbaren Kanäle aus dem Bildschirmspeicher mit 8-Bit eingelesen und im OSZI-Format gespeichert.

1
instrument lxi 192.168.1.123
2
waveform daten
3
daten function waveform all
4
daten function save oszi

Peter

#7959261
Lesenswert?

Hallo @Peter,

die Software sieht sehr interessant aus. Erst recht, da in den letzten Beiträgen von einer Linux Version die Rede war. Wird diese noch weiterentwickelt bzw. zum Download angeboten?

Auf der Seite kommt leider immer nur "The requested URL was not found on this server."

Tobi

OP #7959340
Lesenswert?

Hallo Tobi,

ich habe das Programm offline genommen, da ich nur noch einen Raspberry Pi P500 verwende. Für andere Systeme möchte ich keine Versionen mehr erstellen und testen. Auch kann ich momentan keine Hilfe (chm/pdf) erstellen. Ich arbeite aber noch an und mit dem Programm. Du kannst gerne eine Nachricht oder E-Mail schreiben, ich kann dir das Programm dann zur Verfügung stellen.

Peter

#7959383
Lesenswert?

Peter D. schrieb:

Hallo Tobi,

ich habe das Programm offline genommen, da ich nur noch einen Raspberry Pi P500 verwende. Für andere Systeme möchte ich keine Versionen mehr erstellen und testen. Auch kann ich momentan keine Hilfe (chm/pdf) erstellen. Ich arbeite aber noch an und mit dem Programm. Du kannst gerne eine Nachricht oder E-Mail schreiben, ich kann dir das Programm dann zur Verfügung stellen.

Peter

Hallo Peter

Ich kann nur soviel dazu sagen das Dein Programm in seiner Einfachheit eine große Hilfe für das Serienscreenshots aufnehmen von einem RTB2004 war. Das Programm ist simple und macht genau das was es soll: Es funktioniert out of the box ohne allzuviel Klimbim.

Daher: Danke für die damalige Zurverfügungstellung.

Vielleicht kannst Du das letzte aktuelle Zip hier oder im eevblog (wo Du ja auch schreibst und danach gefragt wurde) einfach mit dem Hinweis "EOL und keine weitere Wartung" einstellen?

Oder darf das jemand anderer posten? Ich hätte hier zB. 2020-01-25_RigolBildschirmkopie_Windows.zip liegen, werde das aber ausdrücklich nicht über PM oder sonst wie teilen solange es kein OK von Deiner Seite gibt.

OP #7959476
Lesenswert?

Hallo Mi. W.,

jeder kann mit den Programmen machen was er möchte.

Hier sind ZIP-Archive mit den alten Programmen. Ich möchte keine direkten Links angeben wegen den dauernden Downloads von Bots, Suchmaschinen usw. Direkt nach meiner Domain die Namen der ZIP-Archive angeben.

dso-usb-tool.zip (18 MB) rigol-bildschirmkopie.zip (32 MB) rigol-dsa815.zip (4 MB) messinstrumente-v0.3.0.22.zip (9 MB) messinstrumente-skript-v0.5.9.2.zip (18 MB, aktuelle Änderungen fehlen)

Hier noch ein Tool um Brymen BM869s Multimeter mit BC-86X/P-Adapter im Netzwerk zur Verfügung zu stellen. brymen-hid-to-lan.zip (320 KB, momentan nur für Raspberry Pi OS x64)

Peter

#7960399
Lesenswert?

Hallo Peter,

also ich weiß nicht so richtig was ich dazu sagen soll. Ehrlich. Auf der einen Seite Danke für die Tools. Steckt viel Arbeit & Zeit drin. Nur das Ewige rein in die Kartoffeln, raus aus die Kartoffeln nervt. Mit meinem Rigol funktioniert nur eine alte Version. Die Aktuelle erkennt das Rigol nicht.

Da ich sowieso mit Python unterwegs bin, habe ich mich einmal schlau gemacht. Grundgerüst:

Wenn kein Gerät erkannt wird Treiber installieren von https://www.ni.com/en-us/support/downloads/drivers/download.ni-visa.html In Zeile 31 die Gerätenummer laut Ressourcenausgabe eintragen.

Angehängte Dateien:
: Bearbeitet durch User

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren