mikrocontroller.net

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


Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul (Gast)
Datum:

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

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja genau

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: OldBug (Gast)
Datum:

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

Thx,
Patrick...

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!!!

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
getestet  -- immer noch der selbe fehler

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Kris (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kris (Gast)
Datum:

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

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kris: Was für ein Betriebssystem hat Dein PC? Taktfrequenz?

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die erste '1' meinte ich :)

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:-)

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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 .........

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Kris (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?????????

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also war es 1999 immer noch aktuell...

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Kris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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! :))))

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.