ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

シリアル ポートの概要

はじめに

シリアル ポートのアプリケーションの多くは、シリアル ポートの仕組みに関する詳しい知識がなくても装置と通信が行えます。アプリケーションが簡単に扱える場合や、既に説明された内容について知識をもっている場合は、シリアル ポート セッションから開始し、MATLAB® ソフトウェアとシリアル ポート装置の使用方法を参照してください。

シリアル通信とは

シリアル通信は、2 つ以上のデバイス間での通信に対する最も一般的な低水準のプロトコルです。通常は、デバイスの 1 つはコンピューターですが、相手側のデバイスにはモデム、プリンター、別のコンピューター、オシロスコープや関数発生器などの科学的機器が考えられます。

その名が示すように、シリアル ポートは情報を 1 ビットずつ順次送信あるいは受信します。これらのバイトはバイナリ (数字) 形式またはテキスト形式を使用して送信されます。

シリアル ポート インターフェイス標準

2 つのデバイス間の接続に使用されるシリアル ポート インターフェイスは、米国電気通信工業会の TIA/EIA-232C 標準で規定されています。

オリジナルのシリアル ポート インターフェイス標準は RS-232 (Recommended Standard number 232) で与えられました。"RS-232" は今でも一般的に使用されており、このガイドでも TIA/EIA-232 標準が使用できるシリアル通信ポートを参照する場合に使用されています。RS-232 は以下のシリアル ポート特性を定義します。

  • 最大ビット転送速度とケーブルの長さ

  • 信号の名前、電気特性、関数。

  • 物理的接続とピン割り当て

主な通信は 3 つのピンを使用して行われます。これらはデータ送信ピン、データ受信ピン、接地ピンです。他のピンはデータ フロー制御に使用できますが、必須ではありません。

RS-485 などのその他の標準は、より高速の転送速度、より長いケーブル長、最大 256 のデバイスとの接続などの追加機能を定義します。

シリアル ケーブルで 2 つのデバイスを接続

RS-232 は、シリアル ケーブルで接続されている 2 つのデバイスを、データ端末装置 (DTE) とデータ回線終端装置 (DCE) として定義します。この用語は、コンピューター端末とモデム間の通信の標準としての RS-232 を反映しています。

このガイド全体を通じ、コンピューターは DTE、モデムやプリンターなどの周辺機器は DCE と見なされます。科学的機器の多くは DTE として機能します。

RS-232 は主に DTE と DCE の接続に関与しているので、ピン割り当てはストレートスルー ケーブルの接続として定義され、ピン 1 はピン 1 に、ピン 2 はピン 2 に接続されるというように定義されます。次のダイアグラムは、データ送信 (TD) ピンとデータ受信 (RD) ピンを使用する DTE と DCE シリアル接続を示しています。

シリアル ポートに関する詳細は、シリアル ポート信号とピン割り当てを参照してください。

2 つの DTE と 2 つの DCE をストレート シリアル ケーブルを使用して接続した場合、各デバイスの TD ピンが互いに接続され、各デバイスの RD ピンも互いに接続されます。したがって、同じような 2 つのデバイスを接続する場合は、"ヌル モデム" ケーブルを使用しなければなりません。次のダイアグラムに示すように、ヌル モデム ケーブルでは、ケーブル内で送信線と受信線がクロスしています。

メモ

1 つのシリアル ポートに複数の RS-422 または RS-485 デバイスを接続することが可能です。RS-232 または RS-485 のアダプターがあれば、MATLAB シリアル ポート オブジェクトをこれらのデバイスと共に使用できます。

シリアル ポート信号とピン割り当て

シリアル ポートには、データ信号と制御信号の 2 つの信号タイプがあります。これらの信号タイプに加え、シグナル グラウンドもサポートします。RS-232 標準は 25 のピン接続を定義します。しかし、大部分の Windows® および UNIX® プラットフォームは 9 ピン接続を使用します。実際には、3 つのピンだけがシリアル ポート通信に必要とされます。1 つはデータ受信用、もう 1 つはデータ送信用、そして最後の 1 つはシグナル グラウンドです。

次のダイアグラムは DTE の 9 ピン オス コネクタのピン割り当ての配置を示しています。

9 ピン コネクタに関連するピンと信号については、次の表で説明されています。25 ピン コネクタに使用される信号とピン割り当てについては、RS-232 標準を参照してください。

シリアル ポート ピンと信号割り当て

ピンラベル信号名信号タイプ

1

CD

キャリア検出

コントロール

2

RD

受信データ

データ

3

TD

送信データ

データ

4

DTR

データ端末レディ

コントロール

5

GND

シグナル グラウンド

グラウンド

6

DSR

データセット レディ

コントロール

7

RTS

送信要求

コントロール

8

CTS

受信準備完了

コントロール

9

RI

リング インジケーター

コントロール

用語 "データセット" は、"モデム" または "デバイス" と同義語で、用語 "データ端末""コンピューター" と同義語です。

メモ

シリアル ポート ピンと信号割り当ては DTE に関するものです。たとえば、データは DTE の TD ピンから DCE の RD ピンに送信されます。

信号状態

信号は、"アクティブ" または "非アクティブ" のどちらかの状態になります。アクティブ状態は 2 進数の値の 1 に、非アクティブ状態は 2 進数の値のゼロに対応します。アクティブな信号状態はしばしば、"論理 1""オン""真" または "マーク" で記載されます。非アクティブ状態はしばしば、"論理 0""オフ""偽" または "スペース" などで記載されます。

データ信号では、on 状態は受信された信号電圧が -3 ボルトより低い場合に生じ、off 状態は電圧が 3 ボルトより高い場合に生じます。制御信号では、on 状態は受信された信号電圧が 3 ボルトより高い場合に生じ、off 状態は電圧が - 3 ボルトより低い場合に生じます。-3 ボルトと + 3 ボルトの間の電圧は遷移領域と見なされ、信号状態は未定義となります。

信号を on 状態にするには、制御デバイスでデータ ピンの値を "アンアサート" ("低く") し、制御ピンの値を "アサート" ("高く") します。その逆に、信号を off 状態にするには、制御デバイスでデータ ピンの値をアサートし、制御ピンの値をアンアサートします。

次のダイアグラムは、データ信号と制御信号の onoff 状態を示しています。

データ ピン

ほとんどのシリアル ポート デバイスは、データの送信を同時に行える "全二重" 通信手段をサポートします。したがって、データの送信と受信に別々のピンが使用されます。これらのデバイスには、TD ピン、RD ピン、GND ピンが使用されます。ただし、一部のタイプのシリアル ポート デバイスは、一方向あるいは "半二重" の通信だけサポートします。これらのデバイスには、TD ピンと GND ピンだけが使用されます。このガイドは、お使いのポートに全二重のシリアル ポートが接続されていることを前提にしています。

TD ピンは DTE から送信されたデータを DCE に搬送します。RD ピンは DCE から送信されて DTE で受信されたデータを搬送します。

制御ピン

9 ピン シリアル ポートの制御ピンは、接続されているデバイスの存在を判断し、データのフローを制御するために使用されます。制御ピンには以下が含まれます。

RTS ピンと CTS ピン-  RTS ピンと CTS ピンはデバイスがデータの送信あるいは受信の準備ができているかを知らせるために使用されます。このタイプのデータ フロー制御は "ハードウェア ハンドシェーキング" と呼ばれ、送信中のデータ損失を防ぐために使用されます。DTE と DCE の両方に対して有効になっている場合、RTS と CTS を使用するハードウェア ハンドシェーキングは以下の手順を取ります。

  1. DTE は RTS ピンをアサートして DCE にデータ受信準備ができたことを指示します。

  2. DCE は CTS ピンをアサートして、TD ピンにデータを送信できる準備ができたことを示します。データが送信できなくなってしまった場合は、CTS ピンがアサートされません。

  3. データは TD ピンを通じて DTE に送信されます。データが受信できなくなってしまった場合は、RTS ピンが DTE によってアサートされず、データ通信が中止されます。

MATLAB ソフトウェアでハードウェア ハンドシェーキングを有効にするには、データ フローの制御: ハンドシェーキングを参照してください。

DTR ピンと DSR ピン-  多くのデバイスは、接続され電源が入っていると、DSR ピンと DTR ピンを使用して信号を発信します。DTR と DSR を使用して接続されたデバイスの存在を知らせるには、以下の手順に従います。

  1. DTE は DRT ピンをアサートし、DCE が通信ラインに接続されることを要求します。

  2. DCE は DSR ピンをアサートし、接続されていることを示します。

  3. DCE は通信ラインから切断されている場合は、DSR ピンをアサートしません。

DTR/DSR ラインには用途に応じて複数の目的があります。たとえば、これらのラインはハンドシェーキング、フロー制御またはユニットへの電力供給にも使用されます。ただし、RTS/CTS ラインは主にホストとデバイスの間のデータ フロー制御に使用されます。特定のピンの動作については、お使いのデバイスのドキュメンテーションを参照してください。

CD ピンと RI ピン-  CD ピンと RI ピンは一般に、モデムとモデムが接続されている際に特定の信号が存在することを示すために使用されます。

モデムは CD ピンを使用して、他のモデムとの接続確立やキャリア トーンの検出を信号で知らせます。DCE が適切な周波数の信号を受信すると CD がアサートされます。DCE が適切な信号を受信しない場合は、CD はアサートされません。

RI ピンは可聴リンギング信号の存在を示すために使用されます。DCE がリンギング信号を受信すると RI がアサートされます。DCE がリンギング信号を受信していない場合 (たとえばリングとリングの間など)、RI がアサートされません。

シリアル データ形式

シリアル データ形式には、スタート ビット 1 つ、5 つから 8 つのデータ ビット、ストップ ビット 1 つが含まれます。パリティ ビットと追加のストップ ビットが含まれることもあります。次のダイアグラムは、シリアル データ形式を示しています。

以下の表記はシリアル ポート データの形式を示しています。

number of data bits - parity type - number of stop bits

たとえば、8-N-1 は 8 つのデータ ビット、パリティ ビットなし、ストップ ビット 1 つ、7-E-2 はデータ ビット 7 つ、偶数パリティ ビット、ストップ ビット 2 つと解釈されます。

データ ビットは普通 ASCII 文字を表すので、しばしば "文字" と呼ばれます。残りのビットはデータ ビットを囲んでいる (フレームを形成している) ので "フレーム ビット" と呼ばれます。

バイトと値

"バイト" はシリアル データ形式を構成するビットの集まりです。1 バイトは 8 ビットで、シリアル データ形式は 7 ビットから 12 ビットまでの範囲があるので、この用語は誤りのように見えるかもしれません。しかし、シリアル データがコンピューターに保存されると、フレーム ビットは除去され、データ ビットだけが維持されます。さらに、送信に指定されたデータ ビット数にかかわらず、8 データ ビットが常に使用され、未使用のビットは値ゼロに割り当てられます。

データの読み取りや書き込みを行う際には、"値" を指定することが必要なことがあります。値は 1 つまたは複数のバイトです。たとえば、int32 形式を使用するデバイスから 1 つの値を読み取る場合、その値は 4 バイトから成ります。値の読み取りや書き込みの詳細は、データの読み取りと書き込みを参照してください。

同期と非同期通信

RS-232 標準は 2 つのタイプの通信プロトコルをサポートします。これは同期と非同期です。

同期プロトコルを使用すると、送信されるすべてのビットは共通のクロック信号に同期されます。2 つのデバイスは最初に互いに同期化され、継続して文字を送信して同期化を維持します。実際のデータが送信されていないときでも、ビットの一定したフローにより、各デバイスはいつでも相手のデバイスがどこにいるかわかります。送信されるビットは実際のデータであることもあれば、アイドル文字であることもあります。同期通信は各データ バイトの最初と最後を示すビットが不要なので、非同期通信よりも高速でデータ転送ができます。

非同期プロトコルを使用すると、各デバイスは独自の内部クロックを使用し、それぞれ任意の時間にバイトを送信することになります。したがって、時間を使用してビットを同期する代わりに、データ形式が使用されます。

具体的には、データ送信は単語のスタート ビットを使用して同期化され、1 つまたは 2 つのストップ ビットが単語の終わりを示します。これらの追加ビットを送信しなければならないので、非同期通信は同期通信より少し時間がかかります。ただし、プロセッサが追加のアイドル文字を扱わずにすむという利点もあります。ほとんどのシリアル ポートは非同期で動作します。

メモ

このガイドでは、"同期""非同期" という用語は、読み書きの動作が MATLAB コマンド ラインへのアクセスをブロックするかどうかに言及するものです。詳細は、MATLAB コマンド ラインへのアクセスの制御を参照してください。

ビットが送信される方法

定義により、シリアル データは一度に 1 ビットずつ送信されます。ビットは以下の順に送信されます。

  1. スタート ビットがゼロ値で送信されます。

  2. データ ビットが送信されます。最初のデータ ビットは最下位ビット (LSB) に対応し、最後のデータ ビットは最上位ビット (MSB) に対応します。

  3. パリティ ビット (定義されている場合) が送信されます。

  4. 1 つまたは 2 つのストップ ビットが送信されます。それぞれの値は 1 です。

"ボー レート" は 1 秒間に転送されるビット数です。転送されるビットにはスタート ビット、データ ビット、パリティ ビット (定義されている場合)、そしてストップ ビットが含まれます。

スタート ビットとストップ ビット

同期と非同期通信で説明されているように、ほとんどのシリアル ポートは非同期で動作します。これは、送信されたバイトがスタート ビットとストップ ビットで識別されなければならないことを意味します。スタート ビットはデータ バイトがこれから開始されることを、ストップ ビットはデータ バイトの転送が終わったことを示します。シリアル データ形式でバイトを識別するプロセスは以下の手順を取ります。

  1. シリアル ポート ピンがアイドル (データを送信していない) 場合、これは on 状態になっています。

  2. データ転送がこれから開始されるときに、スタート ビットによってシリアル ポートが off 状態に切り替わります。

  3. 次にシリアル ポート ピンはストップ ビットによって on 状態に戻ります。これはバイトの終わりを示します。

データ ビット

シリアル ポートによるデータ ビット転送は、デバイス コマンド、センサー読み取り、エラー メッセージなどを表します。データは 2 進数データまたは ASCII データで転送されます。

ほとんどのシリアル ポートは 5 から 8 のデータ ビットを使用します。2 進数データは一般に 8 ビットで転送されます。テキストベースのデータは 7 ビットまたは 8 ビットで転送されます。データが ASCII 文字セットの場合は、27 または 128 の異なる文字があるため、最低 7 ビットが必要とされます。8 つ目のビットが使用される場合、この値はゼロでなければなりません。データが拡張 ASCII 文字セットの場合は、28 または 256 の異なる文字があるため、8 ビットが使用されなければなりません。

パリティ ビット

パリティ ビットは転送データの簡単なチェック (パリティ チェック) を提供します。次の表はパリティ チェックのタイプを示します。

パリティ タイプ

パリティ タイプ説明

偶数

データ ビットとパリティ ビットの合計が 1s の偶数になります。

マーク

パリティ ビットは常に 1 です。

奇数

データ ビットとパリティ ビットの合計が 1s の奇数になります。

スペース

パリティ ビットは常に 0 です。

マークとスペースのパリティ チェックは最小限のエラー検出しかできないのでほとんど使用されません。パリティ チェックを一切行わないこともできます。

パリティ チェックのプロセスは以下の手順を取ります。

  1. 転送デバイスがデータ ビットの値と選択されたパリティ チェックのタイプに合わせて、パリティ ビットをゼロまたは 1 に設定します。

  2. 受信デバイスは、パリティ ビットが転送されたデータと一致しているかどうかチェックします。一致する場合、データ ビットが受け入れられます。一致しないと、エラーが戻されます。

メモ

パリティ チェックは 1 ビットのエラーだけを検出します。複数ビットのエラーは有効データのように表示されます。

たとえば、データ ビット 01110001 がコンピューターに転送されたとします。偶数パリティが選択された場合、パリティ ビットは転送デバイスによってゼロに設定され、1s の偶数を生成します。奇数パリティが選択された場合、パリティ ビットは転送デバイスによって 1 に設定され、1s の奇数を生成します。

プラットフォームのシリアル ポート情報を見つけるには

このセクションでは、Windows と UNIX プラットフォームのシリアル ポート情報を見つける方法を説明します。

メモ

お使いのオペレーティング システムはすべてのシリアル ポート設定の既定値を提供します。ただし、これらの設定は MATLAB コードでオーバーライドされますが、シリアル ポートのアプリケーションには影響しません。

関数 seriallist の使用

関数 seriallist はシステムのすべてのシリアル ポートのリストを返します。リストには、USB-to-Serial デバイスおよび Bluetooth シリアル ポート プロファイル デバイスで提供されるバーチャル シリアル ポートも含まれます。これにより、コンピューター上でアクセスでき、シリアル ポート通信に使用できるシリアル ポートのリストが提供されます。以下に例を示します。

seriallist

ans = 

  1×2 string array

  "COM1"    "COM3"

Microsoft Windows プラットフォーム

  1. Windows の [コントロール パネル] を開きます。

  2. [デバイス マネージャー] をクリックします。

  3. [デバイス マネージャー] ダイアログ ボックスで [ポート] ノードを展開します。

  4. Communications Port (COM1) ノードをダブルクリックします。

  5. [ポートの設定] タブを選択します。

UNIX プラットフォーム

UNIX プラットフォームのシリアル ポート情報を調べるには、シリアル ポート名が必要です。これらの名前は異なるオペレーティング システムでは別の名前になることがあります。

Linux® プラットフォームでは、シリアル ポート デバイスは一般に ttyS0ttyS1 などのように命名されています。setserial コマンドを使用してシリアル ポート情報の表示や構成を行います。たとえば、どのポートが利用できるかを表示します。

setserial -bg /dev/ttyS*
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A

ttyS0 の詳細情報を表示するには、以下のようにします。

setserial -ag /dev/ttyS0
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
        Baud_base: 115200, close_delay: 50, divisor: 0
        closing_wait: 3000, closing_wait2: infinte
        Flags: spd_normal skip_test session_lockout

メモ

setserial -ag コマンドが機能しない場合は、そのポートの読み取りと書き込み権限があることを確認してください。

すべてのサポートされる UNIX プラットフォームでは、stty コマンドを使用してシリアル ポート情報の表示や構成を行います。たとえば、ttyS0 のシリアル ポート プロパティを表示するには以下を入力します。

stty -a < /dev/ttyS0

ボー レートを 4800 ビット/秒に構成するには、以下を入力します。

stty speed 4800 < /dev/ttyS0 > /dev/ttyS0

バーチャル USB シリアル ポートの使用

オペレーティング システムでシリアル ポートとして存在するデバイスをお使いの場合は、MATLAB でバーチャル USB シリアル ポートとして使用することができます。そのようなデバイスの例として、USB シリアル ドングルがあります。Bluetooth® デバイスに関しては、Instrument Control Toolbox™ の Bluetooth サポートを使用します。詳細は、Bluetooth Interface Overview (Instrument Control Toolbox)を参照してください。

MATLAB は、これらのデバイスのベンダーからシリアル ドライバーが提供されて、ネイティブなハードウェアがエミュレートされる限り、これらのデバイスと通信することができます。HyperTerminal などの特定のソフトウェアは、ネイティブ ハードウェアの完全実装とサポートにデバイス ドライバーを必要としません。

参考文献

[1] TIA/EIA-232-F, Interface Between Data Terminal Equipment and Data Circuit-Terminating Equipment Employing Serial Binary Data Interchange.

[2] Jan Axelson, Serial Port Complete, Lakeview Research, Madison, WI, 1998.

[3] Instrument Communication Handbook, IOTech, Inc., Cleveland, OH, 1991.

[4] TDS 200-Series Two Channel Digital Oscilloscope Programmer Manual, Tektronix, Inc., Wilsonville, OR.

[5] Courier High Speed Modems User's Manual, U.S. Robotics, Inc., Skokie, IL, 1994.