技術情報

通信プロトコル

はじめに

通信プロトコルはひとことで表現するとお互いに通信を行う場合の手順です。無線通信は有線とは異なりオープンな空間で通信を行います。厳密には異なりますが、例えるならノイズのある伝送路(信号線)1本に複数の機器が接続されているイメージです。無線通信の場合、有線で直接機器同士を接続する場合に比べるとプロトコルは複雑になります。

通信プロトコルを搭載した無線機器を使用する場合、ユーザーはプロトコルについてはほとんど気にせず使用できますので不要な情報なのかもしれませんが、基本的な部分だけでも知っていると無線通信を理解する上でも役立ちます。

細かなところまで説明していくと難しくなりますので、ここでは基本的な内容のみ説明したいと思います。

有線(1:1の接続)と無線の違い

有線通信と無線通信で考えた場合、一番大きな違いはベースバンドの信号を直接送信できないことです。他の記事で書きましたが、無線で送るには搬送波に変調・復調を行って通信を行う必要があります。

無線通信はオープンな空間で送信を行うため、1本の伝送路にたくさんの機器がぶら下がっているイメージになります。技術的には複数の周波数を使い双方向や複数同時に通信を行う事もできますが、ここでは単方向で1つの周波数を使った2値FSKの場合を例に説明します。

2値FSKの無線通信ではクロック信号を一緒に送る事ができないため、送信機と受信機のデータを取り込むタイミングや周波数誤差を合わせるための同期信号(プリアンブル)、どの機器からどの機器宛に情報を送っているのかという識別符号、さらに通信状況によってはデータ化けもありますのでデータチェックを行う付加情報等が必要になります。これらを付加した情報の塊をパケットといいます。

1バイトのデータを送る場合でも無線で送る場合は付加情報によっては10バイトくらいになる事もあります。

主なパケット情報

以下はRFICなどで記載されているパケット情報の資料から抜き出しています。

プリアンブル送信機・受信機間で同期を取るために送ります。プリアンブルを使って機器間の周波数ズレやHi-Loデータのslicer回路の調整、通信速度の誤差の調整をおこないます。プリアンブルは1010…や11001100…のような1と0のバランスの良い信号を送信します。
同期ワード受信信号の始まりを見つけるために送受信機間であらかじめ決めたバイト(ワード)データを送ります。同期ワードの代わりに機種コードなどを送る場合もあります。
識別符号無線では同一周波数のすべての機器が情報を受信できるため、受信時に自分宛の通信かどうか判別するためにどの機器からどの機器宛のデータなのか識別するための情報を送信します。
送信バイトサイズ送信するデータサイズが可変長の場合、サイズ情報を送る必要があります。受信側では指定されたバイト数のデータを受信します。
送信データ送信したいデータを入れます。セキュアな通信を行うために送信する情報をそのまま送るのではなく暗号化や、0または1信号が長く続かないようにマンチェスタ符号化、ホワイトニングを行う場合もあります。
エラー検出データ受信したデータが正しいかどうか判断するためのチェックデータを送ります。チェックサムやCRCを送りますが、エラーデータを復元するための符号を送る場合もあります。
終了バイト終了を示すデータまたはダミーデータを送ります。

送信側では上記を含むパケットを送信し、受信側ではパケットから必要な情報を取り出して処理を行います。

必要な手順

上記で紹介したパケットを通信する場合、日本国内であれば周波数帯によっては電波を送信する前に周波数チャネルの空き状態を確認するキャリアセンスが必要になります。また周波数チャネルが一定時間以上使用されている場合、チャネルの変更して別の空きチャネルを使用することもできます。

データを正常に受信できたか確認が必要な場合は情報を受取った機器からACK(acknowledge)を返信する等を行う必要があります。

もし受信したデータにデータ化けがあった場合、エラー訂正によるデータ修復、エラー検出によるパケットの破棄を行います。場合によってはリトライ(再送)を行います。

これらの処理は無線モジュール側で自動的に行われるか、必要に応じてユーザーが行う必要があります。

実効通信速度

主なパケット情報で記載したように無線通信を行うには付加情報が必要なため、送ろうとしているデータサイズより無線で送る実データサイズは大きくなります。例えば無線間通信速度が4,800bpsと記載されている場合でも、実際には付加情報もありますのでデータのスループットは落ち、見かけ上の通信速度(実効通信速度)は遅くなります。例えば当社のMU-3-429を例にした場合、無線間の通信速度は4,800bpsですが、スループットは約3,400bps(255bytesのデータを送信した場合)になります。付加情報の長さは固定になりますので、1回に送る情報のサイズが大きいほど効率が良くなり通信速度が上がります。ただし一度に大量のデータを送った場合、通信エラーによりパケットを破棄しなければならないこともありますので、適当なサイズに分割して送る必要があります。

プロトコルと通信品質

どのような手順で通信を行うかというのは通信品質に大きく影響します。例えばプリアンブルの長さが短すぎる場合、送受信間の周波数ズレやデータを取り込むタイミングがうまく合わずに通信エラーとなります。さきほど挙げたように1回に送信するデータバイト数が大きすぎるとデータエラーが発生したときに再送などが必要になり効率が悪くなりますし、小さすぎるとスループットが落ちます。また0または1が連続するデータを送る場合、HiやLoを連続して送るとビットズレを起こす可能性もあります。

通信品質は受信感度などの無線部ハードの性能だけでなく、通信をやりとりする手法の通信プロトコルにも無線性能は大きく影響されます。