| | 1 | = Aloka ポータブルエリアモニタ MAR-783 制御方法 = |
| | 2 | |
| | 3 | == 接続 == |
| | 4 | |
| | 5 | RS-422が製品のデフォルトらしいが、今回の製品はRS-232C版なので、MOXAのEther-Serialコンバータで接続する。[[br]] |
| | 6 | |
| | 7 | * ケーブル: D-Sub 9pin クロス |
| | 8 | |
| | 9 | |
| | 10 | || baud rate || 9600 || |
| | 11 | || parity || even || |
| | 12 | || data bits || 7 || |
| | 13 | || stop bits || 2 || |
| | 14 | || flow ctrl || none || |
| | 15 | |
| | 16 | |
| | 17 | RS-422版をRS-232版へ変更するには、内部基板のコネクタを付け替えて、メニューから制御方法の設定を変更するだけでOK。 |
| | 18 | |
| | 19 | [[Image(Aloka_rs232.png)]] |
| | 20 | |
| | 21 | RS-422版は画像のJ4 RS422のコネクタにケーブルがつながっているので、J5 RS232に繋ぎ直す。[[br]] |
| | 22 | その後、フロントパネルから、システム設定モードに入って、RS OUTの設定をRS232Cに変更する。設定方法の詳細は[aloka_MAR783.pdf マニュアル]を参照。 |
| | 23 | |
| | 24 | |
| | 25 | == データフォーマット == |
| | 26 | |
| | 27 | データの送受信はバイナリコマンドで行う。[[br]] |
| | 28 | 詳しくは[aloka_MAR783.pdf マニュアル]の6章に書いてあるが、基本的には以下のフォーマットを実装するだけでOKみたい。 |
| | 29 | |
| | 30 | * 測定値要求コマンド |
| | 31 | |
| | 32 | 送信 |
| | 33 | |
| | 34 | || 項目名 || 型 || サイズ(byte) || 説明 || |
| | 35 | || STX || 文字列 || 1 || 0x02固定 || |
| | 36 | || コマンド || 文字列 || 2 || R0 || |
| | 37 | || ETX || 文字列 || 1 || 0x03固定 || |
| | 38 | |
| | 39 | 受信 |
| | 40 | |
| | 41 | || 項目名 || 型 || サイズ(byte) || 説明 || |
| | 42 | || STX || 文字列 || 1 || 0x02固定 || |
| | 43 | || コマンド || 文字列 || 2 || D0 || |
| | 44 | || 測定値1 || 文字列 || 4 || 測定値の小数点以下 || |
| | 45 | || 測定値2 || 文字列 || 1 || 測定値の10のべき乗 || |
| | 46 | || 状態コード || 文字列 || 1 || 状態コード || |
| | 47 | || ダミー || 文字列 || 1 || 0x31固定 || |
| | 48 | || ETX || 文字列 || 1 || 0x03固定 || |
| | 49 | |
| | 50 | |
| | 51 | 取得したデータは、(0.測定値1 * (10^測定値2^)) uSv/h となる。 |
| | 52 | |
| | 53 | 例として 測定値1が "0998"、測定値2が "1" とすると、 |
| | 54 | |
| | 55 | 0.0998 * 10^1^ = 0.998 uSv/h |
| | 56 | |
| | 57 | となる。 |
| | 58 | |
| | 59 | |
| | 60 | == サンプルスクリプト == |
| | 61 | |
| | 62 | {{{ |
| | 63 | #!/usr/bin/python |
| | 64 | import socket |
| | 65 | import struct, binascii |
| | 66 | |
| | 67 | host = '172.28.5.253' |
| | 68 | port = 4001 |
| | 69 | |
| | 70 | clientsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| | 71 | clientsock.connect((host,port)) |
| | 72 | |
| | 73 | sendVal = (0x02, 'R0', 0x03) |
| | 74 | |
| | 75 | ss = struct.Struct('b 2s b') |
| | 76 | ssp = ss.pack(*sendVal) |
| | 77 | |
| | 78 | print 'Send bin: ' + binascii.hexlify(ssp) |
| | 79 | |
| | 80 | clientsock.sendall(ssp) |
| | 81 | rcvp = clientsock.recv(1024) |
| | 82 | |
| | 83 | print 'Recv bin: ' + binascii.hexlify(rcvp) |
| | 84 | |
| | 85 | rs = struct.Struct('b 2s 4s c c c b') |
| | 86 | |
| | 87 | print 'Recv pack: ' + str(rs.unpack(rcvp)) |
| | 88 | |
| | 89 | clientsock.close() |
| | 90 | |
| | 91 | }}} |
| | 92 | |
| | 93 | このスクリプトを実行すると以下の様な結果が出力される。 |
| | 94 | |
| | 95 | {{{ |
| | 96 | [michkawa@pfrproc4 test]$ ./testClient.py |
| | 97 | Send bin: 02523003 |
| | 98 | Recv bin: 0244303130363830363103 |
| | 99 | Recv pack: (2, 'D0', '1068', '0', '6', '1', 3) |
| | 100 | |
| | 101 | [michkawa@pfrproc4 test]$ ./testClient.py |
| | 102 | Send bin: 02523003 |
| | 103 | Recv bin: 0244303039353930363103 |
| | 104 | Recv pack: (2, 'D0', '0959', '0', '6', '1', 3) |
| | 105 | |
| | 106 | [michkawa@pfrproc4 test]$ ./testClient.py |
| | 107 | Send bin: 02523003 |
| | 108 | Recv bin: 0244303039353230363103 |
| | 109 | Recv pack: (2, 'D0', '0952', '0', '6', '1', 3) |
| | 110 | |
| | 111 | [michkawa@pfrproc4 test]$ ./testClient.py |
| | 112 | Send bin: 02523003 |
| | 113 | Recv bin: 0244303039343530363103 |
| | 114 | Recv pack: (2, 'D0', '0945', '0', '6', '1', 3) |
| | 115 | |
| | 116 | [michkawa@pfrproc4 test]$ ./testClient.py |
| | 117 | Send bin: 02523003 |
| | 118 | Recv bin: 0244303039333830363103 |
| | 119 | Recv pack: (2, 'D0', '0938', '0', '6', '1', 3) |
| | 120 | |
| | 121 | [michkawa@pfrproc4 test]$ ./testClient.py |
| | 122 | Send bin: 02523003 |
| | 123 | Recv bin: 0244303039333830363103 |
| | 124 | Recv pack: (2, 'D0', '0938', '0', '6', '1', 3) |
| | 125 | |
| | 126 | [michkawa@pfrproc4 test]$ ./testClient.py |
| | 127 | Send bin: 02523003 |
| | 128 | Recv bin: 0244303037333230363103 |
| | 129 | Recv pack: (2, 'D0', '0732', '0', '6', '1', 3) |
| | 130 | |
| | 131 | }}} |