ORiN3入門：環境構築ガイド＋GUIツールで動かしてみる②

# ORiN3入門：環境構築ガイド＋GUIツールで動かしてみる②

※この記事は [ORiN3入門：環境構築ガイド＋GUIツールで動かしてみる①](https://qiita.com/kkikzk/items/11b2e353c1e8e629154d) の続きです

## ORiN3プロバイダーとは

ORiN3を使う上で頻繁に出てくる用語として「プロバイダー（Provider）」というものがあります。まずは「ORiN3プロバイダーとは何なのか？」という点について簡単に説明します。

### ORiN3プロバイダーの役割

ORiN3プロバイダーとは、簡単に言うと **ORiN3経由で特定のデバイスやサービスと通信するための「通信ドライバ」や「インターフェイス」のようなもの** です。

ORiN3では、接続するデバイスやサービスごとに専用のプロバイダーを用意することで、利用するアプリケーション側は、デバイスの具体的な通信プロトコルや仕様を意識せず、統一された方法で簡単に接続・制御を行うことができます。

### ORiN3プロバイダーの具体例

具体的にどのようなプロバイダーがあるのかを紹介します。例えば以下のようなものがあります。

- **[ORiN3 Modbus Clientプロバイダー](https://www.nuget.org/packages/ORiN3.Provider.Modbus.Client)**
  - Modbusのクライアントとして動作し、Modbusサーバーとデータの送受信が可能です。
- **[ORiN3 OPCUA Clientプロバイダー](https://www.nuget.org/packages/ORiN3.Provider.OPCFoundation.OPCUA.Client)**
  - OPCUAのクライアントとして動作し、OPCUAサーバーとデータの送受信が可能です。
- **[ORiN3 IP Camera RTSP Clientプロバイダー](https://www.nuget.org/packages/ORiN3.Provider.IPCamera.RTSPClient)**
  - RTSPプロトコルに対応しているIPカメラから動画を取得し、取得した動画をMP4のファイル形式に変換および保存を行うことが可能です。

こうした各プロバイダーを利用することで、プログラム側では個別のデバイス固有のコードをほとんど書く必要がなくなり、開発効率が大幅に向上します。

## ORiN3プロバイダーのインストール

ORiN3 ConfiguratorでORiN3 Remote Engineを右クリックし、『プロバイダーのインストール』を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/d083e165-24b2-4161-bc6f-93c5f10cf464.png)

### ORiN3.Provider.ORiNConsortium.Mockはプロバイダーのインストール

ORiN3プロバイダーはnupkgの形式で配布されており、**[nuget.org](https://www.nuget.org/)** で公開されているORiN3プロバイダーを以下の画面からインストール可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/eabf70ac-a11a-4f20-bcf6-d870fb89bfbf.png)

今回は **[ORiN3.Provider.ORiNConsortium.Mockプロバイダ](https://www.nuget.org/packages/ORiN3.Provider.ORiNConsortium.Mock)** をインストールしてみましょう。
以下はnuget.orgの個別ページに書かれていたプロバイダーの説明です。

> ORiN3.Provider.ORiNConsortium.Mockはプロバイダーの一般的な機能を仮想的に使用できるORiN3プロバイダーです。 特定の実機不要で各種Variableクラスに擬似的にアクセスする機能や、プロバイダー内でPLCを擬似的に再現し各種デバイスにアクセスする機能があります。

Mockはプロバイダーを選択した状態で画面右側のインストールボタンをクリックしてください。

> もしもプロバイダーが一覧で表示されない場合はプロキシの設定を確認してみてください。ORiN3 Configuratorのオプション画面でプロキシの設定が可能です。

## ORiN3プロバイダーの設定

### ORiN3プロバイダーの追加

次はORiN3プロバイダーの設定です。

ORiN3 ConfiguratorでORiN3 Remote Engineを右クリックし、『プロバイダーの追加』を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/979a004e-9077-4249-ab6d-e7e509fe13e4.png)

プロバイダーの選択画面でMockプロバイダーを選択して追加ボタンをクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/e43074a5-7c11-493c-b937-39e2ed737d11.png)

以下のようにプロバイダが追加されるので生成ボタンを押してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/3abe654b-e29e-4349-a187-764f20e729bf.png)

プロバイダーのアイコンの色が変化し、リモートエンジンのログにプロバイダー起動に関するものが出力されていれば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/4adf9601-7126-4eac-9cef-46fc06b03c2c.png)

> ちなみにプロバイダーは.NETのプロセスとして動作するのでタスクマネージャで確認すると以下のようにSYSTEMで起動しているプロバイダーのプロセスが確認できます。
> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/fa408f27-67f0-4316-b4c8-eccc892be387.png)

### ControllerとVariableの設定

プロバイダーの設定は初期値のままで問題ないのでControllerを追加します。
Mockプロバイダーを右クリックし、『新しいオブジェクトを追加』を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/226c9627-7fef-4bd2-9f2a-8d042324e8ef.png)

Controllerは **General Purpuose Controller** を選択してください。
追加ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/91dd5d12-4706-4e21-a247-0460d6806387.png)

General Purpose Controllerを右クリックし、『新しいオブジェクトを追加』を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/f158ffca-ed97-4370-86b8-190970d53b2e.png)

色々なVariableがありますが今回は **PulseWave Bool Variable** を選択し追加ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/93fe0f54-a81e-4f51-9e7c-901aa6e7f665.png)

### プロバイダーのモニタリング

これで設定が完了したのでプロバイダーを起動します。
Mockプロバイダーを右クリックし、『すべて生成』を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/dcc80b4d-4844-4c14-892d-41daddf7ed33.png)

生成したVariableの値を確認したいのでメニューの『表示』-『モニター』-『モニター1』をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/35901fd2-b007-45c3-89f4-4693116db1d9.png)

表示されたモニターの名前列にVariableの名前（PulseWaveBoolVariable）を入力します。
数文字入力すると候補が表示されるので候補を選択して確定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/3be1e772-da5a-443f-a1f2-d92f18578dac.png)

Variableの値が表示されます。
モニター画面は定期的にサンプリングを行うので値の変化が確認できると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263117/8689c891-598d-4143-9cc3-ba2f0a911f23.png)

以上で終了です。

---

**関連情報（公式）**

- [ORiN協議会 GitHubリポジトリ](https://github.com/ORiN-Consortium/ORiN3)
- [デンソーウェーブ ORiN3公式ページ](https://www.denso-wave.com/ja/system/iot/product/orin3-runtime.html)
- [Microsoft Store ORiN3 Runtime](https://apps.microsoft.com/detail/xpdmcgrx6kwj25?hl=ja-JP&gl=JP)

---