GPIB-Nachrichten

Überblick

Es gibt zwei Arten von Nachrichten auf dem General Purpose Interface Bus (GPIB): Befehlsnachrichten und Datennachrichten. Jeder GPIB-Controller und jedes GPIB-Gerät hat eine eindeutige Identität auf dem Bus, die als Adresse bezeichnet wird. GPIB-Controller verwenden Befehlsnachrichten, um Geräten mitzuteilen, wann sie mit dem Bus kommunizieren und wann sie auf Informationen am Bus hören können. Diese Informationen werden als Datennachrichten weitergegeben.

Inhalt

Controller, Talker und Listener

In der Welt von GPIB gibt es Controller, Talker und Listener:
  • Controller steuern den Informationsfluss auf dem Bus, indem sie anderen Geräten auf dem Bus Talker- und Listener-Zuweisungen zuweisen. Sie reagieren auf Serviceanfragen von Geräten und können die Steuerung des Busses an andere Controller übergeben. Pro Bus darf es nur ein Controller in Charge (CIC oder System-Controller) geben, der für die Gesamtverwaltung des Busses zuständig ist.
  • Sprecher platzieren Informationen auf den Datenleitungen des Busses, aber nur, wenn ein Controller sie dazu anweist. Es kann nur jeweils ein Gerät kommunizieren.
  • Listener rufen Informationen von den Datenleitungen des Busses ab, aber nur, wenn ein Controller sie dazu anweist. Es können beliebig viele Geräte gleichzeitig hören.

Befehlsnachrichten vs. Datennachrichten

GPIB-Controller verwenden Befehlsnachrichten, um Geräten (Instrumenten oder anderen Controllern) mitzuteilen, wann sie kommunizieren können, um Informationen an den Bus bereitzustellen, und wann sie Informationen am Bus abhören können. Die Sprecher- und Listener-Zuweisungen werden als Befehlsnachrichten gesendet, während die Informationen als Datennachrichten weitergegeben werden.

Der wesentliche Unterschied zwischen einer Befehlsnachricht und einer Datennachricht ist der Zustand der Attention-Leitung (ATN), die eine der Bus-Management-Leitungen ist. Wenn die ATN-Leitung aktiviert ist, werden alle über die Datenleitungen gesendeten Nachrichten von allen Geräten gehört und als Befehlsnachrichten verstanden. Wenn die ATN-Leitung nicht aktiviert ist, können nur die Geräte, die zum Zuhören adressiert waren, die Nachrichten auf den Datenleitungen empfangen.

Das GPIB-Adressierungsprotokoll


Der GPIB verfügt über acht Datenleitungen, über die Daten Byte für Bit gesendet werden. Befehlsnachrichten verwenden sieben der acht Bits (siehe Abbildung 1 unten):


GPIB-Adressierungsprotokoll
Abbildung 1: GPIB-Adressierungsprotokoll



Die Bits 0 bis 4 geben die Primäradresse des Geräts an, für das die Sprecher/Empfänger-Zuweisung vorgesehen ist. Wenn Bit 5 High ist, sollte das Gerät aufhorchen. Wenn Bit 6 High ist, sollte das Gerät sprechen. Bit 7 ist ein "Egal"-Bit. Sein Wert wird ignoriert, daher wird er in Befehlsnachrichten als Wert von 0 interpretiert.

Jedes Gerät am Bus muss eine eindeutige Adresse haben. Diese Adresse besteht aus einer Primäradresse (PAD) und einer Sekundäradresse (SAD). Wie Sie in Abbildung 1 sehen, werden fünf der Datenleitungen zur Angabe der GPIB-Primäradresse verwendet. Das bedeutet, dass Sie einen Wert von 0 bis 31 für insgesamt 32 (2 bis zur Potenz von 5) Adressen haben könnten. PAD 31 wird jedoch nie als Primäradresse verwendet, da es für spezielle Befehlsnachrichten verwendet wird. Somit bleiben insgesamt 31 mögliche Primäradressen übrig. Der Controller in Charge (CIC) für einen Bus befindet sich fast immer auf PAD 0, so dass die Geräte auf einem Bus Primäradressen von 1 bis 30 haben können. Ein häufiger Fehler bei der Arbeit mit dem GPIB besteht darin, der Controller-Karte und dem Gerät dieselbe Adresse zuzuweisen, was zu einem EADR-Fehler (Adressierungsfehler) führt.

Die GPIB-Sekundäradresse ist in ihrem Bereich von 0 bis 30 identisch, was insgesamt 961 (31 x 31) mögliche GPIB-Adressen ermöglicht, aber die Sekundäradresse wird nur sehr selten verwendet (die SAD ist in der Regel auf 0 gesetzt). Sprecher-/Listener-Zuweisungen gehören zu den primären Adressinformationen. Bei PADs verwenden Sie daher entweder Bit 6 oder Bit 5, wenn Sie eine Befehlsnachricht senden. Dies kann Sie zur Frage veranlassen: "Wie sende ich die SAD-Informationen?" Bei Sekundäradressen setzen Sie die Bits 6 und 5 beim Senden einer Befehlsnachricht auf High. Wenn Sie mit einem Gerät mit einer Sekundäradresse kommunizieren möchten, müssen Sie zuerst die Primäradresse und dann sofort die Sekundäradresse angeben.

Die einfachste Möglichkeit, mit primärer und sekundärer Adressierung, Befehlsnachrichten und Datennachrichten zu spielen, ist die Verwendung der interaktiven Steuerung (IBIC). Wenn Sie z. B. eine Karte an PAD 0 und ein Gerät mit PAD 2 und SAD 4 haben und möchten, dass die Karte spricht und das Gerät zuhört, würden Sie die folgende Befehlsnachricht in IBIC senden:

ibcmd "\x40\x22\x64"

Das \x40 steht für Hex 40, was dem Binärmuster 0 1 0 0 0 0 0 entspricht. Das heißt, Bit 6 ist High (Sprechen) und die Primäradresse ist 0. Das \x22 steht für Hexadezimalzahl 22, die das Binärmuster 0 0 1 0 0 0 1 0 darstellt. Das heißt, Bit 5 ist High (Listen) und die Primäradresse ist 2. Das \x64 steht für hex 64, was für das Binärmuster 0 1 1 0 0 1 0 0 0 steht. Das bedeutet, dass die Bits 6 und 5 High sind – behandeln Sie also die folgende Adresse als Sekundäradresse – und die Adresse lautet 4.

mehrzeilige Schnittstellennachrichtentabelle


Wie wir im vorherigen Abschnitt gesehen haben, entspricht jede Befehlsnachricht einem bestimmten Bitmuster, das im Hexadezimalformat dargestellt werden kann. Alle GPIB-Befehle können auch ASCII-Zeichen zugeordnet werden (da ASCII ein 7-Bit-Zeichensatz ist), so dass ASCII die "Sprache" des GPIB ist. In der Tabelle Mehrzeilige Schnittstellen (Tabelle 1) werden die Entsprechungen von ASCII-Zeichen zu Befehlsnachrichten sowie deren Hexadezimal-, Achteck- und Dezimalwerte aufgelistet. Die Multiline Interface Message Table befindet sich in den meisten technischen Handbüchern zu National Instruments GPIB im Anhang.
Tabelle 1 (Teil 1). mehrzeilige Schnittstellennachrichten

Hex
Okt
Dez
ASCII
Mldg
Hex
Okt
Dez
ASCII
Mldg
00
000
0
NUL
20
040
32
SP
MLA0
01
001
1
SOH
GTL
21
041
33
!
MLA1
02
002
2
STX
22
042
34
"
MLA2
03
003
3
ETX
23
043
35
#
MLA3
04
004
4
EOT
SDC
24
044
36
$
MLA4
05
005
5
ENQ
PPC
25
045
37
%
MLA5
06
006
6
ACK
26
046
38
&
MLA6
07
007
7
BEL
27
047
39
'
MLA7
08
010
8
BS
GET
28
050
40
(
MLA8
09
011
9
HT
TCT
29
051
41
)
MLA9
0A
012
10
LF
2A
052
42
*
MLA10
0B
013
11
VT
2B
053
43
+
MLA11
0C
014
12
FF
2C
054
44
,
MLA12
0D
015
13
CR
2D
055
45
-
MLA13
0E
016
14
SO
2E
056
46
.
MLA14
0F
017
15
SI
2F
057
47
/
MLA15
10
020
16
DLE
30
060
48
0
MLA16
11
021
17
DC1
LLO
31
061
49
1
MLA17
12
022
18
DC2
32
062
50
2
MLA18
13
023
19
DC3
33
063
51
3
MLA19
14
024
20
DC4
DCL
34
064
52
4
MLA20
15
025
21
NAK
PPU
35
065
53
5
MLA21
16
026
22
SYN
36
066
54
6
MLA22
17
027
23
ETB
37
067
55
7
MLA23
18
030
24
CAN
SPE
38
070
56
8
MLA24
19
031
25
EM
SPD
39
071
57
9
MLA25
1A
032
26
SUB
3A
072
58
:
MLA26
1B
033
27
ESC
3B
073
59
;
MLA27
1C
034
28
FS
3C
074
60
<
MLA28
1D
035
29
GS
3D
075
61
=
MLA29
1E
036
30
RS
3E
076
62
>
MLA30
1F
037
31
DE
3F
077
63
?
UNL

Nachrichtendefinitionen
DCLDevice Clear (Gerät initialisieren)MSAMy Secondary Address (Eigene Sekundäradresse)
GETGroup Execute Trigger (Listener triggern)MTAMy Talk Address (Eigene Talker-Adresse)
GTLLokalen Modus aktivierenPPCParallel Poll Configure (Parallelpoll konfigurieren)
LLOLocal Lockout (Frontplatten der Geräte am Bus deaktivieren)PPDParallel Poll Disable (Parallelpoll deaktivieren)
MLAMy Listen Address (Eigene Listener-Adresse)


Tabelle 1 (Teil 2). mehrzeilige Schnittstellennachrichten

Hex
Okt
Dez
ASCII
Mldg
Hex
Okt
Dez
ASCII
Mldg
40
100
64
@
MTA0
60
140
96
`
MSA0,PPE
41
101
65
A
MTA1
61
141
97
a
MSA1,PPE
42
102
66
B
MTA2
62
142
98
b
MSA2,PPE
43
103
67
C
MTA3
63
143
99
c
MSA3,PPE
44
104
68
D
MTA4
64
144
100
d
MSA4,PPE
45
105
69
E
MTA5
65
145
101
e
MSA5,PPE
46
106
70
F
MTA6
66
146
102
f
MSA6,PPE
47
107
71
G
MTA7
67
147
103
g
MSA7,PPE
48
110
72
H
MTA8
68
150
104
h
MSA8,PPE
49
111
73
I
MTA9
69
151
105
i
MSA9,PPE
4A
112
74
J
MTA10
6A
152
106
j
MSA10,PPE
4B
113
75
K
MTA11
6B
153
107
k
MSA11,PPE
4C
114
76
L
MTA12
6C
154
108
l
MSA12,PPE
4D
115
77
M
MTA13
6D
155
109
m
MSA13,PPE
4E
116
78
N
MTA14
6E
156
110
n
MSA14,PPE
4F
117
79
O
MTA15
6F
157
111
o
MSA15,PPE
50
120
80
P
MTA16
70
160
112
p
MSA16,PPD
51
121
81
Q
MTA17
71
161
113
q
MSA17,PPD
52
122
82
R
MTA18
72
162
114
r
MSA18,PPD
53
123
83
S
MTA19
73
163
115
s
MSA19,PPD
54
124
84
T
MTA20
74
164
116
t
MSA20,PPD
55
125
85
U
MTA21
75
165
117
u
MSA21,PPD
56
126
86
V
MTA22
76
166
118
v
MSA22,PPD
57
127
87
W
MTA23
77
167
119
w
MSA23,PPD
58
130
88
X
MTA24
78
170
120
x
MSA24,PPD
59
131
89
Y
MTA25
79
171
121
y
MSA25,PPD
5A
132
90
Z
MTA26
7A
172
122
z
MSA26,PPD
5B
133
91
MTA27
7B
173
123
{
MSA27,PPD
5C
134
92
\
MTA28
7C
174
124
|
MSA28,PPD
5D
135
93
MTA29
7D
175
125
}
MSA29,PPD
5E
136
94
^
MTA30
7E
176
126
~
MSA30,PPD
5F
137
95
_
UNT
7F
177
127
DEL

Nachrichtendefinitionen
PPEParallel Poll Enable (Parallelpoll aktivieren)SPESerial Poll Enable (Serielles Pollen aktivieren)
PPUParallel Poll Unconfigure (Konfiguration für Parallelpoll aufheben)TCTTake Control (Steuerung übernehmen)
SDCSelected Device Clear (Ausgewähltes Gerät initialisieren)UNLUnlisten (Adressierung der Listener aufheben)
SPDSerial Poll Disable (Serielles Pollen deaktivieren)UNTUntalk (Adressierung der Talker aufheben)


So steht z. B. das ASCII-Zeichen "@" (Hex 40) für die Nachricht "MTA0", mit der das Gerät an der Primäradresse Null als Sprecher zugewiesen wird. Als weiteres Beispiel steht das ASCII-Zeichen "?" (Hex 3F) für die Nachricht "UNL", die alle Geräte anweist, die zuvor als Listener zugewiesen wurden, den Listener aufzuheben (d.h. den Listener zu stoppen).

Die Multiline Interface Message Table ist sehr nützlich, wenn Sie die GPIB-Funktion ibcmd auf Kartenebene verwenden. Als Controller würden Sie mit der Funktion ibcmd Befehle senden. Wenn Sie z. B. mit Hilfe der interaktiven Steuerung (IBIC) den Controller (PAD 0) als Lautsprecher und ein Instrument (PAD 5) als Empfänger zuweisen, verwenden Sie ibcmd "?@%", um alle Geräte anzuweisen, das Hören zu beenden (?, UNL), den Controller zu sprechen (@, MTA0) und das Instrument zu hören (%, MLA5).

Der Controller würde dann mit der Funktion ibwrt Daten an das Gerät senden. (Hinweis: Beim Aufruf von ibwrt wird die ATN-Leitung deaktiviert, so dass die Datenleitungen auf dem Bus anstelle von Befehlsnachrichten zum Senden von Datennachrichten verwendet werden.) Um mit dem vorherigen Beispiel fortzufahren, können Sie ibwrt "hallo" verwenden, um die Datennachricht hallo an das Gerät zu senden. (Natürlich sollte die Nachricht, die Sie senden, für das Gerät sinnvoll sein.)

Befehlsnachrichtenverknüpfungen


Wenn Sie keinen einfachen Zugriff auf die Multiline Interface Message Table haben, können Sie die Hexadezimaläquivalente der MLA-Befehlsnachrichten (My Listen Address) und der MTA-Befehlsnachrichten (My Talk Address) mit Hilfe dieser Formeln erstellen: MLA = (hex 20) + (PAD in hex) und MTA = (hex 40) + (PAD in hex). Wenn Sie beispielsweise Ihren Controller (PAD0) als Listener und Ihr Instrument (PAD 25) als Talker zuweisen möchten, können Sie hex 20 (MLA0 = hex 20 + hex 00 = hex 20) bzw. hex 59 (MTA25 = hex 40 + hex 19 = hex 59) verwenden.

Unlisten (UNL) und Untalk (UNT) werden durch Verwendung von PAD 31 (Hex 1F) in den Formeln für MLA bzw. MTA gebildet. UNL ist beispielsweise hex 3F (hex 20 + hex 1F = hex 3F) und UNT ist hex 5F (hex 40 + hex 1F = hex 5F).

Sekundäradressen werden durch Hinzufügen von Hexadezimalwert 60 zum SAD in Hexadezimalform gebildet: MSA (Meine Sekundäradresse) = (Hex 60) + (SAD im Hexadezimalformat). Wenn Sie beispielsweise ein Gerät mit SAD 20 haben, verwenden Sie Hex 74 (MSA20 = Hex 60 + Hex 14 = Hex 74), um die Sekundäradresse darzustellen.

Board-Level vs. Funktionen auf Geräteebene


Es gibt zwei Arten von GPIB-Funktionen: Kartenfunktionen und Gerätefunktionen. Auf Geräteebene sind Sie auf die Kommunikation mit jeweils einem Gerät beschränkt, während Sie auf Kartenebene mit mehreren Geräten kommunizieren können (aber nur ein Gerät kann gleichzeitig kommunizieren!). Bei GPIB-Nachrichten erfordern Funktionen auf Kartenebene, dass Sie manuell mit der Funktion ibcmd Talker-/Listener-Zuweisungen durchführen; Funktionen auf Geräteebene übernehmen für Sie die Talker-/Listener-Zuweisungen.

Was this information helpful?

Yes

No