Ignition + Tulip 統合ガイド
本ガイドでは、Ignition PlatformとTulip Manufacturing Softwareを統合する方法について解説します。2つのプラットフォーム間でデータをやり取りする方法や、一方のアプリケーションを他方に組み込むことで、アプリケーション上で単一の画面(シングル・ペイン・オブ・グラス)を実現する方法について学びます。
本ガイドでは、オペレーターにシームレスな操作体験を提供するために、これら2つのプラットフォームを統合する方法について詳細に解説しています。
Ignition Perspective での Tulip の実行
Ignition PerspectiveとTulipは、いずれもネイティブのHTML Webアプリケーションです。Tulipアプリは、インラインフレーム(iframe)を使用してIgnition Perspective内で直接実行できます。
Ignitionのホスト名/IPをTulipのドメイン許可リストに追加する
Tulipでは、ホスト名/IPを許可リストに追加して明示的な許可を得ない限り、iframeへの埋め込みは許可されません。
- Tulipアカウントにログインし、アカウント設定に移動します。

- 「ドメイン許可リスト」を選択します。

- IgnitionサーバーのURLを追加します。URLはDNSホスト名またはIPアドレスのいずれでも構いません。ポート番号が443と異なる場合は、必ずポート番号も指定してください。

注:Tulipでは、URLにHTTPSが含まれている必要があります。IgnitionサーバーでSSL/TLSを設定する必要があります。手順については、こちらをクリックしてください。
Perspectiveプロジェクトにインラインフレームを追加する
- Ignition Designer を開き、対象の Perspective プロジェクトを選択します。
- Tulipを埋め込みたいパースペクティブビューを開きます。
- インラインフレームコンポーネントをビューにドラッグします。

- インラインフレームコンポーネントを選択し、画面右側の「プロパティ」ペインを表示します。

- 「src」をTulip PlayerのURLに設定します。URLは次のような形式になります:
https://<your-instance>.tulip.co/player?appId=<your-app-id>
アプリ ID は、Tulip インスタンスで目的のアプリを開き、ブラウザに表示される URL を確認することで確認できます。URL は以下の形式になります。
https://<your-instance>.tulip.co/w/<your-app-id>/process/....
特定のアプリを起動したくない場合は、URLを次のように設定できます。
https://<your-instance>.tulip.co/player
インターフェースの登録
Tulip プレイヤーでは、アプリを使用するためにサインインし、デバイスを登録する必要があります。
- Tulip の認証情報を使用してログインします。
- インターフェースに名前を付けます。

- インターフェースを新しいステーションまたは既存のステーションに割り当てます。

- バッジIDでサインインしてください。

- 新しく作成したステーションにアプリを割り当てる必要があります。
Tulip プレーヤーを使用したい Perspective クライアントごとに、この手順を繰り返す必要があります。
おまけ:Ignition と Tulip で同じ ID プロバイダーを使用する
Ignition と Tulip の両方で、ユーザーがアプリケーションにアクセスするにはログインが必要です。ID プロバイダー (IdP) を使用すると、ユーザーは同じ認証情報で両方のシステムにログインできます。これにより、安全なログインが実現され、SSO (シングルサインオン) および 2 要素認証 (2FA) がサポートされます。
Tulipは現在、SAMLをサポートするIDプロバイダーのみに対応しています。IgnitionはSAMLとOpenID Connectの両方をサポートしています。お使いのIDプロバイダーがSAMLに対応している場合は、両システムで同じIdPを使用するように設定し、SSOを最大限に活用できます。
IgnitionとTulip間のデータ交換
IgnitionとTulipは、OPC-UA、MQTT、およびRESTを通じて自動的にデータを交換できます。各アプリケーションがその役割を果たすために必要なコンテキストとデータを確保するためには、データの交換が不可欠です。
OPC-UA
Ignitionは、OPC-UAサーバーおよびクライアントの両方の役割を果たします。OPC-UAサーバーとして、Ignitionは接続されたすべてのデバイスおよび設定済みのすべてのタグからのデータをTulipに公開できます。セキュリティ上の理由から、この方法ではIgnitionの近くでオンプレミス環境にてTulipを実行する必要があります。
IgnitionのOPC-UAサーバーは、デフォルトでインストールされ、実行されています。OPC-UAサーバーに関する詳細はこちらをご覧ください。デフォルトのURLは次のようになります:
opc.tcp://<ホスト名またはIPアドレス>:62541
方法 1: エッジデバイス・コネクタのホストを使用する
Tulipエッジデバイスをセットアップし、HMIと同じネットワークに接続します。https://<your-instance>.tulip.co/machine_data_sources にアクセスします。 このページには、[Shop Floor] > [Machines] の順に移動し、左側のパネルから [Data Sources] を選択してもアクセスできます。「Create machine data source」ボタンを選択します。 以下の項目を入力します:Name:<データソースの希望名>Runs on:<お使いのエッジデバイス>Type: OPC UAAgent URL:<ホスト名またはIPアドレス>:62541
Ignition内のOPC-UAサーバーの設定に合わせて、[Security] オプションを入力してください。[Test] を選択して接続を確認し、[Save] をクリックして保存します。IgnitionのデータソースをTulip内のマシンに接続するには、「マシンの追加と設定方法」を参照してください。
方法 2: オンプレミスコネクタホスト (OPCH) を使用する
HMI上でOPCHを設定します。オンプレミスコネクタホスト(OPCH)の設定手順については、「オンプレミスコネクタホストの概要」を参照してください。
https://<your-instance>.tulip.co/machine_data_sources にアクセスします。このページには、[Shop Floor] > [Machines] の順に選択し、左側のパネルから [Data Sources] を選択してもアクセスできます。
「マシンデータソースの作成」ボタンを選択します。以下の項目を入力してください:名前:<データソースの希望名>実行先:<お使いの OPCH>タイプ:OPC UAエージェント URL:<ホスト名または IP アドレス>:62541
Ignition内のOPC-UAサーバーの設定に合わせて、[Security] オプションを入力してください。
「テスト」を選択して接続を確認し、その後「保存」をクリックします。IgnitionのデータソースをTulip内のマシンに接続するには、「マシンの追加と設定方法」を参照してください。
Ignitionで設定済みのタグを公開する
デフォルトでは、IgnitionのOPC-UAサーバーは設定済みのデバイスからのデータのみを公開します。設定済みのタグをOPC-UA経由で公開したい場合は、以下の手順に従ってください。
- Ignition Gatewayの設定セクションにログインします。
- 「OPC UA」>「サーバー設定」をクリックします。

- 「詳細プロパティを表示」をクリックします。
- 「タグプロバイダーを公開」のチェックボックスをオンにし、「変更を保存」をクリックします。

- OPC-UAモジュールを再起動する必要があります。メニューから「モジュール」を選択し、OPC-UAモジュールの横にある「再起動」ボタンを押してください。

これで完了です!これで、Tulip ですべてのタグを確認できるようになりました。
MQTT
MQTTは、ネットワークのエッジにあるデバイスがブローカーにメッセージをパブリッシュ(送信)できるようにするパブリッシュ/サブスクライブプロトコルです。 クライアントはこのブローカーに接続し、ブローカーが2つのデバイス間の通信を仲介します。各アプリケーションは、特定のトピックを購読(登録)することができます。別のクライアントが購読中のトピックにメッセージをパブリッシュすると、ブローカーはそのメッセージを購読しているすべてのクライアントに転送します。
MQTT を使用すると、Ignition と Tulip 間のデータ交換が容易になり、推奨される統合方法となります。
MQTTブローカーの設定
まず、Ignition と Tulip の両方が通信できる MQTT ブローカーを設定する必要があります。選択肢は多数あります:
- Ignition用MQTTディストリビューターモジュール - このモジュールは、Ignitionに組み込みのMQTTブローカーを提供します。MQTTディストリビューターはオンプレミスまたはクラウドに展開できます。Ignition Cloud Editionには標準で付属していますが、Ignitionの標準オンプレミス版の場合は別途購入・インストールが必要です。 https://cirrus-link.com/mqtt-software-for-iiot-scadahttps://inductiveautomation.com/ignition/cloud-edition
- Cirrus Link Chariot MQTTブローカー - Chariotは、AWSまたはAzureにデプロイ可能な強力なMQTTブローカーです。 https://cirrus-link.com/mqtt-broker-iiot-mqtt-servers/
- HiveMQ - オンプレミス型またはクラウドSaaS型のスケーラブルなMQTTブローカーです。 https://www.hivemq.com/
- Mosquitto - どこにでもデプロイ可能なオープンソースのMQTTブローカーです。 https://mosquitto.org/
MQTTサーバーのデプロイが完了したら、IgnitionとTulipの両方で接続するために、ホスト名またはIPアドレス、ポート、および認証情報が必要になります。
IgnitionをMQTTブローカーに接続する
Ignitionには、MQTTを扱うための2つのモジュール、「MQTT Transmission」と「MQTT Engine」が用意されています。
MQTT Transmissionは、IgnitionからMQTTブローカーへタグデータをパブリッシュする機能を提供します。Tulipにタグデータを提供するには、MQTT Transmissionが必要です。MQTT Engineは、MQTTブローカーからのデータをサブスクライブし、Ignition内でタグを作成する機能を提供します。Tulipからのデータをサブスクライブするには、MQTT Engineが必要です。
- まず、Ignitionに適切なモジュールをインストールする必要があります。モジュールは「Downloads」ページからダウンロードしてください。
- Ignitionの「ゲートウェイ設定」ページ([システム] > [モジュール])でモジュールをインストールします。

- インストールが完了したら、同様の方法でMQTTサーバーへの接続を設定します。MQTT Transmissionの場合は「MQTT Transmission」>「Settings」を、MQTT Engineの場合は「MQTT Engine」>「Settings」をクリックします。

- [Servers]タブをクリックします。

- 「新しいMQTTサーバーを作成」をクリックします。
- 同じ接続情報と認証情報を入力します。TLSを使用しない接続の場合、URLは次のようになります:
tcp://MQTTSERVERHOSTNAME:1883
TLS接続の場合、URLは次のようになります:
ssl://MQTTSERVERHOSTNAME:8883
- 必ず「サーバーセット」を選択してください。デフォルトでは「Default Set」を使用します。

- 「Create New MQTT Server」をクリックし、接続を確認してください。MQTT Engine については、「Connected」と表示されるはずです。MQTT Transmission については、トランスミッターを指定するまでステータスがわかりません。以下のセクションを参照してください。
MQTT JSON データを受信するように Ignition を設定する
TulipはMQTT経由のJSONのみをサポートしています。IgnitionのMQTT Engineモジュールは、JSONとSparkplugの両方をサポートしています。JSONを使用する場合は、JSONデータ用のカスタムネームスペースを設定する必要があります。
- Ignitionのゲートウェイ設定ページにログインします。
- 「MQTT Engine」>「設定」を選択します。
- [Namespaces] タブを選択します。
- [カスタム] タブを選択し、「新しいカスタムネームスペースを作成…」をクリックします。

- 名前を入力します。
- Ignition が購読するトピックを、コンマ区切りでリストアップします。たとえば、Tulip で始まるトピックをすべて購読したい場合は、
Tulip/#と指定します。
- 「変更を保存」を押します。
- 情報が公開されると、タグが MQTT Engine タグプロバイダに自動的に表示されます。デザイナーを開き、タグブラウザで MQTT Engine タグプロバイダを選択します。

- これで、Ignition内のどこでもこれらのタグを使用できるようになります。
MQTT JSON データを送信するように Ignition を設定する
IgnitionのMQTT送信モジュールは、SparkplugまたはJSONを介して、タグデータや任意のデータをMQTTブローカーにパブリッシュできます。TulipはJSONのみをサポートしているため、IgnitionがJSONデータをパブリッシュするには、UNSトランスミッターまたはスクリプト関数の2つの方法があります。
UNSトランスミッター
UNSトランスミッターは、タグを監視し、それらをJSONペイロードを含むMQTTメッセージとしてMQTTサーバーにパブリッシュするエージェントです。これはMQTT送信モジュールの新機能です。
UNSトランスミッターは以下の動作を行います:
- タグのQualifiedValueが変更された際、タグごとに1つのデータメッセージを送信します
- クライアントが接続するたびに、各タグに対して1つのプロパティメッセージを送信します
- Ignition UDTのリーフタグを送信し、UDTの構造(つまり、UDT名自体およびUDT内のフォルダ)がトピックトークンとなります。
https://docs.chariot.io/display/CLD80/MT%3A+Configuration#MT:Configuration-unstransmitter
- Ignition Gateway の設定ページにログインします。
- [MQTT Transmitter] > [Settings] をクリックします。
- [UNS トランスミッター] タブを選択します。
- 「新しい設定を作成…」をクリックします。

- トランスミッターに名前を付けます。
- パブリッシュ元となるタグプロバイダーを指定します。複数のタグプロバイダーにタグがある場合は、複数の UNS トランスミッターを設定する必要があります。タグがデフォルトのプロバイダーにある場合は、「default」と入力してください。
- タグをパブリッシュするルートフォルダのタグパスを指定します。プロバイダー内のすべてのタグをリッスンおよびパブリッシュする場合は、空欄のままにします。パスを指定すると、パブリッシュする特定のフォルダやタグを選択できます。
- サーバーセットを選択します。通常は「Default」です。

- 「新しい設定を作成」をクリックして、新しいトランスミッターを作成します。
- 「Servers」タブに戻り、「Connected」列を確認することで、Ignitionがトランスミッター向けにデータを送信していることを確認できます。「1 of 1」または「2 of 2」と表示されていれば、トランスミッターは正常に動作しています。 SparkplugおよびUNSには、複数のトランスミッターを設定できます。「1 of 2」と表示されている場合は、トランスミッターのうち1つだけが動作していません。サードパーティ製のMQTTクライアントを使用してステータスを確認できます。例えば、以下はMQTT Explorerのスクリーンショットです:

トピックの名前空間が「unsAv1.0」で始まっている点にご注意ください。その下は自由に設定可能です。ただし、ルートノードは設定を通じて変更または削除することができます。詳細については、Cirrus Linkのサポートにお問い合わせください。
スクリプト機能
MQTT Transmission を使用して MQTT ブローカーにデータをパブリッシュするもう 1 つの方法は、提供されているスクリプト関数を利用することです。これは、任意のトピックに任意のデータをパブリッシュできるため、非常に便利です。関数は以下の通りです:
system.cirruslink.transmission.publish(mqttServerName, topic, payload, qos, retained)
この関数は、画面、タイマースクリプト、タグ変更スクリプトなど、Ignition内のどこからでも呼び出すことができます。ブローカーにパブリッシュしたい個々のタグに、タグ変更スクリプトを追加することをお勧めします。例として、個々のタグにタグ変更スクリプトを追加する方法を説明します。
- まず、スクリプト経由でのパブリッシュを許可するよう、MQTT Transmissionに設定する必要があります。Ignition Gatewayの設定ページにログインします。
- 「MQTT Engine」>「設定」をクリックします。
- 「セット」タブを選択します。
- サーバーセット(おそらく「Default」)を編集します。
- 詳細プロパティを表示し、「RPCクライアントの有効化/無効化」のチェックボックスをオンにします。

- 変更を保存します。別のサーバーセットや複数のサーバーセットを使用している場合は、スクリプトを使用してパブリッシュしたい各サーバーセットで、この設定を有効にしてください。
- Ignition Designer を開きます。
- タグブラウザで、公開したいタグを探します。
- 右クリックしてタグを編集します。
- [スクリプティング] を選択し、[値の変更] を選択します。

- 次のコード行を入力します:
system.cirruslink.transmission.publish(“Chariot SCADA”, “Tulip/Realistic0”, str(currentValue.value), 0, True)
MQTT Transmissionで設定したMQTTブローカー名を必ず指定してください。
トピックは任意のものに設定してください。ペイロードは任意の内容にできますが、通常は現在の値のみです。
- 変更を保存します。MQTT Explorerで新しい値を確認してください。

REST
REST API(RESTful APIとも呼ばれる)は、データ、コンテンツ、アルゴリズム、メディア、その他のデジタルリソースをWeb URLを通じて利用可能にするために使用される、シンプルで統一されたインターフェースです。REST APIは、今日のWeb上で最も一般的に使用されているAPIです。 Tulipには、ユーザー、ステーション、マシン、テーブルなどを管理するための組み込みのREST APIが備わっています。Ignitionは、これらのREST APIと容易に連携してデータをやり取りすることができます。
TulipのREST APIに関する詳細はこちらをクリックしてください。
ここでは、マシンの属性に新しい値を報告する方法と、Tulipのテーブルをクエリする方法の2つの例をご紹介します。
マシンの属性を報告する:::(Info) (Feature rename)
Prior to r383, Service Accounts were called "API Tokens".
:::
具体的なAPIドキュメントはこちらをご覧ください。Ignitionでは、スクリプトを使用してこのAPIを呼び出すことができます。
Tulipアカウントでサービスアカウントを設定する必要があります。以下の手順に従ってください。以下のスコープが定義されていることを確認してください:attributes:report2。APIキーとシークレットをメモしておいてください。これらはIgnitionのスクリプトで使用します。3. 次に、マシンIDと属性IDを取得するために、マシン属性をTulip APIにマッピングする必要があります。「Shop Floor」>「Machines」に移動します。4. 対象のマシンを選択します。5. 「Configuration」タブを選択します。6. マッピングされていない属性をクリックし、Tulip APIにマッピングします。7. machineId と attributeId をメモしておいてください。
- 次に、Ignition Designerを開き、プロジェクトを選択します。
- 「スクリプティング」で、「Tulip」という名前の新しいプロジェクトライブラリを追加します。

- リソースを編集し、以下を追加します:
def reportMachineAttribute(machineId, attributeId, value): data = { "attributes": [ { "machineId":machineId, "attributeId":attributeId, "value":value } ] } url = "%s%s" % (TULIP\_URL, "/attributes/report") system.net.httpPost(url=url, postData=system.util.jsonEncode(data), contentType="application/json", username=API\_KEY, password=SECRET)```変数内のインスタンス名、APIキー、シークレットを実際の値に置き換えてください。
1. プロジェクトを保存してください。これで、Ignition内のどこからでもこの関数を呼び出せるようになります。
`Tulip.reportMachineAttribute("5nsbB5uA4KTN7EiPB", "EqgrjTbKEJHcS6jHc", 15)`
マシン ID と属性 ID を各自のものに置き換え、値を指定してください。
1. タグ変更スクリプトでスクリプト関数を使用する場合は、まずIgnitionに、タグのスクリプト処理に関連付けるプロジェクトを指定する必要があります。Ignition Gatewayの設定ページにログインし、メニューから [System] > [Gateway Settings] を選択します。
2. プロパティ「Gateway Scripting Project」を、Tulip スクリプト関数を含むプロジェクトの名前に設定し、変更を保存します。{height="" width=""}
3. 次に、タグブラウザで公開したいタグを探します。
4. 右クリックしてタグを編集します。
5. 「スクリプティング」を選択し、「値の変更」を選択します。{height="" width=""}
6. 次のコード行を入力します:
`Tulip.reportMachineAttribute("5nsbB5uA4KTN7EiPB", "EqgrjTbKEJHcS6jHc", currentValue.value)`
マシンIDと属性IDを、ご自身のものに置き換えてください。
1. 変更を保存します。タグが変更されるにつれて新しい値が反映されることを、Tulipアカウントで確認してください。{height="" width=""}
2. これで完了です!この関数はどこからでも呼び出すことができます。特に、誰かが手動で値を入力している場合は、パースペクティブ画面から呼び出すと便利です。
#### パースペクティブビューでTulipテーブルをクエリする
1. 前の例の指示に従って、Tulip APIキーとシークレットを取得してください。
2. Ignition Designerを開き、プロジェクトを選択します。
3. 情報を表示したいパースペクティブビューを開きます。
4. 「Table」コンポーネントをビューにドラッグします。
5. テーブルの data プロパティを HTTP バインディングにバインドします。
{height="" width=""}
1. URLを次のように設定します。
`”https://<your-instance>.tulip.co/api/v3/tables/<table-id/records”`
URLは式であるため、引用符はそのまま残してください。「your-instance」とテーブル識別子を適切な値に置き換えてください。
1. 認証タイプを「Basic」に設定し、認証値を式として指定します。下部に成功メッセージと結果のプレビューが表示されるはずです。
{height="" width=""}
1. [OK] をクリックし、Perspective でテーブルを設定します。また、前の例のようにスクリプト関数を作成して、Ignition 全体で使用することもできます。{height="" width=""}
