シリアル通信のよくある問題の分析と解決策

無料無料技术资料

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

シリアル通信のよくある問題の分析と解決策

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

この記事:シリアルトラブルシューティング:レベルからプロトコルへの完全なマニュアル·作成者:modbus Technical Team·Posted on 2026- 0 7 - 0 1

Abstract:シリアルポート通信の障害、文字化け、断続的な継続?この記事は、RS-232/RS-485/RS-422の3つの物理層の配線検査、電気層診断、パラメータマッチング、一般的な故障シナリオをカバーし、実際の波形解析とツールの使用方法を備えた実用的なシリアルバリア除去マニュアルです。キーワード:シリアルポート通信障害、RS-485バリア、ボーレートのミスマッチ、共通の問題、USBからTTLデバッグ。


産業現場でのシリアルポート通信のデバッグでは、すべてのエンジニアが理解している経験があります。配線に問題がなく、パラメータが間違って設定されておらず、機器はデータに戻りません。長い間調べてみると、GNDが接続されていない、または接続されていますが、隣接するインバータのGNDコモンモード干渉が大きすぎて信号が氾濫しています。

シリアル通信の問題は、Modbusよりも分散しているためです。プロトコルの内容を気にしないので、ビットを渡すだけです。したがって、“通過できない”理由は、物理層からホストコンピュータドライバにまで広がります。

この記事は、“物理配線→電気層→パラメータマッチング→ツールチェーン→一般的な故障シナリオ”の順に展開します。最初から最後まで確認すると、ほとんどのシリアル通信障害を見つけるのに十分な午後です。


シリアル通信の基礎:3つの物理層、1つの論理層

シリアル通信の概念は、実際にはエンジニアリング現場で3つの異なる物理層をカバーします。多くの人が“シリアルポートがない”と言うとき、RS-232、RS-485、RS-422を区別しませんが、障害性能やトラブルシューティング方法は大きく異なります。

RS-2323本のライン、RX、TX、GND。ポイントツーポイント通信、全二重。レベルは± 3 V ~±15Vで、アイドル時はTXとRXの両方が負電圧(ロジック1)に保たれます。最も重要な制約は距離です。ドライブなしでは15メートル以内です。この距離を超えると波が急になる。

RS-485AとBの2つの線(+と-とも呼ばれる)。差動信号、ハーフデュプレックス。バスは最大32ノード(リピータでは最大256ノード)を接続できます。最大距離は約1200メートルですが、ボーレートが高いほど距離が短くなります。115200 bpsでは、実際に使用できるのは約100メートルです。この制約はしばしば現場で見落とされます。

RS-422RX+、RX-、TX+、TX-の4本のライン。全二重差動は、実際にはRS-485の“受信と送信”です。485-4(485-2はRS-485の2線を指す)と表記されることも多い。RS-485との最大の違いは、RS-422は複数のレシーバに接続できる1つのトランスミッタしかなく、複数のトランスミッタをサポートしていないことです。

シリアル通信のよくある問題の分析と解決策插图

これら3つの物理層の障害モードについては、以下のセクションで説明します。


デバッグ前のセルフテスト:ツール自体に問題がありますか?

最も見落とされやすいのは、デバッグに使用するツール自体が悪い可能性があることです。

2.1 USB-TTLモジュールセルフテスト

USBをTTLモジュールのTXとRXに接続し、デュポンケーブルを直接接続します。シリアルアシスタント(SSCOMまたはAccessPortを推奨)を開き、通信しようとしているデバイスと同じパラメータ(ボーレート96 00、8データビット、1ストップビット、無検証)を設定します。データのリスト(16進数を推奨)01 03 00 00 00 01この可変バイトフレーム)は、受信エリアがそのまま返されるかどうかを確認します。

注意点は16進数で見る必要があります。ASCIIモードで表示すると、0x00、0x0A、0x0Dこれらの特殊文字は食べられ、“戻った”と表示されますが、実際にはバイト数が少なくなります。

短い接続後に送受信が一貫していない場合は、USBデータケーブルを交換してもう一度試してみてください。一部の充電ケーブルにはデータチャネルがなく、接続ライトが点灯しますが、番号は送信されません。笑わないで、それは現実です。

2.2シリアルヘルパーはパラメータが有効であることを確認

多くの人は、シリアルアシスタントインタフェースで“96 00,8,N,1”を選択すると本当に96 00だと思っています。実際には、シリアルアシスタントインターフェイスは9600と表示されますが、基盤となるWindowsドライバは実際に115200を開きます。USBを挿入するとシリアル番号が変更され、ソフトウェアが古い構成を使用しているためです。最もセキュリティな方法は、ロジックアナライザを使用して送信した最初のバイトを取得し、ビット幅が1/9600 ≈ 104µsであることを確認することです。

ロジックアナライザをお持ちでない場合は、少なくとも別の正常な通信デバイスを使用して、現在のシリアルパラメータが本当に有効かどうかを確認してください。


第三に、物理配線検査:問題の90%はこの層にあります。

3.1共有地-最も忘れられた3番目の線

RS-232 通信は共通にする必要があります。GNDは0レベルのリファレンスリファレンスを提供する。2つのデバイスのGNDが接続されていない場合、TX 上の±12V 信号が反対側に浮かんでいることは意味がありません。つまり、レベルの高低を判断するための基準点がありません。

実際のトラブルシューティング方法:マルチメータはビープファイルにダイヤルし、最初のポイントAデバイスのGNDピン、最初のポイントBデバイスのGNDピンをオンにしてください。同時にDC電圧レベルにヒットし、両端のGND間の電圧差を測定します。± 3 Vを超えると、システムに深刻な接地問題があります。GNDを接続しても通信が揺れます。

RS-485は理想的には共通接地線を必要としない。差動信号はA/B間の電圧差のみを見て、GNDを参照する必要はありません。しかし、実際には、2つのデバイスのGND間のコモンモード電圧がRS-485トランシーバのコモンモード入力範囲(通常-7 V ~+12 V)を超えると、通信が不安定になります。したがって、産業現場のRS-485バスには、弱いGNDリファレンス(一端をグランド、もう一端を100Ω抵抗+ 0.1µFコンデンサを介してGNDに接続)を接続し、グランドループを形成せずにコモンモード電圧を制限するのが最善です。

3.2 RX/TXクロスオーバー-正しいですか?

RS-232のルールはシンプルですが、誰かが間違って接続します。AデバイスのTXはBデバイスのRXに接続され、AデバイスのRXはBデバイスのTXに接続されます。

確認方法:マルチメータダイオードファイルを使用してUSB-TTLモジュールのTXピンを測定します。アイドル状態では、TXは負電圧(約-5 V ~-12 Vの範囲)を出力する必要がありますが、RXはアイドル状態では高抵抗状態(電圧が不確実です)です。RXに安定した負電圧が検出された場合、RXとTXは逆になります。

3.3 RS-485のA/Bライン-異なるメーカーの混乱したマーキング

RS-485のA/Bラインマーキングには、メーカー別の機器で統一された規格はない。遭遇するかもしれません:

機器の注記Highレベル(論理1)対応する極性実践の実践
A / BAは正でBは负であるAは别のデバイスのAに接続し、BはBに接続する
+ / -+ 正のため、-負のため+ 接 B、- 接 A(反、但就)
D+ / D-D+が高いD+ 接 A、D- 接 B
485-A / 485-BAは高い。AはAに接し,BはBに接する

最も信頼性の高い方法は、マークを見ることではなく、チップマニュアルを見ることです。お使いのデバイス上のRS-485トランシーバチップのモデル(MAX485、SP 3485、SN65HVD 0 8などが一般的です)を見つけ、データシート-DI対応送信入力、RO対応受信出力、DE/RE対応はトランシーバイネーブルです。Aピンは受信机の同相入力端-inverであり、Bピンは反転入力端Inverである。同じ相、逆相、逆相--接続がうまくいかない場合は、AとBを交換します。これは冗談ではありません。これは最も一般的に使用される方法です。

3.4 RS-422の4線配線

RS-422は、RS-232のRXをRX+とRX-に、TXをTX+とTX-に分割します。配線ルール:送信側のTX+は受信側のRX+に接続され、送信側のTX-は受信側のRXに接続されます。

シリアル通信のよくある問題の分析と解決策插图1

クロスプロトコル緊急接続コントローラがRS-232、センサがRS-422で、コンバータがない場合は、5メートル以内の短い距離で以下の緊急シナリオを試すことができます(安定性は保証されておらず、デバッグのみ)。

  • 422デバイスのTX+232デバイスのRX
  • 422デバイスのTX-232デバイスのGNDに接続
  • 422デバイスのRX+と232デバイスのTX
  • 422デバイスのRX-232デバイスのGNDに接続

原理は、422の差動信号が短距離にあり、GNDに対するシングルエンドの振幅は232を識別するのに十分であるということです。しかし、これは完全に非標準的な使用であり、使用できない。長期使用のための生産ラインが必要な場合は、RS-232からRS-422コンバータ、数十ドルを購入してください。


第四に、電気層診断:マルチメータが不十分な場合

物理的な配線が完了し、ラインは正しいですが、データがありません。電気層に依存します。

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

オシロスコーププローブクリップGND、プローブピンとTXピン。RS-232はアイドル時に負電圧(-5 V ~-12 V)です。データの送信が開始されると、開始ビットは正電圧(+5 V ~+12 V、論理0に対応)、8データビット(下位ビット)、チェックビット(存在する場合)、最後のストップビットは負電圧(論理1)に戻ります。

通常の波形は正方形でなければなりません-立上りエッジと立下りエッジは単純です。方形波の角度が丸い場合、またはレベル振幅が著しく不十分(± 8 V程度である必要がありますが、実際には±2Vしかありません)、それはドライバチップが老朽化しているか、USB-232モジュールの電源が不足していることです。

数式:各ビットの持続時間= 1 /ボーレート。9600bpsでは1ビットあたり約104µs、115200bpsでは約8.68µsである。オシロスコープカーソルで開始ビットの幅を測定し、期待値から明らかに逸脱している場合は、ボーレート設定が間違っています。

4.2差動プローブを用いたRS-485のA/B 波形

RS-485の差動電圧= V_A-V_Bである。送信論理1の場合はV_A V_B(差動電圧≧ +1.5V),送信論理0の場合はV_A V_B(差動電圧≦ − 1.5V)である.

本当に有用な診断はバスが空いているとき。RS-485バス上のすべてのトランスミッタがオフになっている場合、A/B間の差動電圧はフェイルセーフバイアスによって定義されたアイドルレベル(通常は≥ +200 mV、レシーバが0V付近で発振しないように)に維持される必要があります。マルチメータDCファイルを使用してA/B間の電圧を測定し、アイドル時の読み取り値が0Vに近い場合、レシーバ出力は不確実です。通信は断続的または完全に0 x FFです。

バイアス抵抗の設計値は、ノード数と終端抵抗によって異なります。

  • 終端抵抗Rtは通常120Ωで両端に1つずつ、等価並列接続後Rt_eq = 60Ω
  • アイドル時にV_AB ≥ 200mVを保証するためには、プルアップ抵抗(B ~ VCC)とプルダウン抵抗(A ~ GND)が必要です。
  • VCC=5Vを例にとると、プルアップ/プルダウン抵抗≈(VCC − 0.2V)* Rt_eq/(2 * 0.2V)≈ 720Ωが必要となる。実際には680Ωまたは560Ωを選択できます。

バイアス抵抗は、バス上に1つのセット(1つの位置)だけで十分であり、各ノードをはんだ付けする必要はありません。

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

終端抵抗120Ωをバスに接続する必要があります。物理的な両端反射信号を除去するためですすべてのスレーブが接続されているわけではありません。5つのスレーブがそれぞれ120Ω、等価並列接続後にわずか24Ωの場合、RS-485ドライバチップを直接プルダウンする可能性があります。

シーン判断の使用:

  • ボーレートが19200未満で、バス長が50 m未満の場合は、端子抵抗なしでも使用できます。
  • ボーレート115200または200メートル以上の距離は接続する必要があります。
  • スタートポロジ(デバイスのA/Bラインが1つの中心から複数のラインに分岐している)の場合、終端抵抗の位置を決定することは困難です。このトポロジ自体はRS-485には適していません。

パラメータマッチング:ボーレート、データビット、ストップビット、チェックビット

シリアルポート通信の5つのパラメータ(ボーレート、データビット、ストップビット、チェックビット、フロー制御)は、両端で一致する必要があります。これは常識ですが、最もエラー率の高いリンクでもあります。

5.1ボーレート不一致時の波形特性

通信中、双方は開始ビット(アイドル(ハイ)からローにジャンプする立下りエッジ)を認識します。ボーレートが一貫していない場合、受信側は間違ったタイミングでサンプリングし、読み取りは文字化けします。

シリアル通信のよくある問題の分析と解決策插图2

具体的な値を使用して、デバイスAは9600bps、デバイスBは921600bpsです。BはAに1バイト(1開始ビット+ 8データビット+ 1 停止ビット= 10ビット)を送信し、B側には= 10 / 921600 ≈ 10.8µsがかかる。A側が1バイトを受信する時間= 10 /96 00 ≈ 1.0 4 ms。Aは1.0 4 msの時間ウィンドウでわずか10.8μsの低レベルパルスを見ますが、これはノイズとして無視され、Aは“このフレームが送信され始めた”とは考えません。

シリアル通信のよくある問題の分析と解決策插图3

A(96 00 bps)はフレームを送信するのに1.0 4 msかかり、B(9216 00 bps)は10.8μsウィンドウの最初のビットのエッジのみをキャプチャし、最後の9ビットのサンプルポイントはすべて間違っています。

したがって、“ボーレートミスマッチ”の障害現象は、“完全に通信しない”ではなく、“通信しているがデータがすべて乱雑”である。そのため、多くの人は配線が正しいとは思わず、パラメータの飛躍を無視します。

5.2ストップビットとチェックビット

ストップビットの数によって、フレーム間の最小間隔が決まります。ほとんどのデバイスは1ストップビットを使用する。しかし、一部の古いデバイス(特に80 年代の産業用機器)では、プロセッサが1つのストップビット時間で次のフレームを受信する準備ができていなかったため、2つのストップビットが必要でした。2つのストップビットを持つデバイスと通信するために1つのストップビットを使用している場合、大量のデータを送信するとフレームが失われます。中間データではなく、受信側が次のフレームの準備ができていないためです。

チェックビット(None / Odd / Even)も間違いやすいです。さらに悪いことに、シリアルアシスタントソフトウェアのパリティ設定の一部が有効ではありません。インターフェイスではEven Parityが選択されていますが、実際には底が開きません。そのため、ソフトウェアのインターフェース表示だけでなく、ロジックアナライザを使用してフレームのビット構造を測定することはできません。


六、実際の故障シナリオと解決

シナリオ1:コンピュータUSBシリアルポートはデバイスと通信でき、HMI画面を変更できません。

これは非常に一般的で、主に以下の理由から:

  1. ** コンピュータのUSB-Serialモジュールの電流制御ピンがハイになっている可能性があります。多くのUSB-TTLモジュールはRTS/DTR 信号自動管理を内蔵しています。デバイスがシリアル通信に加えてRTS/DTRなどのフロー制御信号に依存している場合、コンピュータに接続することは問題なく、接続画面(RX/TX/GNDのみ)がハングアップします。デバイスマニュアルのシリアルピン定義を確認してください。RX/TX/GNDに加えて、短い接続が必要なRTS/CTS/DTR/DSRピンがある場合は、画面のこちら側で処理する必要があります。
  1. ** 画面端のシリアルパラメータは実際と一致しません。***一部のHMI構成ソフトウェアのシリアルポート設定は深く(おそらくシステムパラメータ-通信-ポート構成内)、必ずしもエンジニアリングメインインターフェイス内ではありません。
  1. ** コンピュータのシリアルアシスタントは適応ボーレートで動作する場合があります。一部のホストコンピュータソフトウェアは、最初にデフォルトパラメータでフレームを送信し、デバイスが応答しない場合、自動的に別のボーレートを再送信します。ユーザーは“自動的に接続された”と感じます。しかし、画面側はこのような適応を行わず、手動でパラメータをペアリングする必要があります。

シナリオ2:RS-485バスで時折データが読み取られ、時折CRCエラーが発生する

いくつかの可能性:

  • ** バイアス抵抗が欠落または不適切に選択されています。バスがアイドル状態では電圧が0V付近で変動し、レシーバ出力発振によって生成される最初のバイトが開始ビットと誤認されます。バスアイドル時のA/B電圧差をマルチメータで測定し、200mVはバイアスが必要です。
  • ** バスの一端に終端抵抗が接続されています。**信号は未接続端から反射され、特定のビット位置で衝突します。特に“ボーレート19200/バス50メートル”のシナリオでは簡単です。
  • ** 星型です ** RS-485の支線長は厳しい要件を持っています-反射臨界長≈ t_rise * ケーブル内の光速/ 2の速度。t_riseが約10nsの場合、臨界長は約1メートルです。1mを超える支線は反射が発生する。スターをデイジーチェーンに変更するか、RS-485ハブを追加します。

シナリオ3:ボーレートを下げると通過できますが、高いとできません。

この現象の原因は通常、ケーブルの品質または距離はオーバーライド。RS-485の距離とボーレートは反比例しています。標準的には9600bpsは1200メートル、19200は約600メートル、115200は基本的に100メートル以内にしかなりません。

距離だけでなく。以下の要因も高い割合で死亡します:

  • ケーブル特性インピーダンスのミスマッチ(RS-485では120Ω特性インピーダンスのケーブルが必要ですが、100Ωインピーダンスのワイヤでは高レートで反射が発生します)
  • 終端抵抗が接続されていないか、抵抗が間違っている
  • バス上のノードのドライバチップの出力容量が大きすぎ、バスの容量負荷が大きすぎます。

診断の方法:オシロスコープで9600bpsと115200bpsのA-B差動波形を比較します。115,200 bpsの方形波エッジが明らかなオーバーシュートまたはステップ(ハイからローへのクリーンなジャンプではない)を示す場合、シグナルインテグリティの問題です。

シナリオ4:TTLモジュールTX/RXショートセルフテストは正常ですが、デバイスでも反応しません。

3つをチェック:

  1. * *セルフテストにはGNDは必要ありませんが、デバイスとの通信にはGNDが必要です。
  2. ** 両方のレベルの基準。USB-TTL出力はTTLレベル(0V/3.3 Vまたは0V/5 V)で、RS-232インターフェースデバイス(±12V)を接続すると、直接信号がピークにクリッピングされる可能性があります。デバイス側がTTL、RS-232、またはRS-485であることを確認します。
  3. ** デバイスが透過モードであるかどうか。**一部の4 G DTUまたはWiFiモジュールは、電源投入後にデフォルトでATコマンドモードに入り、透過伝送を終了するか、データ透過伝送モードに入るために特定のコマンドを送信する必要があります。この状態を確認せずにデータを直接送信すると、モジュールは無視します。

シナリオ5:RS-485は2つの主要ステーションを持つことができるか?

無理だよRS-485は半二重通信であり、バス上には一度に1つのトランスミッタしか持たない。2つのマスターステーションが同時にデータを送信すると、電流衝突-2つのドライバチップの保護抵抗の両端に瞬間電流が大きすぎ、幸運が短絡保護をトリガし、不運がチップを燃やします。

複数のマスターが必要な場合は、CANバスを切り替えるか、Modbus TCPをイーサネットに移行してください。


7.検査ツールチェーン

7.1マルチメータ

シリアルバリアの最初のツール。できること:配線のオンオフ(ビープ)、GND間電位差(DC電圧)、RS-485バスの空きレベル(DC電圧)の確認(DC電圧)。

7.2 USB-シリアルセルフテストモジュール

TXとRXショートセルフテストは基本的な機能です。しかし注意してください16進モードASCIIモードでは制御文字が非表示になります。

7.3ロジックアナライザ

ロジックアナライザは、シリアル通信デバッグの究極の武器です。現在の国産ロジックアナライザ(Saleaeのクローン、Kingst LA1010など)は非常に安価で、UART/SPI/I2 Cプロトコルを自動的に解析できるモデルは200台未満で購入できます。

使用方法:ロジックアナライザのCH0をTXに、CH1をRXに、GNDをデバイスGNDに接続します。プロトコル解析UARTを設定し、ボーレートなどのパラメータをペアに設定し、送受信データが期待通りかどうかを直接確認します。

主な分析スキルロジックアナライザがシリアルヘルパーが表示するよりも数バイト多いデータを解析した場合(例:末尾が0 x 00多い場合)、シリアルヘルパーはASCIIモードで見えない文字を表示します。16進モードで確認します。

7.4オシロスコープ

ロジックアナライザが“データが間違っている”としか言えないが、“なぜ間違っている”とは言えない場合、オシロスコープが登場します。信号の立上り/立下り時間、オーバーシュート、リンギング、振幅減衰-これらはすべて通信品質に影響を与える電気的指標です。


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

手順の確認内容のチェックツール·ツールサインを通して
1USB-シリアルセルフテストモジュールデュポン+シリアルアシスタントTX/RXショート後の16進ループバック一致
2コモン·グラウンドマルチメータビープ両端GND導通
3GND電位差マルチメータDC両端GND電圧差2V
4RX/TX接続方向マルチメータDCTXは負電圧(RS-232)、RXは高抵抗状態
5RS-485A/B極性チップマニュアルの比較同相端に接する
6バスアイドルレベルマルチメータDCRS-485A-Bアイドル電圧≥ 200mV
7終端抵抗マルチメータ抵抗器バスの両端は120Ωで、中間ノードには現れません。
8ボーレート/データビット/ストップビット/チェックビットロジックアナライザ実测ビット幅= 1/ボーレート、フレーム一致
9波形の品質オシロスコープ方形波エッジクリーン、十分な振幅、オーバーシュート発振なし
10デバイスモード機器マニュアル不在透伝/AT/スリープなどの特殊モード

この表を上から下までチェックし、最後のステップまでジャンプしないでください。最もタブーなのは、“配線は大丈夫だと思います”と直接ステップ5にジャンプすることです。99%のケースでは、最初のステップに立ち往生しています。


再び話す問題がある。シリアルポートは、最後の2つの基本的な結論をチェックします:1本のラインが少ないか、1本以上のラインが接続されます。

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

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

エンジニア会員

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

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

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

发表回复

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