産業機械をパソコンの中でひも解く・ロータリー充填機(後編)―― 実機が無いうちに、異常監視はどこまで見えるか
- python
- シミュレーション
- 信号処理
- 異常検知
- メカトロニクス

前編でパソコンの中に建てたロータリー充填機。この動きは物理を解いた結果から起こしています。
前編では、外から分かる仕様だけを頼りに、ロータリー充填機をパソコンの中に建てました。後編は、その機械にセンサを付けて回し、異常がどこまで見えるかを試します。狙いは一つで、センサを買って付ける前に、机の上で「これは見える/これは見えない」をどこまで言えるか、です。付けて、配線して、それから見えないと分かるのが、いちばん高くつきます。
前編と同じく、実機はありません。ここで出るのは、この物理とこの諸元の下で出るはずの信号です。コードと詳しい諸元は記事末のリポジトリにあります。
センサを4つ付ける
付けたのは4つで、どれも普通に手に入るくらいのものです。加速度センサが2つあって、ひとつは架台に付けてゆっくりした揺れを、もうひとつは軸受の箱に付けて速い振動を見ます。残りは、テーブルを支える軸に貼るひずみゲージと、モータに流れる電流です。加速度センサが2つ要る理由は、後で触れます。
物理の答えは、そのままではセンサの出力ではない
ここは手を抜けないところでした。物理の計算が出すのは、その場所が実際にどう揺れているか、という理想の値です。センサはそれをそのまま返してくれません。揺れは取り付け部を通るうちに形が変わり、センサには追いつける速さの限界があり、決まった間隔でしか読まず、自分の雑音も乗り、細かい差は丸められます。この段を全部通して、はじめて検出のやり方を試したことになります。ここを飛ばして理想の値のまま並べると、「検出できました」が机上の話になってしまいます。
速い振動を、遅いセンサで見てはいけない
軸受に傷があると、1秒間に3000回くらいの速い振動が出ます。これを、1秒間に1000回しか読まないセンサで見るとどうなるか。見えないだけなら害はありません。実際には、ありもしない信号が見えてしまいます。

上は、速い振動をそのまま遅い間隔で読んだもの。読み取った点をつなぐと、本当は無い遅い山が見える。下は、速い分を先に落としてから読んだもの。つないでも平らなまま。
これは、プログラムを書く人ならぴんと来る壊れ方だと思います。速すぎる信号を粗い間隔で拾うと折り返して、別のゆっくりした波があるように見えます。これを真に受けると、原因の分からない低い周波数の異常を、いつまでも探すことになります。速い動きを先に落としておけば、この偽の山は消えます。
逆に、速いほうを見るセンサでは、ゆっくりした揺れが見えません。低い周波数を切ってあるからです。ひとつのセンサで両方は見られない。加速度センサが2つある理由はこれです。
故障を4つ入れて、総当たりする
用意した故障は4つ。瓶がひとつ載っていない、弁の閉じが遅れる、カムを押さえる部品が摩耗する、モータの軸受に傷が入る。正常なときのばらつきから大きく離れたら異常、という素直な判定で総当たりします。
結果を先に書きます。この4つのセンサではっきり分かったのは、二つでした。軸受の傷と、瓶の欠品です。しかも、別々のセンサに出ます。
| 故障 | 出たセンサ | この構成での見え方 |
|---|---|---|
| モータ軸受の傷 | 軸受箱の速い加速度センサ | 傷が通る周期に線が立つ。正常の数千倍の高さ |
| 瓶の欠品 | 支持軸のひずみ | テーブル1周に1回の成分。正常から48.8σ |
| 弁の閉じ遅れ | 出ない | 注ぐ時間がずれるだけで、動きは変わらない |
| カムの摩耗 | 出ない | トルクの衝撃だが、トルクを測るセンサが無い |
数字は、あとで書くとおり、このモデルの中での隔たりです。実機の余裕とは違います。
軸受の傷は、はっきり分かる

速い振動の山の繰り返しを見ると、傷が通る決まった速さのところに線が立つ。
軸受箱の速いセンサでは、その線がはっきり立ちました。96秒ぶんの衝撃、8595発すべてを、時刻のずれ0.2ミリ秒ほどで、取りこぼしなく拾えました。ゆっくりしたほうのセンサにも、揺れの大きさの持ち上がりとして裾が残ります。軸受の傷は、この構成でいちばん素直に出る故障でした。
瓶の欠品は、ひずみに出る
瓶がひとつ足りないと、そのぶんテーブルに載っている重さの釣り合いが崩れます。この偏りは、テーブルが1周するあいだに1回、支持軸を曲げます。支持軸の根元のひずみは、この重さの偏りでいちばん大きく決まっていて、横向きの揺れの力より桁で大きい。だから欠品は、ひずみのテーブル1周に1回の成分として、はっきり出ました。正常なときのばらつきから遠く離れていて、埋もれてはいません。
このひずみでも、私は最初、判断を間違えています。横向きの反力だけで計算していて、これだと欠品を確かめるのに三千回転あまり、丸一日近く回し続けないと見分けがつかない、と見積もっていました。あとで、支持軸を曲げているのは主に縦の重さの偏りのほうだと気づいて入れ直したら、テーブル36回転で、正常からはっきり離れて出るようになりました。前編の符号の話と同じで、確かめる側の作り方をひとつ取り違えると、見えるはずの故障まで「見えない」と結論してしまいます。
残りの二つは、この構成では出ない
弁の閉じ遅れは、注ぐ時間がずれるだけで、機械の動きそのものは変わりません。加速度にもひずみにも出ませんでした。カムを押さえる部品の摩耗は、トルクの衝撃を作りますが、この機械にはトルクを測るセンサがありません。そもそも測っていないので、見えません。
電流は、どの故障でも引っかかりませんでした。前編で、モータの出力に対して使っている仕事がごくわずかだ、と書きました。負荷がこれだけ軽いと、流れる電流はほとんど一定で、トルクぶんの変化は、その上に乗るごく小さな差でしかありません。それがおよそ0.2ミリアンペア。いっぽう電流計の刻みは、その50倍近い9.8ミリアンペアあります。差は刻みに丸め落ちて、残りません。この諸元では、電流はトルクの弱い手がかりにしかなりませんでした。
4つ足しても、全部は見つからない
はっきり出た二つは、それぞれ別のセンサに現れました。弁の遅れとカムの摩耗は、この4つのどれにも出ません。ひとつのセンサで全部は見えない、という話はよく聞きますが、ここで出たのはもう少し厳しくて、4つ足しても全部は見つけられませんでした。ソフトでいえば、出していないログはあとから追えません。それと同じで、計器を置いていない量は、どうやっても見えない。数を増やせばよいのではなく、故障ごとに、要るセンサが違います。軸受には振動、欠品には曲げのひずみ。カムの摩耗を見たいならトルクを測るものが要りますし、弁の遅れを見たいなら、動きではなく時間を見るものが要ります。これを買う前に机の上で言えたのは、助かりました。
どこから先は、実機がないと決まらないか
最後に、この結果のどこまでを実機に持っていけるかです。ひとつ、はっきり持っていけないものがありました。センサを付けた場所を、どう見立てるか、です。

同じ機械・同じセンサ・同じ計算で、取り付け部の見立てだけを変えたもの。
架台を、地面に固定された硬いものとみなすか、宙に浮いた塊とみなすか。この見立てを変えるだけで、揺れがセンサに届く大きさが桁違いに変わりました。どちらが正しいかは、実機を測るか、構造をきちんと解析するかしないと決まりません。
もうひとつ、気をつけたいことがあります。この波形は、少しきれいすぎます。物理の計算は毎回まったく同じ答えを返すので、正常なときのばらつきはセンサの雑音しかありません。本物の機械なら、回転のむらや取り付けのがたつきがあって、正常なときのばらつきも、もっと大きいはずです。だから、軸受の傷が桁違いに目立つ、というこの見えやすさは、そのまま実機でも成り立つとは限りません。
では何が持っていけるかというと、故障ごとの見えやすさの順番です。軸受の傷と瓶の欠品が桁で分かれて、弁とカムは分かれない。この順番は、正常なときのばらつきが多少増えても、たぶんひっくり返りません。

同じ機械の同じ動き。左は異常な充填で液が揺れ、傾きの信号が跳ねる。右は正常な充填で、液面は平ら、信号は静か。
後編で分かったこと
実機なしでいちばん効いたのは、このセンサで見えるか見えないかを、買う前に机の上で言えたことです。買って配線したあとに見えないと気づく手戻りを、先に避けられました。
センサごとに、最初に効いてくる仕様が違う、というのも分かりました。速いほうは、見たい速さが入る範囲と、その外を落とす仕組み。遅いほうは、細かさと雑音。そして、分解能を上げれば見えるわけではない、という例も出ました。
実機がないので、この計算が本物と合っているかは、最後まで分かりません。ただ、思ったとおりのものを作れているかは確かめられましたし、どこから先が実機の仕事なのかも線が引けました。触ったことのない機械でも、ここまでは机の上でたどり着けます。別の機械でも、同じ手順を試しているところです。
コードと詳しい諸元・検証は GitHub に置いてあります。
この記事は Zenn に初出したものを加筆・補足したものです ── Zenn の元記事を見る