はじめに
USBやLANが普及した現代においても、産業分野では古く低速な規格であるRS-232/RS-422/RS-485が現役で使われています。その理由はいくつかあると思います。
- 線数が少なく済み、シンプルで使いやすい。
RS-232やRS-485なら3芯あれば何とかなります。 - リアルタイム性がある。
USBやLANは不特定多数の機器が繋がることがあり、通信に割り込みが入り伝送が遅れる場合があります。しかし古くからあるこれらの規格では、一般的に狙った時間で確実に処理が終わります。この狙った時間で処理が終わるというのが組み込みシステム分野ではとても重要なのです。 - 余分なお金が掛からない。
USBをシリアル変換アダプターの代わり程度にしか使用しないなら、大したことはありません。しかしUSBメモリーを制御しようとすると大変です。一般的には、高いお金を支払ってUSBドライバーを購入したりします。しかもそれが年払いだったり、販売台数が増えるほどライセンス料が高くなったり、1製品毎にライセンス料が発生したりするのです。作ってみたけど売れなかったは許されない、恐ろしい分野です。
そんなRS-232/RS-422/RS-485の簡単な比較表です。
項目 | RS-232C | RS-422 | RS-485 |
---|---|---|---|
動作モード | シングルエンド | 差動 | 差動 |
最大伝送距離 | 15 m | 1,200 m | 1,200 m |
最大伝送速度 | 19,200 bps | 10 Mbps | 35 Mbps |
接続 | 1対1 | ドライバー1 レシーバー10 | ドライバー32 レシーバー32 |
伝送方法 | 全二重 | 全二重 | 全二重または半二重 |
- 最大伝送速度で通信できるのは、伝送距離が10m以下の場合と考えてください。
- これらRS(Recommended Standard)規格の正式名称はTIA(電気通信工業会:Telecommunications Industry Association)です。しかしTIA-232やTIA-485と呼ばれることはほとんどありません。あまりにもTIAの知名度が低すぎて、TIAの名前で製品を販売しても売れないのです。
全二重と半二重
- 全二重(FULL DUPLEX)
-
送信用と受信用で伝送路が分かれているため、送信と受信を同時に行うことができます。このため通信効率が良いのが特徴ですが、芯線数が増える分費用面では割高となります。
- 半二重(HALF DUPLEX)
-
送信と受信を同一の伝送路で行います。このため送信と受信を切り替えて行う必要があります。トランシーバーのようなものです。お互いに送信していない時間帯を設けないといけないため、通信効率は悪くなります。
同期式と非同期式
通信方式には同期式と非同期式があります。RS-232/RS-422/RS-485で一般的に用いられるのは非同期通信で、調歩同期式通信とも呼ばれています。
- 同期式
-
送信側で作り出したクロック信号に合わせて、データの送受信を行います。クロック用とデータ用で2線必要にはなりますが、タイミングを合わせるのが容易で、非同期式よりも通信を高速で行えます。組み込みシステムでよく用いられている、SPIやI2Cは同期式です。
- 非同期式
-
同期用のクロック信号がない通信方式です。その代わりに、送信側と受信側で伝送速度(ボーレートともいう)をあらかじめ決めておくのです。9,600bpsや19,200bpsというのがそれです。レシーバーはスタートビットを検出すると、その後1/9,600秒や1/19,200秒毎にデータ読み取るのです。
差動式
RS-422とRS-485では差動式を採用しています。これら差動式では、信号を+と-の2本の差動信号に分離します。
伝送線路を流れる信号は、その経路が長くなるほどノイズの影響を受けやすくなります。しかし差動信号をより合わせることで、電流が流れるときに生じる磁気を打ち消したり、外来ノイズを打ち消しあって無効化したりする効果が生まれるのです(下図参照)。したがって差動式は対ノイズ性が高く、比較的長期理の伝送に向いています。
また上の差動式例の図にある終端抵抗には、伝送路を伝う信号の反射を抑える役割があります。信号は矩形波であることが理想ですが、2本の伝送路を反射して戻ってくることがあります。その結果下図(b)のように信号波形が乱れ、「1」と「0」の判断を誤る恐れがあるのです。この反射を抑えるのが終端抵抗の役割で、伝送路のもっとも離れた2個所に取り付けます。終端抵抗の値はケーブルの特性インピーダンスに揃えますが、一般的に100Ωや120Ωが用いられます。
データフォーマット
非同期式の1バイトのデータフォーマットは下図のとおりです。
項目 | 内容 |
---|---|
スタートビット | 待機(無通信)状態の信号はHighで、信号がHighからLowに切り替わるとスタートビット(通信の開始)を表します。 |
データビット | 送受信するデータです。一般的には下記のとおりです。 7ビットまたは8ビット。 LSB(Least Significant Bit、最下位ビット)から送信。 |
パリティビット | データの誤りを検出するためのビットです。奇数パリティと偶数パリティの2種類があります。データとパリティを合わせて、「1」のビット数を奇数か偶数に揃えて送信します。 奇数:データ内の「1」のビット数が奇数であれば「0」、偶数であれば「1」。 偶数:データ内の「1」のビット数が奇数であれば「1」、偶数であれば「0」。 また奇数と偶数以外に、「1」のビット数によらないマークとスペースがあります。 マーク:「1」固定。 スペース:「0」固定。 |
ストップビット | 通信の終わりです。厳密にはストップビットという状態があるのではなく、次のスタートビットまでの待機時間となります。 |
誤り検出
通信の誤り検出として「パリティチェック」と「フレーミングエラー」の2つがあります。
項目 | 内容 |
---|---|
パリティチェック | 奇数または偶数パリティを使用して、「1」のビット数が一致するかを確認します。奇数か偶数かでしか確認できないため、簡易的なチェックにはなります。 |
フレーミングエラー | ストップビットがあるべき位置に、ストップビットがなかった場合に発生します。双方の伝送速度(ボーレート)、データビット長、パリティの有無、ストップビット長のいずれかが不一致の場合に発生します。 |
- データを誤りなく送受信するためには、上表だけでは不十分です。通信電文の中にチェックサムやCRCを加えることを検討してください。
RS-232
シリアル通信と言われて最初に思い浮かべるのがこのRS-232です。1990年代のデスクトップパソコンには、このシリアルポートがよく搭載されていました。一般的に呼ばれているRS-232Cとは、RS-232規格のバージョンCという意味合いです。ただし現在での最新規格は名前も変わってTIA-232Fです。バージョンはすでにFにまで上がっているのです。
最初に紹介した仕様比較表はあくまでRS-232Cであり、最新規格の仕様はもっと向上しています。ケーブル長は長さではなく静電容量(2500pF以下)で規定されました。これにより概ね20mまでは延長できる他、材質・製法によっては50mケーブルも実現可能となっています。またケーブル長が3m以下であれば、通信速度は230.4kbpsにまで拡張されています。しかし実施このような規格はあってないようなもので、100m対応RS-232ケーブルが販売されていたり、460.8kbps以上で通信したりすることも可能です。ただしケーブル長を伸ばすほど、通信速度を速くするほどノイズ耐性は落ちるので注意は必用です。
そんなRS-232Cでもっとも使用されるのが、下図のDB9インターフェース(コネクター)です。一般的にD-sub(でぃーさぶ)と呼ばれているもので、これはD型のsubminature(超小型)から付いた呼び名です。本来のRS-232の仕様としては25ピンであるDB25が正ですが、ほとんど使われていないのでDB9のみを紹介します。なおメス側コネクターはDB9S、オス側コネクターはDB9Pとなります。
ピン番号 | 信号名 | 入出力 | 語源 | 内容 |
---|---|---|---|---|
1 | DCD | IN | Date Carrier Detect | キャリア検出 |
2 | RxD | IN | Receive Data Line | 受信データ |
3 | TxD | OUT | Transmit Data Line | 送信データ |
4 | DTR | OUT | Data Terminal Ready | データ端末レディー |
5 | SG | – | Signal Ground | 信号用接地または共通帰線 |
6 | DSR | IN | Data Set Ready | データセットレディー |
7 | RTS | OUT | Request To Send | 送信要求 |
8 | CTS | IN | Clear To Send | 送信許可 |
9 | RI | IN | Ring Indicator | 被呼表示 |
RS-232接続で最低限必要になるのは、RxD、TxD、SGの3線です。それに制御信号が必要ならDTRとDSR、フロー制御が必要ならRTSとCTSを加えます。DCDとRIピンは今となってはまず使われません。結果、RS-232の機器間の接続は下図のようになります。
- TxDとRxD
-
RS-232はSGラインを基準としたシングルエンド伝送となっています。信号の電圧が-5~-15Vのときは「1」、+5~+15Vのときは「0」となります。電圧レベルで伝送するためノイズに弱く、長距離伝送できないのです。
- DTRとDSR
-
通信の準備が整うとDTRをオンにし、相手方のDSRに知らせます。
- RTSとCTS
-
フロー制御ともいわれているもので、これ以上データを送られてくると取りこぼしてしまう、ちょっと待ってというときに使用します。受信の準備が整うとRTSをオンにし、相手方のCTSに知らせます。
RS-422
RS-232の低伝送速度と短伝送距離を克服したもので、最新の規格はTIA-422Bになります。 RS-422は基本的には片方向の通信規格です。1つの伝送路にはドライバー(送信)が1つで、レシーバー(受信)は最大10個まで接続できます。しかし一般的には、1対1で接続することが多いでしょう。
RS-422接続で最低限必要になるのは、送信または受信の+と-、GNDの3線です。双方向通信を行う場合は5線必要です。
RS-485
RS-422の上位互換にあたるもので、最新の規格はTIA-485Aになります。RS-422が1対n接続だったのに対して、RS-485ではn対nの接続が可能となっています。通信網に接続されたすべてのデバイスがドライバーとなれるのが特徴です。
RS-485接続で最低限必要になるのは、半二重の場合で+と-、GNDの3線です。なお上の接続例はわかりやすく記述したものであり、実際は伝送路の途中で分岐すべきではありません。分岐点で信号の反射やロスが発生する恐れがあるのです。このため理想的な接続としては、下図推奨例のようにデイジーチェーン接続とすべきです。
また下図非推奨例のようなタコ足接続も、終端抵抗による反射の制限が困難となるので避けるべきです。
- RS-485の+/−のピンは、A/Bで表すこともあります。このときRS-485の仕様上はAが−、Bが+です。しかしAが+、Bが−となっている機器も多く存在しているのです。このためA同士とB同士を接続しても、通信が成立しないことが往々にしてあります。
参考文献
- Interface Circuits for TIA-232-F [TEXAS INSTRUMENTS]
- TIA/EIA-485(RS-485)のインターフェイス回路 [TEXAS INSTRUMENTS]
- RS-422 and RS-485 Standards Overview and System Configurations [TEXAS INSTRUMENTS]
- RS-485/RS-422 回路の実装ガイド [ANALOG DEVICES]