Forum: Projekte & Code Messinstrumente - SCPI für USB und LAN (Windows)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter D. (fenstergucker)


Angehängte Dateien:

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

von Peter D. (fenstergucker)


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

von Voodoo (Gast)


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 ;-)

von Peter D. (fenstergucker)


Angehängte Dateien:

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

: Bearbeitet durch User
von F. M. (foxmulder)


Lesenswert?

Seeehr hübsch, vielen Dank.

von Peter D. (fenstergucker)


Lesenswert?

Eine serielle Verbindung zu den Instrumenten funktioniert jetzt auch. 
Bei dem Hameg HM2008 kann man den Bildschirmspeicher auslesen und als 
Bild speichern.

Peter

von Peter D. (fenstergucker)


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

von Peter D. (fenstergucker)


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

von Klaus H. (nikolaus10)


Lesenswert?

Danke fuer die Mühe.
Bitte weitermachen.

Gruesse

von Alois N. (alois)


Lesenswert?

Hallo @Peter,

die Homepage ist nicht erreichbar. Gibt es das Projekt noch?

Viele Grüße Alois

von Peter D. (fenstergucker)


Lesenswert?

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

von Ralph B. (rberres)


Lesenswert?

kann man das Programm auch mit einer IECbus Karte HP82350B betreiben?

Ralph Berres

von Alois N. (alois)


Lesenswert?

Danke für die Bereitstellung.

Viele Grüße Alois

von Peter D. (fenstergucker)


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

von egberto (Gast)


Lesenswert?

The requested URL /messinstrumente_website.zip was not found on this 
server.

von egberto (Gast)


Lesenswert?

ok, habs, Webseite ist wieder da.

von Peter D. (fenstergucker)


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

von Veit D. (devil-elec)


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.

von Peter D. (fenstergucker)


Lesenswert?

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

von Veit D. (devil-elec)


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.

von Peter D. (fenstergucker)


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

von Klaus H. (nikolaus10)


Lesenswert?

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

von Peter D. (fenstergucker)


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

: Bearbeitet durch User
von Peter D. (fenstergucker)


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

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.