Source: Modbus Chinese Network(modbus.cn) —— China leadingModbuscommunication protocol technical community
本記事:シリアルデバッグアシスタント软件 ATK-XCOM V3.0:从基础收发到 Modbus protocol传输完全に。ガイド · Author:modbus Technical Team · 发布于 2026-07-01
摘要:ATK-XCOM V3.0 由正点原子(ALIENTEK)开发,是国内エンベデッド·イン开发圈使用最广的シリアルポートデバッグ工具之一。本記事不仅カバー其核心功能,更深入讲解它的协议传输モード——自动タイムアウト重发、checksum/XOR/CRC8/CRC16 四种チェック、データフレーム与实际データ的分离表示——这些功能让 ATK-XCOM 在 Modbus RTU デバッグ场景中比普通シリアルアシスタント高出一个量级。附带完全的 Modbus デバッグ操作ガイド和同类工具对比。关键词:ATK-XCOM、正点原子、シリアルデバッグアシスタント、协议传输、Modbus RTU debug、CRC16、checksum。
デバッグシリアルポート这件事,说简单也简单——找个シリアルアシスタント,选对 COM 口和ボーレート,发个十六进制フレーム,看回来啥。说难也难——当你的フレーム发出去,デバイス回了,但你不知道回来的データ是ではない对的,不知道丢没丢フレーム,不知道中间那两バイト到底是ではない正确的チェックコード。
ATK-XCOM V3.0 是正点原子团队开发的シリアルポートデバッグ工具。正点原子在国内エンベデッド·イン圈的影响力不用多说——STM32 开发板、ESP32 モジュール、RT-Thread Tutorial,基本上学エンベデッド·イン的人都用过他们的东西。ATK-XCOM 是他们内部デバッグツール的外化版,功能构建来自真实的开发场景而非凭空设计。
一、软件怎么装
developer:正点原子(ALIENTEK),国内专业的エンベデッド·イン开发ソリューション提供商。长期专注于为エンジニア、学生和爱好者提供开发板、モジュール和配套工具。
系统要求:Windows 7 及以上,32/64 位均サポート。实测在 Windows 10 和 Windows 11 上运行稳定,CH340、CP2102、FT232 等常见 USB 转シリアルポート芯片均正常识别。
二、基础功能速览
2.1 シリアルポート設定
打开软件后自动扫描すべての可用シリアルポート,在シリアルポート下拉リスト中可以看到对应的シリアルポート名称和詳細はこちら(如 COM3: USB-SERIAL CH340)。常见的 CH340 芯片サポート热插拔——USB 插上后点击リフレッシュ即可出现,拔掉后自动消失。部分老旧驱动可能需要手动关闭シリアルポート再打开。
ボーレート範囲:预设 1200 ~ 1382400 bps,カバー了すべての標準速率。需要非标ボーレート(如 750000、921600)时,在シリアルポート关闭ステータス下点击「Customization」button,直接入力数值。前提是你的 USB 转シリアルポート芯片和对方デバイス的 UART 都能サポート这个速率——STM32 的 USART 在 72MHz 时钟下サポート的非标ボーレート範囲很窄,ではない随便输个数字就能稳的。
stop bit:1、1.5、2 三种。data bit:5、6、7、8 四位。check digit:検証なし。、odd parity、even parity。Modbus RTU 的標準設定:8 data bit、1 stop bit、ダブルチェック或検証なし。。
2.2 表示与送信
受信区サポート两种表示モード:十六进制和 ASCII,可实时切换。两种配色方案:经典的「黑底绿字」(类似终端风格,长时间看屏幕不刺眼)和「白底黑字」(类似ドキュメント风格,截图可用)。勾选「时间戳」可以为每一条受信データ加上精确时间。注意时间戳以 rn 为フレーム边界——もし你收到的 Modbus フレーム中间刚好有 0D 0A,时间戳会被エラー插入到フレーム内部。所以 Modbus デバッグ时时间戳功能建议在 ASCII モード下使用,Hex モード下建议关闭。
送信区サポート ASCII 和十六进制两种入力格式。勾选「送信新行」自动在送信内容末尾追加 rn——调 AT 指令的モジュール(如 ESP8266、4G モジュール)时必须勾上。快捷键 Ctrl+Enter 可直接送信。
「定时送信」Function:可以設定固定周期(毫秒级),软件自动按間隔循环送信送信区的内容。适合做老化测试——比如给 Modbus スレーブ连续发 24 小时读レジスタ命令,看デバイス会不会通信中断。
「文件送信」Function:能把任意格式的文件(如 .bin 固件、.hex アップグレード包)按バイト流経由シリアルポート发出去,带プログレスバー和暂停/继续控制。IAP(In-Application Programming)シリアルポートアップグレード固件时直接使用する。它,必要なし。单独写个アップグレード工具。
2.3 多条送信与指令管理
四条独立送信ページ,每条ページ有 10 条可編集的送信指令(等于最多 40 条预置命令)。每条指令的送信格式(Hex/ASCII)、是否加新行、送信周期都可以单独設定。数字键盘 0~9 可以绑定到当前ページ的第 1~10 条指令——适合需要快速レスポンス控制的场景,比如智能车控制(按数字键 1 前进、2 后退、3 左转)。
命令セットサポート导出为 Excel format、也从 Excel Import。项目交接时直接把你的すべての测试指令导出成一个文件发给同事,他导入后就能用完全一样的命令デバッグ。
三、协议传输モード——ATK-XCOM 的杀手锏
这是 ATK-XCOM 和普通シリアルアシスタント的本质区别所在。主に。シリアルアシスタント只是「你把バイト发出去,答えがあります的就表示出来」。ATK-XCOM 的协议传输モード做了三件事:自动チェック、自动タイムアウト重发、データとフレーム的分离表示。
3.1 工作原理
协议传输的基本流程:你在送信区填入要发的实际データ(Payload),ATK-XCOM 自动在データ前后加上フレーム头和チェックコード,拼成完全的协议フレーム,経由シリアルポート发出去。受信端收到フレーム后,計算チェックコード,もし検証済み。则戻る確認フレーム(ACK),送信端收到 ACK 表示传输成功。もし在设定时间内ない收到 ACK,自动重发,最多重试設定的次数。
对于 Modbus RTU 来说用不到全套的 Send-Ack 机制(Modbus 本身就有自己的主从问答协议),但它サポート四种チェック算法,以及「表示元のフレーム」和「表示实际データ」分开的功能——这2つ在 Modbus デバッグ中太实用了。
3.2 四种チェック方式
| チェック方式 | Length | 算法简述 | 適用可能なシーン |
|---|---|---|---|
| checksum(Checksum) | 1 byte | すべてのデータバイト累加,取低 8 位 | 简单协议、自定义フレーム |
| XOR(XOR) | 1 byte | すべてのデータバイト连续异或 | NMEA 0183(GPS)、部分センサーは |
| CRC8 | 1 byte | 8 位循环冗余チェック,多項式可配 | Dallas 1-Wire、SMBus |
| CRC16 | 2 bytes | 16 位循环冗余チェック,查表法実装 | **Modbus RTU**(多項式 0xA001) |
在协议传输設定中选「CRC16」,ATK-XCOM 自动按 Modbus 標準多項式(0xA001)result,结果低バイト数前に、ハイバイト在后(リトルエンディアン序),完全符合 Modbus RTU 的 CRC 排序ルール。你只需要入力除 CRC 之外的裸フレーム,软件替你加上两バイト CRC。
3.3 表示元のフレーム vs 表示实际データ
受信区可以2つモード切り替えモード:
- 表示元のフレーム:受信到完全に。バイト流,包括フレーム头、address、function code、data、checksum,全表示出来。用于トラブルシューティングフレーム構造問題——比如发现收到的Bytesの数少了,可能是定时間隔短すぎる被截断了。
- 表示实际データ:只表示经过チェック后的有效データ载荷,すべてのフレーム头和チェックコード都被剥离。用于快速看データ内容——必要なし。在十六进制里找「データ在哪开始、チェック在哪结束」。
Modbus デバッグ时这2つモード的切换是这样的:先用「表示元のフレーム」確認フレーム構造正确、チェックコード経由。確認无误后切换到「表示实际データ」,只フォローレジスタ的数值变化。
3.4 自动重发与タイムアウト設定
送信失敗后的重试机制可設定三个参数:
- タイムアウト時間(ms):待機中 ACK 的最大时间。对于 Modbus slave,典型值设为 100~500ms 足够,取决于スレーブデバイス的レスポンス速度。一部の低速デバイス(老旧的 51 单片机跑 4800 Baud rate)可能需要设到 800ms 甚至更高。
- 重发次数:タイムアウト后自动重发的最大次数。设 0 表示不重发。一般设 3~5 次。
- 重发間隔(ms):两次重发之间的間隔。这个值需要 > タイムアウト時間,否则逻辑就乱了。对于 Modbus RTU 的场景,フレーム間隔必须 ≥ 3.5 文字の時間(3.5 × 11 / Baud rate),比如 9600 bps 就是约 4ms。
这些参数放在一个 GUI 面板上,比写代码配シリアルポートタイムアウト直观得多。关键是可以直观地看到「在第几次重发时受信しました正确的 ACK」——もし每次都到第 3 次才成功,説明通信链路有不稳定的地方,要去トラブルシューティング线缆或干渉。
四、使用 ATK-XCOM debug Modbus RTU 完全に。流程
步骤一:設定シリアルパラメータ
open ATK-XCOM V3.0,選択对应的 COM 口。ボーレート设 9600(或デバイス实际ボーレート),data bit 8,stop bit 1,チェックビット选无或ダブルチェック——取决于你デバイス的具体設定。
点「Open the serial port」。もし线路正确、デバイス已上电,ステータス栏会表示シリアルポートオープンしました,收发Bytesの数从 0 开始。
步骤二:构造 Modbus 查询フレーム
假如读駅からの住所 01 保持レジスタです。 40001(address 0x0000),读 1 Registers。裸フレーム(不含 CRC)是:
01 03 00 00 00 01
勾选「十六进制送信」,在送信区入力 010300000001。在「协议传输」設定中勾选 CRC16 check,ATK-XCOM 会自动計算 CRC 并在フレーム末尾附加两バイト(对于这个フレーム,CRC 是 0x840A,发出去完全に。フレーム是 01 03 00 00 00 01 84 0A)。点送信。
步骤三:解析戻るフレーム
デバイス普通の反応时,ATK-XCOM 受信区会表示回来的十六进制データ。標準的レスポンスフレーム形式是:
01 03 02 XX YY CRCL CRCH
among them 02 表示データ区的Bytesの数(读 1 1つのレジスタ就是 2 bytes),XX YY 是レジスタの値(前の高さ。)。
もし戻る的是:
01 83 02 CRCL CRCH
機能コード变成了 0x83——这是元の機能コード 0x03 的最高位被置为 1,加上異常コード。 0x02。Modbus Exception Code 0x02 表示「Illegal data address」——你リクエスト的レジスター·アドレス在这个スレーブ上不存在。
步骤四:利用多条送信管理常用 Modbus Command
在「多条送信」エリア建四个ページ:
Page 1 —— 読み取り类命令
条目1: 010300000001 → 駅から読む。01レジスタ40001(1个)
条目2: 010300000004 → 駅から読む。01レジスタ40001~40004(4个)
条目3: 0103000A0001 → 駅から読む。01レジスタ40011(1个)
条目4: 010100000008 → 駅から読む。01コイル00001~00008(8个)
每个条目独立勾选「十六进制送信」和 CRC16 check。
Page 2 —— 写入类命令
条目1: 010600000001 → 写スレーブ01レジスタ40001=1
条目2: 010600000000 → 写スレーブ01レジスタ40001=0
条目3: 011000000001020001 → 写スレーブ01多1つのレジスタ,start0000,2バイト,值=0001
Page 3 —— 广播与诊断
条目1: 000800000001 → 广播诊断(サブ機能コード0001,通信の再開)
条目2: 00110000 → 广播取得スレーブイベント数器
Page 4 —— 导出备份
全設定完,菜单 → 导出送信条目 → 存为 Excel 文件。以后换电脑直接使用する。这个文件导入,すべての命令一秒恢复。
五、ATK-XCOM vs 其他シリアルポート工具的ポジショニング
| 对比维度 | ATK-XCOM V3.0 | LLCOM | SSCOM | COMTool |
|---|---|---|---|---|
| 开发方 | 正点原子(国内) | chenxuuu 个人开源 | 个人 | 个人开源 |
| free | 是 | 是 | 是 | 是 |
| 脚本化 | サポートなし。 | Lua 5.3 脚本引擎 | サポートなし。 | 有限サポート |
| 协议传输 | サポート(フレーム头/check/ACK/タイムアウト重发) | サポートなし。(需自己写 Lua) | サポートなし。 | サポートなし。 |
| CRC/check | 内置 4 种(checksum/XOR/CRC8/CRC16) | 需自己写 Lua | サポートなし。 | サポートなし。 |
| 多条送信 | 4 页×10 条+快捷键 | 10 页不限条数 | サポートなし。 | サポート |
| ボーレート上限 | 1382400 | 受驱动限制 | 受驱动限制 | 受驱动限制 |
| GUI 风格 | 经典绿底黑字 | 现代白色 | 老式 Windows | 现代 |
| 下载方式 | 百度网盘+官方 | GitHub+MS Store | 各下载站 | GitHub |
选工具的三个场景:
- 日常デバッグ Modbus RTU,只需收发和看データ → ATK-XCOM。协议传输モード内置 CRC,多条送信管理方便,必要なし。写脚本。
- 需要自動化批量测试、自定义データの解析、和 TCP/MQTT 联调 → LLCOM。Lua 脚本的灵活性无可替代,但学习成本高。
- 只是偶尔用一次シリアルポート、发几条 AT 指令 → COMTool 或 SSCOM。轻量,必要なし。任何設定。
ATK-XCOM 的ポジショニング是「专业シリアルポートデバッグ的ツールボックスThe Toolbox」而ではない「可プログラミング万能工具」。它的设计哲学是把エンベデッド·インエンジニア最もよく使われるデバッグ流程做成固定功能,让你必要なし。写代码就能跑。LLCOM 是把すべての可プログラミング能力开放给你,让你想干嘛就干嘛——但代价是你要会写 Lua。
2つ工具配合用才是最合理的:ATK-XCOM 搞定日常的收发和チェック,LLCOM 搞定需要自動化重复操作的任务。
六、common problems
CRC16 チェック结果和手动算的不一致? 確認两件事:1) 多項式是否正确——Modbus RTU 用的是 0xA001(ではない 0x8005,那是 IBM CRC-16 的正向多項式)。2) 初期化是否为 0xFFFF。ATK-XCOM 内置的 CRC16 是严格按照 Modbus protocol実装的,正确结果可以用オンライン CRC calculation器交叉验证。
受信できない。スレーブレスポンス? 三查:1) ボーレート和チェックビット一致するかどうか。2) 駅からの住所是否正确(注意デフォルトアドレス可能是 1 也可能是 247,每个厂商不一样)。3) デバイス是否上电——这在现场是最常被忽略的,很多人插上 USB 转 485 以为デバイス就有电了,实际デバイス需要独立的 DC 供电。
时间戳不表示? ATK-XCOM 的时间戳以 rn 为断フレーム标志。もし收到的データ是纯 Modbus RTU 二进制フレーム、不包含 0D 0A,时间戳功能不会触发。建议在 Hex 受信モード下关闭时间戳,或確認对方データ流确实包含换行符。
文件送信到一半停了? チェック目标デバイス的受信バッファ。是否足够。文件送信是连续バイト流,もしデバイス処理速度跟不上(比如每受信一バイト単位。就要写 Flash 并待機中完成),送信端不会自动降速。ソリューション是降低送信ボーレート,或者把文件拆成小块,用多条送信的定时功能分片送信。
ATK-XCOM ない什么炫酷的新概念,它的每个功能都来自エンベデッド·インエンジニア在デバッグ现场的真实需求——协议传输是因为デバイス一应答就出错又不知道错在哪,多条送信是因为十几条 AT 指令来回手打太折磨人,自定义ボーレート是因为总有一些非标デバイス。这就是正点原子作为「从开发板里长出来的工具团队」和「纯ソフトウェアツール团队」最大違いはありません——后者是设计出来的,前者是磨出来的。
有問題再聊。
Leave a Reply