GPIB 訊息

概觀

通用介面匯流排 (GPIB) 有兩種類型的訊息:指令訊息與資料訊息。匯流排上每個 GPIB 控制器和每個 GPIB 儀器都有獨特的身分識別,也就是所謂的位址。GPIB 控制器會使用指令訊息告知儀器可在何時對匯流排進行通訊以提供資訊,以及在何時傾聽匯流排上的資訊。此資訊會以資料訊息形式傳遞。

內容

控制器、傳送接收器

GPIB 領域包含控制器、傳送器與接收器:
  • 控制器會將傳送器與接收器指派給匯流排上的其他裝置,藉此控制匯流排的資訊流。他們會回應儀器的服務需求,並將匯流排控制權傳遞給其他控制器。每個匯流排只能有一組控制器負責匯流排整體管理 (CIC 或系統控制器)。
  • 傳送器會在匯流排的資料通道上放置資訊,但僅限於控制器發出這樣的指示時。一次只能使用一個裝置。
  • 接收器會從匯流排的資料通道取得資訊,但僅限於控制器發出這樣的指示時。任何裝置都能同時收聽。

指令訊息資料訊息

GPIB 控制器會使用指令訊息告知裝置 (儀器或其他控制器) 當時可進行通話,將資訊提供給匯流排,以及當時可偵聽匯流排上的資訊。將傳送器與接收器指派傳送為指令訊息,而資訊則會以資料訊息形式傳遞。

指令訊息與資料訊息之間的主要差異,在於注意 (ATN) 通道的狀態,也就是匯流排管理通道的其中一條。如果採用 ATN 線路,所有裝置都會收聽傳送到資料線路上的任何訊息,並將其視為指令訊息。如果未建立 ATN 通道,則只有指定的裝置可接收資料通道上的訊息。

GPIB 定址協定


GPIB 有 8 個資料通道,一次可傳送 1 位元 (8 位元) 的資訊。指令訊息會使用八個位元中的七個位元,如下圖 1 所示:


GPIB 定址協定
圖 1.GPIB 定址協定



位元 0 到 4 表示裝置的主要位址,而該裝置的傳送器/接收器指派適用於該裝置。如果位元 5 為高準位,則裝置應接收。如果位元 6 為高準位,則裝置應傳送。位元 7 是「無關」位元。其值會遭到忽略,因此在指令訊息中會解譯為 0 個值。

匯流排上的每個裝置都必須有唯一的地址。此位址包含一個主要位址 (PAD) 與一個次要位址 (SAD)。如圖 1 所示,其中五條資料通道可用來指出 GPIB 的主要位址。換句話說,總共有 32 個位址 (2 至 5 個位址) 的值可以介於 0 到 31,不過,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 代表 Hex 40,代表 0 1 0 0 0 0 0 0 的二進位碼型。這表示位元 6 為高位元 (談話),且主要位址為 0。\x22 代表 Hex 22,代表 0 0 1 0 0 0 0 1 0 的二進位碼型。這表示位元 5 為高位元 (傾聽),且主要位址為 2。\x64 代表 64,代表 0 1 1 0 0 1 0 0 的二進位碼型。這表示位元 6 和 5 為高位元,因此,將下列位址視為次要位址,此位址為 4。

Multiline 介面訊息表


如前一節所示,每個指令訊息各對應特定位元樣式,並以六分數格式表示。所有 GPIB 指令訊息也可對應至 ASCII 字元 (因為 ASCII 為 7 位元字元組),因此 ASCII 是 GPIB 的「語言」。Multiline Interface Table (表 1) 列出 ASCII 字元與指令訊息的對應,以及其六分數、八角與小數值。大多數 NI GPIB 相關技術手冊皆附錄 Multiline 介面訊息表。
表 1 (第 1 部分)。多線式介面訊息

十六進制
10 月
12
ASCII
Msg
十六進制
10 月
12
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
取得
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
正弦
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
TW
3F
077
63
?
UNL

訊息定義
DCL裝置清除 MSA我的次要地址
取得群組執行觸發 MTA我的討論地址
GTL前往本地 PPC平行輪詢配置
LLO本地鎖定 PPD停用平行輪詢
MLA我的聆聽地址


表 1 (第 2 部分)。多線式介面訊息

十六進制
10 月
12
ASCII
Msg
十六進制
10 月
12
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
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

訊息定義
PPE啟用平行輪詢 SPE啟用序列輪詢
PPU取消設定平行輪詢 TCT掌握控制
SDC清除精選裝置 UNL不傾聽
SPD序列輪詢停用 UNT取消討論


舉例來說,ASCII「@」字元 (hex 40) 代表訊息「MTA0」,將位於主要位址 0 的裝置指派為「Talker」。另一個範例是,ASCII「」字元 (hex 3F) 代表「UNL」訊息,此訊號指示先前指派為「偵聽器」的所有裝置,停止偵聽 (也就是停止偵聽)。

如果您使用板件等級的 GPIB 函式 ibcmd, Multiline 介面訊息表就非常實用。身為控制器,您會使用 ibcmd 函式傳送指令訊息。舉例來說,如果使用互動式控制 (IBIC) 將控制器 (PAD 0) 指派為講者,並將儀器 (PAD 5) 指派為聆聽器,則使用 ibcmd "?@%" 指示所有裝置停止聆聽 (?, UNL)、控制器進行通話 (@, MTA0),以及儀器進行聆聽 (%, MLA5)。

接著控制器會使用 ibwrt 函式將資料傳送至儀器。(注意:呼叫 ibwrt 會導致 ATN 通道去安裝,因此會使用匯流排上的資料通道傳送資料訊息,而非指令訊息。」若要繼續使用上一個範例,可以使用 ibwrt「Hello」 將資料訊息傳送至儀器,並傳送 Hello 訊息。(當然,您傳送的訊息應該對儀器有意義。」

指令訊息捷徑


若您無法輕鬆存取 Multiline Interface Message Table,可以使用下列公式建立 MLA (我的聆聽位址) 指令訊息與 MTA (我的通話位址) 指令訊息等效的六十數字:MLA = (正交 20) + (正交 PAD) 與 MTA = (正交 40) + (正交 PAD)。舉例來說,若要將控制器 (PAD0) 指派為「接收器」,將儀器 (PAD 25) 指派為「傳送器」,則可分別使用 hex 20 (MLA0 = hex 20 + hex 00 = hex 20) 與 hex 59 (MTA25 = hex 40 + hex 19 = hex 59)。

不傾聽 (UNL) 與不討論 (UNT) 會分別使用 MLA 和 MTA 的公式中使用 PAD 31 (六 1F)。舉例來說,UNL 代表六位元 3F (六位元 20 + 六位元 1F = 六位元 3F),而 UNT 則代表六位元 5F (六位元 40 + 六位元 1F = 六位元 5F)。

次要位址是透過在六序列中,將六序列 60 新增至 SAD:MSA (我的次要地址) = (六方 60) + (SAD 表示六方)。舉例來說,若您使用具有 SAD 20 的儀器,則將使用 hex 74 (MSA20 = hex 60 + hex 14 = hex 74) 來呈現其次位址。

等級 vs.裝置函式


GPIB 函式分為兩種類型:板件等級函式與裝置等級函式。在裝置層級,您一次只能與單一裝置通訊,而在機板層級,您可以與多個裝置通訊 (但一次只能與單一裝置通訊)。就 GPIB 訊息而言,機板層級的函式需要使用 ibcmd 函式手動執行 Talker/Listener 指派;而裝置層級的函式會負責為您處理 Talker/Listener 指派。

Was this information helpful?

Yes

No