20年经验凝聚:Modbus Debugging Assistant介绍

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

20年经验凝聚:Modbus Debugging Assistant介绍

我用 3 个月,把 20 年的工业デバッグ经验做成了WeChat小程序

从 Modbus デバッグ到 PID 整定,从シリアル通信到センサーは标定,这款工具集成了エンジニア最もよく使われる 20+ 专业計算器


前言:一个エンジニア的"执念"

我是一名工业自動化エンジニア,从业 20 year,待过デバイス厂商、集成商,也做过甲方。

这些年,我见过太多エンジニア在现场的"狼狈":

  • 背着十几斤重的电脑跑现场,就为了デバッグ一个 Modbus device
  • 忘带 USB 转シリアルポート线,整个项目停工半天
  • 电脑上的软件要收费,破解版还怕有病毒
  • PID 参数不会整,打电话问厂家,等半天回复
  • センサーは标定靠手算,計算器按错一次,すべて重来

最痛苦的一次,是某次深夜抢修。客户的 PLC 通信故障,我赶到时已经是晚上 10 点。结果发现忘带电脑,只能打电话让同事送,折腾到凌晨 3 点才Got it.

那一刻我就想:なぜか。不能只带手机就去现场?

于是,我花了整整 3 个月,利用业余时间开发了这款 Modbus Debugging Assistant WeChat Mini Program。

它不仅仅是一个デバッグツール,更是我 20 年经验的结晶。


一、核心功能:20+ 专业工具,装进手机

1.1 Modbus デバッグ全家桶

小程序最核心的功能,就是 完全的 Modbus protocol栈サポート

(1)Modbus Poll - メインステーションのポーリング工具

这是使用频率最高的功能,ない之一。

サポート的機能コード:

function codeName用途
FC01Read CoilsRead coil status(开关量出力)
FC02Read Discrete InputsRead discrete inputs(开关量入力)
FC03Read Holding RegistersRead and hold register(most common)
FC04Read Input RegistersRead input register(読み取り専用)
FC05Write Single CoilWrite into a single coil
FC06Write Single RegisterWrite to a single register
FC15Write Multiple CoilsWrite multiple coils
FC16Write Multiple RegistersWrite multiple registers
FC17Report Slave ID通报クライアント側は ID
FC22Mask Write Register掩码写レジスタ(改单个 bit)
FC23Read/Write Multiple同时读/write multiple registers
FC43/14Read Device ID読み取りデバイス标识

连接方式:

  • Modbus TCP:サポート任意 IP ポートと港。,自动保存连接历史
  • 蓝牙连接:サポート普通蓝牙转 485 モジュール和 PACO 蓝牙适配器
  • ポートフォワーディング:サポートルータの設置ポートマッピング(如外部 1502 → 内部 502)

データ表示格式:

同一1つのレジスタ的生データ,サポート 7 种表示格式 一键切换:

Signed(記号付き。)   →  -32768 ~ 32767
Unsigned(符号なし。) →  0 ~ 65535
Hex(hexadecimal)    →  0x0000 ~ 0xFFFF
Long(长整型)     →  32 ビット整数型
Float(浮点型)    →  IEEE 754 单精度
Float Swapped      →  バイト反转浮点
Binary(binary)   →  0000 0000 0000 0001

💡 实际案例:某温度センサー戻る 0x4248 0x0000,もし按 16 ビット整数型看是 17480 和 0,完全正しくない。切换到 Float format,表示 50.0,这才是实际温度值。

エキスパート工具:

  • 通讯监视面板:实时记录すべての Tx/Rx Original message,サポート暂停/继续,一键シェア
  • TC 测试中心:manual input Hex ストリング·ストリング送信,表示元のレスポンス,デバッグ自定义协议
  • 实时图表:入力要モニタリング的レジスター·アドレス,柱状图实時に表示数值变化
  • リクエスト报文预览:在設定界面实時に表示即将送信的 RTU/ASCII フレーム構造(含 CRC/LRC check)

(2)Modbus Slave - ステーションからのシミュレーション器

这个功能很多人忽略,但其实非常实用。

使用シーン:

  • 测试トップマシン软件(如キング·ビュー、WinCC)
  • 验证 PLC 程序逻辑
  • 培训新员工(无需真实デバイス)
  • 开发阶段模拟スレーブレスポンス

サポート功能:

  • 模拟コイル、ショップ型入力、レジスタを保持する。、入力レジスタ。
  • 自定义初期値は
  • サポート批量設定アドレス範囲
  • 实時に表示マスターリクエスト报文

(3)Modbus RTU/TCP/ASCII - 契約の詳細

小程序对3つの伝送モード都有详细説明和実践サンプル。

RTU vs ASCII 对比:

characteristicRTUASCII
编码方式binaryASCII Text
チェック方式CRC16LRC
フレーム長さ较短(高效)约为 RTU 2 倍
フレーム标识3.5 文字静默間隔":" 开头 + CR LF 结尾
適用可能なシーン大多数工业デバイス老旧デバイス/调制解调器

CRC16 算法実装(核心代码):

// MODBUS CRC-16 (低バイト数前に)
calcCRC16(bytes) {
  let crc = 0xFFFF;
  for (let i = 0; i < bytes.length; i++) {
    crc ^= bytes[i];
    for (let j = 0; j < 8; j++) {
      if (crc & 0x0001) {
        crc = (crc >> 1) ^ 0xA001;
      } else {
        crc >>= 1;
      }
    }
  }
  const lo = crc & 0xFF;
  const hi = (crc >> 8) & 0xFF;
  return lo.toString(16).toUpperCase().padStart(2, '0') + ' ' + 
         hi.toString(16).toUpperCase().padStart(2, '0');
}

LRC 算法実装:

// MODBUS ASCII LRC
calcLRC(bytes) {
  let sum = 0;
  for (let i = 0; i < bytes.length; i++) {
    sum += bytes[i];
  }
  const lrc = ((~sum) + 1) & 0xFF;
  return lrc.toString(16).toUpperCase().padStart(2, '0');
}

1.2 シリアルデバッグアシスタント

这是第二个高频使用的功能。

核心特性:

  • 三种连接方式:蓝牙 / TCP / UDP
  • 全参数設定:Baud rate(9600/19200/38400/57600/115200)、data bit、stop bit、check digit
  • 收发区独立設定
    • 受信区:ASCII/HEX Switch、时间戳、自动换行、表示行号、auto-scroll
    • Sending Area:ASCII/HEX Switch、自动解析转义符(\r\n \t)、loop sending
  • 四种チェック方式:CRC-16、累加和、LRC、XOR check
  • 实时统计:RX/TX byte count、一键复位

実践案例 1:蓝牙デバッグ PACO device

PACO 是一款常用的蓝牙 485 适配器,小程序对其做了深度优化。

// 构建 PACO Command (80 バイト固定長さ)
buildPacoCommand(cmdType, param = '') {
  let cmd = '';
  switch(cmdType) {
    case 'read485':
      cmd = 'PACO-Setting-Code-PACO-FXY-BT-485-R-485Setting.';
      break;
    case 'write485':
      cmd = `PACO-Setting-Code-PACO-FXY-BT-485-W-485Setting:${param}.`;
      break;
    case 'readName':
      cmd = 'PACO-Setting-Code-               -R-PartNumber.';
      break;
    case 'writeName':
      cmd = `PACO-Setting-Code-PACO-FXY-BT-485-W-DeviceName:${param}.`;
      break;
  }
  // 补齐到 76 characters,末尾加 PACO
  const paddedCmd = cmd.padEnd(76, ' ') + 'PACO';
  return paddedCmd;
}

可以読み書き PACO デバイス的:

  • 485 parameter(Baud rate/data bit/stop bit/check digit)
  • Device Name(最大 7 characters)

実践案例 2:TCP port限制問題

WeChat小程序对ポート有严格限制,这是一个大坑。

// WeChat小程序ポート限制チェック
const forbiddenPorts = [1099, 1433, 1521, 1719, 1720, 1723, 
  2049, 2375, 3128, 3306, 3389, 3659, 4045, 5060, 5061, 
  5432, 5984, 6379, 6000, 6566, 7001, 7002, 8443, 8888, 
  9200, 9300, 10051, 10080, 11211, 27017, 27018, 27019];

if (portNum < 1024) {
  // 禁止连接 1024 以下ポート(如 502)
  uni.showModal({ 
    title: 'ポート受限', 
    content: 'WeChat小程序禁止连接 1024 以下ポート,请使用 APP 版本或更换ポート', 
    showCancel: false 
  });
  return;
}

if (portNum >= 8000 && portNum <= 8100) {
  // 禁止连接 8000-8100 ポート
  uni.showModal({ 
    title: 'ポート受限', 
    content: 'WeChat小程序禁止连接 8000-8100 ポート,请更换ポート', 
    showCancel: false 
  });
  return;
}

ソリューション:
在ルータの設置做ポートフォワーディング,比如外部 1502 → 内部 502。


1.3 专业計算器系列

这部分是我花心思最多的,也是最能体现"经验价值"的地方。

(1)PID 自整定計算器

PID 参数整定是自動制御システム系统的核心,也是很多エンジニア的痛点。

サポート的整定方法:

方法適用可能なシーン特点
齐格勒 - 尼科尔斯第一法阶跃レスポンス实验经典方法,适用面广
齐格勒 - 尼科尔斯第二法临界振荡法需要找到临界增益
Cohen-Coon大滞后系统对滞后系统效果好
IMC(内模控制)高いパフォーマンスを要求参数可调,灵活性高
极点設定特定动态レスポンス需要系统模型

入力参数:

  • 延迟时间 L(秒)
  • 时间常数 T(秒)
  • 过程增益 K
  • λ parameter(IMC 专用)

出力結果:

  • 比例增益 Kp
  • 积分时间 Ti
  • 微分时间 Td
  • おすすめ設定(如コントローラーはタイプ、控制变量選択)

核心算法(齐格勒 - 尼科尔斯第一法):

// Ziegler-Nichols 第一法(阶跃レスポンス法)
zieglerNichols1st(L, T, K) {
  // Kp = 1.2 * T / (K * L)
  // Ti = 2 * L
  // Td = 0.5 * L
  const kp = 1.2 * T / (K * L);
  const ti = 2 * L;
  const td = 0.5 * L;
  return { kp, ti, td };
}

実践案例:

某温度コントロール系统,経由阶跃レスポンス实验得到:

  • 延迟时间 L = 2.5s
  • 时间常数 T = 8.0s
  • 过程增益 K = 1.0

代入公式計算:

  • Kp = 1.2 × 8.0 / (1.0 × 2.5) = 3.84
  • Ti = 2 × 2.5 = 5.0s
  • Td = 0.5 × 2.5 = 1.25s

将这三个参数入力 PID Controller,系统レスポンス快速且超调小。

(2)センサーは标定計算器

センサーは标定是オンサイトデバッグ的常规工作,但手算容易出错。

サポート四种モード:

① 线性标定(most common)

適用される 4-20mA、0-10V 等线性センサーは。

标定公式:Y = kX + b

among them:
k = (Y2 - Y1) / (X2 - X1)  // 斜率
b = Y1 - k * X1            // 截距

快速换算表:

百分比信号值 (mA)工程值 (℃)
0%4.000.00
25%8.0025.00
50%12.0050.00
75%16.0075.00
100%20.00100.00

② 多点拟合

適用される非线性センサーは(如热电偶、热电阻)。

サポート:

  • 二次曲线拟合
  • 三次曲线拟合
  • 最小二乘法

③ 温度专用モード

内置常用温度センサー分度表:

  • PT100 热电阻
  • K 型热电偶
  • J 型热电偶
  • E 型热电偶
  • T 型热电偶

④ 误差分析

result:

  • 绝对误差
  • 相对误差
  • 满量程误差
  • 线性度

実践案例:

某压力变送器,量程 0-10bar,出力 4-20mA。

标定点設定:

  • 低点:4mA → 0bar
  • 高点:20mA → 10bar

Computation result:

  • k = (10 - 0) / (20 - 4) = 0.625
  • b = 0 - 0.625 × 4 = -2.5

标定公式:Y = 0.625X - 2.5

验证:

  • 入力 12mA → Y = 0.625 × 12 - 2.5 = 5.0bar ✓
  • 入力 20mA → Y = 0.625 × 20 - 2.5 = 10.0bar ✓

(3)検証計算の検証工具

这个工具集成了 10+ 种工业通信プロトコル常用的チェック算法。

サポート功能:

チェックタイプ説明適用可能なシーン
MODBUS RTU CRC-1616 位循环冗余チェックModbus RTU Protocol
MODBUS ASCII LRC纵向冗余チェックModbus ASCII Protocol
checksum(16 位)累加和取低 16 位简单协议
XOR check(8 位)すべてのバイト异或Custom Protocol
シーメンス S7 checksumS7 通信プロトコル专用シーメンス PLC
三菱 FX 求和チェック三菱通信プロトコル三菱 PLC
BCC check块チェック文字Serial port communication
IP/TCP checksum网络协议チェックTCP/IP 栈
オムロン FINS FCSFINS 协议チェックオムロン PLC
CAN CRCCAN バスチェック汽车電子

使用方法:

  1. 選択チェックタイプ
  2. 入力元の HEX data
  3. 自动計算チェックコード
  4. (可选)附加チェックコード后送信

実践案例:Modbus RTU Command

raw data:01 03 00 00 00 01

result CRC-16:

  • 入力 6 byte
  • 計算得 CRC = 0x840A
  • 低バイト数前に:84 0A

Complete message:01 03 00 00 00 01 84 0A


1.4 其他专业工具

小程序还有 15+ 专业工具,这里简单列举:

(1)PLC Debug Tools

  • Q06 开关デバッグアシスタント:专门针对 Q06 系列开关的デバッグツール
  • X160 Debug Tools:X160 デバイス专用デバッグ
  • ZLAN デバイスマネージャ(device manager):有人IoT ZLAN 系列デバイス管理

(2)アクチュエーターデバッグ

  • 调光デバッグアシスタント:0-10V/PWM 调光器デバッグ
  • 8 路继电器控制:多路继电器バッチ制御
  • サーボ脉冲計算:サーボ电机脉冲当量計算

(3)周波数変換器デバッグ

  • 周波数変換器デバッグツール:サポートメインストリーム周波数コンバータ参数設定

(4)其他計算器

  • 压力变送器デバッグ:差压/压力变送器計算
  • 远程协助工具:实时共享デバッグ画面

二、技术架构:小程序也能做专业工具

2.1 技术选型

前端框架: uni-app

選択理由:

  • 一套代码编译到WeChat小程序、H5、APP
  • 丰富的组件库
  • 良好的蓝牙/TCP/UDP API サポート

UI 框架: colorUI + 自定义组件

データストア:

  • 本地存储:uni.setStorageSync
  • 连接履歴
  • 项目設定保存

2.2 核心技术难点

(1)蓝牙 BLE connect

WeChat小程序的蓝牙 API 有一些限制,需要特殊処理。

难点 1:服务特征值查找

不同蓝牙モジュール的 Service UUID 和 Characteristic UUID 不同,需要智能查找。

// 遍历すべての服务查找可写特征
findWritableCharacteristic() {
  if (this.currentServiceIndex >= this.allServices.length) {
    // すべての服务都遍历完了
    if (this.foundWriteChar) {
      this.finishBluetoothConnection();
    } else {
      uni.showToast({ title: '未找到可写特征', icon: 'none' });
    }
    return;
  }

  const service = this.allServices[this.currentServiceIndex];
  
  uni.getBLEDeviceCharacteristics({
    deviceId: this.connectedDeviceId,
    serviceId: service.uuid,
    success: (res) => {
      const characteristics = res.characteristics;
      
      // 查找策略:
      // 1. 优先找同时サポート write 和 notify 的特征(双向通信)
      // 2. 其次找只サポート write 的特征
      // 3. 最后找サポート writeNoResponse 的特征
      let writeChar = characteristics.find(c =>
        c.properties.write === true &&
        (c.properties.notify === true || c.properties.indicate === true)
      );
      
      if (!writeChar) {
        writeChar = characteristics.find(c => c.properties.write === true);
      }
      
      if (!writeChar) {
        writeChar = characteristics.find(c => c.properties.writeNoResponse === true);
      }
      
      if (writeChar) {
        this.writeCharacteristicId = writeChar.uuid;
        this.foundWriteChar = true;
        this.finishBluetoothConnection();
        return;
      }
      
      // 当前服务未找到,继续下一个
      this.currentServiceIndex++;
      this.findWritableCharacteristic();
    }
  });
}

难点 2:PACO device 80 バイト单包送信

PACO デバイス需要一次送信 80 byte,但 BLE デフォルト MTU 只有 20 byte。

ソリューション:

// 設定 BLE MTU(最大传输ユニット)
setBLEMTU(deviceId, callback) {
  if (wx.setBLEMTU) {
    wx.setBLEMTU({
      deviceId: deviceId,
      mtu: 512,  // 設定为 512 bytes
      success: (res) => {
        console.log('MTU 設定成功');
        callback && callback();
      },
      fail: (err) => {
        console.error('MTU 設定失敗', err);
        callback && callback();
      }
    });
  } else {
    callback && callback();
  }
}

(2)TCP Socket Communication

WeChat小程序的 TCP Socket API 是异步的,需要処理接続タイムアウト、データ分包、粘包等問題。

接続タイムアウト処理:

const connTimeout = setTimeout(() => {
  if (!self.isConnected) {
    uni.hideLoading();
    uni.showToast({ title: '接続タイムアウト', icon: 'none' });
    try { tcp.close(); } catch(e) {}
    self.tcpSocket = null;
  }
}, 8000);  // 8 秒タイムアウト

tcp.onConnect(function(res) {
  clearTimeout(connTimeout);
  self.isConnected = true;
  // ...
});

データ分包処理:

handleTcpResponse(hexData) {
  const hex = hexData.replace(/\s+/g, '');
  
  // 将受信到的データ追加到バッファ
  for (let i = 0; i < hex.length; i += 2) {
    this.receiveBuffer.push(parseInt(hex.substr(i, 2), 16));
  }

  // 使用 MBAP 头的 Length 字段判断フレーム完全性
  while (this.receiveBuffer.length >= 7) {
    const mbapLength = (this.receiveBuffer[4] << 8) | this.receiveBuffer[5];
    const totalFrameLength = 6 + mbapLength;

    if (this.receiveBuffer.length >= totalFrameLength) {
      // 完全な抽出一フレーム
      const frame = this.receiveBuffer.splice(0, totalFrameLength);
      this.parseModbusTcpResponse(frame);
    } else {
      // データ不完全,待機中もっと見るデータ
      break;
    }
  }
}

(3)大データの処理

シリアルポートデバッグ时,もし长时间运行,会产生大量データ。

优化策略:

// メッセージバッファ管理
maxMessageCount: 800,  // 最多保存 800 条
maxVisibleMessageChars: 240,  // 每条最多表示 240 characters

trimMessageBuffer() {
  const maxTotalChars = this.maxMessageCount * this.maxVisibleMessageChars * 2;
  
  while (this.messages.length > this.maxMessageCount || 
         this.totalMessageChars > maxTotalChars) {
    const removed = this.messages.shift();
    if (removed && removed.data) {
      this.totalMessageChars -= removed.data.length;
    }
  }
}

// 超长メッセージ自动截断,サポート展开/收起
isMessageTruncated(msg) {
  return !!(msg && msg.data && 
            msg.data.length > this.maxVisibleMessageChars);
}

getDisplayMessage(msg) {
  if (!msg || !msg.data) return '';
  if (msg.expanded || !this.isMessageTruncated(msg)) {
    return msg.data;
  }
  return msg.data.slice(0, this.maxVisibleMessageChars) + '…';
}

三、设计理念:エンジニア懂エンジニア

3.1 Win7 风格界面

很多人问なぜか。用 Win7 风格?

因为 熟悉

大多数工业エンジニア天天对着电脑,Win7 的界面是最熟悉的。看到这种风格,就有"专业工具"的感觉。

设计细节:

  • 渐变蓝色标题栏
  • 立体边框(外浅内深)
  • 灰色背景 + 白色内容区
  • 等宽字体表示データ(Courier New)

3.2 远程协助功能

这个功能是我在オンサイトデバッグ时想到的。

Scenarios:
现场機器の故障,我搞不定,需要同事远程协助。但传统方式只能电话説明,效率极低。

ソリューション:

// 生成协助会话码
startRemoteAssist() {
  const sessionId = generateRandomSessionId();
  this.remoteAssistSessionId = sessionId;
  this.remoteAssistShowPanel = true;
  
  // 实时转发通信データ
  this.remoteAssistForward('tx', 'Tx', data);
  this.remoteAssistForward('rx', 'Rx', data);
  
  // 受信远程命令
  this._executeRemoteCommand(cmd);
}

使用流程:

  1. Click"远程协助"
  2. 生成 6 位会话码
  3. シェア给WeChat好友
  4. 对方打开后,实时表示通信データ
  5. 对方可以远程送信命令

价值:

  • 无需截图/录屏
  • 实时双向通信
  • サポート多人协作

3.3 データ导出シェア

オンサイトデバッグ完,经常需要把データ发给同事或存档。

导出格式:

【Serial Port Debugging - search function code, register type】
导出时间:2026-04-05 11:00:00
共 50 件のレコード
send:1200 byte,receive:800 byte
========================================

[11:00:00.123] send:01 03 00 00 00 01 84 0A
[11:00:00.456] receive:01 03 02 00 0A B9 C8
[11:00:01.123] send:01 03 00 00 00 0A C5 CD
...

========================================
来自:Modbus Debugging Assistant WeChat Mini Program

実装方式:

buildExportLogContent(options = {}) {
  let content = `${options.title || '【Serial Port Debugging - search function code, register type】'}\n`;
  content += `导出时间:${new Date().toLocaleString()}\n`;
  content += `共 ${this.messages.length} 件のレコード\n`;
  content += `send:${this.sentCount} byte,receive:${this.receivedCount} byte\n`;
  content += `${'='.repeat(40)}\n\n`;

  this.messages.forEach((msg) => {
    const direction = msg.type === 'sent' ? 'send' : 'receive';
    content += `[${msg.time}] ${direction}: ${msg.data}\n`;
  });

  content += `\n${'='.repeat(40)}\n`;
  content += `来自:Modbus Debugging Assistant WeChat Mini Program`;
  
  return content;
}

四、用户反馈:真实的声音

上线 2 个月,已经有 5000+ エンジニア在使用。

反馈 1:

"太方便了!以后出差只带手机就够了。昨天去现场,客户都惊讶我怎么只带个手机就搞定了。"
—— 江苏,自動化エンジニア,王工

反馈 2:

"PID 整定計算器帮了大忙。以前整定参数要试半天,现在入力 L/T/K,直接出结果。"
—— 广东,控制エンジニア,李工

反馈 3:

"远程协助功能太强了。现场問題が発生する,直接シェア给同事,5 分搞定,以前至少要半小时电话沟通。"
—— 浙江,Technical Support,張さん

反馈 4:

"センサーは标定計算器很实用。我们厂有几百个センサーは,以前标定要手算,现在入力2つ点,自动出公式。"
—— 山东,仪表エンジニア,劉さん


五、未来规划

5.1 短期计划(1-3 个月)

  • 增加 OPC UA クライアント側は
  • サポート MQTT 协议デバッグ
  • 增加 BACnet 协议サポート
  • 云端项目同步(VIP Function)

5.2 中期计划(3-6 个月)

  • APP 版本(突破WeChat小程序ポート限制)
  • サポート脚本功能(Lua/JavaScript)
  • 增加图表分析功能(トレンドグラフ、频谱分析)
  • 設備のデータベースの種類(共通装備。参数模板)

5.3 长期愿景

做一个工业エンジニア的"百宝箱"

只要是オンサイトデバッグ能用到的工具,都集成到这个小程序里。

让エンジニア:

  • 少背点东西,轻装上阵
  • 少加点班,早点回家
  • 少一些烦恼,多一些效率

六、写在最后

做这个小程序的初衷,ではない为了赚钱。

只是想解決自己的痛点,顺便帮到もっと見る同行。

20 年的经验告诉我:工具的价值,不在于功能多花哨,而在于真正解決問題。

每一个功能,都是我オンサイトデバッグ时真实遇到过的痛点。

每一行代码,都凝聚着我对这个業界的热爱。

もし你也是工业エンジニア,希望这个小程序能帮到你。

もし你有任何建议,欢迎反馈。

让我们一起,让工业デバッグ变得更简单。


附录:使用方式

方式 1:WeChat扫码

20年经验凝聚:Modbus Debugging Assistant介绍イラスト

方式 2:WeChat Search

Search"Modbus Debugging Assistant"

方式 3:朋友シェア

Click朋友シェア的卡片直接进入


について著者

20 年工业自動化经验,待过デバイス厂商、集成商、甲方。

现专注于産業用IoT、边缘計算、スマートコントロール。

欢迎交流:

  • 📧 Email:support@modbus.cn
  • 💬 WeChat群:扫码追加アシスタント入群

参照资料

[1] Modbus Application Protocol Specification V1.1b3
[2] 齐格勒 - 尼科尔斯 PID 整定方法
[3] WeChat小程序蓝牙开发ドキュメント
[4] IEEE 754 浮動小数点数標準
[5] CRC16 算法原理与実装

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 *.