平成14年1月7日朝刊
なひたふ新聞 電子回路が大好きな趣味人「なひたふ」のWebサイト
maruTOPページへ戻る
maru電子回路の豆知識
第0章 基本の豆知識
第1章 部品の豆知識
第2章 個別半導体の豆知識
第3章 オペアンプ回路の豆知識
第4章 ディジタル回路の豆知識
第5章 コネクタと規格の豆知識
5.1 プリンタポート
5.2 RS232C
5.3 VGAコネクタ
5.4 電話線
5.5 ISDN
5.6 LAN
5.7 168ピンDIMM
第6章 画像信号の豆知識
メール
メールアイコン御意見、御感想は
nahitafu@nifty.com
Copyright
このWebページ上で紹介したすべての回路、情報、内容に関する著作権は私、なひたふが所有します。無断転載を固く禁じます。
(C)Copyright 1999-2001 Nahitafu
平成10年2月28日発行.第三種郵便物不認可
RS232C
 RS232Cは、パソコンと周辺機器をつなぐために用いられます。これは本来ならばCCITT勧告に基づいて作られた25pinのコネクタを使ったシリアルインターフェースの規格を指します。しかし現在では面倒なRS232Cの規格に忠実にしたがって、シリアルインターフェースを作る人はいません。その上、25ピンのコネクタには不用な信号も多く、現在の省スペース化の流れによって消えつつあります。
 DOS/VのシリアルポートはRS232Cとは違うEIA-232(25ピン)やEIA-574(9ピン)という規格です。したがってEIA-574とEIA-232について解説します。現在のパソコンでは9ピンの方が圧倒的に多くなってきています。これらをRS232Cと呼ぶのは変なのですが、慣例的にはRS232Cといえば、パソコンにつながっているシリアルポートを指します。
EIA-574のピン割り当て
 俗に言う、9ピンのRS232CはEIA574です。このインターフェースはパソコンでは良く使われています。PC/AT互換機では本体側がオスで、ネスのケーブルを装着します。下の図はパソコンと周辺機器をつなぐ際の代表的なつなぎ方です。
PC/AT互換機とRS232Cケーブル
PC/AT互換機とRS232Cケーブル

 このコネクタのピン配置は次のようになっています。
9ピンのRS232C
ケーブル側から見たピン配置

ピン番号記号方向意味
1DCDIキャリア検出
2RxDI受信データ
3TxDO送信データ
4DTR-データ端末レディ
5GNDG信号グラウンド
6DSRIデータ・セット・レディ
7RTSO送信要求
8CTSI送信可能
9RI-被呼表示
EIA-232のピン割り当て
ピン番号記号方向意味
1PGG保安用のグラウンド
2TxDO送信データ
3RxDI受信データ
4RTSO送信要求
5CTSI送信可能
6DSRIデータ・セット・レディ
7GNDG信号グラウンド
8DCDIキャリア検出
9 - 
10 - 
11 - 
12 - 
13 - 
14 - 
15 - 
16 - 
17 - 
18 - 
19 - 
20DTR-データ端末レディ
21 - 
22RI-被呼表示
23 - 
24 - 
25 - 

説明

 この表に書いていないところにも、実は信号線はいっぱいあります。でも、現状ではEIA-232はモデムや自作の機器とパソコンをつなぐためだけに使われているので、必要な信号線は、TxD、RxD、CTS、RTSくらいです。ほかはオープンでも構わないでしょう。もし、それ以外の線をつないだとしてもOSやアプリが対応していない可能性があります。また、PGとGNDはいっしょにつないでも構いません。

 結局、使っているのは9本くらいなので、9ピンのコネクタを使った方がスペースを省略できます。この規格をEIA-574といいます。でも、世の中では9ピンのRS232Cなどという言い方がはやっています。


クロスとストレート
 RS232Cで最も厄介なのがクロスとストレートの違いです。クロスとストレートが違うとまったく通信できなくなるだけでなく、概観で判断する方法がないからです。単純に考えてもRS232Cには8つの亜流があるわけです。
  • 9ピン メス クロス
  • 9ピン メス ストレート
  • 9ピン オス クロス
  • 9ピン オス ストレート
  • 25ピン メス クロス
  • 25ピン メス ストレート
  • 25ピン オス クロス
  • 25ピン オス ストレート
 25ピンから9ピンへの変換は、コネクタが販売されています。また、オスからメスへの変換も、メス−メスコネクタを使えばできます。クロスとストレートの変換は、ヌルモデムかクロスケーブルで接続します。クロスをさらにクロスするとストレートに戻るのです。
クロスとストレートの存在理由
 なぜ、クロスとストレートというこんなに面倒なことが起きるのでしょう?

ストレート同士では通信できない  左の図は、ストレート同士をつないだ場合です。2番ピンがRxD(受信 入力)で、3番ピンがTxD(送信 出力)です。これらを互いにつないでも受信同士や送信同士では信号がぶつかってしまい、通信できないのです。


信号をクロスさせる 通信をするためには、2番と3番の信号をどこかで入れ替えてやる必要があります。これがクロスケーブルです。クロスケーブルを使うと出力された送信信号が、正しく相手の受信信号に入力されるので、通信が可能になるのです。


 クロスではない、素直なケーブルをストレートケーブルと言います。
クロスはケーブル?それとも
 それならばパソコンと周辺機器をつなぐのは、クロスケーブルが良いでしょうか?
パソコンとモデムの接続  答えはNOです。パソコンとモデムをつなぐには通常はストレートケーブルでつなぎます。パソコンの本体は間違いなくストレートに作られていますが、モデムは通常、クロスケーブルに相当する部分が内蔵されているからです。
 パソコンのコネクタの3番ピンは出力ですが、モデムでは入力になっています。つまり、モデムはパソコンとストレートケーブルで接続されることを想定して作っているので、あらかじめモデム内でクロスをさせているのです。

 厄介なのは、周辺機器によって装置内でクロス済みか否かがまちまちなことです。大抵の周辺機器やいろいろな機械は、ストレートケーブルでつなぐように設計されています。でも、そうではない装置も確かに存在します。そうなるとまったく通信できず、原因を見つけるまでに時間がかかるかもしれません。

 周辺装置とパソコンをつなぐのに必要なケーブルが、クロスかストレートかを外見で判断する方法はあります。ただし100%当たるわけではありません。方法はいたって簡単です。
周辺機器が9ピンのオスならクロスで、
9ピンのメスならストレートでつなぐ

 根拠は、売られているストレートケーブルにはオス−メスが多く、クロスケーブルにはメス−メスが多いからです。これは慣例なので、もちろん例外も多くあります。
パソコン同士をつなぐには
 RS232Cを用いてパソコン同士をつなぐことができます。そのためにはクロスケーブルが用いられます。
自作機器を作るときには
 自作の機器を作るときには、9ピンメスのコネクタを使い、自作装置内でクロスさせることをお勧めします。なぜならば、オス−メスのストレートケーブルは最も良く売られているので、これを使って接続できるのがベストです。その点クロスケーブルはあまり売っていなく、入手が意外と難しいからです。

RS232Cのトラブルシュート
 パソコンと周辺機器をRS232Cでつないだのに、通信できないときには、次の項目をチェックしてください。
  1. パソコンから本当にデータが出力されているか
  2. クロスとストレートは合っているか
  3. 通信速度は合っているか
  4. パリティーチェックなどを入れていないか
  5. ローカルエコーをONにしなければいけないのか
パソコンから本当にデータが出力されているか
 一番多い原因はこれです。COMポートが合っていないとか、USB-Serialを使っていてうまく動作していないことなどが考えられます。パソコンからデータが出ているかどうかを簡単に判別する方法があります。
 まず、クロスケーブルを用意します。そして、パソコン同士を接続します。そして、TeraTermを起動し(Windowsに付属のHyperTermは極力使わない癖をつけましょう)、何かキーを押してみます。クロスケーブルでつながったもうひとつのパソコンのTeraTermの画面に何か文字が出ますでしょうか?
 もし、押したキーボードの文字出れば、パソコンからちゃんとデータが出ています。そうでない場合、押していないはずの文字や変な漢字が出るのであれば、それは通信速度が違っている可能性が大きいでしょう。
 両方のパソコンで通信速度を合わせ、パリティーなし、ストップビット1ビットにします。

 どうしてもこの実験がうまく行かないならば、どちらかのパソコンのシリアルポートは壊れているか、「使用不可」の設定になっています。Windowsのシステムのプロパティーからデバイスマネージャーで確認するとともに、BIOSの設定で使用不可になっていないかを確認してください。
クロスとストレートは合っているか
 周辺機器がクロスかストレートのどちらのケーブルを必要としているかは、外見では100%判断はできません。変換ケーブルを用意しておくのがベストでしょう。
通信速度は合っているか
 モデムならば、通信速度は自動的に判別してくれるものが多いです。
 多くの周辺機器では、通信速度は固定かDIPスイッチで設定するようになっています。まずは装置のマニュアルを読むべきです。マニュアルがない場合、通信速度を9600bpsくらいに設定して、何らかのキーを押しつづけてみてください。押したキーがエコーとなって返ってくればOKですが、違う文字や変な漢字が返ってくるならば通信速度を変更してみてください。
パリティーなどを入れていないか
 昨今ではパリティービットを有効にしたり、ストップビットを長くすることはほとんどありません。パソコンと周辺機器で、パリティーなし、ストップビット1ビットになっているかを再度確認しましょう。
ローカルエコーをONにしなければいけないのか
 多くの周辺機器は、受け取ったデータをそのまま送り返すように作られています。これをエコーといいます。
 しかし、そうではない装置も存在します。このような装置に対してTeraTermなどからキーボードをたたいてデータを送ったときに、いったいどんな内容が送られたか、キーミスはないかと、不安になります。
 そこで、ローカルエコーといって、送信したデータを画面に表示する機能を持った端末ソフトも多いです。

必要な信号線の知識
 データを送り伝えるだけであれば、GNDとTxDとRxDの3本の信号だけあれば十分です。それ以外の信号はRS232Cがモデムとの通信用に開発された名残です。たとえば、RI(被呼表示)は電話のベルがなるとアクティブになります。

 自作機器とやりとりする場合に、まれに使われるのはRTSCTSです。RTSはRという名前がついているのですが出力信号だと覚えておいてください。これらの信号はフロー制御に使われます。
 フロー制御というのはRS232C信号を処理する装置が、処理能力オーバーになったときに、「処理しきれないから送らないでくれ」と通信の相手方に知らせる信号です。これをハードウェアフロー制御と呼びます。

 自作機器ではフロー制御を行わないときでも、念のためにRTSとCTSを配線で直結しておいたほうがよいでしょう。

CTSとRTSの直結
CTSとRTSの直結

 このようにすると、相手が通信可能ならばこちらも送信を要求を返すということになって事実上フロー制御が無視されます。もし何もつながないと、自作機器のRTSがアクティブになるのをパソコン側がいつまでも待ちつづけるということになって、送信ができないという事態に陥るかもしれません。
信号レベル
RS232Cケーブル上の信号レベル  RS232Cは信号を0(スペースという)か1(マークという)かで送るのですが、1は-3Vから-15Vで、0は+3Vから+15Vです。たとえて言うなら、ケーブル上でデータを送る線は負論理です。しかも、マイナスの電圧を扱いますので、TTLレベルの負論理とはちょっと違います。
 マイナスの信号を扱うのはケーブルの上だけで、プリント基板上で、マイコンなどとつなぐには、MAX232やADM232などのRS-232Cレベル変換ICを使ってTTLレベルにします。


 RS232CレベルをTTLレベルに変換するICは、インバータが内蔵されていますので、基板の上では正論理が普通です。正論理といっても、RS232Cのプリント基板上の信号では、信号を送らないときは常に1です。しかしながら信号を正論理で送る関係なので、負論理か正論理かだんだんややこしくなってきます。以下の図をご覧ください。
RS232Cのプリント基板上の信号
スタートビット、パリティービット、ストップビット
 RS232Cの信号は1バイトごとに、スタートビット→データ→(パリティー)→ストップビットの順番で送ります。

 RS232Cの信号(基板上)は、データを送らないときはHレベルになっています。データを送り始める合図として、1ビット分の0を送ります。これをスタートビットといいます。受信側ではデータ線の立下りを合図として、データの受信を開始することになります。
 次に8ビットデータを送ります。送る順番は下のビットからです。アルファベットだけお送るのならば、7ビットあればすべてのデータを送れます。そのため、7ビットモードをサポートしている場合もあります。特に理由がない限り8ビットにしておくべきです。

 データの終わりにパリティビットを付加することもあります。これは、データとして送ったビットの中の1の数を数えて、偶数か奇数かでパリティビットを1か0にします。偶数にするか奇数にするかはあらかじめ決めておきます。こうすると、データとパリティで送ったビットの総数が常に、偶数か奇数か決めたほうになります。もしこれが違った場合は、伝送線路でなんらかのエラーが発生した場合ですので、パリティエラーが発生したといいます。
 ただ、RS232C程度の通信でエラーが発生するようなら、そんな通信回線は使うべきではありませんし、パリティーエラーが発生したからといって、それを修正できるわけではありません。シリアル通信では送られてきたデータを見て、エラーかどうかを文脈から判断するのが普通なので、パリティーチェックをすることは稀です。

 ストップビットは、1バイト通信の終了を知らせる1のビットです。この長さが1ビットか2ビットかは、設計者の気分できまります。

 通常は、データ8ビット、パリティーなし、ストップ1ビットで通信します。通信速度は、計測制御機器とパソコンでやり取りするときには9600bps、モデムとパソコンでやり取りするときには115,200bpsが主流ですが、この限りではありません。bpsというのは1秒間に何ビットのデータを送るかということですので、1秒間に何バイト送れるかという実際のデータ転送速度はこの10分の1になります。なぜならスタートビットとストップビットで2ビット余分に送るからです。9600bpsなら1秒間に約960文字、115,200bpsなら1秒間に11520文字送れる計算になります。