Mensajes GPIB

Información general

Hay dos tipos de mensajes en el bus de interfaz de propósito general (GPIB): mensajes de comando y mensajes de datos. Cada controlador GPIB y cada instrumento GPIB tiene una identidad única en el bus; esta identidad se conoce como su dirección. Los controladores GPIB utilizan mensajes de comando para indicar a los instrumentos cuándo pueden hablar para proporcionar información al bus y cuándo pueden escuchar información en el bus. Esta información se transmite como mensajes de datos.

Contenido

Controladores, hablantes y oyentes

En el mundo de GPIB, hay controladores, hablantes y oyentes:
  • Los controladores gobiernan el flujo de información en el bus emitiendo asignaciones Talker y Listener a otros dispositivos en el bus. Responden a las solicitudes de servicio de los instrumentos y pueden pasar el control del bus a otros controladores. Solo puede haber un controlador a cargo (CIC o controlador del sistema) por autobús, que es responsable de la gestión general del autobús.
  • Los hablantes colocan información en las líneas de datos del bus, pero solo cuando un controlador les indica que lo hagan. Solo un dispositivo puede hablar a la vez.
  • Los oyentes recuperan información de las líneas de datos del bus, pero solo cuando un controlador les indica que lo hagan. Cualquier número de dispositivos puede escuchar al mismo tiempo.

Mensajes de comando vs. Mensajes de datos

Los controladores GPIB utilizan mensajes de comando para indicar a los dispositivos (instrumentos u otros controladores) cuándo pueden hablar para proporcionar información al bus y cuándo pueden escuchar información en el bus. Las asignaciones Talker y Listener se envían como mensajes de comando, mientras que la información se pasa como mensajes de datos.

La principal diferencia entre un mensaje de comando y un mensaje de datos es el estado de la línea de Atención (ATN), que es una de las líneas de gestión de bus. Si se afirma la línea ATN, todos los mensajes enviados en las líneas de datos son escuchados por todos los dispositivos y se entiende que son mensajes de comando. Si la línea ATN no está activada, solo los dispositivos que fueron dirigidos a escuchar pueden recibir los mensajes en las líneas de datos.

Protocolo de direccionamiento GPIB


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:


Protocolo de direccionamiento GPIB
Figura 1. Protocolo de direccionamiento GPIB



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.

Tabla de mensajes de interfaz multilínea


Como vimos en la sección anterior, cada mensaje de comando corresponde a un patrón de bits particular, que puede representarse en formato hexadecimal. Todos los mensajes de comando GPIB también se pueden asignar a caracteres ASCII (porque ASCII es un conjunto de caracteres de 7 bits), por lo que ASCII es el "lenguaje" de la GPIB. La Tabla de interfaz multilínea (Tabla 1) muestra la correspondencia de los caracteres ASCII con los mensajes de comando, así como sus valores hexadecimales, octogonales y decimales. El cuadro de mensajes de interfaz multilínea figura en el apéndice de la mayoría de los manuales técnicos relacionados con el GPIB de National Instruments.
Cuadro 1 (Parte 1). Mensajes de interfaz multilínea

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
DCLDispositivo ClearMSAMi dirección secundaria
GETGrupo Ejecutar desencadenanteMTAMy Talk Dirección
GTLIr a LocalPPCConfigurar sondeo paralelo
LLOBloqueo localPPDDesactivar sondeo paralelo
MLAMi dirección de escucha


Cuadro 1 (parte 2). Mensajes de interfaz multilínea

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
EPIHabilitar sondeo paraleloSPESerial Poll Activar
PPUEncuesta paralela DesconfigurarTCTToma el control
SDCDispositivo seleccionado BorrarUNLDesescuchar
DOCUPDesactivar sondeo en serieUNTDesconversar


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).

Accesos directos de mensajes de comando


Si no tiene acceso fácil a la tabla de mensajes de interfaz multilínea, puede crear los equivalentes hexadecimales de los mensajes de comando MLA (My Listen Address) y los mensajes de comando MTA (My Talk Address) utilizando estas fórmulas: MLA = (hex 20) + (PAD en hex) y MTA = (hex 40) + (PAD en hex). Por ejemplo, si desea asignar su Controlador (PAD0) como el Listener y su instrumento (PAD 25) como el Talker, puede usar hex 20 (MLA0 = hex 20 + hex 00 = hex 20) y hex 59 (MTA25 = hex 40 + hex 19 = hex 59), respectivamente.

Unlisten (UNL) y Untalk (UNT) se forman utilizando el PAD 31 (hex 1F) en las fórmulas para MLA y MTA, respectivamente. Por ejemplo, UNL es hex 3F (hex 20 + hex 1F = hex 3F) y UNT es hex 5F (hex 40 + hex 1F = hex 5F).

Las direcciones secundarias se forman añadiendo el hex 60 al SAD en hex: MSA (Mi dirección secundaria) = (hex 60) + (SAD en hex). Por ejemplo, si tienes un instrumento con SAD 20, usarás el hex 74 (MSA20 = hex 60 + hex 14 = hex 74) para representar su dirección secundaria.

A nivel de junta vs. Funciones a nivel de dispositivo


Hay dos tipos de funciones GPIB: funciones a nivel de placa y funciones a nivel de dispositivo. A nivel de dispositivo, está limitado a comunicarse con un dispositivo a la vez, mientras que a nivel de placa, puede comunicarse con múltiples dispositivos (¡pero solo un dispositivo puede hablar a la vez!). Con respecto a los mensajes GPIB, las funciones a nivel de tablero requieren que realice tareas Talker/Listener manualmente con la función ibcmd; las funciones a nivel de dispositivo se encargan de las tareas Talker/Listener por usted.

Was this information helpful?

Yes

No