COMtool:エレガントで効率的なクロスプラットフォームシリアルデバッグアシスタント

会员专享会员专享

该内容已接入现有会员/付费系统,解锁后可查看完整资料或下载附件。

COMtool:エレガントで効率的なクロスプラットフォームシリアルデバッグアシスタント

ソース:Modbus China Network(modbus.cn) -中国をリードするModbusCommunicationプロトコル技術コミュニティ

この記事:COMTool:Pythonのクロスプラットフォームシリアルデバッグソリューション·著者:modbus技術チーム·公開日2026- 0 7 - 0 1

COMTool(GitHub:Neutree/COMTool,LGPL-3.0)は、Python 3 + PyQt5で書かれたオープンソースのシリアルデバッグツールで、Windows、Linux、macOS、Raspberry Piをサポートしています。Modbusデバッグシナリオでは、真のプラットフォーム全体で一貫性のあるエクスペリエンス、プロトコルプラグインシステム(Pythonカスタムコーデック/Parse)、組み込みのリアルタイム波形チャート(センサーデータの可視化)の3つの差別化価値があります。この記事では、機能リストではなく、Modbusエンジニアの実際のニーズから直接始めて、COMToolが解決できる問題と、ATK-X COMやLLCOMよりも適しているいくつかのシナリオを説明します。キーワード:COMTool、クロスプラットフォームシリアルデバッグ、Pythonシリアルツール、Modbus 波形表示、プロトコルプラグイン。


Modbusのデバッグを行う人は、ほとんどの場合、Windowsで作業しています。SIEMENS、三菱、オムロンの設定ソフトウェアやプログラミングツールは基本的にWindowsのみを実行します。しかし、いくつかのシナリオでは、突然Windowsにシリアルアシスタントが必要ではないか、あるが経験が混乱していることがわかります。

シナリオ1:Mac Book Proをメイン開発マシンとして使用していますが、USBを485に接続し、Modbusセンサーを調整する必要があります。Windowsバージョンのツールを実行する仮想マシンを開きます。シリアルトランスポートレイテンシは3倍高く、時折フレームをドロップします。

シナリオ2:ゲートウェイがUbuntu Server 上で実行されており、シリアルに接続できるRaspberry Piは1台だけです。Raspberry Piデスクトップ環境で直接シリアルアシスタントを開きたい場合は、ほとんどのWindowsツールでは動作しません。

シナリオ3:temperatureセンサをチューニングしていて、Modbusが生のレジスタ値(16.8°Cの場合は168など)を返します。16進数の山ではなく、受信エリアに直接温度曲線を見る必要があります。

これら3つのシナリオがComToolの存在理由です。

COMToolは、Python 3 + PyQt5で書かれたGitHubオープンソースプロジェクト(Neutree/COMTool)、MITプロトコルです。GitHubには2,000以上のStarがあり、コアメンテナはNeutreeです。これは、最もフル機能のシリアルツールでもModbus専用ツールでもありませんが、クロスプラットフォームで最も徹底的に実行されているシリアルツールの中で、プラグインと可視化のための最も強力なものです。


Comtoolのクロスプラットフォームとは何か?

“理論的にはLinuxをサポートするが実際にはインストールできない”ツールとは異なり、COMToolはプラットフォームごとに個別のパッケージとインストールスキームを持っています。

Windows:GitHub Releasesからzipパッケージをダウンロードし、comtool.exeを直接実行します。Scoop(Windowsパッケージマネージャ)からもインストールできます。scoop bucket add Nightly ... && scoop install comtool

macOS:dmgインストールパッケージを直接インストールします。Python + PyQt5で書かれているので、システムはPython 3を搭載しています。注最初に開くときは署名なしで、システム環境設定→セキュリティ&プライバシーで実行を許可する必要があります。ウィンドウを開きたい場合は、ターミナルが実行します。open -n /Application/comtool.app

LinuxこれがComToolの利点です。Ubuntu 系にはコンパイル済みのバイナリがあり、Arch 系はAURからインストールできます。yay -S python-comtool)。ソースコードからpipをインストールすることもできます:pip install comtool。Raspberry Piが必要です。sudo apt install git python3-pyqt5 python3-numpypip installします。

Raspberry Piについて完全なサポート。USB-485モジュールの接続、電源投入、COMToolのオン、選択/dev/ttyUSB0Windowsと同じOperationロジックです。

すべてのプラットフォームで一貫したエクスペリエンス:同じPyQt5インターフェイス、同じプラグインシステム、同じ設定ファイル形式。Windows 上でプロトコルプラグインを書いて、Raspberry PiのCOMToolプラグインディレクトリにコピーして直接読み込むことができます。


プロトコルプラグイン-COMTool Modbusデバッグの最も貴重な機能

2.1プロトコルプラグインが解決する問題

通常のシリアルアシスタントはこんな感じです16進数を送ります010300000001840A装備を戻す。01030201988432肉眼で応答のバイトの中に“0103”を探し、スレーブアドレスが正しいことを確認し、ジャンプしてデータバイトがどこにあるかを確認し、CRCを計算します。

COMToolのプロトコルプラグインを使用すると、送受信側のデータ処理ロジックを定義できます。送信前に“ユーザーフレンドリーな入力”(“temperatureセンサーの読み取り”など)をModbus RTUフレームに自動的に変換し、受信後に元の16進数フレームを自動的に“センサー値25.3°C”にParseします。16進数を見る必要はありません。

原理は簡単です。各プロトコルプラグインはPythonクラスで、2つのコアメソッドを実装する必要があります。encode()そして、decode()

encode()ユーザー入力を送信する元のバイトに変換します。decode()受信した生のバイトをユーザーが読める表示形式に変換することです。

2.2 Modbusプロトコルプラグインの最も単純な例

以下のプラグインを使用すると、COMToolの“プロトコル”モードで“レジスタアドレス0番号4を読み取る”などの自然言語コマンドを発行し、自動的にModbus RTUフレームで送信できます。受信したバイナリ応答は、的に“スレーブ01 [168 2234 0 512]”と解釈されます。

class Plugin Plugin_Base
    id = "mod_r"
    name = "Modbus RTUパーサー"
    version = "1.0"

    # CRC16ルックアップテーブル(Modbus多項式0 xA 001)
    _crc_table =なし

    @classmethod
    _
        CLSの場合。crc_table
            CLSに戻る。crc_table
        テーブル=]
        for i in range 256
            CRC = I
            for _ in 8
                if crc 1
                    crc = crc1 ^ 0xA001
                else nParticle
                    CRC = 1
            table.append crc
        CLS._。crc_table =テーブル
        表に戻る

    @classmethod
    _crc16
        テーブル= cls._ build_crc_table
        crc = 0 x FFFF
        for B in data
            crc = crc8 ^table crc ^ b 0xFF]
        CRCに戻る

    def encode self-bytes
        “”“ユーザー入力'リードレジスタアドレス0数4' →フレームに组み合わせる”"
        text = self.sendEdit.toPlainText. st
        単純な解決:固定スレーブアドレス0 x 0 1
        スレーブ= 0 x 0 1
        #デフォルトのリードホールドレジスタ(関数コード0 x 0 3)、開始アドレス0、Quantity 1
        __count_= text. it
        addr = int addr_str.replace 'アドレス'''
        count = int count_str.replace 'Quantity'''
        frame = bytes slave 0x03
                       (addr 8 0xFF addr 0xFF
                       count 8
        crc = self._crc16
        return frame + bytes crc 0xFF crc 8 0xFF]

    def decode self data bytes-str
        “受信したModbus応答フレーム→人間が読めるテキストをParseする”
        if data 5
            return f"データが短すぎます{len data}バイト]"
        スレーブ=データ0]
        func = data 1)
        func = 0 x 80の場合
            exc = data 2]
            return f"例外]スレーブ{slave 02X}エラーコード{excc}"
        byte_count = data2]
        values =)
        for i in range byte_count// 2
            hi = data3 + i * 2]
            lo = data 4 + i * 2]
            values.append str hi<< 8| lo
        return f"スレーブ駅{slave 02X}{''. join values}]"

このPythonファイルをCOMToolのpluginディレクトリに置き、起動後に“Protocol”パネルでプラグインを選択します。その後、送信ボックスに書き込みます。リードレジスタアドレス0 Quantity4ポイント送信、実際に送信されるのは完全なModbus RTUクエリフレーム(CRCを含む)です。受信した16進バイトは自動的に駅から01 [1682234,0512]

n
COMtool:エレガントで効率的なクロスプラットフォームシリアルデバッグアシスタントFigure
nnn

2.3より复雑なシーンカスタム検证、カスタムフレーム形式

Modbusプロトコルプラグインはその一例です。COMToolのプロトコルプラグインの真の価値は、“市場でサポートされていないプロプライエタリなプロトコル”を扱うことです。

  • 国産サーモスタットの帰還AA BB CC DD EE FF GG HH最初の4バイトはtemperature(BCDコード)、次の4バイトは湿度です。何か書く。decode()Parseするとtemperature23.5°C、湿度67.2%
  • カスタムチェック:標準的なCRC16ではなく、CRC8/XOR/ベンダー独自のマジックチェック、Python関数を書いて処理します。

encode()そして、decode()任意のPythonライブラリをチューニングできます-JSONのparse、辞書の翻訳エラーコードのチューニング、さらにはチューニングもできます。numpyデータをフィルタリングする。これは、C#やC++で書かれたシリアルツールにはない柔軟性です。


波形/グラフ-Modbusレジスタ値をリアルタイム曲線に変換する

3.1 2つのデータ形式をサポート

COMTool内蔵のGraphプラグインは、シリアルデータから座標を抽出し、リアルタイム曲線を描画します。2種類のフォーマットをサポート:

ASCII形式(推奨、読みやすい):

$カーブ名、X座標、Y座標、チェックサムn

例:200msごとにセンサを送信します。$temp,1.0,25.3nCOMToolは、temp曲線上に点1.0、25.3を描画します。Checksum Editionより:$temp,1.0,25.3,179nチェックサムは、すべてのフィールドのASCIIコードの下位8ビットの合計です。

バイナリ形式(効率的、高速取得に適しています):プロトコル長が短く、毎秒数千ポイントを送信できます。詳細はCOMToolの公式ドキュメントを参照。

n
COMtool:エレガントで効率的なクロスプラットフォームシリアルデバッグアシスタントFigure1
nnn

3.2 Modbusセンサーデータ可視化の実践

Modbus温度湿度センサ(ステーションアドレス01から)があり、レジスタ40001(temperature、単位0.1°C)と40002(湿度、単位0.1%)を返すとします。COMToolでtemperatureと湿度のリアルタイム曲線を表示したいです。

中間スクリプトを使用してブリッジを行います。PythonスクリプトはPyserial経由でModbusレスポンスを読み取り、temperature/湿度をParseし、COMToolのASCII 波形形式で仮想シリアルポートに出力し、COMToolのGraphプラグインは曲線を直接表示します。

または、より直接的なソリューション:COMToolのプロトコルプラグインを使用してParseします。decode()関数の出力は、次のように直接フォーマットされます。$temp,{timestamp},{value}n+$humi,{timestamp},{value}nGraphプラグインでは、2つのリアルタイム曲線が表示されます。

マルチチャートサポート:temperature、湿度、露点温度の3つの曲線、それぞれ異なる色を同時に追加することができます。

3.3 C言語のエンドコード

センサがSTM 32/ESP32独自に記述されたファームウェアの場合、MCU側でCOMTool準拠の波形データを出力します。

//ASCII波形データ(チェックサムを含む)を送信する
int plot_pack_ascii * buff int buff_size
    const * ve_name float x float y
{
    sum = 0;
    int len = snprintf buff buff_size "$% s %. 1f %. 1f"
                       curve_name、x、y;
    for int i = 1; i; i +++= buff i];<[
    len += snprintf buff + len buff_size-len " % dn" sum 0xFF;&
    レンに戻ります
}

//センサー読み取りループで呼び出される
char buf 128];[
int = plot_pack_ascii buf of buf "
                          time_ms/1000.0 temperature/10.0;
uart_send_bbuf;

このように、ファームウェア側はGUI開発、直接シリアルポート出力を行う必要はなく、COMToolは描画できます。


ATK-X COM/ LLCOM /COMTool-3つの位置決めの違いは何ですか?

次元の比較ATK-XCOM V3.0LLCOMCOMTool
開発者たちアトミック(商業用)Chenxuuu(個人オープンソース)Neutree(オープンソース)
ライセンスは無料クローズドソースApache 2.0LGPL-3.0
プラットフォームはWindowsWindowsWin + Mac + Linux + Raspberry Pi
テクノロジースタックC# / .NETC# / .NET + xluaPython 3 / PyQt5
スクリプト/Plugin✅ Lua 5.3■ Pythonのプラグイン
内蔵Modbus CRC■プロトコル転送モード(Luaの手书きが必要)❌(需 Python 插件)
リアルタイム波形/グラフGraphプラグイン
TCP/UDP
SSHクライアント
複数の送信管理4ページ×10記事·10ページ無制限■ボタンの定義
インストールの難しさ解凍して使用解凍して使用pip installまたは解凍

ロードマップの選択:

  • WindowsでModbus RTUをアップグレードすると、毎日の送受信と検証が必要になります。ATK-X COMの略。プロトコル転送モード内蔵CRC16、マルチ送信管理成熟、ゼロ学習コスト。
  • Windowsで自動テスト、マルチプロトコルチューニングのスクリプトを書く必要があります。略称はLLCOM。Luaスクリプトエンジンはあらゆる自動化ロジックを処理でき、xluaはC#ネイティブインターフェイスをチューニングできます。
  • MacまたはLinuxで開発するか、センサーデータの可視化が必要です。COMTOOLです。唯一のフルプラットフォームソリューションであり、プロトコルプラグインはModbusカスタムParseに代わるものではなく、物理量デバッグには波形チャートが必要です。
  • 同じプロジェクトで多くのことを3つのコラボレーションATK-X COMは毎日のModbus送受信と検証を行い、LLCOMはバッチ自動ポーリングを行い、COMToolはセンサ波形監視を行います。

COMToolのその他のModbus関連の用途

5.1 TCP/UDP Modbus TCPのデバッグ

COMToolのネットワークデバッグモードは、TCPクライアント/サーバをサポートしています。Modbus TCP設備を調整する時、TCPクライアントモードで設備のIP − 502ポートに接続し、Modbus TCPフレーム(MBAPヘッダ+ PDU)を送信し、シリアルポートデバッグと同じ操作体験をする。受信エリアはプロトコルプラグイン解決もサポートします。

5.2 SSHターミナル+シリアルデバッグ

デバッグ対象がLinux産業用コンピュータ(Raspberry Pi上でModbusマスタープログラムを実行しているなど)の場合、2つのCOMToolウィンドウを同時に開くことができます。1つはSSHログインしてログとコマンドを表示し、もう1つはシリアルポートでModbus Communicationを表示します。Puttyとシリアルアシスタントの間で切断することなく、同じソフトウェアで行います。

5.3マシン間でのプロファイルの移行

COMToolのシリアルパラメータ、送信履歴、プラグイン設定はすべてローカル設定ファイルに保存されます。オフィスのWindowsでセットアップしたものはすべて、設定ファイルをライブのRaspberry Piにコピーして、作成したプロトコルプラグインを含めて、直接ロードし、完全なデバッグ環境を1秒で復元します。


COMToolのインストールとModbusデバッグの開始

6.1 Windows(最も簡単)

https://github.com/Neutree/COMTool/releasesから最新の.zipファイルをダウンロードし、解凍してcomtool.exeをダブルクリックします。

6.2 macOS

Releasesから.dmgインストールをダウンロードする。PyPIから:pip install comtoolターミナルに入力します。comtool

6.3 Linux /Raspberry Pi

# Ubuntu/Debian
sudo apt install python 3-pyqt 5 python 3-numpy python 3-pip-y
pip install comtool
comtoolの

#アーチ#
yay-S python-comtool

#Raspberry Pi-追加ステップ:現在のユーザーがDialoutグループに参加する
sudo usermod-a-G dialout $USER
sudo rebootです。

6.4シリアルCommunicationの確認

USB 485モジュールを接続し、COMToolの左側のパネルでシリアル番号を選択します。

  • Windows:COM3など
  • macOS/Linux:/dev/tty.usbserialまたは/dev/ttyUSB 0

ボーレート、データビット、検証ビットはデバイスパラメータごとに設定します。“開く”をクリックします送信エリアにModbusテストフレームを入力し、16進モードに切り替え、ポイント送信します。


COMToolは最高のModbusデバッグツールではありません。ATK-X COMのCRC内蔵チェックサムマルチ送信はModbus専用です。COMToolは最も柔軟なスクリプトツールでもありません。LLCOMのLuaコルーチンとxlua C#呼び出しはより強力です。しかし、COMToolはMac、Linux、Raspberry Pi上で動作する唯一のものであり、PythonのカスタムプロトコルでParseし、センサーデータをリアルタイムの曲線に変換することができます。

クロスプラットフォーム+ Pythonカスタマイズ可能+視覚化:これがニッチです。3つは別々に見ることができますが、3つは1つのツールに入れられ、2つ目はありません。

当サイトはCOMToolの国内ネットディスクダウンロードと中国語の使用チュートリアルを提供し、メンバーは無料ですべてのデバッグツールをダウンロードできます。1つのシリアルアシスタントでは解決できないシナリオ、3つのシリアルアシスタントはいつでも解決できます。

再び話す問題がある。

Related Tags
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.