GPIBメッセージ

概要

汎用インタフェースバス (GPIB) には、コマンドメッセージとデータメッセージの2種類のメッセージがあります。各GPIBコントローラおよび各GPIB計測器には、バス上で固有のIDがあります。このIDはアドレスと呼ばれます。GPIBコントローラはコマンドメッセージを使用して、計測器がバスに情報を提供するタイミング、およびバス上の情報を受信できるタイミングを計測器に通知します。この情報はデータメッセージとして渡されます。

内容

コントローラ、トーカ、リスナ

GPIBには、コントローラ、トーカ、リスナがあります。
  • コントローラは、バス上の他のデバイスにトーカとリスナを割り当てることで、バス上の情報の流れを制御します。計測器からのサービス要求に応答し、バスの制御を他のコントローラに渡すことができます。バス全体の管理を担当するコントローラインチャージ(CICまたはシステムコントローラ)は、各バスにつき1つだけです。
  • トーカはバスのデータラインに情報を配置しますが、コントローラが指示した場合にのみ情報を配置します。一度に1つのデバイスのみが通信できます。
  • リスナがバスのデータラインから情報を取得するのは、コントローラが指示した場合のみです。任意の数のデバイスが同時にリスンできます。

コマンドメッセージデータメッセージ

GPIBコントローラは、デバイス(計測器または他のコントローラ)がいつバスに情報を提供できるか、またいつバス上の情報をリスンできるかを、コマンドメッセージを使用してデバイスに通知します。トーカとリスナの割り当てはコマンドメッセージとして送信され、情報はデータメッセージとして渡されます。

コマンドメッセージとデータメッセージの大きな違いは、バス管理ラインの1つであるアテンション(ATN)ラインの状態にあります。ATNラインがアサートされると、データラインで送信されたメッセージはすべてのデバイスで受信され、コマンドメッセージとして解釈されます。ATNラインがアサートされていない場合、リスンするようにアドレス指定されたデバイスのみがデータラインでメッセージを受信できます。

GPIBアドレスプロトコル


GPIBには8つのデータラインがあり、一度に1バイト(8ビット)ずつ情報を送信します。以下の図1に示すように、コマンドメッセージは8ビットのうち7ビットを使用します。


GPIBアドレスプロトコル
図1.GPIBアドレスプロトコル



ビット0~4は、トーカ/リスナ割り当ての対象となるデバイスのプライマリアドレスを示します。ビット5がHIGHの場合、デバイスはリスンします。ビット6がHIGHの場合、デバイスは通信します。ビット7は「気にしない」ビットです。この値は無視されるため、コマンドメッセージでは0の値として解釈されます。

バスの各デバイスには固有のアドレスが必要です。このアドレスは、プライマリアドレス(PAD)とセカンダリアドレス(SAD)から構成されています。図1からわかるように、5つのデータラインはGPIBプライマリアドレスを示すために使用されます。つまり、0から31までの値を合計32(2の5乗)のアドレスとして使用できます。ただし、パッド31は特殊なコマンドメッセージに使用されるため、プライマリアドレスとして使用されることはありません。これにより、合計31のプライマリアドレスが残ります。バスのコントローラインチャージ(CIC)はほとんどの場合PAD 0であるため、バス上の計測器には1~30のプライマリアドレスを使用できます。GPIBでよくある間違いは、コントローラボードと計測器に同じアドレスを割り当てることで、EADRエラー(アドレス指定エラー)が発生することです。

GPIBセカンダリアドレスは0~30の範囲において同一であるため、合計961(31 x 31)のGPIBアドレスを使用できますが、セカンダリアドレスが使用されることはほとんどありません(SADは通常ゼロに設定されています)。トーカ/リスナの割り当ては、主要なアドレス情報の一部であるため、PADではコマンドメッセージを送信する際にビット6またはビット5を使用します。「SAD情報を送信するにはどうすればよいですか?」と尋ねられる場合があります。セカンダリアドレスでは、コマンドメッセージを送信する際にビット6と5の両方を高く設定します。セカンダリアドレスを持つデバイスと通信する必要がある場合は、最初にプライマリアドレスを指定し、すぐにセカンダリアドレスを指定する必要があります。

プライマリおよびセカンダリのアドレス指定、コマンドメッセージ、およびデータメッセージを扱う最も簡単な方法は、対話式制御(IBIC)を使用することです。たとえば、ボードがPAD 0にあり、計測器がPAD 2とSAD 4を装備している場合、ボードが通信し、計測器がリスンするようにするには、IBICで次のコマンドメッセージを送信します。

ibcmd "\x40\x22\x64"

\x40は16進数の40を表し、0 1 0 0 0 0 0のバイナリパターンを表します。これは、ビット6がHIGH(トーク)で、プライマリアドレスが0であることを意味します。\x22は16進数の22を表し、0 0 1 0 0 0 1 0のバイナリパターンを表します。これは、ビット5がHIGH(リスン)で、プライマリアドレスが2であることを意味します。\x64は16進数の64を表し、0 1 1 0 1 0 0 0のバイナリパターンを表します。つまり、ビット6と5はHIGHで、以下のアドレスをセカンダリアドレスとして扱い、アドレスは4です。

マルチラインインタフェースメッセージ表


前のセクションで説明したように、各コマンドメッセージは特定のビットパターンに対応します。このビットパターンは16進数形式で表現できます。すべてのGPIBコマンドメッセージはASCII文字にマッピングすることもできます (ASCIIは7ビット文字セットであるため)。ASCIIはGPIBの「言語」です。マルチラインインタフェース表(表1)は、ASCII文字とコマンドメッセージ、およびそれらの16進数、8進数、10進数の値をリストしています。マルチラインインタフェースメッセージ表は、ほとんどのナショナルインスツルメンツのGPIB関連技術マニュアルの付録に記載されています。
表1(その1)複数ラインインタフェースメッセージ

16進数
10月
10進数
ASCII
Msg
16進数
10月
10進数
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
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
US
3F
077
63
?
UNL

メッセージの定義
DCLDevice Clear (デバイスクリア)MSAMy Secondary Address (セカンダリアドレス)
GETGroup Execute Trigger (グループトリガ実行)MTAMy Talk Address (トークアドレス)
GTLGo To Local (ローカルモードへ移行)PPCParallel Poll Configure (パラレルポール構成)
LLOLocal Lockout (ローカルのロックアウト)PPDParallel Poll Disablel (パラレルポール無効)
MLAMy Listen Address (リスンアドレス)


表1(パート2)複数ラインインタフェースメッセージ

16進数
10月
10進数
ASCII
Msg
16進数
10月
10進数
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
μ
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

メッセージの定義
PPEParallel Poll Enable (パラレルポール有効)SPESerial Poll Enable (シリアルポール有効)
PPUParallel Poll Unconfigure (パラレルポール構成解除)TCTTake Control (コントロール取得)
SDCSelected Device Clear (選択されたデバイスのクリア)UNLUnlisten (リスン解除)
SPDSerial Poll Disable (シリアルポール無効)UNTUntalk (トーク解除)


たとえば、ASCII文字「@」 (16進数の40) は、プライマリアドレス0のデバイスをトーカとして割り当てるメッセージ「MTA0」を表します。別の例として、ASCII文字「?」 (16進数の3F) は、リスナとして割り当てられていたすべてのデバイスにリスナ解除 (リスナ停止) を指示します。

マルチラインインタフェースメッセージテーブルは、ボードレベルのGPIB関数ibcmdを使用している場合に非常に便利です。コントローラとして、ibcmd関数を使用してコマンドメッセージを送信します。たとえば、対話式制御(IBIC)を使用してコントローラ(PAD 0)をトーカ、計測器(PAD 5)をリスナとして割り当てる場合、ibcmd "?@%"を使用してすべてのデバイスにリスン停止(?、UNL)、コントローラにトーカ(@、MTA0)、計測器にリスン(%、MLA5)を指示します。

コントローラは、ibwrt関数を使用して計測器にデータを送信します。(メモ:ibwrtを呼び出すと、ATNラインがアサート解除され、バス上のデータラインがコマンドメッセージではなくデータメッセージの送信に使用されます。)上記の例を継続するには、ibwrt "hello"を使用してデータメッセージhelloを計測器に送信します。(もちろん、送信するメッセージは計測器にとって意味があります。)

コマンドメッセージショートカット


マルチラインインタフェースメッセージテーブルに簡単にアクセスできない場合は、以下の式を使用して、MLA (My Listen Address) コマンドメッセージとMTA (My Talk Address) コマンドメッセージに相当する16進数メッセージを作成できます。MLA = (16進数の20) + (16進数のパッド) およびMTA = (16進数の40) + (16進数のパッド)たとえば、コントローラ(PAD0)をリスナとして、計測器(PAD 25)をトーカとして割り当てる場合、それぞれ16進数20(MLA0 = 16進数20 + 16進数00 = 16進数20)および16進数59(MTA25 = 16進数40 + 16進数19 = 16進数59)を使用できます。

アンリスン (UNL) とアントーク (UNT) は、それぞれMLAとMTAの式でPAD 31 (16進数の1F) を使用して形成されます。たとえば、UNLは16進数3F(16進数20 + 16進数1F = 16進数3F)で、UNTは16進数5F(16進数40 + 16進数1F = 16進数5F)です。

セカンダリアドレスは、16進数のSADに16進数の60を加算して作成されます。MSA (My Secondary Address) = (16進数の60) + (16進数のSAD)。たとえば、SAD 20の計測器を使用する場合、セカンダリアドレスを表すために16進数74 (MSA20 = 16進数60 + 16進数14 = 16進数74) を使用します。

ボードレベルデバイスレベル関数


GPIB関数には、ボードレベル関数とデバイスレベル関数の2種類があります。デバイスレベルでは、一度に1つのデバイスとのみ通信できますが、ボードレベルでは、複数のデバイスと通信できます(ただし、一度に通信できるのは1つのデバイスのみです)。GPIBメッセージについては、ボードレベルの関数ではibcmd関数を使用してトーカ/リスナの割り当てを手動で実行する必要があります。デバイスレベルの関数がトーカ/リスナの割り当てを自動的に行います。

Was this information helpful?

Yes

No