Forum: Mikrocontroller und Digitale Elektronik HPIB -> Gerät empfängt nichts


von Kris (Gast)


Lesenswert?

Hi Leute!!

Ich habe des kleine Programm, des untensteht, geschrieben. Es soll nur
des Gerät HP3577B (Network Analyzer) in den Messeinstellungsmodus (IPR
= Instrument Preset) gelangen und dann den Eingangskanal A (INA)
auswählen. Nur des tut überhaupt nicht. Ich habe keine Ahnung mehr, was
ich nun machen könnte habe schon einiges probiert, aber nix zu machen.
Wäre über ne Idee von Euch sehr dankbar :)

Bye, Kris :)

------------------------------------------------------------------------ 
-----


REM Wichtige Defintitionsdatei einbinden
REM $INCLUDE: ’C:\qbasic\progra~1\qbsetup.bas’

CLS

REM Parameter
Datendirectory$ = “’C:\kristina\data\”
ISC& = 7
HP& = 711

CALL IOSEND(ISC&, “IPR”, 3)
CALL IOSEND(ISC&, “INA”, 3)

END

von Kris (Gast)


Lesenswert?

ne veränderung hat zu folgendem geführt, vielleicht kann mir jetzt
jemand helfen


Mein kleines QuickBasic-Programm löste folgendes aus:

1.        2 Beep-Töne direkt hintereinander

2.        die LEDs „REMOTE“ und „LISTEN“ leuchten

3.        auf dem Display erscheint „invalid HPIB command“ und ganz
kurz zuvor „invalid suffix“ oder so

4.        ich kann keinen Hardkey mit Reaktion drücken erst wenn ich
„LCL“ gedrückt habe -> LED „REMOTE“ aus, aber LED „LISTEN“ leuchtet

5.        mein Laptop geht aus – aber des ist net so relevant



Das ist mein Problem. Er macht nicht das was er tun soll.


Dies ist mein Programm:

REM Wichtige Definitionsdatei einbinden
REM $INCLUDE: 'qbsetup.bas'
CLS
REM Parameter
Datendirectory$ = "c:\kristina\data\"
ISC& = 7                  'Select Code von der HP-Karte
HP& = 711                 '7=Select Code  11=Adresse vom HP3577B
CALL IOOUTPUTS(HP&, “IPR”, LEN(“IPR”))
CALL IOOUTPUTS(HP&, “INA”, LEN(“INA”))
END


Und es sollte das selbe wie oben tun - mehr nicht
Habe auch schon andere Befehle probiert, stets dasselbe.

von Rahul (Gast)


Lesenswert?

"LCL" ist wohl die "Local"-Taste. DAmit Gibts du dem Gerät vor, dass
Du es jetzt wieder manuell bedienen willst.

von Kris (Gast)


Lesenswert?

ja genau

von Nik Bamert (Gast)


Lesenswert?

Hi!

Ich hab das nun nicht genaustens durchgelesen, aber könnte daran etwas
falsch sein? :
>REM Wichtige Definitionsdatei einbinden
>REM $INCLUDE: 'qbsetup.bas'

Wenn du diese "wichtige definitionsdatei" wirklich einbinden willst
musst du das 'REM' vor $include 'qbsetup.bas' schon weglassen,
ansonsten wird es als kommentar interpretiert und nicht includiert.

MFG Nik

von OldBug (Gast)


Lesenswert?

Kannst Du vielleicht mal kurz Pasten, wie so ein Befehl aussehen soll,
laut Handbuch?

Thx,
Patrick...

von Kris (Gast)


Lesenswert?

@ Nik
der Befehl $INCLUDE: 'qbsetup.bas' ist ein Metabefehl und wird trotz
Kommentar ausgeführt.
Bin dem trotzdem nachgegangen, nach dem ich keine Compiling-Fehler mehr
hatte, stand da jetzt     INCLUDE: 'qbsetup.bas' und habe immer noch
desselbe problem

@Patrick
Die Programming Codes stehen im handbuch im Anhang (2Spalten)
Okay hiermal paar Beispiele:

Function                      HP-IB (des ist der Code)
INSTRUMENT PRESET             IPR
Input = A                     INA
Store in register X1          SX1
DISPLAY FUNCTION              DSF
Phase                         DF5
Start Frequency (entry)       FRA


Im Handbuch steht des alles in HP-BASIC
Beispiel für ne Programcodezeile:

OUTPUT 711; "IPR;"


noch fragen????
ich beantworte alles, sofern ich dann hoffetnlich weiterkomme

Danke!!!

von OldBug (Gast)


Lesenswert?

Hm, sieht so aus, als hättest Du da was vergessen ;)

ändere mal
CALL IOOUTPUTS(HP&, “IPR”, LEN(“IPR”))
CALL IOOUTPUTS(HP&, “INA”, LEN(“INA”))

in
CALL IOOUTPUTS(HP&, “IPR;”, LEN(“IPR;”))
CALL IOOUTPUTS(HP&, “INA;”, LEN(“INA;”))

Sieht jedenfalls schwer danach aus...

von Kris (Gast)


Lesenswert?

getestet  -- immer noch der selbe fehler

von OldBug (Gast)


Lesenswert?

Kannst Du denn vielleicht mal die "qbsetup.bas" hier veröffentlichen?
Oder ist das Copyrighted?
Warscheinlich liegts nur daran, daß da irgendwas in der
Übertragungssequenz fehlt, vielleicht muss hinter diese "711" auch
noch ein ;, aber wie man das machen muss, kann ich ohne weiteres über
die IOOUTPUTS-Funktion nicht sagen...
Wie lautet denn genau die Fehlermeldung, in der "invalid suffix" oder
so ähnlich vorkommt?

von Kris (Gast)


Angehängte Dateien:

Lesenswert?

Des ist die Datei "qbsetup.bas"

Und des steht als erklärung im handbuch zu den fehlermessages

INVALID HPIB COMMAND    ERROR    HP-IB. Code sent to HP 3577B not a
valid HP 3577B HP-IB Code.

INVALID SUFFIX          ERROR    HP-IB. Code sent to HP 3577B for a
data entry suffix is not appropriate for prefix parameter or instrument
state.

von OldBug (Gast)


Lesenswert?

Hm, ich habe da ne vermutung, aber evtl. könntest Du noch das
abschreiben, was auf der Seriellen Schnittstelle gesendet wird (also
kein Quellcode, sondern so ne Art Frame-Doku). Wenns das im Handbuch
gibt.

von Kris (Gast)


Lesenswert?

verstehe ich nicht
wie meinst du des genau???
einbißchen ausführlicher bitte
lass dir zeit - ich muss zum arzt
trotzdem dank

von OldBug (Gast)


Lesenswert?

Ah, moment, wird das überhaupt via COM-Port gesendet?
Hab das jetzt einfach nur so angenommen, weis es aber nicht ;)
Naja, jedenfalls würde ich gerne wissen, was da für Bytes übertragen
werden müssen, um einen Befehl erfolgreich abzusetzen.
So in der Art:
|SOF|ADR|DELIM|CMD|DELIM|LEN|DELIM|EOF|

Was dann beispielsweise so aussehen würde:
|0x??|0x01|;|IPR|;|0x06|;|0x??|

Das ist jetzt nur zusammenfantasiert ;)
Meine Vermutung geht halt dahin, daß Du für ISC& und den STRN$ nicht
das überträgst, was da rein sollte.

von thkais (Gast)


Lesenswert?

Kris: Was für ein Betriebssystem hat Dein PC? Taktfrequenz?

von Kris (Gast)


Lesenswert?

@ thkais
habe uralt laptop. betriebssystem windows 95. und "system operates at
75MHz" oder was meinst du? (9600BD kann ich dir auch noch anbieten)

@ Patrick
gehe über den GP-IB (general purpose interface bus)
mit dem output-befehl weiß er dass er dass er in den remote-modus gehen
muss, weil was vom pc (laptop) kommt und der outputbefehl setzt des
gerät in den LISTEN-zustand.

und dann scheint er den Befehl nicht zu erkennen. ich weiß net mehr
weiter.

von OldBug (Gast)


Lesenswert?

Guten morgen zusammen!

Also:
DECLARE SUB IOOUTPUTS  (ISC&, STRN$, COUNT%)

Was steht denn in der Doku, was für ISC& und COUNT% übergeben werden
soll? Ich weis, Du hast das oben in Deinem Programm schon mal
hingeschrieben, aber was sagt die Doku? In Deinem Programm verwendest
Du einmal ISC& und einmal HP&, übergibst an die Funktion aber NUR
HP&...
STRN$ wird wohl der Befehl sein ("IPR/INA/...") und COUNT% die länge
des Befehls. Es könnte aber auch sein, daß die Adresse, bzw ISC&, in
der Länge mit angegeben werden muss.
Ich habe auch mal nach nem Manual in google gesucht, aber das gibts
wohl nur als Hardcopy gegen Dollars ;)

von Kris (Gast)


Lesenswert?

Ebenfalls einen guten morgen :)


DECLARE SUB IOOUTPUTS  (ISC&, STRN$, COUNT%)


ISC&   ->  specifies a device address (711) or specifies the interface
select code (7) -> habe getestet, er geht nur in den REMOTE und Listen
Modus wenn ich 711 also HP& einsetze

STRN$  ->  array specifying the string to be sent

COUNT% ->  specifies the length of the output string (An error occurs
if the number is less than 0)


Beispiel für QuickBASIC und QBasic:
DEV& = 723
INFO$ = "1ST1"
LENGTH% = LEN(INFO$)
CALL IOOUTPUTS(DEV&,INFO$,LENGTH%)
'send "1ST1" to device 723

das habe ich aus dem buch "using HP-IB interface and command library
with dos" und ist von HP

von OldBug (Gast)


Lesenswert?

Aha!

Hm,
'send "1ST1" to device 723
Wo kommt denn diese '1' her? Die Befehle, die Du bisher genannt hast,
waren alle nur 3-Stellig... Ist das evtl. eine Art Präfix?

von OldBug (Gast)


Lesenswert?

Also die erste '1' meinte ich :)

von Kris (Gast)


Lesenswert?

das war schon klar

und

das ist ne gute Frage, des haben die hier in dem Buch so nun mal
gemacht.

... ich teste es mal ... warten bitte :)

von Kris (Gast)


Lesenswert?

egal ob ich    "1IPR"
               "1IPR;"
               "1IPR; "

als Befehl nehme, passiert das:

emote und listen modus -- 1xbeep -- keine displayanzeige auf gerät --
gerät macht aber auch nicht des IPR -- laptop schmiert ab

habe jetzt aber nur einen befehl drin, soll ich 2befehle mal probieren,
so wie oben?
--> ich mache es einfach mal...

schon mal ein fortschritt oder???

von OldBug (Gast)


Lesenswert?

:-)

Vielleicht schmiert Dein Laptop ja ab, weil Du die Antwort nicht
entgegennimmst...

von Rahul (Gast)


Lesenswert?

Mal ne Frage zum Laptop: Bertreibst du den über Akku oder mit
Netzkabel?
Vielleicht bricht die Versorungsspannung ja so doll zusammen, dass er
sich aufhängt... (Ist aber wohl eher unwahrscheinlich.)

von Kris (Gast)


Lesenswert?

mein laptop sitz auf der dockingstation

zu den tests:
des ist echt blöd, ich schicke die ein und die selbe exe datei an das
gerät und kann 3 verschiedene reaktionen bekommen, ich glaub des ding
mag mich net.

die 3 möglichen reaktionen:
1. rein garnix und laptop schmiert ab
2. remote und listen modus -- 1xbeep -- keine displayanzeige auf gerät
-- gerät macht aber auch nicht des IPR -- laptop schmiert ab
3. remote und listen modus -- 1xbeep -- kdisplayanzeige auf gerät --
gerät "invalid hpib command" -- macht sonst nix weiter -- laptop
schmiert ab

Der Laptop schmiert unter dos ab
Unter windows kommt dann so ein Popupfenster mit folgendem test:
"Diese Anwendung wird aufgrund eines unzulässigen Zugriffs beendet.
Alle Anwendungen beenden und Computer neu starten.
Falls bei Arbeit mit dem Programm permanent Probleme auftreten, ..."

zusatzinfo:
nach einer weile geht er selbstständig aus dem remote-modus raus, aber
bleibt im listenmodus
manchmal kommt nochmal ein beep, weiß aber net, ob des zur gleichen
zeit passiert.
geht auch aus dem remotemodus, wenn ich den laptop net mir
STRG+ALT+ENTF wiederbeleben kann und ihm dann die Stromversorgung
enziehe. kann aber nur zufall sein.

Dein Kommentar "Vielleicht schmiert Dein Laptop ja ab, weil Du die
Antwort nicht entgegennimmst..."
--> Welche Antwort??? Ich verlange doch was von ihm. Ich sende was.

Im Buch "using HP-IB interface and command library with dos", wo die
befehle erklärt sind steht noch des:
after the string is sent, the EOL string is sent and the EOI line is
set (if enabled).

??? ich verzweifle .........

von OldBug (Gast)


Lesenswert?

Daß Windows da motzt, ist klar. Du machst direkte Zugriffe auf die
Hardware, was Windows überhaupt nicht mag.
Es scheint fast so, als hättest Du zusätzlich noch ein Problem mit der
Schnittstelle, die Du verwendest (welche auch immer).
Dein Versuch mit

DEV& = 711
INFO$ = "1IPR"
LENGTH% = LEN(INFO$)
CALL IOOUTPUTS(DEV&,INFO$,LENGTH%)

Lässt sich aber noch reproduzieren, oder?

von Rahul (Gast)


Lesenswert?

Ich bin mir nicht ganz sicher, aber müsste nach einem "write" nicht
ein "read" komment, das die Bereitschaft des Analyzers klärt?
Du hörst dich ja echt verzweifelt an; da muss ich doch wohl doch mal
unters Bett kriechen und die alten Unterlagen suchen...

von Kris (Gast)


Angehängte Dateien:

Lesenswert?

Du wolltest was über die Schnittstelle, dann schau in den anhang

Mein Programm sieht jetzt so aus:
INCLUDE: 'qbsetup.bas'
CLS
REM Parameter
Datendirectory$ = "c:\kristina\data\"
ISC& = 7                  'Select Code von der HP-Karte
HP& = 711                 '7=Select Code  11=Adresse vom HP3577B
INFO$="1IPR"
LENGTH%=LEN(INFO$)
CALL IOOUTPUTS(HP&, INFO$, LENGTH%)
END

Ergebnis:
Nachdem er mermals nix getan hat, habe ich 2 neustarts direkt hinter
einander gemacht. und sie dann: er machte wieder was.
und zwar:
REMOTE und LISTEN MODUS + 1 Beep + "INVALID HPIB COMMAND"

Test:
Habe die 1 mal wieder weggelassen, da kam auch nur INVALID HPIB
COMMAND, aber ich denke, dass der andere Text INVALID SUFFIX nur zu
schnell wieder weg war.

Frage:
Was meint irh immer mit diesem Read and Write?
Ich sende doch nur was, warum soll ich was empfangen?????????

von Rahul (Gast)


Lesenswert?

weisst du zufällig, mit welcher GPIB-Karte du arbeitest? Ist die von HP
oder vielleicht von NationalInstruments?
Ich habe meine Unterlagen gerade gefunden (lagen fast ganz oben auf dem
Stapel).
Damals hatte ich eine ISA-Karte von National Instruments in einem
Compaq 486er (nur zur Info, was noch so in Firmen für Messplätze
benutzt wird) unter Win95. Da gab es keine Probleme. Leider habe ich
die Sachen nur noch auf Papier.
Leider wird in deinem Dokument nur HP-VEE beschrieben. Das ist meiner
Meinung eine Programmiersprache auf einer HP-Workstation unter HP-UNIX.
Was uns helfen würde wäre eine Übersicht über die Befehle, die Dir zur
Verfügung stehen.

von Kris (Gast)


Lesenswert?

Ich habe eine HP-IB Karte drin

bekomme heute nachmittag ein anderes gerät zum anschließen, das war
vorher dran und hat funktioniert.
damit soll ich dann test, ob der laptop, die karte und die peripherie
überhaupt noch tut, oder ob diese beim transport (schweiz ->
deutschland) beschädigt wurde.

des viel den Leute sehr früh ein, oder?

Ich denke, ich melde mich heute nachmittag nochmal :)
Vielen Dank an Euch!
Ihr habt mir Erkenntnisse, Hilfe und Unterstützung gebracht,
und besonders habt ihr mich vorm VERZWEIFELN gerettet.
Danke!

Bis später :)

von Peter D. (peda)


Lesenswert?

Ich kenne auch nur Leute, die so wie ich denken:

Wer einmal den HPIB benutzen mußte, faßt ihn nicht für alles Geld der
Welt nochmal an.

Das Problem ist nämlich, daß dort absolut nichts standardisiert ist.

Z.B. kann das Ende mit dem EOI-Draht, 0x0A, 0x0D+0x0A, 0x0D+0x0A+EOI,
0x0D+EOI+0x0A oder sonstwie gekennzeichnet werden.

Auch sind manche Interfaces wie tot, wenn nicht auch noch eine gültige
Sekundäradresse empfangen wurde.

Das A und O ist also eine möglichst ausführliche Beschreibung des
HBIP-Protokolls Deines Gerätes.

Z.B. hat mein HP-Multimeter schon allein 3 verschiedene Protokolle zur
Auswahl:

SCPI-Sprache
HP3478A-Sprache
Fluke 8840A-Sprache

Was auch immer diese bedeuten mögen.


Wenn ich mich recht erinnere, unterstützt LabVIEW den HPIB und wenn Du
Glück hast, ist da schon eine fertige Bibliothek für Dein Gerät mit
drin. Allerdings geht LabVIEW auch nur mit einigen bestimmten
HPIB-Karten. Und kosten tuts natürlich auch nicht wenig.


Peter

von Rahul (Gast)


Lesenswert?

LabView auf nem P1 mit 75MHz ist bestimmt der Brüller...

@Peter:
Bei den verschieden Sprachen, die dein Multimeter unterstützt vermute
ich Emulationen der verschiedenen Geräte.  Schliesslich ist das Fluke
8840A quasi das Referenzgerät beim Kalibrieren meines Wissens vom Stand
1999 (da war ich zu letzt in der Messmittelkalibrierung tätig).

@Kris:
Leider sind meine Unterlagen von National Instruments (die Firma die
auch LabView und DIAdem vertreibt).
Ohne den Befehlssatz von HP wird das etwas schwierig.
Ich werd mal einen unserer Messtechniker hier fragen. (Warum komme ich
auf sowas immer erst so spät?)

von Peter D. (peda)


Lesenswert?

"...meines Wissens vom Stand
1999..."

Muß schon älter sein, mein HP ist von 1991.

Ich hab auch nur das SCPI-Protokoll ausprobiert, ging relativ einfach.
Alles sind Textkommandos ohne Sekundäradressen und sonstigen Schnulli.

Also fast, wie über die RS-232, bloß daß man die Antworten extra
auslesen muß.
Das ging dann über das SRQ-Signal. Hat das HP eine Antwort
zusammengebastelt, dann setzt es das SRQ und der PC weiß, daß er jetzt
auslesen darf. SRQ mußte man natürlich vorher einschalten.



Peter

von Rahul (Gast)


Lesenswert?

also war es 1999 immer noch aktuell...

von Rahul (Gast)


Lesenswert?

Vielleicht hilft dir das hier erst mal, um festzustellen, ob die
Kommunikation auf dem Bus überhaupt funktioniert.
http://www.ni.com/support/gpib/at-gpib/diag.htm

Einfach mal auf der Seite gucken. Auch wenn es sich um die
"Konkurrenz" handelt.

von Kris (Gast)


Lesenswert?

Vielen dank an alle!!!

Habe den Fehler gefunden, es war ein Fehler in der Biblitothek und
somit konnte nicht richtig compiliert und gelinkt werden.

Vielen dank nochmal.

von OldBug (Gast)


Lesenswert?

Na sowas :-)

Erst mal Glückwunsch!

Und wie muss jetzt die IOOUTPUTS(.....) Zeile aussehen? Würd mich doch
jetzt echt mal interessieren...

Gruß,
Patrick...

von Kris (Gast)


Lesenswert?

Danke

Okay, die kann so aussehen

CALL IOOUTPUTS(HP&, “IPR”, LEN(“IPR”))

oder so

HP& = 711
INFO$ = "IPR"
LENGTH% = LEN(INFO$)
CALL IOOUTPUTS(DEV&,INFO$,LENGTH%)

dabei kann INFO$ = "IPR INA" sein.

also ganz toll.

Vielen Dank für deine Hilfe. :) Ich wäre sons verzweifelt.

Jetzt beise ich mich  mit anderen Befehlen rum und versuche des Ding so
zu steuern, wie ich es will. Was aber leider nicht durchgängig klappt.

Egal, was soll´s. Vielen Dank! :))))

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.