動作範囲外でも普通に動くのか

製品の動作を検証している中で、「動作範囲外にして動作が失敗するか確認してこい」と言われ、

それで実際に試してみたのだが……おい! 普通に動くやんけ!


なぜこういうことを確かめたのかというと、その前に2つの動作モードを切り替えられるか検証していたのよね。

仮にこの2つの動作モードをAモードとBモードと書くけど、

Aモードに設定したときにAモードの動作範囲の上限下限で、Bモードに設定したときにBモードの上限下限で動くか確認して満足していた。

ところがそれだけでは切り替えられていることの確認には不十分なのでは? という話になって、

Aモードに設定して、Aモードの動作範囲外でBモードの動作限界で失敗すれば、確かにBモードではなくAモードに設定できていることがわかる。

このときの動作環境はAモードの動作範囲から大きく逸脱しており、明らかに失敗するだろうと思っていたのだ。

ところがなんとAモードに設定しても普通に動いてしまったというから、設定失敗疑惑が出てきたのだった。


その後、動作時の内部状態を詳しく調べた結果、正しくモード設定できていることがわかった。

だから本当にAモードなのに、Aモードの動作範囲外で平然と動いていたのだという。

もっとも内部状態をあれこれ調べた結果、動作範囲外の状態ではある部分の動作が設計から逸脱していることがわかった。

なので、正しく動いているように見えるけど、確かに動作範囲外であることがわかった。

もっとも、動作範囲外で動かしたとしても製品を壊したり、周囲に危害を加えることようなことはないので、

「おい! 普通に動くやんけ!」と思いながら使ってもちょっと性能が低下するぐらいであまり問題はなさそう。


あれこれと動作範囲はこの範囲でとか書かれることがあるけど、

実際のところ範囲外の状態で使っても普通に動いてしまうことはよくある。

ただ、範囲外の状態で動かし続けると、製品を壊したり、周囲に危害を与えてしまう恐れもある。

なので、動作範囲を守って正しく使いましょうと言われるわけだけど、そういうクリティカルな問題ばかりとも限らない。

ある部分の値をある範囲に収められるように動作範囲を定めているものの、そこから大きく外れても若干の性能低下で済むということはあろうかと思う。

今回、動作範囲外の状態にしたときに設計から逸脱した動作になった部分って、設計から逸脱したとしても性能への影響は小さい。

けど、小さいけど影響が皆無ではないから、そこは動作範囲外と言っているわけだし、それなりの理屈があるわけである。

ただ、内部的な動作を知らない人からしてみれば、多分気づかないような小さな問題なのかなぁと。


動作範囲外なのに特に問題なく動作するのがいいのか悪いのかという問題はあるんだけどね。

これが製品を壊したり、周囲に危害を加えるような動作の逸脱ならば、それを封じて回るべきなんだろう。

例えばヒューズを入れたり、マイコンに監視させたり……本当に危ないところはそうするべきだ。

特に今回はそういう点で問題があったわけじゃないし、特に動作を封じるということもしなかったわけだ。

動作がおかしくなっても動作範囲外だし知らん、と思ってたら案外うまく動いてしまったと。

得てしてそんなもんだよね。特に不思議な話ではない。あまり動作範囲外で動かしたときの影響を吟味してなかっただけで。