概要
90年代のパソコンなどに標準搭載されたシリアル通信/物理インターフェース。シリアル通信のプロトコルとしては、上位規格にRS422やRS485などがあるが、RS232は伝送速度も遅く、ケーブル長も短い(15m以下)というデメリットがありながらも。90年代はパソコンを中心に広く普及しました。
接続端子は主にD-sub9pinのケーブルが利用され、80年〜90年代はパソコンとモデムなどの接続に利用されたほか、CDプレイヤーのようなメディアプレイヤー(DVDなど)の製品の多くはシリアル制御が可能で、こうした機器をコンピューター(パソコン)から制御する際の非常に一般的な通信インターフェースとして利用されました。
現在では、RS232のポートを持つコンピューターもなくなり、制御用の通信インターフェースとしては、イーサネット接続やUSB接続に置き換えられましたが、PLCコントローラーなど産業用の制御装置などでは、シンプルで確実な制御方法として活用されるケースもいまだ数多くあります。
Dsub9pinケーブル
物理接続
物理ポートとしてRS232Cポートをもつ機器の場合は、D-sub9ピン、D-sub25ピンのケーブルで制御対象機器と1対1で接続します。そのため制御対象機器が増えると、RS232Cポートが複数必要になります。ケーブルには、ストレートケーブルとクロスケーブルがあり、制御対象機器のマニュアルなどを参照してどちらが必要かを確認する必要があります。
Dsub 9pin ピンアサイン (Wikipedia https://ja.wikipedia.org/wiki/RS-232 )
イーサネットを利用してRS232C制御を行う方法
現代のPCにはRS232のポートはなく、制御対象機器もその多くがイーサネット接続によるUDP制御などをサポートするようになっていますが、それでもRS232による制御を行う必要がある場合など、PCの場合はUSB to RS232の変換等を利用することができるほか、イーサネットで接続可能なシリアルサーバーの製品が利用できます。MOXAやアドバンテックなどのメーカーには、イーサネット接続でRS232出力可能なシリアルサーバーのゲートウェイ製品があります。
- MOXA : https://www.moxa.com/jp
- SeaLevel : https://www.sealevel.com/
- Advantech : https://www.advantech.com
通信設定
RS232Cは、シリアルプロトコルの典型的な通信設定だけで簡単に接続されます。設定項目は4つ程度であり、ほとんどは通信速度を送り側と受け手側で合わせるだけで、難しい設定もなく、通信が確立します。
ボーレート(通信速度)
9600bpsや19200bpsが一般的、そのほか38400bpsなどがあります。通信がうまくいかない場合は、この速度が送信側と受信側で合ってないケースがほとんどで、この数値だけ気にしていれば、正しいケーブル(クロスorストレート)でつないだ機器はすぐに通信ができます。
ストップビット
データの終端を示すビットの長さを指定する、多くの場合1bitが指定される
データレングス
データ長のサイズを指定する、7 or 8 bit の指定、多くの場合は8bit
パリティー
偶数、奇数、なしの設定
コマンドの記述
RS232で利用されるコマンドはアスキーコードが利用されます。アスキーコードは、コンピューターに文字を入力するために定義された情報通信のための文字コードのことで、制御コードと文字コードの2種類があります。10進数で0~31の最初の文字が制御コードとして予約されており、RS232の制御コマンドでは、これら制御コードをアスキーコードまたは16進数で記述します。
非常に一般的なコマンドの記述方法が制御コードのSTXで始まり、文字コードによるメーカーが定義したコマンドが記述され、最後にETXのコードで終わるといった形式になります。
アスキー制御コードの一例
10進数 | 16進数 | 制御コード | |
0 | 0x00 | Nul | Nul文字 |
1 | 0x01 | SOH | ヘッダー開始 |
2 | 0x02 | STX | テキスト開始 |
3 | 0x03 | ETX | テキスト終了 |
4 | 0x04 | EOT | 転送終了 |
5 | 0x05 | ENQ | 照会 |
6 | 0x06 | ACK | 受信確認 |
7 | 0x07 | BEL | 警告 |
8 | 0x08 | BS | |
9 | 0x09 | HT | |
10 | 0x0A | LF | ラインフィード(改行) |
11 | 0x0B | VT | 垂直タブ |
12 | 0x0C | FF | 改頁 |
13 | 0x0D | CR | キャリッジリターン(復帰) |
14 | 0x0E | SO |
アスキーキャラクターコードの一例
10進数 | 16進数 | 文字 | |
32 | 0x20 | SPC | 空白文字 |
33 | 0x21 | ! | |
34 | 0x22 | “ | |
35 | 0x23 | # | |
36 | 0x24 | $ | |
37 | 0x25 | % | |
38 | 0x26 | & | |
48 | 0x30 | 0 | |
49 | 0x31 | 1 | |
50 | 0x32 | 2 | |
51 | 0x33 | 3 | |
52 | 0x34 | 4 | |
53 | 0x35 | 5 | |
54 | 0x36 | 6 |
コマンド記述例
具体的なコマンドの記述例としてTASCAMのCDプレイヤーの例をご紹介します。この機材ではアスキーの制御コードの1つラインフィードを記載し、マシンIDを挟んで、コマンドが入り、最後にCR(キャリッジリターン)で終了するとマニュアルで説明されています。
Medialon社のコントローラーでコマンドを定義した例が右になります。この製品では!に続く数値をHEXと認識するルールになっており、LFを0A,マシンIDがゼロとしてHEXの30を入力しPLAYコマンドの12を入れて、最後にCRをHEXで記述しています。