シリアル通信「RS-232C」とは?

みなさん、「RS-232C」という言葉を聞いたことがありますか?
一度はどこかで聞いたことがあるのではないでしょうか。
電気屋さんのケーブルコーナーに行くと、現在もRS-232Cケーブルというものが販売されています。
本ブログでは、あらためて「RS-232C」とは何なのか、簡単に解説していきます。
それでは始めましょう。
目次
- 1. RS-232Cとは
- ・RS-232Cの概要
- ・RS-232Cの使用場面
- 2. RS-232C通信
- ・RS-232Cの通信方式
- ・RS-232Cの信号
- ・フロー制御
- ・通信速度について
- ・信号レベルについて
- ・信号フォーマットについて
- 3. 実際の通信
- ・通信設定
- ・データ送受信操作
- ・RS-232CドライバIC
- 4. コネクタとケーブル
- ・コネクタ
- ・ケーブル
- 5. おわりに
1. RS-232Cとは
RS-232Cの概要
WikipediaでRS-232Cの項を見ると、
“RS-232(英語: Recommended Standard 232)は、シリアルポートのインタフェース規格である。基本的にはホストコンピュータや端末といった「データ端末装置」と、モデムなどの「データ回線終端装置」を繋ぐものとして設計されたが、パソコン同士の直接接続や、あらゆる周辺機器の接続用に広く使われた。”
とあります。
つまり、2台の機器間でシリアル通信するための規格です。
歴史は非常に古く、米国EIA(アメリカ電子工業会)が1969年に策定しました。その後、正式な規格としては何回か改訂されながらも現在に至るまで使用されています。
- ※
- 2024年現在の最新の公式規格名称は ANSI/TIA/EIA-232-F-1997です。
(TIA:Telecommunications Industry Association 電気通信工業会)
シリアル通信
|
|
パラレル通信
|
|
RS-232Cの使用場面
元々はモデム通信(電話)用が主用途でしたが、上述の通り非常に歴史のある(技術的には枯れた)規格のため、PCと周辺機器(モデム、マウス、プリンタ、スキャナ、ペンタブレットなど)の接続、PC同士の接続、FA(工場機器)、測定器、医療機器、開発デバッグ機器、電子楽器、システム内基板間やデバイス間の接続など、ありとあらゆるさまざまな場面で使用されてきました。
最近でこそUSBやEthernetといった新しい高速通信規格に取って代わられつつありますが、その手軽さ・コストの安さ、技術的にシンプルな構造、システムに異常が発生してLANやUSBインタフェースが死んでもRS-232Cは最後まで生き残る可能性が期待できることから、Handy機器や保守用ポート等を中心にこれからも使用され続けるものと思われます。
規格上の最大距離は15mですが、データレートにもよりますが実用上は10m程度です。
2. RS-232C通信
RS-232Cの通信方式
RS-232Cは1対1の機器間の全二重シリアル通信です。
送信用/受信用各1本のデータ線に各コントロール用の信号が付加されています。
半二重通信 | 同時には片方向のみのデータ送信しか行えない方式。電車の単線のようなイメージ |
---|---|
全二重通信 | 同時に双方向のデータ送信が行える方式。電車の複線のようなイメージ |
RS-232Cの信号
|
|
DCD | Data Carrier Detect | キャリア(データ搬送波)を検出したことを示す。モデム接続時に使用 |
---|---|---|
RxD | Recieve Data | 受信データ |
TxD | Transmit Data | 送信データ |
DTR | Data Terminal Ready | 自機が動作していることを示す。相手装置側DSRと接続 |
GND | Ground | 信号グランド |
DSR | Data Set Ready | 相手装置が動作していることを示す。相手装置側DTRと接続 |
RTS | Request To Send | 送信要求信号。相手装置側CTSと接続(フロー制御時) |
CTS | Clear To Send | 送信可能信号。相手装置側RTSと接続(フロー制御時) |
RI | Ring Indicator | 被呼表示(電話がかかってきている状態(「呼」と言います)を示す)モデム接続時に使用 |
フロー制御
RS-232Cは、実は通信だけなら最低限TxD、RxD、GNDの3本あれば可能です。
しかし、実際の通信において自分と相手の通信速度が完全に一致することはなく、また自分/相手が何か他の処理中で相手に送信を待ってほしいこともあります。それらの通信を制御するのがフロー制御です。
CTS/RTSフロー制御
CTSライン、RTSラインでハード的に制御します。
受信側が送信側にデータ送信を待ってほしいときは、RTS=0(→送信側CTS=0)にすることで、送信側は一時的にデータ送信を中断します。RTS=1(→送信側CTS=1)にすると送信側はデータ送信を再開します。
Xフロー制御
コントロールコマンド(コード)を通信内のデータで送ることによってソフト的に制御します。
受信側が送信側にデータ送信を待ってほしいときはコントロールコード‘Xoff(13h)’を送信し、送信側は‘Xoff’を受信したら一時的にデータ送信を中断します。受信側が送信側にデータ送信を再開してほしいときはコントロールコード‘Xon(11h)’を送信し、送信側は‘Xon’を受信したらデータ送信を再開します。
コントロールコードはASCII形式のため、バイナリー通信では使えません。
コントロールコードは他にも00h~1Fhまでありますが、各詳細は割愛します。
ASCII(Text)形式とBinary形式
どちらもデータの見た目は0,1のビット列ですが、Text形式は文字コードを意味するものしか含まれていません。
その中でも英数字+制御コードを含むものがASCII形式です。他にも漢字や各国の文字に対応したShift-JISやUTF-8といったものもあります。
対して「それ以外」がBinary形式です。そのビット列データの意味するところはApplicationによります。文字コード以外のビット列が含まれるので、テキストエディタで開いても文字化けしてしまいます。
逆に言うと、テキストエディタで開ければText形式と言えます。
通信速度について
RS-232C規格登場最初期は50bps(1秒間に50ビット)程度だったようで、当時はこの速度でも通信できること自体が画期的でした。その後、技術進歩に伴い一般家庭でもカプラーで電話の受話器越しに通信を行えるようになり、300bpsモデムを使ったパソコン通信が普及した頃には一気に1200bps程度から28800bpsや56kまで高速化しました。
ただ、その後通信本体はADSLや光通信に移行していき、RS-232Cはそれらの機器制御用になっていきます。
現在、RS-232C自体の最大通信速度は1Mbps、10Mbpsまで高速化しています。(ただし、ケーブル長とのバーターになります)
信号レベルについて
RS-232Cではシングルエンド信号で信号をやりとりします(不平衡伝送方式)。いわゆる通常のGND線に対するデータ線電圧のHigh/Lowで論理1/0を意味付けする方式です。
論理0の規定は+3~+25V、論理1は-3V~-25Vとなっています。(0Vではなくマイナス電圧で、論理0/1と電圧の正負のイメージが逆です)
非常に電圧範囲が広いですが(これもRS-232Cの強みの一つです)、実使用上はせいぜい±12V程度内で使用されることが多いようです。残りの電圧範囲はプロテクト・マージンにできます。
信号フォーマットについて
調歩同期方式
RS-232Cはクロック線を持っていません。そこで、送信側と受信側でのタイミングを合わせるために、調歩同期方式と呼ばれる非同期式(ASYNC(Asynchronousの略))通信方式を採用しています。
通常は論理1(データ線電圧としては-)で待機し、通信を開始するときは最初に論理0(データ線電圧としては+)を送信します(ST:スタートビット)。受信側はスタートビットの受信で通信開始と認識します。
その後の8ビット(+パリティビット)(設定による)が実際のデータで、データビットを送り終わると論理1(データ線電圧としては+)にします(SP:ストップビット)。受信側はストップビットの受信で通信完了と認識します。
通信を行うときには必ず1/0反転を伴うことになり、これにより同期を取ります。
これを8ビットデータ(1バイト)毎に繰り返し行い通信します。つまり、RS-232Cは1バイト単位で通信を行います。
データバイト転送ごとにデータ本体以外のスタートビット、ストップビット、設定によってはパリティビットの冗長性を含むため、通信帯域を100%フルに使うことはできません。
上記のようにRS-232Cは1バイト単位での通信ですが、何kBものデータ全体が正しく送受信できたかの確認機能が通常上位アプリケーションに実装されています。
3. 実際の通信
通信設定
物理的なハードウェア線上の通信の仕組みはこれまでに述べた通りですが、実際のデータ通信をどのような条件で行うのかを送信側・受信側それぞれに設定する必要があります。この設定が合っていないと通信が正しく行えません。
一番わかりやすい例はPCのシリアルポートの設定画面でしょうか。組み込みシステムなどではマイコンからレジスタを設定するか、最初から固定設定で設計します。
図2. WindowsのRS-232C設定画面
ビット/秒(B) | 通信速度を設定します。相手側の速度が不明な時は低速から試します。 |
---|---|
データビット(D) | 1データバイトを構成するビット数を設定します。 |
パリティ(P) | データが正しく送信されたかの確認ビットです。 ‘奇数’設定:データ内の‘1’の数が奇数であれば0を、偶数であれば1を、 ‘偶数’設定:データ内の‘1’の数が奇数であれば1を、偶数であれば0を、 それぞれデータの最後に送信側が付加します。 受信側は受信したデータとパリティビットを確認し、整合が取れない場合は通信エラーと判断します。 方式上、2ビット同時にデータが化けてしまうとエラー検出できません。 他に‘マーク’設定と‘スペース’設定がありますが、それぞれ‘1’、‘0’を形式的に付加するだけです。(パリティとしての意味はありません) |
ストップビット(S) | ストップビットのビット数を指定します。 |
フロー制御(F) | フロー制御を行うかと、行う場合の種類を指定します。 |
データ送受信操作
RS-232C通信の設定が完了したら実際に通信が行われることになります。
PCや端末機器であればOSやアプリケーションソフトが、組み込みシステムでもFirmwareが、システム全体の通信の一部として管理しているため、ユーザーが個別のRS-232C通信について意識することはあまりないと思われます。
RS-232C通信が必要な状態になると、OSやFirmwareからRS-232C処理の関数やルーチンがコールされ、RS-232Cポートの通信設定が行われます。そして送信であれば送信データレジスタにデータが書き込まれると、RS-232Cペリフェラルロジック回路が起動して通信が開始されます。受信時は受信データレジスタに格納された受信データを読み出して上位OSやFirmwareに渡されます。
なお、ハード的なペリフェラルロジック回路を構成しなくても、規格さえ守ればソフトウェアからGPIOをRS-232C各信号線のように操作してRS-232C送受信を行うことも可能です。
RS-232CドライバIC
さて、実際の通信が開始されるにあたり、最後にもう1段階必要です。
機器内部のTTL/CMOSロジックレベルのままでは外部もしくは機器内部のデバイス同士でも送信できません。距離を延ばしたり、ノイズに強くしたりするためにRS-232C規格のレベルに変換する必要があります。受信時はその逆のことが必要になります。これを行うのがRS-232CドライバICです。
RS-232CドライバICは両者の信号間の電圧レベルおよび他の電気的仕様の変換を行います。
ただし、データ内容には関与せず、何らかの演算処理も行いません。通信されたデータをどう使うかは上位アプリケーションの担当です。
RS-232CドライバICは、RS-232Cという規格自体が非常に古く・広く普及していたため、各デバイスサプライヤからさまざまなRS-232CドライバIC製品が販売されています。
製品選択にあたり主要なポイント機能は以下の表のとおりです。
速度 | 最大どの程度の通信速度が必要なのか? |
---|---|
チャネル数 | シングルチャネル品か、複数チャネル品か? (複数チャネルでも送信と受信チャネル数が異なる製品もあり) |
動作電圧 | ドライバICの動作電圧。3Vか5Vか、それとも両方対応のWide Rangeか? |
互換性 | デバイスサプライヤ間で置き換え可能な製品も多々あり |
その他 | 静電耐圧、省電力機能(データが来ないときはスリープ)、Fail safe、etc… |
図3. MaxLinear社SP3220
4. コネクタとケーブル
コネクタ
RS-232C用として販売されているコネクタには2種類の形状があります。
D-sub9ピン | 一般的にRS-232Cで使われるコネクタです。 実は元々規格外だったのですが、IBMが採用して普及したため後から規格に追加されました。 |
---|---|
D-sub25ピン | 本来の規格品です。かつてのPC-9800シリーズ等に搭載されていました。 2次チャネル等の拡張機能も実装可能ですが、コストや需要面からあまり普及していません。 |
|
|
ケーブル
ケーブルにも2種類あります。
ストレートケーブル | 対向側と信号線同士が結線されています。 |
---|---|
クロスケーブル | 対向側と一部信号がクロスもしくは自分自身側と結線されています。 結線により何種類かあります。 |
一般的にはDCE(Data Communication Equipment:モデムのように受動動作する装置)にはストレートケーブル、DTE( Data Terminal Equipment:パソコンのように能動的に動作する装置)はクロスケーブルで接続しますが、通常は接続機器に使用ケーブルの指示があります。
5. おわりに
以上ここまでRS-232Cについてまとめてきました。いかがでしたでしょうか。
普段意識していないレガシーな通信でも中身を追って行くと、それなりの規定や手順が存在していることが分かるかと思います。
それでも有線の通信としては一番簡単で基本的なものです。また、解説中でも述べましたが、RS-232Cは今後も当分なくなることはありません。
そのため、今後他の有線通信を扱っていく上でのまずは入門としてRS-232Cの概要を知っておくことは有意義かと思います。
最後までご覧いただきありがとうございました。