Modbus通信問題の漸進的解決

無料無料技术资料

这篇内容可直接阅读,适合用于基础学习和検索引流。

Modbus通信問題の漸進的解決

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

この記事:Modbus通信の問題をプログレッシブに解決する:物理層からアプリケーションまでの完全なトラブルシューティングマニュアル·作成者:modbus Technology Team·公開日2026- 0 7 - 0 1

Modbus RS-485 通信が失敗した場合は?本稿では、物理層からアプリケーション層まで、実際のメッセージ分析とトラブルシューティングツールのデモンストレーションを通じて、完全な漸進的障壁除去方法を提供する。キーワード:Modbus 通信トラブルシューティング、RS-485障害物除去、Modbusデバッグ方法、Modbus RTU応答なし、CRCチェックエラー。


産業オートメーションの世界では、Modbus 通信の問題が最大の頭痛の種です。複雑だからではなく、障害点があまりにも分散しているからです。物理層、データリンク層、アプリケーション層、問題のいずれかのリンク、現象は同じかもしれません:駅は要求を出して,駅から戻らない。

この記事ではModbusプロトコルの基本を教えません。すでにModbusを使っていて、問題は“うまくいかない”ことであり、それを実行するためのトラブルシューティングリストが必要だとします。一番下から始めて、上から見ていきます。

コアキーワード:Modbus 通信トラブルシューティング、RS-485障害物除去、Modbus RTU応答なし、CRCチェックエラー。Modbus技術の記事はmodbus.cnをご覧ください。


典型的な現場故障とは?

3つの実際のシナリオを見てみましょう。似たようなシナリオに遭遇したことがあるなら、この記事はあなたのためです。

シナリオ1:下水処理場で、16台のModbus RTUスレーブがRS-485バスに接続されています。毎日午後3時にすべての接続がダウンし、10分後に自動的に再開します。3週間の調査の結果、隣接するポンプハウスの太陽光発電インバータが毎日午後3時に起動し、EMI干渉が485ラインに結合して信号を氾濫させていることがわかりました。

シナリオ2:RS-485アクセスゲートウェイを介した三菱インバータ、プライマリ局は機能コード03読み取り周波数を発行し、時折読み取り、時折CRCエラーを報告します。約数の和は96 00。2日後、最終的にA/B線が逆になっていることがわかりました。メイン駅のAはステーションのBから受信します。なぜ時々データを読むのでしょう?RS-485トランシーバは一定のコモンモード耐性を持っているため、信号品質が良いときに真に通過でき、干渉があるとCRCエラーが発生します。

シナリオ3:生産ラインに新しいサーモスタットが追加され、アドレスは0 5に設定され、0 5は応答しませんが、元の0 7も動作しません。新しい機器を取り外し、0 7は正常に戻ります。最終的に、新しいデバイスはデフォルトで120Ωの終端抵抗を設定し、バスには合計3つの終端抵抗がハングアップしています。インピーダンスのミスマッチ、信号の反射によってすべてのスレーブがタイムアウトします。

これらの3つのシナリオは同じ理由を指します:Modbusは、推測できない、層ごとに除外する必要があります。以下は、このテストの完全なパスです。


レビュー:物理層からアプリケーション層までの4層モデル

Modbus 通信問題のトラブルシューティングパス、低レベルから高レベルまで:

�������������
第4層:応用層                             │ │ │
│スレーブアドレス、レジスタマッピング、関数コード、エンディアン       │ │ │
現象:ステーションからの例外コード、またはデータ値が明らかに間違っている。       │ │ │
├ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┤
第3層:データリンク層                         │ │ │
ボーレート、チェックビット、CRC/LRCチェック               │ │ │
問題:CRCエラー、不完全なフレーム、時折フレームドロップ       │ │ │
├ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┤
レベル2:電気。                             │ │ │
│ A/Bワイヤ接続法、終端抵抗、バイアス抵抗、接地       │ │ │
現象:完全に接続されていない、データはすべて文字化け、断続的に切断される   │ │ │
├ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┤
レベル1:物理的な接続                           │ │ │
│ケーブルの遮断、コネクタの酸化、シールド層、配線経路       │ │ │
現象:メインステーションはデータを送信し、ステーションから完全に応答しない           │ │ │
└ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ┘

障害物除去の鉄の法則:常に最初のレベルからチェックを開始し、問題がないことを確認してから上に進みます。第3層(ボーレート変更、タイムアウト時間変更)で3日間を無駄にした人が何人いるかわかりませんが、最終的には第1層のA/Bラインが反転していることがわかりました。一つだけ覚えているなら、これを覚えてください。


第1層:物理接続チェック

3.1マルチメータの配線-最も基本的な最初のステップ

まずすべての機器をオフにします。マルチメータを抵抗またはブレークオフに調整し、測定:

- A線はマスタからスレーブまでオンになっているかどうか(ライン長とライン径に応じて抵抗10Ω)-B線も同様-AとBの間を短絡できない(抵抗は無限大または無限大に近い)-A/BはそれぞれGNDに対して短絡できない

ターンオフが正常な場合は、電源を入れ、マルチメータをDC電圧に調整します。

Modbus通信問題の漸進的解決插图

- A対GND:静止状態で約2.5 V ~ 3.5 V(バイアス回路による)-B対GND:静止状態で約1.5 V ~ 2.5 V A-B差動電圧:静止状態で約0.2 V ~ 2V、AはBより高くなければなりません。

A-B差動電圧が0Vに近い場合、またはAがBより低い場合、バイアス回路に問題があります。多くの安価なUSB-485コンバータはバイアス抵抗を内蔵しておらず、長いバス上で動作すると、アイドル状態ではA-B差動が不確実な状態にドリフトし、ステーションのUARTからランダムなジャンクデータを受信します。

3.2 A/Bラインの接続方法-このピットは最も多くの人が踏んだ

RS-485のA/B配線には統一された業界ラベル規格はありません。異なるデバイスベンダーによるAとBの定義は逆である可能性がある。以下は、遭遇する可能性のあるタグとそれらの対応です:

共通のマーク別のマーク。アイドル電圧説明書は
A / + / D+ / TX+ / 正Non-InvertingBよりも高い同相の端
B / - / D- / TX- /負InvertingAより低い逆相の端

クイック判定方法:電源オフ時のマルチメータダイオード測定。赤-GND、黒-A-ほとんどのRS-485トランシーバチップ(MAX485、SN75176など)のピンAは、GNDに逆保護ダイオードを備えており、約0.6 Vの順方向電圧降下を測定します。BピンはGNDと同じ。それができない場合は、極性を再測定します。

もっと暴力的な方法があります。うまくいかない場合は、AとBを交換してみてください。冗談ではありません-これは現場で最も一般的な“障害物除去”です。多くのインバータのRS-485 端子マーキングは逆であるためです。

Modbus通信問題の漸進的解決插图1

3.3終端抵抗-いつ、どこで接続するか

終端抵抗は120Ωで、バスの両端に接続されています。誰もが聞いたことがある言葉。しかし、実際のプロジェクトの成功は以下の通りです。

いつ受け取るべきか。バスの長さが50 m以上、またはボーレート≧ 19200。判断基準は長さではなく、オシロスコープを使用して信号波形を見ることです。明らかなオーバーシュートや反射ステップがある場合は、端子抵抗を追加します。

いつ連絡できませんか?テストベンチ、1メートル、ボーレート9600。この場合、終端抵抗は駆動能力の不足により信号振幅が低下する可能性があります。

簡単に見落とされる穴。多くのRS-485デバイスは、ジャンパまたはダイヤルスイッチによってイネーブルになる終端抵抗を内蔵しています。これを知らない場合は、バスに手動で120Ωを追加し、デバイスも120Ωをオンにしています。これは並列に60Ωに相当します。信号振幅が大幅に低下しますが、より多くの接続がありません。これが第3話の舞台。

トラブルシューティング方法:すべての機器の電源がオフになり、マルチメータ抵抗ファイルはA-B間のDC抵抗を測定します。通常は数kΩから数十kΩ(バイアス抵抗によって決まります)です。60Ωまたは120Ωの場合、少なくとも1つの終端抵抗が働いています。デバイスを1つずつ抜き、どのデバイスが抜いた後にインピーダンスが変化するかを確認します。

3.4シールドと接地-ほとんどの人が間違っているところ

RS-485シールドはシングルエンド接地地上または地上に向かっている。両端が接地されている場合、グランド電位差はシールド層に循環を形成し、代わりに信号ラインに干渉をもたらします。

また、RS-485にケーブルの空きケーブルを使用しないでください。ネットワークケーブルは100Ωの特性インピーダンス、RS-485ケーブルは120Ωの特性インピーダンスであり、ミスマッチは高速で信号が大きく反射する原因となります。短い距離(10 m)は十分ですが、正式なエンジニアリングプログラムとしては使用できません。通常のRS-485ケーブルは、Belden 3105Aなどの特性インピーダンス120Ωのツイストペア+シールド層のペアです。


四、第二层:电気层検査

物理的な接続が問題ないことを確認した後、まだ接続またはエラーがある場合は、電気層に入ります。

4.1オシロスコープで波形を見る

オシロスコーププローブは、A線対GND、B線対GNDに取り付けられています。

- アイドル状態でのAとBの電圧値が安定しているか(AはBより少なくとも200mV高い必要があります) -データ転送があるとき、AとBは標準的な差動信号を示しているか(AとBはミラー対称) - 波形の立上りエッジと立下りエッジがきれいであるか(明確なステップや円弧がない必要があります)。

波形エッジが丸い場合は、ケーブルの容量が大きすぎる(ラインが長すぎる、またはワイヤ径が細すぎる)、または駆動能力が不十分である可能性があります。通常は減少する。

4.2バイアス抵抗(フェイルセーフバイアス)

RS-485規格では、差動入力電圧≥ 200mVの場合はロジック1、≤-200 mVの場合はロジック0と判断する必要があります。しかし、バスがアイドル状態(すべてのデバイスが駆動されていない場合)では、差動電圧が-200 mV ~+200 mVの不確実な範囲に入る可能性があり、レシーバはランダムなデータを出力します。

このため、バイアス抵抗が必要です。バスのどこか(通常はマスターまたはバイアス回路がある場所)で、2つの抵抗を使用してAをVCCに、BをGNDにプルダウンし、アイドル状態でA Bを200mVの差で保証します。

一般的なバイアス抵抗値は、680Ωまたは560Ω(プルアップとプルダウンにそれぞれ1つずつ)です。ただし、バイアス抵抗と終端抵抗は並列関係にあることにご注意ください。終端抵抗が120Ω、バイアス抵抗が680Ωの場合、実際のアイドル差動電圧は次のようになります。

V_diff = VCC × R_term / (R_term + R_pullup + R_pulldown)
       = 5V × 120 / (120 + 680 + 680) ≈ 0.405V = 405mV

この値は200mVであり、要件を満たします。しかし、終端抵抗を60Ω(2つの120Ω並列)に変更すると、差動電圧は約210mVになり、臨界点にとどまります。したがって、終端抵抗の数と位置がバイアス抵抗を計画するための前提条件です。


第3層:データリンク層検査

電気層は大丈夫ですが、通信はまだ間違っています。プロトコル自体への障壁です。このレイヤーにはシリアルパックツールが必要です。

5.1スレーブがModbusをサポートするか確認する

ここではデバイスの説明書を表示するのではありません。サポートが書かれていることはファームウェアが実際にオンではありません。シリアルアシスタントを使用して、最も簡単なリクエストフレームを送信し、ステーションから戻ることができません。

Modbus RTUを例にとると、関数コード03(リードホールドレジスタ)が発行されます。

スレーブのアドレス01
関数コード   03
開始アドレス00 00レジスタ40001
レジスタ数00 01(読み出し1 个)
CRC      84 0 A

フルフレームFull Frame   0 1 0 3 0 0 0

USB-485コンバータをスレーブ局のRS-485ポートに接続し、シリアルアシスタントはボーレート/データビット/検証ビット/ストップビットを設定し、上記のフレームを送信します。立っている場合:

01 03 02 00 2A 39 9B

スレーブはModbusをサポートしており、レジスタ40001の値は0 x 0 0 2 A(10進法42)です。応答がない場合は、以下の項目を確認してください。

5.2ボーレートとフレームフォーマット

Modbus RTUのデフォルトフレームフォーマットは、通常、96 00 - 8-N-1(ボーレート96 00、8データビット、チェックなし、1ストップビット)です。しかし、多くの古いデバイスは9600- 8-E-1または19200- 8-N-1を使用しています。4800をデフォルトする国内機器もあります

USB-485コンバータのボーレートが正しい場合、スレーブは応答します。ボーレートが間違っている場合、スレーブは文字化けを受信します。局から文字化けを見た後の動作は、ファームウェアの実装に依存します。一部のデバイスは直接破棄され、一部のデバイスは失敗後に受信バッファをリセットしようとします。

ボーを推測しない。手元に機器マニュアルがない場合は、愚かな方法を使用してください:USBロジックアナライザ(数十ドルの種類)をAとBラインにハングアップし、ステーションから電源を入れた後にデータが送信されたかどうかを確認します。一部のスレーブは起動後に識別情報を送信し、このデータのビット幅を測定することでボーレートを逆にすることができます。

5.3検証ビット、停止ビット、データビット

96 00 - 8-N-1と96 00 - 8-E-1の違いは、単なるチェックビットではありません。フレーム長が変更されました:

- 8-N-1 1開始ビット+ 8データビット+ 1 停止ビット= 10ビット/バイト-8-E-1 1開始ビット+ 8データビット+ 1チェックビット+ 1 停止ビット= 11ビット/バイト

8-N-1を使用し、スレーブが8-E-1を使用する場合、スレーブは停止ビットをチェックビットとして使用します。その逆も同様です。これは、ストップビットが固定ロジック1であるため、50%の確率で“チェックアウト”されるため、完全なエラーではなく時折のチェックアウトエラーにつながります。

そのため、ボーレート、チェックビット、ストップビットの組み合わせは、集計するのではなく、機器マニュアルから確認する必要があります。16スレーブ、7つのボーレート× 3つのチェック× 2つのストップビット= 42の組み合わせ。自殺は自分自身を拷問する。

5.4包分析--区分“発出していない”“

シリアルモニタソフトウェア(Device Monitoring Studio、シリアルポートモニタなど)を使用して、実際の送受信データをキャプチャするか、バスに2つのUSB-485コンバータを背中合わせに接続してください。

3つの重要な指標:

マスターステーションからのフレームが正しいかどうか。CRC計算機を使用して、送信したフレーム内のCRCペアが正しいことを確認します。一般的なエラーは、CRCとローのバイトが逆になっていることです。Modbus RTUは、CRCのローバイトを前に、ハイバイトを後に指定します。例えばフレーム。01 03 00 00 00 01CRCは0 x 840Aで、フレーム内では84 0A代わりに0A 84。

駅からの応答はない。マスターフレームが正しく送信されたが、合理的な時間(例えば200ms)内にデータが戻ってこない場合、スレーブアドレスが一致するかどうか、バス上の1つのデバイスがオンラインになっているかどうか(別のデバイスを追加するとアドレスが競合する可能性がある)、スレーブが“リスニング”モードになっているかどうかをチェックします。

駅からの反応は?異常フレームがステーションから戻った場合、機能コードの最高位置 1に異常コードが追加されます。01 83 02 C0 F183 = 0 3 + 0 x 80、例外コード0 2 =不正なデータアドレス)、少なくともリンク層が通過している場合、問題はアプリケーション層にあります。

5.5 CRCチェックエラーの正確な検出

CRCチェックエラーは最も一般的なリンク層の問題であり、以下の原因が考えられます。

1.A/Bは逆です。差動極性が反転し、すべてのデータビットが反転し、CRCが正しくない確率があります。しかし、コモンモード許容度が時々正しいことがあります。これがシナリオ2です。2.ボーレート偏差。2つのデバイスのクロックバイアスにより、サンプリングポイントがドリフトします。ボーレート偏差が± 2%を超えると、レシーバUARTは間違ったビット値をサンプリングします。特に高温環境下では、MCU 内部のRC発振器の温度ドリフトは± 5%に達する可能性があります。3.配線の緩みや接触不良。ビットが失われると、後続のすべてのバイトがシフトし、CRCはエラーになります。4.電磁干渉です。インバータの起動時、電気溶接機の動作中の強いEMIは、伝送ラインのレベルを直接変化させ、ビットエラーを引き起こします。特定のデバイスの起動時にのみCRCエラーが発生する場合は、干渉源をロックすることができます。


第4層:アプリケーション層の検査

リンク層は通過した(スレーブが応答し、CRCが正しい)が、返されるデータが正しくないか、期待通りに機能しない。

6.1駅からの住所

Modbus RTUフレームの最初のバイトはスレーブアドレスである。アドレスの範囲は1- 24 7

アドレス0はブロードキャストアドレスであり、マスターは0で書き込みコマンドを送信し、すべてのスレーブは実行するが応答しない。アドレス0でreadコマンドを送信した場合、スレーブからの応答はありません。

多くの新しいデバイスのデフォルトアドレスは1です。バス上にすでにアドレス1のデバイスがあり、工場出荷時のデフォルトアドレスも1である新しいデバイスがある場合、2つのデバイスはプライマリ局が1をアドレス指定するときに同時に応答します。バス競合、プライマリ局が受信するデータは、CRCエラーまたは文字化けとして現れる2つの信号の重ね合わせです。

トラブルシューティング方法:バスに1つのスレーブステーションだけを接続し、1つずつテストします。これは最も愚かですが、最も効果的な方法です。一度テストして、次のものを追加します。

6.2レジスタアドレスオフセット

Modbusのレジスタアドレスには2つの概念があり、混同すると間違ったデータが表示されます。

-プロトコルアドレス:0から始まる16ビットの値を入力します。コード03が保持レジスタを読み出すとき、プロトコルアドレス0に対応するのが1番目の保持レジスタである。-PLCアドレス:メーカーがマニュアルに書いた番号は、1から始まるか、40001から始まるかもしれません。

例:デバイスマニュアルには“周波数設定値はレジスタ40003にあります”と書かれています。この40003には3つの意味がある。

メーカーの習慣プロトコルアドレスフレームに記入した値。
40003はプロトコルアドレスです。4000340003(1バイトの範囲外、メーカーの処理方法に依存)
40003は保持レジスタ領域3番目を示す200 02
40003は保持レジスタ領域が3番目(0から始まる)を示します。300 03

わからない場合は、プロトコルアドレス0から開始し、10個の連続したレジスタを読み込みます。既知の値(デバイスのモデルコード、ファームウェアバージョン番号、または現在の周波数などの既知のデータ)を返すアドレスを確認し、ベンダーのアドレス指定を逆にします。

6.3機能と機能コード

Modbus標準機能コードと対応するデータ領域:

- 01:リードコイル(0xxxx) - 02:リード離散入力(1xxxx) - 03:リード保持レジスタ(4xxxx) - 04:リード入力レジスタ(3xxxx) - 05:ライトシングルコイル-06:ライトシングル保持レジスタ-15:ライトマルチコイル-16:ライトマルチホールドレジスタ

しかし、すべてのスレーブがすべての機能コードを実装するわけではない。単純なサーモスタットは0 3と0 6しかサポートしていないかもしれません。16(マルチレジスタへの書き込み)を送信し、例外コード01(不正な関数コード)を返します。

例外コードがステーションから返された場合、例外コードは次のようになります。

異常コード。意味の意味よくある原因
01違法な機能この機能はサポートされません。
02違法なデータアドレスレジスタアドレスが范囲外
03不正なデータ値書き込まれた値は許容できません(範囲外など)
04スレーブ機器の障害スレーブのセルフテストに失敗
05確認済み。コマンドは受信されたが処理に時間がかかる
06駅の設備が忙しい前のコマンドを処理中

例外コードを受け取るのは良いことです。リンク層が通過し、物理層が問題なく、アプリケーション層に集中できることを示します。

6.4エンディアンビッグエンド/リトルエンド

Modbusプロトコルは、マルチバイトのデータをビッグエンディアン(上位バイトが先)で転送することを規定している。32ビット浮動小数点数はどうでしょう?規格には定義がない。各メーカーは以下のように述べた。

- ABCDシーケンシャル(最上位バイトが先頭)を使用するベンダーもあります。CDABシーケンシャル(2つのワードが交換され、各ワードの内部はビッグエンディアンのまま)を使用するベンダーもあります。

2つの連続した保持レジスタを32ビット浮動小数点数として読み取ると、読み取られた値は期待値から数桁異なり、バイトオーダーが逆になる可能性があります。既知の値(周波数を50.0 Hz(IEEE 754は0 x 42480000)など)を使用して読み出し、16進数の順序を見て、ベンダーのエンディアンを逆にします。


駅から徐々に追加する正しい方法

ここで、スレーブをチェックし、通信が正常であると仮定します。次に、より多くの駅を追加します-これは蛾を得る最も簡単なリンクです。

正しい実践:

1.バス上にスレーブ局(スレーブ局A)を1つだけ残し、A 通信が正常であることを確認する。2.スレーブAを切断し、スレーブBのみを接続し、B 通信が正常であることを確認する。3. AとBが同時に接続され,両者とも通信が正常であることを確認する. 4. A+Bが正常なら、すべてを切断し、Cのみを接続し、Cが正常であることを確認します。5. A+B+Cを同時に接続し、3つすべてが正常であることを確認します。6.このように。

ステップ3 A+Bで問題が発生した場合は、以下の2つをチェックしてください。

-アドレスの競合:AとBのスレーブアドレスは同じです。-終端抵抗の蓄積:AとBの両方が内部で120Ωの終端抵抗をイネーブルしています。3.3節を参照。

ステップ5でA+B+Cに問題が発生した場合(最初の2つのステップは正常です)、最大確率は次のようになります。

-バス駆動能力が不十分。各スレーブのRS-485トランシーバは、受信状態での入力インピーダンス(標準≥ 12kΩ)を備えています。RS-485規格によると、バス上に最大32ユニットの負荷があります。1/4または1/8負荷のトランシーバを使用している場合は、より多くの量が可能です。しかし、最も安価なMAX485クラスのチップを使用すると、30台のスレーブをぶら下げた後の信号減衰が明らかになります。ソリューション:1/4または1/8負荷トランシーバを選択するか、RS-485リピータを追加します。-バスのトラブル。RS-485はデイジーチェーンDaisy Chainでなければならず、星形に分岐してはならない。星型トポロジは、分岐点のすぐ近くに信号の反射を生成する。フィールド配線が星状になって変更できない場合は、RS-485ハブまたはリピータを追加してブランチを分離します。


八、主要局のポーリングポリシーとタイムアウト設定

8.1オーバータイムとは?

Modbus RTUのタイムアウトには2つのレベルがある。

文字間タイムアウト(t 1.5):2つの連続するバイト間の最大許容間隔は、1.5文字の転送時間に設定されます。フレームが終わるかどうかを判断します。9600ボーレートでは、1文字(11ビット)は約1.15 ms、t 1.5 ≈ 1.75 msである。

フレーム間のタイムアウト(t 3.5):連続する2つのフレーム間の最小間隔は、3.5文字の送信時間に設定されます。9600ボーレートではt 3.5 ≈ 4ms。

マスターステーションがリクエストを送信してから30ms待っても応答が届かない場合は、単にスレーブステーションが壊れていると考えることはできません。一部のスレーブ(特に低速 MCU駆動のサーモスタットや電力メーター)は、リクエストを処理するのに50-100msかかります。この値を少なくとも200msの開始値とし、通信が正常であることを確認してから実際の応答時間に応じて短くする。

8.2最初に読む。

レジスタに書き込む前に、既知のレジスタ(デバイスモデル、ファームウェアバージョン、または現在の値がわかっているレジスタなど)を読み取ります。読み取り操作が正常であることを確認した後、書き込みを試みます。

すぐにコイルに1を書かないでください。そのコイルが何を制御しているのかわかりません。おそらく非常停止信号です。0 6関数コードで保持レジスタを書くのと同じように、最初に書くレジスタが何をするのかを考えてみましょう。


9.チェックリストの迅速なチェック

産業制御の現場では、この記事の順序でステップバイステップで行く条件がない場合があります。このテーブルを携帯電話に保存し、デバッグ時に確認してください。

シリアル番号。チェック項目ツール·ツール規格の採用
1A/Bラインオフマルチメータ抵抗器A線が導通、B線が導通
2A/B線は短絡しないマルチメータ抵抗器A-B抵抗1kΩ
3アイドル電圧マルチメータDC電圧A B、差は200mV
4終端抵抗マルチメータ抵抗器(機器の電源オフ)A ~ B抵抗120Ωまたは1kΩ(イネーブルかどうかにより異なります)
5バイアス抵抗体マルチメータ抵抗器(機器の電源オフ)A-VCCとB-GNDはそれぞれ約680Ω
6ボーレート/チェック/ストップビット機器マニュアルスレーブ·マニュアルとの整合
7空のフレームテストシリアルアシスタントスタンドから右。01 03 00 00 00 01 84 0A答えがあります
8CRCは正しい。CRC計算機プライマリ局からのCRCは計算と一致する
9CRCの正しい応答CRC計算機スレーブ応答のCRCは計算と一致する
10駅の住所はユニーク。Access By Accessテストバス上に重複アドレスがない
11レジスタアドレスは正しい。0から始めて10個連続で読む既知の値を含むデータを返す
12バイト順序は正しい既知値の比較32ビット値の解析はベンダー仕様に準拠しています

FAQ:高周波障害物の除去

Q 1:メインステーションはデータを送信し、局から時折バック、ボーレート9600。なんで?

A:時折の問題の最も一般的な原因は、A/Bワイヤの反転、終端抵抗の不適切な設定、または電源干渉です。まずA/B極性を確認し、次に端子抵抗の位置と数を確認し、最後にオシロスコープで波形を見ます。

Q 2:USB-485コンバータはテストベンチで正常に動作しますが、現場では動作しません。多くの変換器が同じです。

A:2つの可能性。まず、フィールドのRS-485ラインには強いコモンモード干渉があり、通常のUSB-485コンバータのコモンモード除去比が不十分です。絶縁を備えた産業用グレードのUSB-485コンバータ(UT-890 Aまたは同等のものなど)を交換してください。2つ目は、コンピュータのUSBポートグランドとRS-485デバイスのグランド間に電位差があり、コンバータを介してループを形成します。絶縁型コンバータはこの問題を解決できます。

Q 3:複数のスレーブがポーリングする場合、最初のスレーブは常に通過し、次の数はしばしば通過しません。

A:プライマリ局のポーリング間隔を確認します。最後のリクエストを送信した直後に次のリクエストを送信し、バス上の最後のレスポンスがまだ送信されていない場合、競合が発生します。2回のポーリング間隔がスレーブ数×(リクエスト時間+レスポンス時間+t 3.5)以上であることを確認してください。9600ボーレートでは、各スレーブの平均応答時間が15msの場合、10のスレーブのポーリング間隔は少なくとも200msに設定されます。

Q 4:CRCは常にエラーを報告し、A/B極性とボーレートをチェックしても大丈夫です。

A:ロジックアナライザまたはオシロスコープで信号品質を確認してください。立上りエッジと立下りエッジの傾きを見ると、緩すぎる(30%ビット幅)と、ライン容量が大きすぎるか、駆動能力が不十分である可能性があります。4800まで下げてみてください。それができれば、信号品質が問題の原因です。

Q 5:Modbusがサポートされていないことを確認するには?

A:髪。01 03 00 00 00 01 84 0A過去に。そうでない場合は、9600/19200/4800ボーレート(8-N-1と8-E-1)を使用してもう一度試してください。すべてが動作しない場合は、デバイスの電源がまったく入っていない、RS-485インタフェースが有効になっていない、ジャンパまたは設定が必要でない、デバイスRS-485がASCIIモードのみをサポートしている、デバイスに特別なウェイクアップシーケンスが必要ななどの可能性を確認します。


再び話す問題がある。このようなことを現場でデバッグすると、テキストは80%はっきりと言うことができ、残りの20%は自分で試してみてください。しかし、この順序で進むと、後戻りすることなく、Modbus 通信のほとんどの問題を解決するのに1日で十分です。

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

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

エンジニア会員

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

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

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

发表回复

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