Bachelorarbeit: GPIB mit Raspberry Pi

  • Servus,

    Im Rahmen einer ähnlichen Aufgabe in der Arbeit (allerdings unter Windows 7) bin ich jetzt rein aus Interesse am Thema beim privaten Surfen auf diese Bachelorarbeit an der Universität Wien gestoßen:

    Messgeräteansteuerung unter Python

    Hier geht es um die Ansteuerung von älteren(?) Messgeräten, die mit einer GPIB-Schnittstelle ausgestattet sind. Der Student hat in seiner Arbeit diese Schnittstelle mit den GPIOs eines RPi umgesetzt. Fand ich jetzt ganz interessant und wollte es Euch nicht vorenthalten. Vielleicht kann es der eine oder andere "Hardwerker" (kein Tippfehler) in diesem Forum gebrauchen?

    Eigentlich suchte ich einen GPIB-Treiber für Windows, aber mittlerweile stößt man bei sowas schneller auf eine Lösung mit einem RPi :lol:

    Wobei es morgen eine Überlegung wert sein wird, da wird sich der Chef wieder mal richtig freuen;)

    schlizbäda

  • Eigentlich suchte ich einen GPIB-Treiber für Windows, aber mittlerweile stößt man bei sowas schneller auf eine Lösung mit einem RPi :lol:

    hmmm, wieso entweder oder?

    Es gab mal eine Umsetzung von GPIO zu virt. RS232 an USB mit einem Arduino micro (der ATmega 32u4 mit USB) im µC.net oder www.

    Ich finde den Beitrag gerade nicht, @work habe ich den Link hoffentlich gespeichert.

    Da weder ein PI noch Windoofs was gegen virtuelle RS232 am USB haben wären beide nutzbar. Die Platine ist so klein die passt mit dem IEEE488 Stecker in ein kleines Gehäuse.

    es geht auch

    1.)

    https://www.mikrocontroller.net/articles/GPIB-RS232-Schnittstelle

    mit

    2.)

    https://www.banggood.com/de/Pro-Micro-5…-p-1077675.html

    hat man es denn auch, da 1.) nur 16kB flash braucht, passt es locker in 2.) zusätzlich rein

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • WaldiBVB:

    Eigentlich geht es darum, eine .NET-Software unserer Firma, ein Testsequenzer zum PC-basierten Prüfen von Flachbaugruppen und Fertiggeräten, für die Kommunikation über eine GPIB-Schnittstelle nach IEEE488 bzw. IEC-625 zu ertüchtigen. Eigentlich ist das GPIB-Protokoll an sich relativ einfach und hat dann wohl die Entwicklung der für lange Zeit am PC verfügbaren Parallelschnittstelle ("Centronics-Schnittstelle") für den Druckeranschluss beeinflusst. Das Problem ist hier speziell unter Windows, dass es im Gegensatz zur seriellen UART-Kommunikation (RS232, auch RS422 oder RS485) schwierig ist, (allgemeingültige) Treiber zu finden, die man relativ leicht in eigene Software einbinden kann, um eine einfache Kommunikation zu den Messgeräten über SCPI-Kommandos aufzubauen.

    Prinzipiell steht einer industriellen Anwendung des RPi nichts im Wege, wenn man einige Randbedingungen beachtet:

    - saubere, störungsfreie Spannungsversorgung

    - Raspbian (oder anderes RPi-Betriebssystem) über einen Read-Only-Mount aufziehen, um diese (unsägliche) Power-Down-Sache in den Griff zu bekommen

    - stabile, gut getestete Produktivsoftware (egal ob Fremd- oder Eigenkreation)

    Die Verwendung von Linux/RPi wäre eine Option, wenn meine Suche nach einem vernünftigen Windows-Treiber ergebnislos bleiben sollte

    jar:

    Den Link https://www.mikrocontroller.net/articles/GPIB-RS232-Schnittstelle fand ich auch bereits. Es ist ein ganz interessanter RS232-GPIB-Umsetzer, aber offenbar beim gleichzeitigen Betrieb mehrerer GPIB-Geräte nicht 100% sauber umgesetzt (Handshake). In einer Industrieanwendung muss sowas einfach unter allen Umständen sauber und stabil laufen.

    Das Ganze sehe ich nicht als "entweder - oder". Eine derartige RPi-Lösung würde als Zwischenstück implementiert werden. Da unsere Software unter Windows läuft, wäre es schöner, ohne Hardware eine programmtechnische Schnittstelle zu GPIB zu schaffen, wie sie für RS232 existiert. Dabei käme besipielsweise ein Keysight 82357B zum Einsatz. Die dafür nötige Software Keysight IO Libraries Suite, die auch Treiber dafür enthält, ist halt relativ proprietär inklusive dem ganzen Gedöns rund um die IVI-Foundation wie des Konzept der VISA-Library und lizenztechnisch nicht unproblematisch, siehe die jeweiligen EULAs...

    Der zweitschönste Weg ist eben, eine RS232-GPIB-Schnittstelle wie auf http://www.mikrocontroller.net zu verwenden oder einen RPi, der die GPIB-Schnittstelle auf Basis dieser Bachelorarbeit implementiert und eine Kommunikation zum Haupt-PC über RS232 oder LAN ermöglicht. Oder alternativ einen käuflichen Konverter von einem "namhaften" Hersteller wie National Instruments oder Keysight (z.B. Keysight E5810B)

    schlizbäda

  • Oder alternativ einen käuflichen Konverter von einem "namhaften" Hersteller wie National Instruments

    ja aber ich habe aufgegeben

    1. einen teuren von HP für den ISA Bus gekauft, schon mal die LIBs konnte man nicht von DOS zu windows mitnehmen, nicht viel später einen

    2. teuren PCI Adapter von National, die bis dahin enstandenen eigenen LIBs für die HP waren wertlos, heute gibt es kaum noch PCI, sondern PCIe und PCIx,

    ich bin es leid immer Geld zu versenken, wenn es proffesionell sein soll dann GPIB zu USB von National kaufen oder einen Nachbau

    gebrauchte Markenteile gibts schon ab 80,-

    https://www.google.de/search?q=GPIB+…iw=1280&bih=900

    man kann bis 1000,- für Neuware ausgeben, also ich würde die 80-100 € riskieren und nicht gleich auf die 1000,-€ Teile setzen.

    Gggffs. könnte man auch von einer ansässigen Messgeräte Firma ein Testmuster leihweise bekommen?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Also diese Befürchtung hatte ich auch und Dein Beitrag bestätigt mich diesbezüglich leider.

    Wenn ich jetzt keinen vernünftigen GPIB-Treiber für Windows finde, werde ich mich wohl wirklich für die RPi-Geschichte entscheiden (müssen). Für Linux gäbe es ja solche Treiber bereits: Linux-GPIB.

    Aber (nicht nur unsere) Industriekunden schwören selbst heutzutage immer noch auf Windows. Daher wurde auch unsere Software für dieses Betriebssystem erstellt.

    EDIT:

    ich fand gerade das: Prologix GPIB-USB-Controller auf Basis eines virtuellen COM-Ports

  • Wenn ich jetzt keinen vernünftigen GPIB-Treiber für Windows finde

    deswegen ja die USB seriell Umsetzung

    Den GPIB Treiber für windows gibt es ja nicht, es werden eigentlich nur Komandos hin und her geschickt

    am Commodore war das der Befehl open der die Bits an der Schnitte setzt ATN oder so, ein Multimeter einstellen war R1 aber welcher Messberei mit R1 ist kann man nur in der Anleitung vom DMM nachlesen, alle habe ich auch nicht mehr.

    Das Handbuch zum PET2001 hat das primer erklärt, aber das finde ich nirgens mehr.

    Doof war halt bei der HP GPIB Karte das alles über LIBs ging und diese nicht frei zugänglich waren, was also sich hinter den HP Aufrufen verbarg war geheim.

    Commodore war da auskunftsfreudiger

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • am Commodore war das der Befehl open der die Bits an der Schnitte setzt ATN oder so, ein Multimeter einstellen war R1 aber welcher Messberei mit R1 ist kann man nur in der Anleitung vom DMM nachlesen, alle habe ich auch nicht mehr.

    Das Handbuch zum PET2001 hat das primer erklärt, aber das finde ich nirgens mehr.

    Ja, das waren noch Zeiten! Meine späte Kindheit/frühe Jugend prägte der C64, dessen User-Port eigentlich auch eine Schnittstelle nach IEEE488 war (Quelle).

  • Ansteuerung von älteren(?) Messgeräten

    Allgemein wird GPIB in der Messtechnik benutzt wo eine super-robuste Busverbindung von bis zu 30 Geräten zum Host sichergestellt werden muss. GPIB war (und ist) DER Standard wenn es z.B um Produktionstests geht oder um Messschränke wenn es z.B. um Freigabetests von Funkgeräten geht, oder oder oder. Inzwischen haben die meisten Messgeräte einen LAN und/oder USB Anschluss, aber das Protokoll ist immer noch GPIB kompatibel, und man kann bei neuen Geräten den GPIB Anschluss immer als Option dazu bestellen.

    Ich finde es ehrlich gesagt problematisch die Kosten eines GPIB Interfaces mit den Kosten eines Raspberry Pi zu vergleichen. Andersherum wird ein Schuh draus - Ich habe in meiner Praxis Messgeräte im Wert von weit über 100000 EUR programmiert. Da taucht ein professionelles Interface für 400 EUR nicht einmal in der Inventarliste auf. Das vorgestellte Interface taugt sicherlich für den Hobbyisten der zufällig ein Instrument mit GPIB zuhause hat und das mal ausprobieren will.

    Aber GPIB und Linux - das ist echt spannend. Um die Vielfalt der Schnittstellen (USB, LAN, GPIB, Seriell, parallel...) für den Programmierer einheitlich zu machen gibt es VISA, die "Virtual Instrument Software Architecture". Die gibts von NI und Agilent (Keysight). Leider kommen sich NI und Agilent immer in die Haare, ich meine auf dem PC. Es ist unglaublich schwierig die Treiber für ein NI Interface zu installieren, dann die Treiber für ein Agilent Interface (oder umgekehrt) und dann zu hoffen dass beides funktioniert. Unter Windows mag das nach einem Tag Installationsarbeit gehen. Auf Linux (Debian und Ubuntu) hat es bei uns keiner hingekriegt, damit war das Thema Raspberry Pi gestorben. Die Idee war wie gesagt ein bestehendes Windowsprogramm (Konsole) auf Linux zu übertragen. Wir konnten aber nur ein NI Interface (GPIB-USB HS) zum Laufen bringen, und das auch nur mit dem alten IEEE-488 C API.

    Ich selbst verwende ein Prologix Interface. Das ist in allen Belangen ein guter Kompromiss, funktioniert gut, leicht zu installieren, gut dokumentiert und man kann mit Python sofort loslegen. Nachteil ist dass es nicht zu den NI's und Agilents kompatibel ist, das heisst evtl vorhandene Software muss aufwändig umgeschrieben werden.

    Vom Selbstbau eines GPIB Interfaces für den Raspberry Pi lasse ich lieber die Finger, dafür verwende ich die Zeit um mich auf die eigentliche Messaufgabe zu konzentrieren. Wie gesagt, wenn VISA auf dem Raspi geht, und das Selbstbau Interface mit VISA geht, dann macht das alles wieder Sinn. Stichwort Cross-platform Software. Das "alte" IEEE-488 API funktioniert auf Win7 und später nicht mehr, daher braucht man VISA.

    Wenn es jemand geschafft hat einen VISA Layer auf dem Raspberry Pi zum Laufen zu bringen bitte unbedingt bei mir melden! Ich hab zwar im Moment keine Anwendung dafür, aber das Thema interessiert mich sehr weil ich mir die Zähne daran ausgebissen habe.

  • Hallo nurazur,

    Mein Problem ist, dass es offenbar keinen einfachen GPIO-Treiber für Windows gibt, über den man direkt Bytes über die GPIB-Schnittstelle schicken kann.

    Ich sehe es auch so, dass der Selbstbau problematisch ist, weil man irgendetwas übersieht, auch wenn die Technik an sich einfach wäre. Beim https://www.mikrocontroller.net/articles/GPIB-RS232-Schnittstelle schreibt es der Verfasser ja selbst, dass er es nicht zu 100% vollständig/richtig umgesetzt hat.

    Bei der Bachelorarbeit aus dem Titel fehlt jegliche Erfahrung. Die universitäre Umsetzung dürfte zwar einigermaßen vernünftig erfolgt sein, aber auch da kennt man nicht alle möglichen Konstellationen. Außerdem hätte deren Verwendung zur Folge, entweder eine zusätzliche Prüfsoftware für den RPi zu schreiben oder eben auf dem RPi eine LAN- bzw. RS232-Anbindung zu erstellen, damit er mit einem Windows-PC kommunizieren kann.

    Es ist richtig, dass man die Kosten für gute und stabile Hard- und Software im industriellen Umfeld nicht scheuen darf. Bei unserer Software wäre es dann aber kundenabhängig, von welchem Hersteller das Equipment kommt. Und ich habe auch gelesen, dass sich die (Treiber-)Software der beiden Platzhirsche NI und Keysight auf dem gleichen PC gerne in die Quere kommt, was Du ja auch bestätigst.

    Hilfreich ist für mich Deine Aussage, dass die Prologix-Module anscheinend recht gut funktionieren. Wenn man sich low-level auf das Senden/Empfangen von SCPI-Kommandos herablässt, sollte auch die Kommunikation mit den Geräten von Keysight oder National Instruments funktionieren. Ich habe so etwas schon mal auf der RS232-Schnittstelle für das Keysight 34970A und das E3634A relativ problemlos umgesetzt. Wenn die Prologix-Teile die GPIB-Handshakeleitungen richtig bedienen, sollte das damit auch über die GPIB-Schnittstelle möglich sein.

    GPIB über den Linux-Treiber(?) Linux-GPIB ist interessant, ebenso eine (vermutlich extrem aufwendige) Einbindung des VISA-Standards in unsere Software oder die Umsetzung von VISA für Linux. Du sagst es, wohl nicht unmöglich. Das größte Problem ist hier die Zeit!

  • Mein Problem ist, dass es offenbar keinen einfachen GPIO-Treiber für Windows gibt, über den man direkt Bytes über die GPIB-Schnittstelle schicken kann.

    richtig, es gibt keinen solchen "einfachen" Treiber. Unter Windows ab Win7 hast du nur eine Chance mit VISA. Dazu bindet man ein Visa32.lib in sein Programm ein, der Rest ist wirklich "straight forward", solange man in C, C++ oder C# programmiert. AAABER, die Installation der Treiber ist schwierig. Ich gebe mal wieder wie ich zum Erfolg gekommen bin, Ziel war es sowohl einen NI USB-GBIB HS als auch ein Agilent USB Interface benutzen zu koennen.

    Zunächst muss man die NI Software installieren, dabei wird auch der Gerätetreiber für das USB-GPIB HS installiert. Separat gibts den afaik nicht. Danach muss mann alles ausser dem Treiber wieder de-installieren, damit kein NI Service später dazwischen funkt. Das ist soweit ich mich erinnern kann gar nicht so einfach. Wenn gar nichts mehr hilft kann man im Windows startup alles was mit NI zu tun hat abschalten. Dazu benutze ich CCleaner.

    Danach installiert man die Keysight IoLibraries, und wenn alles klappt, dann kann man den "Keysight Connection Expert" aufrufen. Normalerweise findet der alle Instrumente und Interfaces selbständig, Wenn nicht kann man ein Instrument oder ein Interface auch manuell konfigurieren. Wichtig bei mehreren Interfaces ist dass man ihnen verschiedene Adressen gibt, auch wenn sie nie gleichzeitig benutzt werden.

    Seit Einführung von Windows 10 hat Keysight mehrere Updates gebracht, jedesmal wurde es etwas stabiler, Habe jetzt schon länger keine Probleme mehr damit. Man sollte in jedem Fall die neueste Version der IoLibraries installieren.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!