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

会員限定会員限定

该内容已接入现有会員/有料系统,解锁后可完全な情報を見る或添付ファイルのダウンロード。

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

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

この記事: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カスタムコーデック/解析)、組み込みのリアルタイム波形チャート(センサーデータの可視化)の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:温度センサをチューニングしていて、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と同じ操作ロジックです。

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


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

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

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

COMToolのプロトコルプラグインを使用すると、送受信側のデータ処理ロジックを定義できます。送信前に“ユーザーフレンドリーな入力”(“温度センサーの読み取り”など)をModbus RTUフレームに自動的に変換し、受信後に元の16進数フレームを自動的に“センサー値25.3°C”に解析します。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、数量 1
        __count_= text. it
        addr = int addr_str.replace 'アドレス'''
        count = int count_str.replace '数量'''
        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応答フレーム→人間が読めるテキストを解析する”
        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 数量4ポイント送信、実際に送信されるのは完全なModbus RTUクエリフレーム(CRCを含む)です。受信した16進バイトは自動的に駅から01 [1682234,0512]。

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

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

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

  • 国産サーモスタットの帰還AA BB CC DD EE FF GG HH最初の4バイトは温度(BCDコード)、次の4バイトは湿度です。何か書く。decode()解析すると温度23.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:エレガントで効率的なクロスプラットフォームシリアルデバッグアシスタント插图1
nnn

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

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

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

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

マルチチャートサポート:温度、湿度、露点温度の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カスタム解析に代わるものではなく、物理量デバッグには波形チャートが必要です。
  • 同じプロジェクトで多くのことを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 通信を表示します。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シリアル通信の確認

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のカスタムプロトコルで解析し、センサーデータをリアルタイムの曲線に変換することができます。

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

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

再び話す問題がある。

この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注