初出:技術評論社「組込みプレスVol.4」(2006年9月29日発売)
機器のスイッチ類を押しても反応しなくなる。ある操作に対しての動作が想定したものと異なる。そのような場合、その機器は誤動作しています。 誤動作には特定の操作手順に依存したソフトウェアの不具合が原因の場合とノイズによる誤動作が原因の場合があります。
(1) CPU 誤動作対策
ノイズそのものがCPU 周辺の回路に直接影響を及ぼして機器が誤動作する場合があります。 CPU はメモリ上の命令コードを読み取って動作するわけですが読み取った命令コードがノイズによって変わると全く想定外の動作をすることになります。 データを保存したメモリが破壊される、破壊されないまでも読み取りの過程でデータが変化するとやはり想定外の動作をすることになります。 このようなCPU そのものが誤動作する状況をあらかじめ想定してソフトウェアで対策を行う場合があります。
一番過酷な環境で動作するのは人工衛星の搭載システムです。 宇宙空間では宇宙線が人工衛星の外壁を突き抜けて直接メモリ素子に飛び込んで、エラーを発生させたり、素子を破壊したりすることがあります。 このようなシステムでは複数の処理系を動作させて多数決で正しい処理を行うことにより誤動作を防ぎます。 ノイズ発生源には以下のようなものがあります。
また、ノイズは以下の経路でシステムに侵入します。
各種ノイズ試験機を使って直接的に機器に向けてノイズを与える。電源を意図的に不安定にする。このような状況を作り出して誤動作しないことを確認する試験がメーカの量産前には行われますが、このような試験工数と対策工数はソフトウェアの開発工数とはメーカが捉えていない場合があり、注意が必要です。
なお、メカ的なスイッチなどの状態が安定するまでの間、過渡的にON/OFF が確定しない現象、チャタリングに対する対策はノイズ対策ではありません。
(2) 通信内容の保証
通信経路にある程度の距離がある場合にはそこにノイズが混入することにより、データが破壊される場合があります。 これは比較的長い歴史があり、組み込みシステムに限らず、「プロトコル」により、標準の対策が施されます。
それぞれ利用するプロトコルに応じた実装を行う必要があります。 逆に、同一ボード上のチップとの通信を行う場合にはそのようなプロトコルを省略しても通信エラーが発生しないものとして設計することも可能です。 過剰な誤り訂正は無駄な実装になります。
(3)センサーなどのノイズ対策
エアコンなどは室温を感知する温度センサーの情報をA/D コンバータによってデジタル化し、その数値に基づいて制御を行います。
このとき、A/D コンバータの出力にノイズが混入してそのまま鵜呑みにする制御を行うと、快適なエアコンの制御は出来なくなります。 これはセンサーで感知する対象と時間軸の問題です。 温度変化は緩慢な時間間隔で制御すれば十分なので、サンプリング周波数を長めに設定して、移動平均などでデータを平滑化すれば十分にノイズの除去ができます。
エンジン制御など俊敏な制御が要求されル場合は同じように移動平均でデータを平滑化するにしても高速な処理が要求されます。 ノイズそのものの周波数特性を見極めてサンプリング周波数などを適切に設計する必要もあります。
セコメントをする