このプレゼンテーションでは、産業プロセスシステムにおいて多変量管理図を用いて作成されたワークフローを検証します。まず、PLSモデルを作成し、プロセスの結果を予測します。例えば、収量や製品のタンパク質含有量などです。次に、予測に重要な変数を表すモデル駆動型多変量管理図(MDMCC)を作成します。
MDMCCはJMP Liveにアップロードされます。さらに、モデルとMDMCCの作成に使用されたデータは、PIデータヒストリアンからデータを取得するために作成されたアドインを介して取得されます。JMP Liveでは、データ取得を自動化するスクリプトが作成され、自動的に更新され、ライブのモデル駆動型多変量管理図が作成されます。これは、T2と予測誤差の偏差を示すことができるため、プロセスエンジニアにとって優れたツールです。これらのチャートは、変数の単変量管理における偏差だけでなく、通常の管理図では見られないx変数間の関係における偏差も示すため、一般的な管理図よりも多くの情報を提供してくれるため、私たちはこれらのチャートを高く評価しています。
こんにちは、ドリュー・ルビーです。今日は「JMP Live による多変量管理図の自動更新」というポスター発表についてお話します。まず、少し背景をご説明いたします。私は ADM のアナリティクスエンジニアです。ADM は農産物加工施設で、世界中に多くの工場を構えています。これらの工場の多くは、圧力、温度、流量などのセンサーデータで高度に計測されています。これらは高頻度に発生するデータであり、私たちはこれを分析・トラブルシューティングし、その場でデータに基づいた適切な対応をしたいと考えています。
これがそのデータ、あるいはプロセスがどのように見えるかの一例です。この例では、トウモロコシの胚芽の乾燥プロセスをご覧いただいています。ここには5台の乾燥機があり、これらがすべて集まって最終的な胚芽水分を作り出します。ここですべてのセンサーデータを確認できます。バルブとAMPSのOP、蒸気流量と圧力、温度などです。このプロセスでは様々なデータが得られており、これらのデータをすべて関連付けて、この製品の仕様である最終水分と比較したいと考えています。
私たちの課題は、様々な変数を検証したい一方で、プロセス全体を一元的に把握できる必要があることです。そのためには、モデル駆動型の多変量管理図を構築することが目標です。この管理図では、先ほど示したすべての変数を1つのチャートで確認できるため、毎日個別に傾向分析する必要がありません。
モデル駆動型多変量管理図を用いることで、通常動作から外れている変数があるかどうか、また、期待値とは異なるパフォーマンスを示している変数があるかどうかを確認できます。このモデル駆動型多変量管理図から、より深く掘り下げて、不具合が生じている変数、仕様外の変数、あるいは通常とは異なるパラメータ値を示している変数を特定することができます。これにより、プラントのエンジニアやオペレーターがすぐに対応できるよう、それらの変数を特定することができます。
最終的な目標は、異常検出機能を用いてプロセスの変化を検知し、何らかの対策を講じることです。これにより、仕様外のパラメータや、想定外のパラメータ、あるいはバルブの動作が長時間続くような事態を回避できます。多くの事例があります。私たちは、こうした変化を迅速に特定し、適切な対策を講じたいと考えています。モデル駆動型多変量管理図は、まさにそれを実現するツールです。
これを実行する方法はここに示されています。ポスターで手順を説明し、その後JMPで実際に確認します。データにアクセスするためにまず必要なのは、OSIsoft PI Toolsというアドインを使用することです。これは私たちが作成したもので、コミュニティで公開されており、ポスターにもリンクされていると思います。このアドインを使用すると、PIタグ(データヒストリアンPI)をJMPに取り込むことができます。さらに、JMP Live側にコピー&ペーストできるJSLスクリプトも作成されます。これにより、毎日新しいデータを自動的に取得できるようになります。これは、その時点でのプロセスのトラブルシューティングに不可欠です。
データを取り込んだら、PLSモデル、つまり偏最小二乗法(PLS)モデルを構築します。技術的には、PCAモデルとPLSモデルのどちらを使ってもモデル駆動型多変量管理図を作成できますが、ここではY変数の予測値を持つ多変量モデルであるPLSを選択します。この例では、温度、圧力、AMPS、流量など、先ほど示したすべてのプロセスパラメータを使用します。これらすべてを用いて最終的な水分量を予測します。PLSモデルを構築し、それをモデル駆動型管理図に利用します。
PLSからモデル駆動型多変量管理図を作成したら、JMPでダッシュボードを作成し、管理図と、各変数を個別に確認できるプロセススクリーニングプラットフォームを表示します。最後に、JMP Liveに公開したら、データ取得の自動化手順を順に説明します。
繰り返しになりますが、私たちが創造している価値、あるいは目標は、プロセスエンジニアやオペレーターがアクセスしやすく、新しいリアルタイムデータを表示できるツールを開発することです。このツールを使えば、すべての変数をトレンド分析することなく、プロセスのどこに問題がある可能性があるかを把握できます。実際、モデル駆動型多変量管理図とJMP Liveの組み合わせは、まさにその目的を完璧に果たしています。JMPを使って、その仕組みを具体的にご説明しましょう。
JMP内に、JMP OSI PIデータというアドインを作成しました。これは便利なアドインです。基本的に、サーバーのアドレスを入力できます。ドロップダウンメニューを使っていくつか設定してみました。PIデータに詳しい方なら、PIが使用するクエリの種類や、PI時間を使用した開始時刻と終了時刻も確認できます。PIデータに詳しくない方は、調べてみると良いかもしれません。ただし、PIをご利用の施設であれば、おそらくご存知だと思います。
この例では、7日間のデータ取得、つまり星から7日を引いた期間を使用して、1時間ごとに補間された値を取得します。使用するタグは、既に確認して事前に選択しておきました。先ほど示した画面のすべてのタグを使用するわけではありません。これらは重要なタグの一部ですが、すべてのタグを使用できます。これらのタグをこのウィンドウに貼り付けるだけで、検索条件を変更できます。長い表や幅の広い表を作成することもできます。必要なデータを取得するために、ここでできることはたくさんあります。このアドインの重要な部分は、スクリプトを生成することです。このスクリプトはコピーしてJMP Liveに貼り付けることができます。かなり長いですが、JMP Liveにコピーして貼り付けることで、このデータテーブルを再作成できます。
重要なのは、相対タイムスタンプを使用しているため、star - 7日がstar - 7日前であれば、今日から7日前まで遡って今日ということになります。実行するたびに、JMP Liveが再実行を指示した時間に基づいて新しいデータが取得されます。明日実行すると、明日から7日前までのデータが取得されます。私は常にライブデータを取得しています。
実行はしません。少し時間がかかる可能性があるからです。こちらの動画では、少し前にこれを再作成し、データテーブルを整理するために非表示と除外をいくつか行いました。これは準備済みですが、上記と同じタグが付いており、7日間実行されていることがわかります。この動画は7月23日に始まり、7月30日まで続きました。
通常、このデータを取り込む際には、多くのクリーニング作業とデータテーブルの整理が必要ですが、ここでは既にそれらの作業が完了しています。手順を飛ばしているように見せたくはありませんが、その作業を事前に済ませておきました。
この偏最小二乗モデルを作成するには、JMP Proを使用しているので、「モデルの適合」プラットフォーム内で実行できます。あるいは、ここの「多変量解析法」の「偏最小二乗」でも実行できます。これらのプロセス変数すべてから、この細菌乾燥機の水分量を予測します。K分割検証を実行します。偏最小二乗法を実行し、「実行」をクリックします。ここではデフォルト設定を使用します。これでこのモデルが作成されます。
私の専門分野では、これはかなり良いモデルです。プロセスノイズが多いので、必ずしも90%やR²0.9といった値にはなりませんが、私たちの仕事では許容範囲内です。因子は4つですが、これで十分です。おそらくもう少し整理することもできますが、方向性としては正しいと思うタイプのモデルであり、精度に関しても、この例では十分だと思います。繰り返しますが、通常はここで反復的なプロセスを行って、もう少し整理します。
モデル駆動型多変量管理図を作成するには、ここからいくつかの方法があります。まず、「保存されたXスコアのモデル駆動型多変量管理図」に直接進むことができます。これにより、Xスコアがデータテーブルに保存され、それに基づいてモデル駆動型多変量管理図が作成されます。これは問題ありません。ただし、ここでは予測値をXスコア式として保存することにしました。この例では、モデル駆動型多変量管理図に加えて、サンプル間の予測水分量を示すトレンドを作成したいと考えているためです。ここではこの方法を採用しました。どちらの方法でも、これから示すように、Xスコア式用の列が作成されます。
因子分析やPLSモデリングにあまり詳しくない方は、Discoveryでお話しできるかもしれません。これは因子分析で、すべての変数の線形結合を表す式になっています。ここには4つの因子があります。そして、この予測式は実際には4つの因子の線形結合です。これがPLSモデルのレポートです。
モデル駆動型多変量管理図を作成するには、「分析」→「品質とプロセス」→「モデル駆動型多変量管理図」に進みます。これらのXスコアをプロセス変数に、時間を時間IDに入力するだけで、T²のプロットが生成されます。
統計に立ち入りすぎずに言えば、T² は基本的に、すべての変数がプロセスの中心からどれだけ離れているかを測るものです。これを説明する方法の 1 つは、工場全体に一定の速度があり、これをグラインド レートと呼んでいます。この状態でトウモロコシを粉砕しています。通常、標準の速度で実行しています。グラインド ハーフ レートまたはゼロ グラインドに低下すると、通常の状態とは大きく異なるため、T² は高くなります。また、乾燥機から排出される水分が非常に高かったり、蒸気が通常よりもはるかに高かったりする場合、すべての変数が非常に高くなったり非常に低くなったりする可能性があり、これが高い T² の原因となります。T² という 1 つの統計値を見るだけで、すべての変数についてプロセスの状態を知ることができる統計です。
例えば、この点を見ると、バーグラフが表示されているのが分かります。そして、ここを強調して説明しましょう。ここが最も制御不能な状態にあることがわかります。案の定、この細菌乾燥機4の水分は通常よりもはるかに高くなっています。ここで便利なのは、細菌乾燥機4の管理図を見ると、仕様から大きく外れていることがわかりますが、これらすべての変数を1つの管理図で表示できることです。これがまさにここでの付加価値の原理です。1つの統計量で何百もの変数を見ることができるのです。
ここで寄与ヒートマップを作成するのが好きです。これはプロセスエンジニアのトラブルシューティングに役立つと思います。例えば、細菌乾燥機4の水分が赤くなっていることがわかります。T²、つまり原因が何なのか、ここにあるものをすぐに確認できます。エンジニアはどこに行けば問題があるのかをすぐに把握できます。
プロセスの監視の下にあるモデル駆動型多変量管理図に追加したいもう一つの要素は、予測誤差の二乗プロットです。スケールを少し変更します。SPE(予測誤差の二乗)は、T²とは少し異なるものを測定します。SPEが測定するのは、モデルの予測からどれだけ離れているか、いわばモデル平面からどれだけ外れているかです。
SPEが高い場合、それは予測値がモデルの結果と大きく異なる、あるいは予測値が実際の結果と異なる、あるいはX行列の予測値が実際の結果と異なることを意味します。つまり、変数間の相互作用が予想と異なっていたということです。私の例では、少し調べてみたところ、Germ dryer 1の水分が高く、SPEも高いことがわかります。
この状況で実際に何が起こっているかというと、通常、蒸気量を増やすと蒸気バルブが開き、蒸気流量計の値が上昇し、細菌乾燥機の水分量が減少するのが確認されます。しかし、今回のケースでは低下しませんでした。これは、モデルの予測構造に何らかの異常があり、SPEが高値であると警告していることを示しています。これは、単変量管理図やT²では必ずしも検出できないものです。なぜなら、これらの変数はそれぞれ単独では正常な管理限界内に収まっている可能性があるからです。
通常、これらは正の相関関係にありますが、この期間においては負の相関関係にあります。これは私たちの工場にとって重要な点です。なぜなら、例えば、ラボのサンプルの値が不適切だった、といったことを特定できる可能性があるからです。もしかしたら、間違った場所でサンプルを採取したのかもしれません。蒸気流量計が故障しているのかもしれません。乾燥機に何か問題があるのかもしれません。これは私たちにとって重要な発見です。ここでも、寄与ヒートマップで同じことを行いますが、少し引き伸ばします。
この例では、データが欠落しているのが分かります。ここにはたまたま機能停止が発生しており、そのせいでハイライト表示されているのが分かります。これはモデル駆動型多変量管理図で、エンジニアやプロセスエンジニアがプロセスのトラブルシューティングを行う際に最も役立つと考えています。
よく確認しなければならないのは…T²値やSPE値が高い場合、単変量管理図でその変数を確認したいということです。それを示す最も良い方法は、「分析」→「品質とプロセス」→「プロセススクリーニング」で、これらの値をすべて「プロセス変数」に入力し、「時間」を「時間」に入力することです。
ハンディタイプのグラフを見ると、このデータセットに障害が発生していることがわかります。つまり、すべてが赤くなっています。しかし、実際には変数は安定性の低い順に並べ替えられています。こうすることで、プロセスのトラブルシューティングを行う際に、どの変数を確認すればよいかが分かります。すべて選択して「選択した変数のチャートを表示」を選択すると、単変量管理図が表示され、マーカーが点灯します。このグラフが下がっているのがわかります。これが例です。
このツールは、モデル駆動型多変量管理図ツールと組み合わせることで非常に強力です。T²とSPEが正常かどうかを素早く把握できるため、エンジニアとして理論上は別のプロセスに移ることができます。胚芽プロセスを確認する必要はありません。胚芽プロセスは通常通り稼働しており、すべての変数は通常通り相互作用しています。何か異常が見られた場合は、このヒートマップを使用してどの変数が異常なのかを特定し、その後、単変量管理図で何が起こっているのかを確認できます。
課題は、素晴らしい成果ですが、これを共有しやすく、誰もが簡単にアクセスでき、毎朝誰かがJMPに取り込むことなく毎回更新される形式にするにはどうすればよいかということです。まず、これをJMP Liveに公開します。まずダッシュボードを作成します。ウィンドウを結合します。「ダッシュボード」と名付けます。これで問題ありません。もう一度試してみましょう。結合したいウィンドウを選択する必要があります。
これでダッシュボードができました。私の経験では、JMP Liveではスクロールバーが表示され、ズーム操作が必要になるため、見栄えがよくありません。そこで、この赤いホットスポット「ダッシュボードの編集」まで移動します。これをクリックしてドラッグし、「タブの後に挿入」と表示されている場所にドッキングします。そして、ダッシュボードを実行します。
これで、タップ操作が可能な素敵なダッシュボードができました。エンジニアがここに来て、これを見て、細菌システムに注意を払う必要があるかどうかを確認する様子を想像してみてください。細菌システムに注意を払う必要がある場合は、次のタブにすべての単変量管理図が表示されます。
これがJMP Liveに公開したいものです。「ファイル」→「レポートをJMP Liveに公開」を選択します。少し時間がかかります。このダッシュボードを公開し、ポスタープレゼンテーションフォルダに保存します。タイトルは「ポスタープレゼンテーション 生殖細胞の例」にします。新しいデータテーブルを公開し、「公開」をクリックすると、ここで開くことができます。こちらに移動してみましょう。これがJMP Live側です。JMP Liveの利点は、JMPを持っているかどうかに関係なく、社内の誰でもアクセスできることです。誰でもこれらのレポートを確認できます。インタラクティブです。ここで点をハイライトすると、こちらで確認できるので、ポイントを確認できます。こちらに移動できます。すべてが連携してインタラクティブなので、PDFや画像を送信するよりもはるかに便利です。
まさにこれが私が求めていたものです。除外したデータがある場所ではT²が非常に高かったはずです。なぜなら、そこで多くの障害が発生したと考えているからです。そのため、その時間帯のSPEも非常に高かったのです。まさにこれを自動化したいのです。1時間ごとに新しいデータを取得し、常に最新のデータを確認できるようにしたいのです。
JMP Liveの仕組みは、レポートを作成するというものです。その背後には、作成したデータテーブルが存在します。JMP Liveにデータテーブルを公開することで、自動化の鍵となるのは、このデータテーブルを新しいPIデータで更新することです。更新の頻度は問いません。そうすることで、新しいレポートが自動的に生成されます。
データテーブル側で、「設定」に移動して「スクリプトによるデータ更新」を実行できます。JMPデータテーブルに戻ると、ここにアドインが生成したスクリプトがあります。これをコピーしてJMP Liveウィンドウに貼り付ければ、問題なく動作します。元のデータテーブルが再現されます。ただし、「X Scores 1」の式や予測は再現されません。
必要な作業は、これらの列を作成する際にログまたはワークフロービルダーを使用することです。また、仕様限界を設定する場合やデータテーブルに変更を加える場合など、何らかの操作を行う場合は、それらのスクリプトをコピーする必要があります。時間を節約するために既にスクリプトを作成していますが、スクリプトの下部を見ると、基本的に新しい数式列を作成しています。ログまたはワークフロービルダーを使用して、これをコピーするだけです。その列の数式と、モデル駆動型多変量管理図の統計情報の両方をコピーします。
これらはすべて最後にコピー&ペーストしたものです。上部にある残りの部分はアドインから直接コピーしたものです。この空のスクリプトを開いて貼り付け、「保存」をクリックし、更新スケジュールを設定して選択するだけです。今回は1時間ごとに繰り返します。明日はサンプルをキャンセルする予定なので、サーバーの負荷はそれほど高くありません。必要に応じて5分ごとに繰り返し実行することも可能です。1時間ごとに実行するように設定し、スケジュールを選択できるようにします。
実行されるたびに、このスクリプトはPI Serverにアクセスし、新しいデータを呼び出してデータテーブルを再構築し、その新しいデータに基づいてレポートを自動的に生成します。PI Serverにアクセスできるように、認証情報も入力する必要があります。「保存」をクリックし、「データの更新」をクリックして動作を確認します。動作確認には1秒ほどかかるはずです。
もちろん、ここで作業している間に失敗しました。クリップボードにまだ残っていたのは、アドインに貼り付けた古いタグでした。それをコピーして貼り付けます。申し訳ありません。[保存] をクリックします。これで保存され、データを更新できるはずです。このエラーについて申し訳ありません。この処理の実行中に、JMP Live のもう 1 つの利点についてお話しします。それは、毎日、毎月など、定期的に更新したいデータ テーブルがある場合があるということです。毎回人が JMP にアクセスして更新する代わりに、ここでデータ テーブルを構築して更新頻度を設定し、ここでリロードすれば、いつでも JMP Live からそのデータ テーブルを取得できます。データ テーブルを更新できるだけでなく、自動更新されるレポートを作成できるという点で、JMP Live は非常に優れたツールです。
こちらのレポートをご覧ください。8月25日から8月28日までのデータが確認できます。T²が低下していることがわかります。このプラントは、メンテナンスの問題を抱えながら、順調に進んでいることが分かります。実際、乾燥機が故障したため、蒸気圧力コントローラーが常にそこに表示されています。これは、従業員にぜひ使ってほしいツールであり、私たちもその価値を見出しています。ここでもう一度、簡単に確認してみましょう。T²検査は、管理図を見るのと同じように、そしてSPEも見ています。これらが両方とも良好であれば、何百もの単変量変数が背後で動いている可能性を心配する必要はありません。
何か気になる点、例えばT²が高い点などがある場合、ヒートマップを見るか、こちらに来てプロセススクリーニングを見れば、低下していた箇所が分かります。ここでも興味深い例を挙げますが、乾燥機の稼働率が上がったり下がったりしたのですが、どの変数に問題があるのかをすぐに特定できます。仕様外になっているのでしょうか?何かが予想と異なる動作をしているのでしょうか?問題が分かれば、より容易かつ迅速に対策を講じることができます。
お見せしたかったのは以上です。ディスカバリーにお越しの方で、この件についてご質問がありましたら、私も同席しておりますので、お気軽にご相談ください。ありがとうございます。