とある製品に搭載されているファンの回転数を監視するシステムの調査をしていた。
というのも、これと同じ機能を持ったものを新しく作る必要があったので、既存のはどうなってるのか調べたかったと。
ファンユニットに組み込まれたロータリーエンコーダーのパルスをカウントして回転数を監視しているのだが、
このロータリーエンコーダー出力をファンクションジェネレータで模擬するのにいろいろ治具が必要で、
それで後回しになってたんだけど、治具を作ったり、集めたりして、実験環境を整えられた。
それで実験していたら、ファン回転数異常状態と正常状態を行ったり来たりする周波数があることがわかった。
って、その前に設計資料を確認していた時点でこうなることは知ってたんだけどね。
というのも、このシステムでは一定時間内のパルスの回数を数えることで回転数を測定して、異常か正常か判定している。
1秒間に60回以上のパルスが入れば正常と判定するようになっていたとする。
ここで、65.5Hzのパルスを入れれば1秒間に65回か66回かパルスが入るので、必ず正常と判定される。
55.5Hzのパルスを入れると1秒間に55回か56回かパルスが入るので、これは60回未満だから必ず異常と判定される。
一方、59.5Hzのパルスを入れたときを考えてみると、1秒間に59回か60回となり、59回のときは異常、60回のときは正常になってしまう。
こういうことが原理的に起きてしまうことは設計から明らかだった。
この問題の解決策はいくつかあるけど、一番簡単なのがヒステリシスを用意すればいいんですね。
1秒間60回未満で異常と判定、62回以上で正常に復帰とすれば、
1秒間で59回か60回の場合は、59回を測定した時点で異常と判定、その後62回以上にならないから復帰しない。
判定値にヒステリシスを持たせているものはけっこう多いが、境界値付近で厄介な挙動を起こさないようにと考えられたものだ。
簡単な仕組みだが、うまい解決になっているように見える。
というか、このシステム、本来ならばヒステリシスを持っていてもよさそうなところに全くヒステリシスがない。
もっとも新しく作るシステムでは、ファン回転数の測定方式が変わる予定で、
同じ周波数を入れ続けている限りにおいては回転数が揺らぐことはごく少なくなる。
原理的には境界値付近のごく狭い周波数では発生しうるが、なかなかそこを狙うのは難しいだろう。
なので、ヒステリシスを持たせなくても、簡単に異常状態・正常状態を行き来する状態になることはなさそう。
他も状況を鑑みると、境界値付近に留まり続けるのはなかなか難しい。
というかファン回転数もファンクションジェネレーターで模擬すれば簡単に起こせるけど、実機で起こすのは難しいし。
だからヒステリシスはいらないのかというと、そういうもんではないとも思うのだが。
ただ、もともとヒステリシスがあることを想定した仕様になっていないので、注意が必要とも。
ヒステリシスの幅をごく狭くすれば許されそうな気もするけど。