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):
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.
|
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 | ||||
| DCL | Device Clear (Gerät initialisieren) | MSA | My Secondary Address (Eigene Sekundäradresse) | |
| GET | Group Execute Trigger (Listener triggern) | MTA | My Talk Address (Eigene Talker-Adresse) | |
| GTL | Lokalen Modus aktivieren | PPC | Parallel Poll Configure (Parallelpoll konfigurieren) | |
| LLO | Local Lockout (Frontplatten der Geräte am Bus deaktivieren) | PPD | Parallel Poll Disable (Parallelpoll deaktivieren) | |
| MLA | My Listen Address (Eigene Listener-Adresse) | |||
|
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 | ||||
| PPE | Parallel Poll Enable (Parallelpoll aktivieren) | SPE | Serial Poll Enable (Serielles Pollen aktivieren) | |
| PPU | Parallel Poll Unconfigure (Konfiguration für Parallelpoll aufheben) | TCT | Take Control (Steuerung übernehmen) | |
| SDC | Selected Device Clear (Ausgewähltes Gerät initialisieren) | UNL | Unlisten (Adressierung der Listener aufheben) | |
| SPD | Serial Poll Disable (Serielles Pollen deaktivieren) | UNT | Untalk (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.)