Forum: HF, Funk und Felder Programmierung CMU200 und CRTU-RU mit vb.net


von Joern DK7JB .. (moin)


Lesenswert?

Ich versuche gerade über den GPIB-Bus einen CRTU-RU anzusteuern und 
benötige Hilfe.
Ich verwende ein GPIB-Interface von National Instruments und versuche 
über die VISA-GPIB Schnittstelle zuzugreifen. Programmiert wird unter 
vb.net.
Mit einem Beispiel habe ich es schon geschafft *IDN? zu übertragen und 
eine Antwort zu bekommen. Das mit den geräteigenen Befehlen klappt aber 
noch nicht.

Könnt ihr mir vielleicht mit Beispielprogrammen in vb.net von euch 
helfen?

von Markus W. (dl8mby)


Lesenswert?

Hallo Joern,

möglicherweise hilft Dir das weiter:

Beitrag "Re: CMU200 Erfahrungen und Modifikationen"

Markus
DL8MBY

von Tom B. (hf_tom)


Lesenswert?

Hallo,
gibt es Erfahrungen mit mit Windows-Programmen, die auf den CRTU oder 
CMU200 zugreifen? Ich würde mich freuen, wenn ich mir Beispieprogramme 
ansehen dürfte. Irgendwie fällt mir der Einstieg schwer.
Grüße Tom

von Edson (Gast)


Lesenswert?

Tom B. schrieb:
> Hallo,
> gibt es Erfahrungen mit mit Windows-Programmen, die auf den CRTU oder
> CMU200 zugreifen?

A bissl ;)

> Ich würde mich freuen, wenn ich mir Beispieprogramme
> ansehen dürfte. Irgendwie fällt mir der Einstieg schwer.
> Grüße Tom

Also Beispielprogramme findet man im Manual vom CMU200, hast Du das 
nicht?

von Tom B. (hf_tom)


Lesenswert?

Hmmm welches PDF meinst du genau? Ich habe in den PDFs bisher keine 
Beispielprogramme finden können.

von Tom B. (hf_tom)


Lesenswert?

Auch habe ich nicht verstanden, wie das Handling mit der ersten und der 
zweiten GPIB Adresse funktioniert.

von Tom B. (Gast)


Lesenswert?

Jetzt antworte ich mir selbst. Gemeint ist das PDF "CMU_Rev10_e.pdf" 
Operating Manual. Ich hatte gehofft ein lauffähiges Programm studieren 
zu können, da in der Realität oft noch irgendwelche Hürden zu überwinden 
sind, bis ein Programm wirklich funktioniert und den CRTU ansteuern 
kann.

Einige Fragen hätte ich noch?
- Warum gibt es zwei GPIB Adressen? Und wie wird die ersten und wie die 
zweite Adresse angesprochen?
- Spielt es eine Rolle, welcher GPIB-Adapter verwendet wird? Also 
"NI-GPIB-USB-HS GPIB-USB Adapter" oder "HP Keysight Agilent 82357B 
USB-GPIB Interface High-Speed USB 2.0" oder "Prologix GPIB-USB 
Controller"?

von Edson (Gast)


Lesenswert?

Tom B. schrieb:
> Jetzt antworte ich mir selbst. Gemeint ist das PDF "CMU_Rev10_e.pdf"
> Operating Manual. Ich hatte gehofft ein lauffähiges Programm studieren
> zu können, da in der Realität oft noch irgendwelche Hürden zu überwinden
> sind, bis ein Programm wirklich funktioniert und den CRTU ansteuern
> kann.

Ah, sorry. Ich habe Vorgestern nicht mehr reingeschaut.

>
> Einige Fragen hätte ich noch?
> - Warum gibt es zwei GPIB Adressen? Und wie wird die ersten und wie die
> zweite Adresse angesprochen?

Zum warum: Geräte können die Möglichkeit bieten, individuell 
Funktionsgruppen* und Testmodi unter einer Secondary-Address 
anzusprechen. Das ist beim CMU200 der Fall (CRTU weiß ich jetzt nicht). 
Der Device-Descriptor sieht dann z.B. bei Primary Address = 10 und 
Secondary Address = 1 so aus: "GPIB0::10::1::INSTR"
Ein Gerät das keine Secondary Address bietet/benötigt, würde das so 
aussehen: "GPIB0::10::INSTR"

> - Spielt es eine Rolle, welcher GPIB-Adapter verwendet wird? Also
> "NI-GPIB-USB-HS GPIB-USB Adapter" oder "HP Keysight Agilent 82357B
> USB-GPIB Interface High-Speed USB 2.0" oder "Prologix GPIB-USB
> Controller"?

Laut CMU-Manual muss man bei Verwendung von NI-Treibern zur Secondary 
Address den Wert 96 addieren. Ich verwende die VISA-Library von 
Keysight, daher kann ich dazu nicht viel mehr sagen.
Der HP82357B Adapter geht auf jeden Fall damit, die Prologix-Teile kenne 
ich nicht.

*) bei meinem CMU200 habe ich z.B. die Module "RF" und "AUDIO" den 
sekundären Adressen 1 und 2 zugewiesen.

von Edson (Gast)


Lesenswert?

Edson schrieb:
> *) bei meinem CMU200 habe ich z.B. die Module "RF" und "AUDIO" den
> sekundären Adressen 1 und 2 zugewiesen.

Die sekundäre Adresse 0 ist für das CMU-Basissystem reserviert.

d.h. ich benutze je nach Ziel die Device-Descriptor 
"GPIB0::10::0::INSTR", "GPIB0::10::1::INSTR" und "GPIB0::10::2::INSTR"

von Joern DK7JB .. (moin)


Angehängte Dateien:

Lesenswert?

Hallo,

hier zwei vb.net Codeschnipsel von mir:
1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
2
        Dim ioMgr As Ivi.Visa.Interop.ResourceManager
3
        Dim instrument As Ivi.Visa.Interop.FormattedIO488
4
        Dim idn As String
5
        ioMgr = New Ivi.Visa.Interop.ResourceManager
6
        instrument = New Ivi.Visa.Interop.FormattedIO488
7
        instrument.IO = CType(ioMgr.Open("GPIB0::20::1::INSTR"), Ivi.Visa.Interop.IMessage)
8
        instrument.WriteString("*IDN?")
9
        idn = instrument.ReadString()
10
        MsgBox("The IDN String is: " & idn, vbOKOnly, "IDN Result")
11
12
        'Muss hier nicht auch das "instrument" wieder geschlossen werden?
13
        'Wurden die VISA Bibliotheken richtig eingebunden?
14
    End Sub
15
16
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
17
        Dim ioMgr As Ivi.Visa.Interop.ResourceManager
18
        Dim instrument As Ivi.Visa.Interop.FormattedIO488
19
        Dim idnItems As Object()    'Ist das richtig????
20
        Dim idnItem As Object    'Ist das richtig????
21
        Dim n As Integer
22
        Dim messwerte(1000) As String
23
        'Dim idn As String
24
        'Dim idn2() As String
25
26
27
        ioMgr = New Ivi.Visa.Interop.ResourceManager
28
        instrument = New Ivi.Visa.Interop.FormattedIO488
29
        instrument.IO = CType(ioMgr.Open("GPIB0::20::1::INSTR"), Ivi.Visa.Interop.IMessage)
30
        instrument.WriteString("SPECtrum:FREQuency:STARt ” + "5E+07")
31
        instrument.WriteString("SPECtrum:FREQuency:STOP ” + "1.5E+08")
32
        instrument.WriteString("INITIATE:SPECtrum”)
33
        instrument.WriteString("READ:ARRAY:SPECTRUM:CURRENT?”)
34
35
        idnItems = CType(instrument.ReadList(Ivi.Visa.Interop.IEEEASCIIType.ASCIIType_Any, “,”), Object())
36
        'idnItems = CType(instrument.ReadList(), Object())    ' geht auch
37
38
        For Each idnItem In idnItems
39
            n = n + 1
40
            messwerte(n) = idnItem.ToString
41
        Next idnItem
42
43
        'Hier fehlt noch die Ausgabe
44
45
        Dim sResult As String = ""
46
        For Each elem As String In messwerte
47
            sResult &= elem & " "
48
        Next
49
        MsgBox(sResult)
50
    End Sub

Muss man die Verbindungen am Ende wieder schließen oder ist bie mir 
alles richtig. Wie auch immer - die Ausgaben in dem Infofenster sind 
alle richtig. Ich werde nun alles weiterentwickeln und ein richtiges 
Programm mit grafischer Darstellung schreiben schreiben. Der große 
Programmierheld bin ich nicht und freue mich immer, wenn größere 
Programme das machen was sie sollen. Daher würde ich mich über eine 
Rückmeldung freuen.

In der "Private Sub Button1" wird der Gerätename ausgelesen und in der 
zweiten Sub das Frequenzspektrum als Liste in einem Infofenster. Im 
angehängten Bild habe ich gezeigt, wie ich die Bibliotheken eingefügt 
habe. Im Bild findet ihr auch zwei Fragen die ich noch habe.

Als Bibliothek läuft bei mir die von Keysight. Die Treiber von NI sind 
aber auch auf dem Rechner, werden aber momentan nicht verwendet.

von Joern DK7JB .. (moin)


Angehängte Dateien:

Lesenswert?

Hier das Bild von dem kleinen Testprogramm.Die zugehörigen Frequenzen 
muss man sich dann aus der Start- und Stoppfrequenz und der festen 
Anzahl der Messpunkte ausrechnen.

Wie kann man die Bilder (Hardcopy des Bildschirms) auslesen, die im 
Gerät mit dem Printbefehl erzeugt worden sind? Habt ihr das schon 
hinbekommen?

Muss das mit "New Ivi.Visa.Interop.FormattedIO488" erzeugt objekt am 
Ende der Sub-Routine wieder geschlossen werden?

: Bearbeitet durch User
von Meister E. (edson)


Lesenswert?

Joern DK7JB .. schrieb:
> Hier das Bild von dem kleinen Testprogramm.Die zugehörigen Frequenzen
> muss man sich dann aus der Start- und Stoppfrequenz und der festen
> Anzahl der Messpunkte ausrechnen.
>
> Wie kann man die Bilder (Hardcopy des Bildschirms) auslesen, die im
> Gerät mit dem Printbefehl erzeugt worden sind? Habt ihr das schon
> hinbekommen?
1
MMEM:CDIR "\USERDATA\PRINT"
2
MMEM:DATA? "PRINT00.WMF"            (Dateiname bitte anpassen)

Nach dem MMEM:DATA? muss Deine Software die Blockdaten in 3 Schritten 
einlesen:

(1) die ersten zwei Zeichen lesen, das 1.Zeichen muss '#' sein, das 
2.Zeichen sagt Dir im ASCII-Code, wieviele Zeichen die Anzahl folgender 
Bytes bilden. Nehmen wir an, das 2.Zeichen ist 0x34 (='4')
(2) soviele Zeichen einlesen, wie vorhin festgestellt, und diesen String 
als Ganzzahl wandeln
(3) soviele Bytes lesen, wie in Schritt 2 festgestellt. Diese Daten dann 
in eine Datei schreiben (mit passender Dateiendung) - fertig

> Muss das mit "New Ivi.Visa.Interop.FormattedIO488" erzeugt objekt am
> Ende der Sub-Routine wieder geschlossen werden?

Edit:

Kann auf jeden Fall nicht Schaden. Ich schaue mir Dein Programm 
demnächst mal genauer an. Ich mache das (unter VBA) alles etwas anders, 
das hat aber auch mit der Lib zu tun.

: Bearbeitet durch User
von Joern DK7JB .. (moin)


Lesenswert?

Fertige Routinen zum Einlesen der Bilder oder sonstiger Dateien würde 
mich interessieren, da ich bisher keine Möglichkeit gefunden habe die 
Länge des Einlesens zu steuern.

von Manfred L. (mandi007)


Lesenswert?

Suche ein dig modul a7  für das Teil hat wer sowas

von F. M. (foxmulder)


Lesenswert?

Evtl. würde es helfen deine Projektmappe hier hochzuladen, als ZIP.

von Manfred L. (mandi007)


Lesenswert?

Versteh ich ni ht?

von F. M. (foxmulder)


Lesenswert?

Manfred L. schrieb:
> Versteh ich ni ht?

Die Nachricht galt dem TO, das hier ist ein Thread bei dem es um 
Software geht.
Du kannst ja einen eigenen Thread aufmachen.

mfg

von Manfred L. (mandi007)


Lesenswert?

Es dürfte sich laut meiner Information um einen Sw Fehler handeln  das 
Gerät fährt hoch  und findet das dig port nicht es zeigt eine 
fehlermeldung
Sstem Error  Filname tsk.cpp
Line 676
Add Info
Rev./main/5.20/1
Int:154

In eebog hatte ich gefunden dass ev das Problem im A7 Modul liegt
Mfg

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.