通用接口线消息

概述

通用接口总线(GPIB)上有两种类型的消息:命令消息和数据消息。每个GPIB控制器和每个GPIB仪器在总线上均有唯一标识,该标识称为其地址。GPIB控制器使用命令消息通知仪器何时发送数据到总线,以及何时侦听总线上的数据。该信息作为数据消息传递。

内容

控制器、通话侦听器

在GPIB中,有控制器、讲话器和侦听器:
  • 控制器通过向总线上的其他设备分配通话器和侦听器来控制总线上的信息流。它们响应来自仪器的服务请求,并可以将总线控制传递给其他控制器。每条总线只能有一个管理控制器(CIC或系统控制器),负责总线的整体管理。
  • 通话器将信息放置在总线的数据线上,但仅当控制器发出指令时才这样做。一次只能有一个设备通话。
  • 侦听器从总线的数据线获取信息,但仅当控制器发出指令时才这样做。任意数量的设备可同时侦听。

命令消息 vs.数据消息

GPIB控制器使用命令消息通知设备(仪器或其他控制器)何时可以通话以向总线提供信息,何时可以侦听总线上的信息。通话器和侦听器分配作为命令消息发送,而信息作为数据消息传递。

命令消息和数据消息的主要区别在于ATN线的状态,ATN线是总线管理线之一。如ATN线被置为有效,所有设备均可听到数据线上发送的消息,即命令消息。如ATN线未被置为有效,只有被寻址为侦听的设备才能接收数据线上的消息。

GPIB协议


GPIB有8条数据线,用于每次发送一个字节(8位)的信息。命令消息使用8位中的7位,如图1所示:


GPIB寻址协议
图1.GPIB寻址协议



位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。

接口消息表


正如我们在上一节中看到的,每条命令消息对应于一个特定的位模式,可用十六进制格式表示。所有GPIB命令消息也可映射至ASCII字符(因为ASCII是7位字符集),因此ASCII是GPIB的“语言”。多行接口表(表1)列出了ASCII字符与命令消息的对应关系及其十六进制、八进制和十进制值。多行接口消息表位于大多数NI GPIB相关技术手册的附录中。
表1(第一部分)多行接口消息

十六进制
十月
十二月
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我的侦听地址


表1 (Part 2)。多行接口消息

十六进制
十月
十二月
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发送至仪器。(当然,发送的消息应该对仪器有意义。)

命令消息快捷方式


如无法访问多行接口消息表,可使用下列公式创建MLA(我的侦听地址)命令消息和MTA(我的通话地址)命令消息的十六进制等效值:MLA = (hex 20) + (PAD in hex) and MTA = (hex 40) + (PAD in hex)。例如,如要分配控制器(PAD0)为侦听器,仪器(PAD 25)为通话器,可分别使用十六进制20(MLA0 = hex 20 + hex 00 = hex 20)和十六进制59(MTA25 = hex 40 + hex 19 = hex 59)。

取消侦听(UNL)和取消通话(UNT)分别由MLA和MTA公式中的PAD 31(十六进制1F)组成。例如,UNL是hex 3F (hex 20 + hex 1F = hex 3F),UNT是hex 5F (hex 40 + hex 1F = hex 5F)。

次地址通过在十六进制的SAD中添加十六进制60得到:MSA(我的次地址) = (十六进制60) + (十六进制的SAD)。例如,如仪器带有SAD 20,可使用十六进制74(MSA20 = 十六进制60 + 十六进制14 = 十六进制74)表示其次地址。

级 vs.设备函数


GPIB函数有两种类型:板卡级函数和设备级函数。在设备层面,一次只能与一个设备通信,而在板卡层面,可以与多个设备通信(但一次只能与一个设备通信!)。对于GPIB消息,板卡级函数要求用户使用ibcmd函数手动执行通话器/侦听器分配;设备级函数负责通话器/侦听器分配。

Was this information helpful?

Yes

No