無線を使ったデータ伝送
目次
他のページで記載したように無線通信は有線と比べて制約も多く、また通信品質は周辺の環境に大きく依存します。具体的には有線の場合は複数の信号線を使用する事ができますが、無線の場合は電波を飛ばして通信を行いますので、1本の信号線に複数の機器が接続されているイメージになります。またノイズの多い環境では通信エラーが発生しやすく、通信距離が長い場合は微弱な信号を受信することになりますので、特に影響を受けやすくなります。
このページでは無線でデータ通信をおこなった場合の一般的な通信方法及び考慮する点について記載します。
通信方式
通信方式には大きく分けて単向通信(単方向通信)と双方向通信があります。
単向通信方式または単方向通信方式(Simplex)
機器Aから機器Bの1方向のみ通信を行う方式です。機器Aはデータの送信のみ、機器Bはデータの受信のみ行います。テレビの操作や照明のON/OFFをリモコンで行うようなイメージです。
双方向通信方式(Duplex)
機器Aから機器Bだけでなく、機器Bから機器Aへ通信も行うことができる方式です。機器Aと機器Bはお互いに双方向で通信が行えます。双方向通信には以下のような方式があります。
半二重通信方式(Half duplex)
単信方式とも呼ばれています。機器Aと機器Bは双方向で通信は行えますが、同時ではなくどちらか1方向のみ通信を行います。お互いに送信・受信を切替えて通信を行います。
全二重通信方式(Full duplex)
複信方式とも呼ばれています。機器Aと機器Bは双方向で同時に通信を行うことができます(機器Aから機器B、機器Bから機器A)。
一般的な無線通信では
一般的な無線通信では1つの無線周波数で通信を行いますので、単向または単信方式での通信となります。Bluetoothや無線LANなどは全二重で通信しているように見えますが、実際には通信速度より十分に速い速度で単信通信を行い、さらに高速で送受信の切り替えを行っています。
送信・受信の2つ無線機を使い、2つの周波数帯を使用して全二重通信(複信)を行うことも可能ですが、その場合、送信・受信周波数を十分離すなどしてお互いの電波を妨害しないように工夫する必要があります。
データの伝送制御
有線で通信を行う場合も送・受信間でどのような手順で通信を行うかあらかじめ決めてから通信を行いますが、無線の通信でも同様の制御が必要になります。それに加えて無線での通信の場合、システム全体で送・受信間の同期、相手先の指定、通信エラーに対する処理等が必要になります。
主な通信のデータ制御
送受信切替え
1つの周波数を使用する場合、お互いの通信が衝突しないように送信・受信の制御が必要です。例としては以下のような方法があります。
通信を単方向で行う
この方法はシンプルですが、情報は一方的になるため、データが到達したかどうか送信側で把握する事ができません。そのため送信側では複数回繰返し送信、受信側では一定期間データを受信できなかったときのエラー出力を行うなど運用面で工夫が必要です。
ポーリングを行う
あらかじめマスター・スレイブを決め、通信を行う時は必ずマスターからの問いかけに対して返信をするように通信を行います。マスターがスレイブからの返信が受信できなかった場合は再要求することも可能ですが、スレイブは送りたいデータがあってもマスターから問いかけがあるまで待つ必要があるため、リアルタイムで情報をやりとりをする必要がある場合には使用できません。またスレイブに返信するデータがない場合でも各スレイブに対してポーリングがされるため、1周期の時間が長くなります。
タイムドメインを行う
タイムテーブルを作成し、それぞれの機器が通信できる時間を割当てて通信できる時間を決めます。ポーリングに比べてマスターからスレイブへポーリングが不要なため、1回の通信周期を短くすることが可能です。その一方ですべての機器間で正確な時間管理が必要になります。時間がずれた場合、機器間で通信の衝突が発生しますので、定期的な時間あわせが必要になります。
※ 特定小電力無線を使用する場合、他の無線機器やシステムが同じ周波数を使用する可能性もありますので、上記以外に他機器が同じ周波数を使用(混信)することも考慮する必要があります。
機器間の同期
機器間の同期については大きく分けて2つあります。
タイミングの調整
さきほど記載したタイムドメインで通信を行う場合などは、機器同士の時間がずれてしまうと通信の衝突が発生してうまく通信ができなくなります。定期的に機器間の時間調整が必要になります。
基準信号のズレの調整(通信関係)
他のページでも記載していますが、機器間で無線部に使用している基準信号やデータクロック信号のずれを補正します。具体的にはプリアンブル信号(データを送信する前に11001100…、10101010…のような同調信号)を送り、送受信間の通信周波数のズレや通信速度の補正を行います。
パケットフォーマット
送受信間でお互いに通信を行うデータフォーマットを決めます。パケットフォーマットについては無線モジュール内部で自動的に処理されますのでこのページでは説明を割愛します。
符号化・暗号化
他の機器が傍受しても通信を行ったデータがわからないように、通信を行うデータの符号化・暗号化を行います。
エラー訂正
受信したデータに誤りがあった場合、エラー訂正を行いデータを修復します。
再送信
データが正しく受信できなかった場合、受信側から再送信を要求したり、送信側で再送信を行います。
フェイルセーフ
最後の項目としてに記載していますが、フェイルセーフは無線通信を行う上では最も考慮しなければいけない事かもしれません。無線通信では混信等により通信が途切れることが想定されますので、無線通信が途切れても安全に稼働するようにシステムを構築する必要があります。
たとえば、ボタンを押し続けている間動作するような装置に無線機器を組み込んだ場合で、ボタンを押しているときに通信が途切れた場合、装置は停止すべきなのか、そのまま動作し続けるべきなのか等、無線の状況に関係なく動作するようにしなければなりません。もし荷物を搭載している場合、途中で急停止すると荷物が崩れたりする可能性がありますので徐々にスピードを落としながら停止するなどの制御が必要かもしれません。また無線が途切れた場合でもセンサ等により危険を察知し安全に停止するようにする必要があります。
いずれにしても、無線通信が途切れても良いようにシステム全体で動作するように無線機器を組込まなければなりません。