SIMCA onlineの現場活用チュートリアル  (入門編)


# SIMCA onlineを使いたい、使おうとしている皆様へ

[SIMCA online](https://www.sartorius.com/en/products/process-analytical-technology/data-analytics-software/real-time-process-monitoring-software/simca-online)は Sartorius社の多変量解析ソフトウエアで、医薬品製造や化学プラントにおけるプロセス監視によく使用されています。しかし、日本語では、ネットで検索してもあまり情報が見当たりません。そこで、前職（製薬企業の製造部門）で得た知識を共有することで日本の製造業へ貢献できればと考え、本記事を作成することにしました。

質問やご相談等ありましたら、お気軽にDMいただけますと幸いです。(プロフィールにメアド記載しています)

なお、SIMCA onlineはGMP適用が可能なソフトウエアですが、筆者の経験はnon-GMP使用に限られているため、GMP使用に対するアドバイスはできませんので悪しからず。

:::note info
2024/5/24 追記
データセット作成方法の記事も新たに書きましたので、ご参照ください。
:::
https://qiita.com/ytt/items/de8416570ec49c836e8f

# SIMCA onlineで何ができるか？

化学業界では、製造プロセスのリアルタイム監視とフィードバックに使用されることが多いようですが、製薬業界ではGMPの縛りがきついため、リアルタイム監視にとどまっているケースが多いように感じます。

筆者は医薬品製造設備における突発故障を未然に防ぐ予知保全の観点から、SIMCA online上にbatch evolution modelをデプロイし、リアルタイム監視を行っていました。設備故障は突発的に発生しますが、故障のごく初期では、数秒～数分だけ異常値を出すことが多く、そのような異常をいち早く検出して部品交換することで、将来起こり得る重篤な設備故障や製品廃棄を未然に防ぐことを目的としていました。

![simca.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/5b0044ae-c951-e41e-4416-1f74d73a46be.png)

SIMCA onlineのライセンスは安くないのですが、医薬品製造業においては数年に１度、１バッチのロスを回避するだけでも十分payできるので、コストメリットは十分出せるケースが多いと思います。

# 製薬現場における課題
- 製薬業界では、重要な監視パラメータが管理値を超えると逸脱事象となります。製造中に設備が故障してしまって逸脱が発生すると、事象の詳細説明の文書化や再発防止策の策定などが必要になり、製造現場の工数が膨れ上がってしまいます。そのため、逸脱事象を減らすことが強く求められていますし、製品の品質を担保する上でも重視されています。

- 製造中の温度、圧力などの計測パラメータは数10に達します。これらをすべて人の目で監視し、トレンドを追いかけて管理値すれすれの事象を検出することは極めて困難であるため、SIMCA onlineを用いた監視の簡略化（次元削減）が必要とされていました。

![simca2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/227d1d72-3b8c-1be5-693c-a7f1c3b7286e.png)


# 実績
SIMCA onlineを用いてリアルタイム監視を開始して1年以内に、例えば以下のような実績をあげることができました。

- 製造設備のセンサー故障、ポンプ過負荷などを即座に検出しアラート発出することで、現場レベルでの迅速なアクションにつなげることができました。

- 逸脱が発生する前にアクションをトリガーでき、製造部門やエンジニアリング部門における逸脱対応、故障対応の工数削減に貢献できました。

# SIMCA 17/18 でbatch evolution modelを作成する

SIMCA online にデプロイするモデルはSIMCA 17/18 でオフラインで作成する必要があります。筆者のユースケースでは、以下のような正常バッチの時系列データを用いて、製造設備ごとにモデルを作成していました。
- 30-40タグ（温度、圧力など）
- 10秒ごと (1分でもよい。use caseによる)
- 10-20バッチ（最低3バッチ必要。それ以上なら何バッチでもよい）

このようなデータをCSV形式で作成し、SIMCAにインポートしてOPLSでモデルを作成していました。

PLSとOPLSどちらがよいか、パラメータは何個にすべきか、など悩みどころは多々あるかと思いますが、まずはOPLSをfirst optionとし、default settingでモデル作成してみてください。線形モデルとはいえ、意外に有用なモデルができることを体験できると思います。

#### モデルに使用するデータセットの作成が大変??

ユースケースで使用するタグが、もうすでにSIMCA onlineに接続されている場合もあるかと思います。そのような時は、データセットの作成が大幅に簡略化できます。詳細は以下の記事をご参照ください。筆者はこれを知らずにずいぶん苦労しました( ´∀｀ )

https://qiita.com/ytt/items/de8416570ec49c836e8f

## データソースについて

以下の3つをデータソースとしてSimApi serverを介してSIMCA online server に接続することで、リアルタイムに監視を行っていました。

- OSIsoft社のPI system
- Emerson社のPlantweb optics data repository (実体はMongo DB) からOPCUA serverを介して、OPCUA connectorをSimApi serverにインストールして接続
- MES情報は、Databricks delta tableにnear-realtime (<~10 min)でインサートしたあと、ODBC connectorをSimApi serverにインストールして接続


#どんなデータソースがSIMCA onlineにつなげるかについて、準備されているコネクタの一覧やデータ接続方法の詳細については、[本家のサイト](https://www.sartorius.com/en/products/process-analytical-technology/data-analytics-software/mvda-software/simapi)に説明ページがありますので、こちらを参照されるとよいと思います。

アーキテクチャの概要図は、例えば以下のようになると思います。このあたりのセットアップは、社内のエンジニアリング部門やIT部門との連携が必須になるでしょう。

![simca4_simapi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/165af42f-8823-8e35-c098-a345c14089f1.png)

ここでは、設備データがprivate cloud環境のヒストリアンに格納された以降のデータコネクションのみを図示しています。実際の製造設備からクラウドまでどのようにつなげばよいか、は別の興味深いトピックですので、要望があれば今後共有したいと思います。

# SIMCA onlineにモデルをデプロイする際の留意点
まず、SIMCA 17/18で作成したprojectをSIMCA onlineにuploadします。そのあと、projectを右クリックし、edit configurationでconfigurationしていきますが、そのときの留意点をいくつか下にリストアップしました。

## Batch context generatorの作成

バッチのstart/stopはここで定義する必要があります。

![simca_batch_context.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/ff24f3a4-8e85-0cb5-4528-532a109ab729.png)


## Configurationの設定

#### Phaseのstart/stopの定義

Phaseごとのstart/stopはここで定義します。

![simca_pjt_configuration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/7d995a43-ead7-a819-f62a-f235da47d089.png)


#### アラート発出条件の設定
Score, Hotelling T2, DModXの3つすべてでアラート設定することが推奨されています。Hotelling T2とDModXの違いはこの[PDF](https://www.nihs.go.jp/drug/section3/AMEDCMMSPCFinal.pdf)が参考になります。この[PDF](https://datachemeng.com/wp-content/uploads/t2q.pdf)もおすすめ。要は、主成分ベクトルで張られる空間内で異常度を計算するのがHotelling T2で、その空間からの距離で異常度を計算するのがDmodX (もしくはSPE, squared prediction errorとも呼ばれる) と考えるとよいと思います。

![simca_alarm.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/5e0a249d-8db1-ad8d-52ca-9f8a807418e8.png)



#### アラートメールの設定

"Administration"タブの"Manage notifications"を押す。ユーザー一覧が出てくるので、まずは追加したいユーザーを選択してください。

![simca_manage_notifications.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/29ebbf55-20db-ba6a-e3f7-de136f18bb24.png)

そのあと、下に示したように"Edit subscriptions"でAlarm triggeredに✔を入れて、アラームがトリガーされたときにメールが飛ぶようにセットします。これで終了です。

![simca_alarm_trigger.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/ac7a14e6-877d-f4a3-a73b-b99b77a9e3b3.png)


# 実際の運用と業務プロセスへの落とし込み
1. アラートの発出まで設定できれば、現場やIT部門、エンジニアリング部門の誰にアラートメールを送付するかを決定しましょう。

2. 筆者は以下のような対応フローを予め作成しておきました。このように、各部門のアクションを定義しておくことで、アラートが出たときの現場でのドタバタを回避し、迅速な対応につなげていました。ご参考になれば幸いです。

![simca3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/eac603a7-c1e2-4508-8f1c-0c8bf849d26d.png)


# BEMモデルの更新方法
1年程度監視を続けていると、そろそろモデル更新したいなと感じることが出てくると思います。その際は、"Administration"タブの左上の"Update SIMCA project"ボタンを押すことで、predictされた直近のバッチデータとモデルをダウンロードできます。ローカルでそれらのデータを用いてSIMCA 17/18でモデル更新し、再度SIMCA onlineにupload projectすることで、モデル更新は簡単に行えます。

![simca_update_pjt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3791585/0bec4a73-5cc6-a777-1b7b-2d5d199dccef.png)


# 最後に
もう少し詳しく知りたい箇所などあれば、ぜひコメントいただけますと幸いです。中級編としてまとめたいと思います。