Pythonで低水準ネットワークTCP/IP通信をしてみた


■レーザ吸光法自動車排ガス測定装置とLAN通信


量子カスケードレーザ赤外分光分析計に触る機会があり、

TCP/IPを用いHOST通信をしてみました。


■量子カスケードレーザ赤外分光分析計とは?


量子カスケードレーザ赤外分光(QCL-IR)法を採用した自動車排ガス分析計で

窒素化合物ガス4成分(一酸化窒素NO、二酸化窒素NO2、亜酸化窒素N2O、アンモニアNH3)を連続測定する分析装置です。


測定装置詳細はこちら↓

測定原理はこちら↓




今回は下の装置通信系統図の赤い枠の部分、Windows PCを外部ホストPCとしてTCP/IP通信をしてみました。


                     信号系統図


■PythonでTCP/IP通信


Pythonの実行環境は、Windows10上にAnacondaをいれたもので、

Python3.6.5で動作させました。


↓の画像は作成したプログラムを実際に動作させたものです、

画面の下側のターミナル画面と同時にTkinterを用いたGUIに日付と現在時刻、

通信で取得したガス濃度を表示させています。

分析計にN2O(亜酸化窒素)のガスを流しているところで、濃度97.7ppmが測定されているのがわかります。


プログラムは、まず分析計のIPアドレスとポートナンバー(7700)を定義

host = '192.168.10.102'

port = 7700


次にsocket()関数 でsock オブジェクトを生成

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


IPアドレスとポートナンバーを設定し、ガス分析計に瞬時濃度要求コマンド(MRMD,0,0\r\n)を送る

sock.connect((host, port))

msg = 'MRMD,0,0\r\n'

sock.send(msg.encode('utf-8'))


返って来た文字列(濃度値)を取得

str = sock.recv(bufsize)


最初はさっぱりソケット通信がわからなかったのですが、いろいろやっているうちに一応なんとかこの順序でEthernetにて分析値を得ることができました。


ソースコードはこちら↓

mexa1400ql_gui.py



久しぶりの技術系記事です。

FX自動売買ロボットもプログラムできているので技術系ではあるのですが。。。


今回のプログラムは、濃度値を表示するだけの至ってシンプルなものです、

測定結果をファイルに記録したり移動平均化なども行わない単純なプログラムですが、

無事に低水準TCP/IPでの通信をすることができました。

ICT&電子工作、諸々の備忘録(仮)

プログラミング、電子工作、Raspberry Pi、IoTなどなど。 コンピューター活用、応用技術など、勉強しながら徐に記してゆきたいと思います。