Le GPIB a huit lignes de données, qui sont utilisées pour envoyer des informations un octet (8 bits) à la fois. Les messages de commande utilisent sept des huit bits, comme le montre la figure 1 ci-dessous :
Les bits 0 à 4 indiquent l'adresse principale du périphérique pour lequel l'affectation Parleur/Écouteur est prévue. Si le bit 5 est haut, le périphérique doit écouter. Si le bit 6 est haut, le périphérique devrait parler. Le bit 7 est un bit "sans importance". Sa valeur est ignorée, elle est donc interprétée comme une valeur de zéro dans les messages de commande.
Chaque périphérique du bus doit avoir une adresse unique. Cette adresse est composée d'une adresse principale (PAD) et d'une adresse secondaire (SAD). Comme vous pouvez le voir sur la figure 1, cinq des lignes de données sont utilisées pour indiquer l'adresse principale GPIB. Cela signifie que vous pourriez avoir une valeur de 0 à 31, pour un total de 32 adresses (2 à la puissance de 5) ; cependant, le PAD 31 n'est jamais utilisé comme adresse principale, car il est utilisé pour des messages de commande spéciaux. Cela laisse un total de 31 adresses principales possibles. Le contrôleur en charge (CIC) pour un bus est presque toujours au PAD 0, de sorte que les instruments sur un bus peuvent avoir des adresses principales de 1 à 30. Une erreur courante lors de l'utilisation du GPIB est d'attribuer la même adresse à la carte contrôleur et à l'instrument, ce qui entraînera une erreur EADR (erreur d'adressage).
L'adresse secondaire GPIB est identique dans sa gamme de 0 à 30, ce qui permet un total de 961 (31 x 31) adresses GPIB possibles, mais l'adresse secondaire est très rarement utilisée (le DAU est généralement défini à zéro). Les affectations émetteur/auditeur font partie des informations d'adressage principales, donc avec les PAD, vous utilisez le bit 6 ou le bit 5 lorsque vous envoyez un message de commande. Cela peut vous inciter à demander : « Comment envoyer les informations du TRS ? » Pour les adresses secondaires, vous définissez les bits 6 et 5 à haut lorsque vous envoyez un message de commande. Si vous devez communiquer avec un périphérique doté d'une adresse secondaire, vous devez d'abord indiquer son adresse principale, puis immédiatement son adresse secondaire.
Le moyen le plus simple de jouer avec l'adressage primaire et secondaire, les messages de commande et les messages de données est d'utiliser le contrôle interactif (IBIC). Par exemple, si vous avez une carte au PAD 0 et un instrument avec PAD 2 et SAD 4, et que vous voulez que la carte parle et que l'instrument écoute, vous envoyez le message de commande suivant dans IBIC :
ibcmd "\x40\x22\x64"
Le \x40 signifie hexadécimal 40, qui représente le motif binaire de 0 1 0 0 0 0 0 0 0. Cela signifie que le bit 6 est haut (talk) et que l'adresse principale est zéro. \x22 signifie hexadécimal 22, qui représente le motif binaire de 0 0 1 0 0 0 1 0. Cela signifie que le bit 5 est haut (écouter) et que l'adresse principale est 2. Le \x64 représente l'hexagone 64, qui représente le motif binaire de 0 1 1 0 0 1 0 0. Cela signifie que les bits 6 et 5 sont hauts -- donc, traitez l'adresse suivante comme une adresse secondaire -- et l'adresse est 4.
|
Hexa
|
Oct
|
Déc
|
ASCII
|
Msg
|
Hexa
|
Oct
|
Déc
|
ASCII
|
Msg
|
|
00
|
000
|
0
|
NUL
|
20
|
040
|
32
|
C
|
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
|
US
|
3F
|
077
|
63
|
?
|
UNL
| |
| Définitions des messages | ||||
| DCL | Device Clear | MSA | My Secondary Address | |
| GET | Group Execute Trigger | MTA | My Talk Address | |
| GTL | Go To Local | PPC | Parallel Poll Configure | |
| LLO | Local Lockout | PPD | Parallel Poll Disable | |
| MLA | My Listen Address | |||
|
Hexa
|
Oct
|
Déc
|
ASCII
|
Msg
|
Hexa
|
Oct
|
Déc
|
ASCII
|
Msg
|
|
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
|
éch
|
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
| |
| Définitions des messages | ||||
| PPE | Parallel Poll Enable | SPE | Serial Poll Enable | |
| PPU | Parallel Poll Unconfigure | TCT | Take Control | |
| SDC | Selected Device Clear | UNL | Unlisten | |
| SPD | Serial Poll Disable | UNT | Untalk | |
Par exemple, le caractère ASCII "@" (hexadécimal 40) représente le message "MTA0", qui assigne le périphérique à l'adresse primaire zéro comme Émetteur. Autre exemple, le caractère ASCII "?" (hexa 3F) représente le message "UNL", qui indique à tous les périphériques qui avaient déjà été assignés comme Récepteurs de désécouter (c'est-à-dire d'arrêter d'écouter).
La table de messages d'interface multiligne est très utile si vous utilisez la fonction GPIB ibcmd au niveau de la carte. En tant que contrôleur, vous utiliseriez la fonction ibcmd pour envoyer des messages de commande. Par exemple, si vous utilisiez la commande interactive (IBIC) pour assigner le contrôleur (PAD 0) comme émetteur et un instrument (PAD 5) comme récepteur, vous utiliseriez ibcmd "?@%" pour indiquer à tous les périphériques d'arrêter d'écouter (?, UNL), au contrôleur de parler (@, MTA0) et à l'instrument d'écouter (%, MLA5).
Le contrôleur enverrait alors des données à l'instrument avec la fonction ibwrt. (Remarque : Appeler ibwrt désactivera la ligne ATN, de sorte que les lignes de données sur le bus seront utilisées pour envoyer des messages de données au lieu de messages de commande.) Pour continuer avec l'exemple précédent, vous pourriez utiliser ibwrt "hello" pour envoyer le message de données hello à l'instrument. (Bien sûr, le message que vous envoyez devrait avoir un sens pour l'instrument.)