要約
RS-232、RS-422、RS-485は、いずれも広く使用されているシリアル通信規格です。本稿では、まず各規格の概要と電気的なインタフェースについて解説します。その上で、ケーブルの終端、複数の負荷への対応方法、RS-232におけるデイジーチェーン接続について説明します。更に、RS-232からRS-485への変換、RS-485からRS-232への変換、ポートパワー型のRS-232からRS-485への変換を実現するICを紹介します。
はじめに
「標準規格の素晴らしいところは、非常に多くの選択肢が提供される点にある」――。これは、光ファイバに関するカンファレンスに参加していた方の発言です。このことは、電気的インタフェースの規格にも当てはまります。シリアル・データ通信の規格は、特定の業界内で個別に発展する傾向がありました。そのため、数多くの規格が必要以上に策定されているとも言えます。
PCを使用するアプリケーションや通信のアプリケーションでは、シリアル・データ伝送のためのインタフェース規格が必要でした。そうした分野で最も成功したシリアル通信規格は、恐らくRS-232でしょう。同様に、産業分野のデータ伝送では、RS-485とRS-422が最も広く使われていると言えるはずです。これらの規格には、直接的な互換性はありません。しかし、制御や計測のアプリケーションでは、各規格をまたがる形で通信を実現しなければならないケースがよくあります。本稿では、RS-232/RS-422/RS-485の各規格について詳しく解説します。主に取り上げるのは、電気的な物理層の仕様についてです。また、ある規格の信号を別の規格の信号に変換したり、1つのアプリケーション内で複数の規格を組み合わせたりする方法も紹介します。
RS-232の電気的仕様、標準的な接続
当初、RS-232の規格はIBM互換のPCにモデムやプリンタを接続するためのものとして策定されました。その後、同規格を活用してPCとの通信を実現する様々な周辺機器が開発されるようになりました。RS-232は、シングルエンドの通信を実現するためのシリアル・インタフェース規格です。その目標は、低いボー・レート(20kbps未満)で長い通信距離を実現することにありました。ただ、同規格には長年にわたって変更が加えられました。その結果、「MAX3225E」のように1Mbpsのデータ・レートを提供する高速ドライバ(トランシーバー)も製品化されるようになりました。同ICのようなトランシーバー製品がRS-232の規格に準拠するためには、表1に示す電気的仕様を満たす必要があります。また、標準的な接続を行う場合、データの流れを制御するためにハードウェア・ベースのハンドシェイクを使用しなければなりません(図1)。
パラメータ | 条件 | 最小値 | 最大値 | 単位 |
ドライバの出力電圧(オープン・サーキット) | 25 | V | ||
ドライバの出力電圧(負荷がある場合) | 3kΩ < RL < 7kΩ | ±5 | ±15 | V |
ドライバの出力抵抗(電源がオフの場合) | -2V < V < 2V | 300 | ||
スルー・レート | 4 | 30 | V/マイクロ秒 | |
最大負荷容量 | 2500 | pF | ||
レシーバーの入力抵抗 | 3 | 7 | kΩ | |
レシーバーの入力スレッショルド | ||||
出力:マーク(ロジックの1) | -3 | V | ||
出力:スペース(ロジックの0) | 3 | V |
図1. RS-232における標準的な接続
図2のCH1に示すように、RS-232の標準的な信号は正負に振れます。左の軸上にある0Vのトレース・マーカの相対位置に注意してください。RS-232のデータは反転されますが、TTL/CMOSからRS-232への変換を実施し、その後、再びTTL/CMOSに変換するといった場合にはデータの元の極性が復元されます。RS-232の標準的な伝送距離は、2つの理由から100フィート(約30.48m)を超えることはほとんどありません。1つ目の理由は、送信レベル(±5V)と受信レベル(±3V)の差から、同相モード除去が2Vまでしか許容されないというものです。2つ目の理由は、長いケーブルを使用すると分布容量によって最大負荷の規定値(2500pF)を超えてしまい、スルー・レートが低下する可能性があるというものです。RS-232の規格は、マルチドロップのインタフェースではなくポイントtoポイントのインタフェースを実現するために策定されました。したがって、RS-232に対応するドライバは、3kΩ~7kΩの単一負荷を前提としています。マルチドロップのインタフェースを使用するアプリケーションは、通常はデイジーチェーン方式で実現されます(図3)。
図2. RS-232の標準的な信号。RS-232に対応するレシーバーは、バイポーラの入力信号を受け取ります(CH1)。そして、それを反転したTTL/CMOSの信号を出力します(CH2)。
図3. デイジーチェーン方式の実装。RS-232に対応する1本のラインには複数のスレーブ(トランシーバー)を接続できます。
デイジーチェーン接続のデバイスに関する制限
デイジーチェーンの構成において、RS-232の信号は1つのレシーバーから入力され、トランスミッタへとループされます。この構成は、データ伝送ラインに沿って後続のデバイスでも繰り返されます。そこで大きな問題になるのがケーブルの断線です。例えば、スレーブ1とスレーブ2の間で断線が起きると、下流のすべてのデバイスはデータを送受信できなくなります。マルチドロップのインタフェースでRS-232を使用する手法は他にもあります。その例としては、RS-232に対応する出力ドライバの信号をプリバッファリングしたりブーストしたりする方法(複数の5kΩの入力を同時に駆動できるようにする)が挙げられます。
デイジーチェーン・ネットワークに関連する問題を解消するために、Maximは「MAX3322E/MAX3323E」を開発しました。マルチドロップのアプリケーションを構成できるように特別に設計された製品です。その入力抵抗は、ハイ・インピーダンスまたは5kΩにロジック的に切り替えられるようになっています。入力抵抗がハイ・インピーダンスの状態の場合、同ICはデータを受信することが可能であり、バスを共有している他のデバイスとの通信を続行することができます。
デイジーチェーン構成のネットワークの問題は、もう1つの方法でも解決できます。それは、RS-232の受信信号と送信信号を、RS-422の信号に変換することです(表2)。RS-422は差動型の技術であり、より長い距離に対応できます。入力抵抗が高く、駆動能力も向上しているので、最大10個のノードを接続することが可能です(図4)。RS-422にはもう1つ長所があります。それは、送信用のパスと受信用のパスが独立しているので方向制御が必要ないというものです。デバイスの間でハンドシェイクを行う必要がある場合、ソフトウェア・ベース(XON/XOFFのハンドシェイク)またはハードウェア・ベース(個別のツイスト・ペア)のうちいずれかの方法で実行できます。RS-232の信号とRS-422の信号の変換機能を備える低コストのトランシーバー製品としては、「MAX3162」が挙げられます。この製品については、「RS-232/RS-485を対象とするプロトコル変換器 」の項で詳しく説明します。
パラメータ | 条件 | 最小値 | 最大値 | 単位 |
ドライバの出力電圧(オープン・サーキットの場合) | ±10 | V | ||
ドライバの出力電圧(負荷がある場合) | RL = 100Ω | 2 | ±10 | V |
-2 | ||||
ドライバの出力抵抗 | AからB | 100 | Ω | |
ドライバ出力の短絡電流 | コモンへの出力あたり | 150 | mA | |
ドライバ出力の立ち上がり時間 | RL = 100Ω | 10 | ビット幅に対する%単位の比率 | |
ドライバのコモンモード電圧 | RL = 100Ω | ±3 | V | |
レシーバーの感度 | VCM < ±7V | ±200 | mV | |
レシーバーのコモンモード電圧範囲 | -7 | 7 | V | |
レシーバーの入力抵抗 | 4 | kΩ | ||
差動レシーバーの電圧 | 動作電圧 | ±10 | V | |
耐電圧 | ±12 | V |
図4. RS-422を採用した標準的なシステム。差動伝送ラインに最大10個のスレーブ(トランシーバー)を接続できます。
RS-485とRS-422の違い、アプリケーションでの活用方法
RS-422に対応するトランシーバーとRS-485に対応するトランシーバーは、混同されることがよくあります。一方は他方の全二重版だと誤解している方が見受けられるという意味です。しかし、両者にはコモンモード範囲とレシーバーの入力抵抗の面で電気的な違いがあります。このことから、それぞれを適用すべきアプリケーションは異なるということがわかります。RS-485は、RS-422の仕様をすべて満たします(表3)。そのため、RS-422に対応するアプリケーションでは、RS-485用のドライバを使用することができます。しかし、その逆は成り立ちません。RS-485用のドライバのコモンモード電圧範囲は-7V~12Vです。それに対し、RS-422用のドライバのコモンモード電圧範囲はわずか±3Vです。レシーバーの最小入力抵抗は、RS-422では4kΩ、RS-485では12kΩです。
パラメータ | 条件 | 最小値 | 最大値 | 単位 |
ドライバの出力電圧(オープン・サーキットの場合) | 1.5 | 6 | V | |
-1.5 | -6 | V | ||
ドライバの出力電圧(負荷がある場合) | RL = 100Ω | 1.5 | 5 | V |
-1.5 | -5 | V | ||
ドライバ出力の短絡電流 | コモンへの出力あたり | ±250 | mA | |
ドライバ出力の立ち上がり時間 | RL = 54Ω | 30 | ビット幅に対する%単位の比率 | |
CL = 50pF | ||||
ドライバのコモンモード電圧 | RL = 54Ω | ±3 | V | |
レシーバーの感度 | -7V < VCM < 12V | ±200 | mV | |
レシーバーのコモンモード電圧範囲 | -7 | 12 | V | |
レシーバーの入力抵抗 | 12 | kΩ |
配線コストを抑えつつ長い伝送ラインを実現したい場合、RS-485用のトランシーバーがよく使用されます。POSシステム、産業分野のアプリケーション、通信アプリケーションなどでは、RS-485が一般的な規格になっています。RS-485のコモンモード電圧範囲は広いので、長い伝送ラインを実現できます。また、ノードあたりの入力抵抗を高くすることが可能です。そのため、より多くのノードをバスに接続することができます(図5)。
図5. RS-485を採用した標準的なシステム。RS-485は、RS-232と比べて入力インピーダンスが高く、コモンモード電圧範囲が広いため、長い伝送ラインを実現できます。
RS-485の差動伝送では、ツイスト・ペア・ケーブルの各セグメント(ワイヤ)に沿って逆向きの電流と磁界が生じます(図6)。各ワイヤの周囲に存在する逆向きの電磁界が相殺されるため、電磁干渉(EMI)を最小限に抑えられます。長いケーブルまたは高いデータ・レートで伝送を行う場合、ケーブルを伝送線路だと捉え、その特性インピーダンスで終端すべきです。このことが理由となって、RS-485の接続については混乱が生じることがあります。果たして、ラインを終端する必要はあるのでしょうか。そうであれば、どのように終端すべきなのでしょう。設計者がエンド・ユーザではない場合、これらの疑問については設置を担当する人に任せておけばよいのでしょうか。ほとんどの場合、RS-485用のトランシーバーのデータシートには、図7のような選択肢が示されています。すなわち、ケーブルが伝送線路として機能する場合、終端しないのか、単純なポイントtoポイントの終端を行うのかを選択するということです。図中のA端子とB端子の間(A-B端子)の終端抵抗が害を及ぼすことはありません。デフォルトでは、伝送ライン(バス)上の最後のトランシーバーで終端を実施する必要があります。
図6. RS-485の差動伝送。伝送ライン上の信号が逆極性なので、それぞれの磁界が相殺されます。そのため、電磁干渉が最小限に抑えられます。RS-485の出力信号が逆極性であることを明確に示すために、この写真の各グランド基準はシフト(オフセットを加える)してあります。
図7. 伝送線路の終端方法。どれを選択すべきなのかは、アプリケーションによって異なります。
フェイルセーフへの対応
終端抵抗が必要かどうかの判断は、RS-485を採用したシステムを実装する際に直面する問題の1つにすぎません。通常、RS-485用のレシーバーの出力は、AがBより200mV以上高い場合には「1」、BがAより200mV以上高い場合には「0」になります。RS-485に対応する半二重のネットワークにおいて、マスタのトランシーバーはスレーブに対してメッセージを送信した後、バスをトライステートにします。その後、バスを駆動する信号が存在しなければ、AとBの差は0Vに向かいます。結果として、レシーバーの出力は不定の状態になります。レシーバーの出力(RO)が「0」の場合、スレーブはそれを新しいスタート・ビットだと解釈し、後続のバイト・データの値を読み取ろうとします。その結果は、ストップ・ビットが発生しないことからフレーミング・エラーになります。それにより、バスは要求が存在しない状態になってネットワークが停止します。
製造ロットが異なるICを使用した場合、差動入力が0Vであるのに、ROには異なる出力信号が生成される可能性があります。プロトタイプが完璧に動作したのに、最終製品では特定のノードで障害が発生するかもしれないということです。この問題を解決するためには、図7(右)の「Multidrop/Fail-Safe Termination」に示したようにバスをバイアスします。このようにすれば、バスがトライステートであってもROが「1」に維持されるようになります。あるいは、「MAX3080」(5V)や「MAX3070E 」(3V)など、真にフェイルセーフなレシーバーを使用することでも対処できます。これらのICを使用すれば、レシーバーのスレッショルドが-50mVになります。そのため、0Vの差動入力に応答してROが確実に「1」になります。
RS-232/RS-485を対象とするプロトコル変換器
MAX3162は、RS-232用のレシーバー/トランスミッタとRS-485用のレシーバー/トランスミッタを内蔵するICです。つまり、1つのICによって2つの通信規格に対応できます。それだけでなく、RS-232の信号とRS-485の信号を双方向に変換することも可能です。図8に示したのは、MAX3162を使用した回路の例です。ポイントtoポイントのアプリケーションにおいて、RS-232の信号とRS-485の信号を双方向に変換するように構成しています。
図8. MAX3162を使用した回路の例(その1)。ポイントtoポイントのアプリケーションにおいて、RS-232の信号とRS-485の信号を双方向に変換するように構成しています。
MAX3162を使用した回路の例をもう1つ紹介します。図9の回路は、マルチポイントのアプリケーション向けに、RS-232/RS-485に対応するプロトコル変換器を構成した例です。変換の方向は、R1INピンに入力されるRTS信号で制御します。この回路において、RS-232用レシーバーのシングルエンドの入力信号は、RS-485用トランスミッタの差動出力に変換されます。同様に、RS-485用レシーバーの差動入力信号は、RS-232用トランスミッタのシングルエンド出力に変換されます。R2INピンで受信したRS-232のデータは、RS-485の信号としてZピンとYピンから送信されます。AピンとBピンで受信したRS-485の信号は、RS-232の信号としてT1OUTピンから送信されます。
RS-232からRS-485への変換を実現する回路において、RTSの信号ラインはバスの方向を制御するための一般的な手段となります。RS-232のポートにおいて、この信号ラインは、RS-485用のトランシーバーがトランスミッタとして機能するのか、レシーバーとして機能するのかという制御を担います。システムがRS-485用のドライバの入力(DIピン)を監視していない限り、そのシステムはUART(Universal Asynchronous Receiver/Transmitter)の送信バッファに含まれる1バイトのデータが送信されたことを確認できません。この点には注意してください。つまり、このシステムでは、DE入力を使用してバスの方向を変更する前に、一定の遅延時間を許容するか、DI入力を監視しなければならないということです。
方向の制御は、マイクロコントローラを使用することでも実現できます。それにより、A-Bラインを切り離す(プルアップ抵抗をAから5Vに接続し直し、プルダウン抵抗をBからグラウンドに接続し直す)と共に、データによってDE入力を駆動するということです。使用する抵抗の値はケーブルの容量値に依存しますが、通常は1kΩを使用します。
図9. MAX3162を使用した回路の例(その2)。マルチポイントのアプリケーション向けに、RS-232/RS-485に対応するプロトコル変換器を構成しています。
ポートパワー型のデバイス
多くの場合、RS-232からRS-485への変換を実現する回路はポートパワー型のものとして実現されます。つまり、RS-485用の電力を、RS-232のRTSラインから供給するということです。RTSラインではなく、RTSラインとCTS(DTR)ラインを組み合わせて給電することもあります。ただ、RS-232のポートから供給できる電力の量は限られています。そのため、例えばRS-485の終端を100個備えるポートパワー型の変換器を構成すると、RS-485の起動電圧まで達しません。一方、レシーバーのスレッショルドは低い(200mV)ので、誤差についてはかなりのマージンがあります。この手法は、伝送ラインが短く、A-B端子の間に終端抵抗が存在しないシステムで使用可能です。
ホット・スワップに関する問題
ホットな(つまり給電されている)バックプレーンに基板を挿入する際には、データ・バスに対する差動の外乱によってデータのエラーが発生することがあります。最初に基板を挿入する際、データ通信用のプロセッサは、独自のパワーアップ・シーケンスを実行します。その期間、プロセッサのロジック出力用のドライバはハイ・インピーダンスの状態になります。ここでトランシーバーとして「MAX3060E/MAX3080E」を使用するケースを想定すると、DE入力とアクティブ・ローのRE入力を規定のロジック・レベルに駆動できないことになります。プロセッサのロジック用ドライバがハイ・インピーダンスの状態になると、最大±10mAのリーク電流が発生します。それが原因で、トランシーバーの標準的なCMOSイネーブル入力が不正なロジック・レベルにドリフトしてしまう可能性があります。また、基板の寄生容量によって、VCCまたはGNDがイネーブル入力に結合してしまうこともあり得ます。ホット・スワップ機能を使用できない場合、これらの要因によって、トランシーバーのドライバまたはレシーバーが、意図せずイネーブルの状態になる可能性があります。
この記事に関して
製品カテゴリ
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}