post-cover

2025-07-05 技術ブログ

【第2回】エレベーター通信シミュレーター開発記録:Python で作る RS422 受信モニタリングツール

本記事で紹介するプログラムは以下の GitHub リポジトリで公開しています

GitHub - elevator-enq-simulator

本記事は連載形式でお届けしています。各回の内容は以下のリンクからご覧いただけます。

はじめに

エレベーターと自動運転装置の通信環境を構築するうえで、まず重要なのは RS422 通信が Raspberry Pi 側で正しく受信できているか を確認することです。

本記事では、ENQ 送信プログラムを実行した後、 Raspberry Pi がシリアル信号を正しく受信できているかを確認するためのモニタリングツール について紹介します。 PySerial と termios を活用し、UNIX/Linux 環境で正確に受信タイミングを制御できる構成となっています。


プログラムの実行手順

GitHub リポジトリ内の serial_debug_test.py を使用します。任意のディレクトリに保存し、以下の手順に従って実行してください。

動作環境

  • Python 3.8 以上
  • OS:Raspberry Pi OS(Linux 環境)
  • 対応通信:RS422(USB シリアル変換アダプタ使用)

必要な Python ライブラリ

ライブラリ名 用途 インストール方法
pyserial シリアル通信制御 pip3 install pyserial
termios 受信制御(VMIN/VTIME) ※Python 標準ライブラリ(追加インストール不要)
# ライブラリのインストール
pip3 install pyserial

使用機材と接続構成

このツールで通信を確認するには、以下の構成で機器を接続してください。

使用機材一覧

接続構成図

PC(ENQ送信) → RS422コンバーター → DB9ケーブル → RS422コンバーター → Raspberry Pi(受信確認)

この構成により、ENQ 信号が実際の RS422 環境と同様の条件で Pi に届いているかを確認できます。


実行方法

プログラムは 2 つのモードで使用できます:

ポート検出モード

利用可能なシリアルポートを自動検索します。

python3 serial_debug_test.py test

通信モニターモード

任意のポートを指定して、16 バイト固定長で受信ログを表示します。

python3 serial_debug_test.py /dev/ttyUSB0

プログラムは以下の条件で動作します:

  • 通信条件:9600bps, 8bit, Even パリティ, 1 stop bit
  • 受信制御:VMIN=16(16 バイト受信で確定)、VTIME=5(0.5 秒以内にデータが揃わなければタイムアウト)

実行例とログ出力

以下は、Raspberry Pi で受信を確認した際の出力ログ例です。

📡 シリアルモニタリング開始: /dev/ttyUSB0
    設定: 9600bps, 8bit, Even parity, 1 stop bit
    VMIN=16, VTIME=5 (0.5秒)
    Ctrl+C で終了

[10:15:23] 受信 (16 バイト)
  HEX  : 05303030325730303031303030313942
  ASCII: .0002W000100019B

[10:15:24] 受信 (16 バイト)
  HEX  : 05303030325730303031303030313942
  ASCII: .0002W000100019B

このように、受信データは HEX と ASCII の両形式で可視化され、 通信内容の確認やデバッグが容易 です。


まとめ

本記事では、RS422 通信の受信確認に特化した シリアルモニタリングツール について解説しました。

このツールは以下のような場面で非常に有効です:

  • ENQ 送信プログラムの実行前に通信確認を行いたい場合
  • 配線ミスやポート設定ミスの早期発見
  • 通信フォーマットの整合性チェック

※ご質問やフィードバックがありましたら、問い合わせフォーム経由でお気軽にお寄せください。

次回の記事では、受信したデータをもとに 映像を生成し、RTSP で配信するシステムの構築方法 を紹介します。 Raspberry Pi を活用した通信系開発や、産業機器の IoT 化を検討している方の参考になれば幸いです。


本記事で紹介するプログラムは以下の GitHub リポジトリで公開しています

GitHub - elevator-enq-simulator