El GPIB tiene ocho líneas de datos, que se utilizan para enviar información de un byte (8 bits) a la vez. Los mensajes de comando usan siete de los ocho bits, como se muestra en la Figura 1, a continuación:
Los bits 0 a 4 indican la dirección principal del dispositivo, a la que está destinada la asignación Talker/Listener. Si el bit 5 es alto, el dispositivo debe escuchar. Si el bit 6 es alto, el dispositivo debe hablar. Bit 7 es un poco "no importa". Su valor es ignorado, por lo que se interpreta como un valor de cero en los mensajes de comando.
Cada dispositivo del bus debe tener una dirección única. Esta dirección consiste en una dirección primaria (PAD) y una dirección secundaria (SAD). Como se puede ver en la Figura 1, cinco de las líneas de datos se utilizan para indicar la dirección primaria GPIB. Esto significa que podría tener un valor de 0 a 31, para un total de 32 (2 a la potencia de 5) direcciones; sin embargo, PAD 31 nunca se utiliza como dirección principal, porque se utiliza para mensajes de comandos especiales. Esto deja un total de 31 posibles direcciones primarias. El controlador a cargo (CIC) para un bus casi siempre está en el PAD 0, por lo que los instrumentos en un bus pueden tener direcciones primarias del 1 al 30. Un error común al trabajar con el GPIB es asignar la misma dirección a la placa controladora y al instrumento, lo que resultará en un error EADR (error de direccionamiento).
La dirección secundaria GPIB es idéntica en su rango de 0 a 30, lo que permite un total de 961 (31 x 31) direcciones GPIB posibles, pero la dirección secundaria se usa muy raramente (el SAD se establece típicamente a cero). Las asignaciones Talker/Listener son parte de la información de direccionamiento principal, por lo que con los PADs se utiliza el bit 6 o el bit 5 cuando se envía un mensaje de comando. Esto podría llevarte a preguntar: "¿Cómo envío la información de SAD?" Para las direcciones secundarias, establece los bits 6 y 5 en alto cuando envía un mensaje de comando. Si necesita comunicarse con un dispositivo que tiene una dirección secundaria, primero debe indicar su dirección principal y luego indicar inmediatamente su dirección secundaria.
La forma más fácil de jugar con el direccionamiento primario y secundario, los mensajes de comando y los mensajes de datos es usar el control interactivo (IBIC). Por ejemplo, si tiene una placa en el PAD 0 y un instrumento con PAD 2 y SAD 4, y desea que la placa hable y el instrumento escuche, enviaría el siguiente mensaje de comando en IBIC:
ibcmd "\x40\x22\x64"
El \x40 significa hex 40, que representa el patrón binario de 0 1 0 0 0 0 0 0. Esto significa que el bit 6 es alto (talk) y la dirección primaria es cero. El \x22 significa hex 22, que representa el patrón binario de 0 0 1 0 0 0 0 1 0. Esto significa que el bit 5 es alto (escucha) y la dirección principal es 2. El \x64 significa hex 64, que representa el patrón binario de 0 1 1 0 0 1 0 0. Esto significa que los bits 6 y 5 son altos - por lo tanto, trate la siguiente dirección como una dirección secundaria - y la dirección es 4.
|
Hex
|
Oct
|
Dic
|
ASCII
|
Msg
|
Hex
|
Oct
|
Dic
|
ASCII
|
Msg
|
|
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
|
DOCUP
|
39
|
071
|
57
|
9
|
MLA25
|
|
1A
|
032
|
26
|
SUB
|
3A
|
072
|
58
|
:
|
MLA26
| |
|
1B
|
033
|
27
|
ESC
|
3B
|
073
|
59
|
;
|
MLA27
| |
|
1C
|
034
|
28
|
SM
|
3C
|
074
|
60
|
<
|
MLA28
| |
|
1D
|
035
|
29
|
SG
|
3D
|
075
|
61
|
=
|
MLA29
| |
|
1E
|
036
|
30
|
RS
|
3E
|
076
|
62
|
>
|
MLA30
| |
|
1F
|
037
|
31
|
UU.
|
3F
|
077
|
63
|
?
|
UNL
| |
| Definiciones de mensajes | ||||
| DCL | Dispositivo Clear | MSA | Mi dirección secundaria | |
| GET | Grupo Ejecutar desencadenante | MTA | My Talk Dirección | |
| GTL | Ir a Local | PPC | Configurar sondeo paralelo | |
| LLO | Bloqueo local | PPD | Desactivar sondeo paralelo | |
| MLA | Mi dirección de escucha | |||
|
Hex
|
Oct
|
Dic
|
ASCII
|
Msg
|
Hex
|
Oct
|
Dic
|
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, EPP
|
|
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, EPP
|
|
4C
|
114
|
76
|
L
|
MTA12
|
6C
|
154
|
108
|
l
|
MSA12, EPP
|
|
4D
|
115
|
77
|
M
|
MTA13
|
6D
|
155
|
109
|
m
|
MSA13, EPP
|
|
4E
|
116
|
78
|
N
|
MTA14
|
6E
|
156
|
110
|
n
|
MSA14, EPP
|
|
4F
|
117
|
79
|
O
|
MTA15
|
6F
|
157
|
111
|
o
|
MSA15, EPP
|
|
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
| |
| Definiciones de mensajes | ||||
| EPI | Habilitar sondeo paralelo | SPE | Serial Poll Activar | |
| PPU | Encuesta paralela Desconfigurar | TCT | Toma el control | |
| SDC | Dispositivo seleccionado Borrar | UNL | Desescuchar | |
| DOCUP | Desactivar sondeo en serie | UNT | Desconversar | |
Por ejemplo, el carácter ASCII "@" (hex 40) representa el mensaje "MTA0", que asigna el dispositivo en la dirección primaria cero como el Talker. Como otro ejemplo, el carácter ASCII "?" (hex 3F) representa el mensaje "UNL", que indica a todos los dispositivos que habían sido asignados previamente como Listeners que dejen de escuchar (es decir, dejen de escuchar).
La Tabla de Mensajes de Interfaz Multilínea es muy útil, si está utilizando la función GPIB a nivel de placa ibcmd. Como controlador, usaría la función ibcmd para enviar mensajes de comando. Por ejemplo, si estuviera usando el Control Interactivo (IBIC) para asignar el Controlador (PAD 0) como el Hablador y un instrumento (PAD 5) como el Escuchador, usaría ibcmd "?@%" para indicar a todos los dispositivos que dejen de escuchar (?, UNL), al Controlador que hable (@, MTA0) y al instrumento que escuche (%, MLA5).
El controlador enviaría entonces datos al instrumento con la función ibwrt. (Nota: Llamar a ibwrt hará que la línea ATN se desactive, de modo que las líneas de datos en el bus se utilicen para enviar mensajes de datos, en lugar de mensajes de comandos.) Para continuar con el ejemplo anterior, puede usar ibwrt "hola" para enviar el mensaje de datos hola al instrumento. (Por supuesto, el mensaje que envíe debe tener sentido para el instrumento).