GPIB有8条数据线,用于每次发送一个字节(8位)的信息。命令消息使用8位中的7位,如图1所示:
位0至4表示设备的主地址,用于通话器/侦听器分配。如位5为高,设备应侦听。如位6为高,设备应通话。位7是“不在乎”位。其值被忽略,因此在命令消息中解析为0。
总线上的每个设备必须具有唯一的地址。该地址由主地址(PAD)和次地址(SAD)组成。如图1所示,有5条数据线用于指示GPIB主地址。即取值范围为0至31,共有32个地址(2为5的幂);但是,PAD 31不会用作主地址,因为它用于特殊的命令消息。共有31个可能的主地址。总线的主控制器(CIC)几乎总是位于PAD 0,因此总线上的仪器的主地址可以是1至30。使用GPIB时常见的错误是为控制器板卡和仪器分配相同的地址,这将导致EADR错误(寻址错误)。
GPIB次地址的范围从0到30相同,总共允许961 (31 x 31)个可能的GPIB地址,但很少使用次地址(SAD通常被设置为0)。通话器/侦听器分配是主要寻址信息的一部分,因此使用pad发送命令消息时可使用位6或位5。这可能会提示您“如何发送SAD信息?”对于次地址,发送命令消息时将比特6和比特5都设置为高。如需与具有次地址的设备通信,需先指明主地址,然后立即指明次地址。
使用交互式控件(IBIC)是处理主地址、次地址、命令消息和数据消息的最简单方法。例如,如板卡位于PAD 0,仪器位于PAD 2和SAD 4,希望板卡通话,仪器侦听,可在IBIC中发送以下命令消息:
ibcmd "\x40\x22\x64"
\x40表示十六进制40,表示二进制模式0 1 0 0 0 0 0。这意味着位6为高(通话),主地址为0。\x22表示十六进制22,表示二进制模式0 0 1 0 0 0 1 0。这意味着位5为高(侦听),主地址为2。\x64表示十六进制64,表示二进制模式0 1 1 0 0 1 0 0。这意味着位6和位5为高,因此将以下地址作为次地址,地址为4。
|
十六进制
|
十月
|
十二月
|
ASCII
|
Msg
|
十六进制
|
十月
|
十二月
|
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
|
2 A
|
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
|
导入层定义文件(LPF)。
|
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
|
美国
|
3F
|
077
|
63
|
?
|
UNL
| |
| 消息定义 | ||||
| DCL | 设备清零 | MSA | 我的次地址 | |
| GET | 成组执行触发 | MTA | 我的通话地址 | |
| GTL | 转到本地 | PPC | 并行轮询配置 | |
| LLO | 本地锁定 | PPD | 禁用并行轮询 | |
| MLA | 我的侦听地址 | |||
|
十六进制
|
十月
|
十二月
|
ASCII
|
Msg
|
十六进制
|
十月
|
十二月
|
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
|
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
|
|
5 A
|
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
| |
| 消息定义 | ||||
| PPE | 启用并行轮询 | SPE | 启用串行轮询 | |
| PPU | 并行轮询配置取消 | TCT | 取得控制权 | |
| SDC | 选中设备清零 | UNL | 取消侦听 | |
| SPD | 禁用串行轮询 | UNT | 取消通话 | |
例如,ASCII字符"@"(十六进制40)表示消息"MTA0",将主地址为0的设备分配为通话器。例如,ASCII字符"?"(十六进制3F)表示消息"UNL",该消息指示所有之前被分配为侦听器的设备取消侦听(即停止侦听)。
使用板卡级GPIB函数ibcmd时,多行接口消息表非常有用。作为控制器,可使用ibcmd函数发送命令消息。例如,使用交互式控件(IBIC)分配控制器(PAD 0)为通话器,仪器(PAD 5)为侦听器,可使用ibcmd ?@%"命令所有设备停止侦听(?, UNL),控制器停止通话(@, MTA0),仪器停止侦听(%, MLA5)。
然后控制器使用ibwrt函数发送数据至仪器。(注:调用ibwrt将导致ATN线失效,因此总线上的数据线用于发送数据消息,而不是命令消息。)如要继续上述范例,可使用ibwrt "hello"将数据消息Hello发送至仪器。(当然,发送的消息应该对仪器有意义。)