News GPIB mit Visual Studio 2019 und C# - Daten an Netzgerät senden


von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Angehängte Dateien:

Lesenswert?

GPIB-Messtechnik ist nicht nur für „alte“ Programmiersprachen ansprechbar - dank GPIB-Hardware von NI funktioniert der Messbus mit aktuellen Entwicklungsumgebungen. Hier ein kleiner Versuch mit Visual Studio 2019 und einem Keysight 6624A.

Worum geht es hier?

Der in der Abbildung gezeigte Stecker ist auf jeder Menge Messtechnik zu finden - die meisten Benutzer sehen ihn, und betrachten ihn als „gottgegebene Lästigkeit“.

Bildquelle: Autor.

Der von HP unter dem Stichwort HPIB eingeführte Bus läuft heute unter dem Namen GPIB, und wurde von der IEEE unter der Standardisierungsnummer 488 standardisiert. Wer in seinem Labor GPIB-Hardware hat, ist gut beraten, den Aufwand für die Konfiguration auf sich zu nehmen - in der Welt des ATE, kurz für Automated Test Equipment, sind faszinierende Zeitersparnisse möglich.

Erster Akt: Hardware.

Möchte man die National Instruments-API nutzen, ist die Verwendung der hauseigenen Hardware der beste Weg. Der Autor setzt eine PCIe-Karte ein, es gibt für diverse andere Schnittstellen Unterstützung. Bei USB-Wandlern auf Ebay ist das Fälschungsrisiko allerdings hoch. Hier sei auf das in der Abbildung gezeigte KISS.488 verwiesen - sofern sie nur Screenshots abernten wollen, ist dieses Gerät die beste Lösung.

Bildquelle: Instagram: tam.hanna, Gerät Leihgabe von https://www.hxengineering.com/ieee-488-to-ethernet/

Im Bereich der unterstützten Entwicklungsumgebungen ist NI konservativ, und beschränkt sich derzeit auf Visual Studio 2019. Die Community-edition funktioniert problemlos, achten Sie darauf, im Installation-Assistenten erstens alle Aktualisierungen einzuspielen und danach die Payload .NET-Desktopentwicklung zu animieren. Im nächsten Schritt folgt die URL https://www.ni.com/hu-hu/support/downloads/drivers/download.ni-488-2.html, wo NI die Treiberkomponente für die GPIB-Karte anbietet. Die Installation erfolgt in zwei Stufen - zuerst installiert sich ein Paketmanager, dieser holt die eigentlich benötigten Elemente. Wichtig ist das Markieren der diversen für das.net-Framework 4.5 benötigten Komponenten herunterladen müssen. Während dem „Deployments“ der diversen Komponenten ist es empfehlenswert, unter Nutzung von NI MAX zu prüfen, ob die verschiedenen Messgeräte sichtbar sind. Auf „nicht-Antworten“ der IDN-Anfrage hinweisende Fehlermeldungen sind irrelevant - wichtig ist nur, dass GPIB-Messgeräte nur im eingeschalteten Zustand sichtbar sind.

Zweiter Akt: Projektskelett einrichten und GPIB-Karte ansprechen

Als Nächstes folgt die Erzeugung eines Projektskeletts. Die von NI zur Verfügung gestellten APIs und Bibliotheken sind .net-basiert - in UWP-Applikationen sind sie nicht ansprechbar. Der Autor verwendet gerne Kommandozeilen-Applikationen oder WPF-Applikationen, um „klassische“ Methoden zur Threadsynchronisation verwenden zu können - das „kurzfristige“ Anhalten eines Threads, um eine Messgerät Zeit zur Rekonfiguration zu geben, ist hilfreich. Nach der Erzeugung des Projektskeletts sind die folgenden Erweiterungs-Assemblies notwendig:

1
National Instruments 488.2
2
National Instruments Common

Die Inbetriebnahme der GPIB-Karte erfolgt unter Auslassung des Exception-Handlings durch folgende Kommandofolge:

1
        static NationalInstruments.NI4882.Board GPIBCard;
2
        static void Main(string[] args) {
3
            try {
4
                GPIBCard = new NationalInstruments.NI4882.Board(0);
5
                Console.WriteLine("GPIB up!");
6
            }

Wichtig ist, dass die NI-API Einsatzszenarien unterstützt, in denen eine Workstation mehr als einen GPIB-Transciever aufweist. In diesem Fall bekommen die einzelnen Elemente numerische IDs eingeschrieben – hier gibtg es nur eine GPIB-Karte, die ID ist null. Im nächsten Schritt erfolgt die Erzeugung des device-Objekts, das eine Gegenstelle darstellt - 7 ist die dem HP 6624A zugegebene Adresse:

1
    try {
2
        GPIBCard = new NationalInstruments.NI4882.Board(0);
3
        PSU = new Device(0, 7);

„Letzte Amtshandlung“ ist dann der Aufruf von Write, um Informationen in Richtung der GPIB-Hardware weiterzuschicken:

1
        PSU.Write("VSET 3,3;ISET 3,0.5;\n");

Der Aufbau der zu übertragenden Informationen ist von Gerät zu Gerät unterschiedlich - im Fall höherwertiger Messtechnik finden sich „Programmer‘s Manuals“, die weitere Informationen zur Verfügung stellen. Lohn der Ausführung des hier gezeigten Code-Snippet ist, dass der dritte Kanal 3 V bei einer Strombegrenzung von 0,5 A anbietet.

Fazit

GPIB mag auf den ersten Blick „aufwändig“ erscheinen - ist die Karte gekauft und die erste Solution geschrieben, so möchte man das Meßnetz bald nicht mehr missen.


: Bearbeitet durch NewsPoster
von Gustav G. (gustavgggg)


Lesenswert?

Wenn ich GPIB sehe oder höre zieht sich alles zusammen. Das ist leider 
in Laboren nicht weg zu bekommen (Genauso wie LabView) und eine 
Katastrophe.

von Jonathan S. (jonathan9192)


Lesenswert?

@gustavgggg: Warum ist GPIB deiner Meinung nach eine Katastrophe?

Wenn du gerade 1000 andere Sachen zu debuggen versuchst (z.B. warum 
deine Elektronen nicht in der Falle bleiben), ist es mMn ein Segen, wenn 
wenigstens die Kommunikation mit den Geräten stabil funktioniert.
Das ist mit GPIB durchaus einfacher als mit RS232 oder USB.
Ethernet stellt sicherlich eine modernere Alternative zu GPIB dar,
ist aber an vielen der in nicht supermodern-ausgestatteten Laboren
vorhandenen Geräten schlichtweg nicht verfügbar.

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
Noch kein Account? Hier anmelden.