wiki:epics/streamdevice/Aloka_MAR_783/control

Version 1 (modified by michkawa, 6 years ago) (diff)

--

Aloka ポータブルエリアモニタ MAR-783 制御方法

接続

RS-422が製品のデフォルトらしいが、今回の製品はRS-232C版なので、MOXAのEther-Serialコンバータで接続する。

  • ケーブル: D-Sub 9pin クロス
baud rate 9600
parity even
data bits 7
stop bits 2
flow ctrl none

RS-422版をRS-232版へ変更するには、内部基板のコネクタを付け替えて、メニューから制御方法の設定を変更するだけでOK。

RS-422版は画像のJ4 RS422のコネクタにケーブルがつながっているので、J5 RS232に繋ぎ直す。
その後、フロントパネルから、システム設定モードに入って、RS OUTの設定をRS232Cに変更する。設定方法の詳細は[aloka_MAR783.pdf マニュアル]を参照。

データフォーマット

データの送受信はバイナリコマンドで行う。
詳しくは[aloka_MAR783.pdf マニュアル]の6章に書いてあるが、基本的には以下のフォーマットを実装するだけでOKみたい。

  • 測定値要求コマンド

送信

項目名 サイズ(byte) 説明
STX 文字列 1 0x02固定
コマンド 文字列 2 R0
ETX 文字列 1 0x03固定

受信

項目名 サイズ(byte) 説明
STX 文字列 1 0x02固定
コマンド 文字列 2 D0
測定値1 文字列 4 測定値の小数点以下
測定値2 文字列 1 測定値の10のべき乗
状態コード 文字列 1 状態コード
ダミー 文字列 1 0x31固定
ETX 文字列 1 0x03固定

取得したデータは、(0.測定値1 * (10測定値2)) uSv/h となる。

例として 測定値1が "0998"、測定値2が "1" とすると、

0.0998 * 101 = 0.998 uSv/h

となる。

サンプルスクリプト

#!/usr/bin/python
import socket
import struct, binascii

host = '172.28.5.253'
port = 4001

clientsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsock.connect((host,port))

sendVal = (0x02, 'R0', 0x03)

ss  = struct.Struct('b 2s b')
ssp = ss.pack(*sendVal)

print 'Send bin: ' + binascii.hexlify(ssp)

clientsock.sendall(ssp)
rcvp = clientsock.recv(1024)

print 'Recv bin:  ' + binascii.hexlify(rcvp)

rs = struct.Struct('b 2s 4s c c c b')

print 'Recv pack: ' + str(rs.unpack(rcvp))

clientsock.close()

このスクリプトを実行すると以下の様な結果が出力される。

[michkawa@pfrproc4 test]$ ./testClient.py
Send bin: 02523003
Recv bin:  0244303130363830363103
Recv pack: (2, 'D0', '1068', '0', '6', '1', 3)

[michkawa@pfrproc4 test]$ ./testClient.py
Send bin: 02523003
Recv bin:  0244303039353930363103
Recv pack: (2, 'D0', '0959', '0', '6', '1', 3)

[michkawa@pfrproc4 test]$ ./testClient.py
Send bin: 02523003
Recv bin:  0244303039353230363103
Recv pack: (2, 'D0', '0952', '0', '6', '1', 3)

[michkawa@pfrproc4 test]$ ./testClient.py
Send bin: 02523003
Recv bin:  0244303039343530363103
Recv pack: (2, 'D0', '0945', '0', '6', '1', 3)

[michkawa@pfrproc4 test]$ ./testClient.py
Send bin: 02523003
Recv bin:  0244303039333830363103
Recv pack: (2, 'D0', '0938', '0', '6', '1', 3)

[michkawa@pfrproc4 test]$ ./testClient.py
Send bin: 02523003
Recv bin:  0244303039333830363103
Recv pack: (2, 'D0', '0938', '0', '6', '1', 3)

[michkawa@pfrproc4 test]$ ./testClient.py
Send bin: 02523003
Recv bin:  0244303037333230363103
Recv pack: (2, 'D0', '0732', '0', '6', '1', 3)

Attachments (2)

Download all attachments as: .zip