省電力モードについて(★★)

無線LANには、省電力モードがあります。一般的な通信の場合は、ほとんどの時間が待ちとなるため、その待ち時間の電力を如何に落とすかが、バッテリーを長持ちさせることにつながります。
通常、送信状態、受信状態にしておくと、無線LANの半導体は200mA程度(@3V)の電流が流れます。送信も受信も増幅度の大きなアンプを利用するため、同程度の消費電流となります。
待機状態では、送受信回路もデータ処理用の回路の動作も必要ありませんので、10uA程度の電流で済みます。実に20,000倍もの差がつきます。


インフラストラクチャーモードのパワーセーブ

無線LANの機器では、2つのモードが定義されています。アクティブモードと、パワーセーブモード(PSモードとも言う)です。今までの通常の動作モードはアクティブモードといいます。これに対して低消費電力動作が可能なパワーセーブモードがあります。

 
アクティブモードから、パワーセーブモードに入るには、下記のように、フレームのPMビットを1にしてSTAからAPに送ることで達成できます。特に送るデータがなければ、PMビットが1の空フレーム(Nullパケットと言う)を送ってもよいです(通常はこのパターンが多い)。
なぜ、このようなことをするかと言いますと、APにSTAがパワーセーブモードに入ったということを知らせるためです。これがないと、APは、STAがパワーセーブモードに入っていることがわからずに、データを送ってしまい、データが消失してしまいます。
wlan_psenter



また、パワーセーブモードからアクティブモードになるには、下記のように、フレームのPMビットを0にしてSTAからAPに送ることで達成できます。
wlan_psexit



パワーセーブモードであっても、STAからAPにフレームを送るときは、アクティブモードと同様にいつでも送信できます。
逆に、APからSTAにパケットを送るときは、まず、ビーコンのTIM(Traffic Indication Map)というSTA宛のパケットを持っていますというフラグをAPが立てます。それを見たSTAは、PS-Pollというフレームを投げます。それを受けたAPは、STA宛てのデータを送信します。つまり、STA主導でデータを取りに来る形です。
wlan_pstim

このPS-Pollを投げるタイミングは、STA次第なので、APは一定期間データを蓄積しなければなりません。しかし、この蓄積時間は仕様で決められてないため、APはバッファが一杯になったらデータを破棄してしまいます。そのため、パワーセーブ状態のSTAに対して、APがつながっている先から多量のデータを投げると、ほとんどが消えて無くなってしまうので、注意が必要です。

この機構があるため、STAはAPが送信しているビーコンだけを取得すれば良くなり、100ms中3msくらいの時間だけ受信回路を動かしていれば良くなり、低消費電力を実現できてます。


アドホックモードのパワーセーブ

アドホックモードでも、パワーセーブは実行可能です。しかし、ビーコンを持ち回りで送信し、そのビーコンを送信した機器は、ビーコン期間はずーっと起きている必要があるため、あまり低消費電力にはなりません。
アドホックモード自体、世の中でほとんど使われておらず、さらにそのパワーセーブはもっと使われてないため、説明は省略します。