エミュレーション

概要と主要な概念

エミュレーションツールは、FlexSimと外部PLCまたはPLCと通信するクライアント/サーバー間のリンクを作成します。このツールは、複数の接続を作成し、各接続に変数を定義できます。このツールは、OPC UA、OPC DA、およびModbusと含む複数のプロトコルをサポートしています。

エミュレーションツールはツールボックスからアクセスできます。

[接続]タブ

[接続]タブには、次のプロパティがあります。

- 新しい接続を追加します。

- 接続を削除します。

次の接続タイプを使用できます。

接続 説明
Allen-Bradley データアクセス(DA)プロトコルを使用したローカルまたはリモートのOPCサーバーへの接続。
Modbus RTU シリアル(RS-232またはRS-485)ポートを使用したModbusスレーブまたはマスターへの接続。
Modbus TCP/IPv4 TCP/IPv4を使用したイーサネット経由のModbusクライアントまたはサーバーへの接続。
Modbus TCP/IPv6 TCP/IPv6を使用したイーサネット経由のModbusクライアントまたはサーバーへの接続。
OPC DA データアクセス(DA)プロトコルを使用したローカルまたはリモートのOPCサーバーへの接続。
OPC UA UA(統一アーキテクチャ)プロトコルを使用したローカルまたはリモートのOPCサーバーへの接続。

各接続のプロパティについては、以下で説明します。

Allen-Bradley

Allen-Bradley接続は、FlexSimがコンピュータ上の物理的なイーサネットポート経由で通信する実環境、またはソフトウェアプログラムがTCP接続をエミュレートする仮想環境で行うことができます。

  • 名前 - 接続の名前。FlexSimでの接続を識別するために使用します。
  • アクティブ - このチェックボックスをオンにすると、FlexSimをAllen-Bradley PLCに接続するための接続が作成されます。これは、モデルの起動時に発生します。
  • アドレス - 接続のIPアドレス。localhostを使用して、このコンピュータ上でエミュレートするPLCとの接続を作成するか、IPアドレスを190.123.10.1の形式で指定します。
  • 間隔を変更 - FlexSimがPLCで変更をポーリングする時間間隔(モデル時間単位)。
  • PLCタイプ - 接続先のPLCのタイプまたはファミリー。接続が正しく機能するためには、正しいPLCタイプを指定する必要があります。
  • メッセージング - このオプションは、特定のPLCタイプにしか使用できません。使用可能な場合は、[接続済み]と[未接続]という2つのオプションが表示されます。接続済みメッセージングでは、FlexSimとPLCが一定期間複数のメッセージをやり取りできる明示的な接続が作成されます。未接続メッセージは、FlexSimからPLCに単一のリクエストとして送信されます。
  • タイムアウト - FlexSimがPLCとの間で値を読み書きするときに使用するミリ秒単位の時間間隔。タイムアウトエラーは、
  • 非同期書き込み - このチェックボックスがオンの場合は、PLCにデータを書き込むと、FlexSimは書き込みオペレーションが完了するまで待機してから続行します。
  • デバッグ出力を有効 - このチェックボックスをオンにすると、FlexSimは、PLCとの通信中に情報をシステムコンソールに出力します。

Modbus RTU

Modbus RTU接続は、FlexSimがコンピュータ上の物理的なシリアルポート経由で通信する実環境、またはソフトウェアプログラムがシリアルポートをエミュレートする仮想環境で行うことができます。

  • 名前 - 接続の名前。FlexSimでの接続を識別するために使用します。
  • アクティブ - このチェックボックスをオンにすると、FlexSimをシリアルポート(仮想または実環境)経由でModbusスレーブまたはマスターに接続するための接続が作成されます。これは、スレーブ接続でのモデルのリセット時と、マスター接続でのモデルの起動時に発生します。
  • シリアルポート - 接続を作成するシリアルポート。
  • スレーブ/マスター - 接続がスレーブかマスターかを指定します。スレーブ接続の場合は、他のModbusデバイス/アプリケーションをFlexSimに接続できます。
  • ボーレート - 接続のボーレート。ボーレートは、時間あたりの伝送に対する信号イベントの数を定義します。
  • パリティ - 接続にパリティを含めるかどうかを指定します。これは、伝送におけるエラー検出方法です。
  • スレーブID - 接続のスレーブIDを定義します。
  • マルチレジスター - 接続のエンディアンまたはバイト伝送の順序を指定します。
  • ストップビット - 伝送中の各文字の最後にストップビット数またはビット数を指定します。
  • データビット - 伝送中の各文字に可能なデータビット数を指定します。
  • 間隔を変更 - FlexSimがスレーブに変更をポーリングする時間間隔(モデル時間単位)。これはマスター接続でのみ使用できます。

Modbus TCP/IPv4とIPv6

IPv4とIPv6のプロパティは同じです。唯一の違いは、接続の設定にプロトコルが使用されることです。Modbus TCP接続は、FlexSimがコンピュータ上の物理的なイーサネットポート経由で通信する実環境、またはソフトウェアプログラムがTCP接続をエミュレートする仮想環境で行うことができます。

  • 名前 - 接続の名前。FlexSimでの接続を識別するために使用します。
  • アクティブ - このチェックボックスをオンにすると、FlexSimをイーサネットポート経由でModbusクライアントまたはサーバーに接続するための接続が作成されます。これは、サーバー接続でのモデルのリセット時と、クライアント接続でのモデルの起動時に発生します。
  • アドレス - 接続のIPアドレス。localhostを使用して、仮想クライアントまたはサーバーとの接続を作成するか、IPアドレスを190.123.10.1の形式で指定します。
  • タイプ - 接続がクライアントかサーバーかを指定します。サーバー接続の場合は、他のModbusデバイス/アプリケーションをFlexSimに接続できます。
  • 間隔を変更 - FlexSimがサーバーに変更をポーリングする時間間隔(モデル時間単位)。これはサーバー接続には使用されません。
  • マルチレジスター - 接続のエンディアンまたはバイト伝送の順序を指定します。
  • ポート - 接続のポート。

OPC DA

OPC DA接続は、FlexSimがコンピュータ上の物理的なイーサネットポート経由で通信する実環境、またはソフトウェアプログラムがTCP接続をエミュレートする仮想環境で行うことができます。

  • 名前 - 接続の名前。FlexSimでの接続を識別するために使用します。
  • アクティブ - このチェックボックスをオンにすると、FlexSimをOPCサーバーに接続するための接続が作成されます。これは、モデルの起動時に発生します。
  • アドレス - 接続のIPアドレス。localhostを使用して、このコンピュータ上のサーバーとの接続を作成するか、IPアドレスを190.123.10.1の形式で指定します。
  • 更新レート - FlexSimがサーバーで変更をポーリングする時間間隔(モデル時間単位)。
  • サーバー - 接続先のサーバー。
  • 参照 - [参照]ボタンをクリックすると、定義されたアドレスに接続する可能性のあるサーバーのリストが表示されます。
  • 非同期書き込み - このチェックボックスがオンの場合は、サーバーにデータを書き込むと、FlexSimは書き込みオペレーションが完了するまで待機してから続行します。
  • ユーザー名 - OPCサーバーへの接続にユーザー名が必要な場合に、サーバー認証に使用されます。
  • パスワード - OPCサーバーへの接続にパスワードが必要な場合に、サーバー認証に使用されます。

OPC UA

OPC UA接続は、FlexSimがコンピュータ上の物理的なイーサネットポート経由で通信する実環境、またはソフトウェアプログラムがTCP接続をエミュレートする仮想環境で行うことができます。

  • 名前 - 接続の名前。FlexSimでの接続を識別するために使用します。
  • アクティブ - このチェックボックスをオンにすると、FlexSimをOPCサーバーに接続するための接続が作成されます。これは、モデルの起動時に発生します。
  • 検出サーバー - 検出サーバーのIPアドレス。localhostを使用してこのコンピュータ上でサーバーを検出するか、IPアドレスを190.123.10.1の形式で指定します。:51510などの接尾辞を使用して、通信する非デフォルトTCPポート番号を定義します。基本値を入力した場合は、[参照]ボタンを押して、接続する特定のエンドポイントURLを参照できます。
  • デバッグ出力を有効 - このチェックボックスをオンにすると、FlexSimは、サーバーとの通信中に情報をシステムコンソールに出力します。
  • エンドポイントURL - 接続するサーバーとプロトコルを定義する特定のURL。[参照]ボタンを使用してこのフィールドを自動入力できます。
  • セキュリティポリシー - サーバーと通信するときに使用するセキュリティアルゴリズムとキー長のセットを定義します。
    • なし - セキュリティが適用されません。
    • Basic128Rsa15 - Aes 128 対称暗号化アルゴリズム、SHA1キーハッシュ、およびRSA-PKCS15非対称署名アルゴリズムを使用します。2017年にSHA-1が破られたため、このポリシーは安全と見なされなくなったことに注意してください。
    • Basic256 - Aes 256 対称暗号アルゴリズム、SHA1キーハッシュ、およびRSA-PKCS15非対称署名アルゴリズムを使用します。2017年にSHA-1が破られたため、このポリシーは安全と見なされなくなったことに注意してください。
    • Basic256Sha256 - Aes 256 対称暗号アルゴリズム、SHA2-256キーハッシュ、およびRSA-PKCS15非対称署名アルゴリズムを使用します。
  • メッセージセキュリティモード - メッセージセキュリティモードを定義します。
    • なし - セキュリティが適用されません。
    • 署名 - メッセージは署名されますが、暗号化されません。
    • 署名と暗号化 - メッセージは署名され、暗号化されます。
  • ユーザー識別 - クライアントユーザーを識別する方法または識別するかどうかを定義します。次のオプションを使用できます。
    • 匿名 - 認証が使用されません。
    • ユーザー名 - サーバーを使用して認証するユーザー名とパスワードを指定します。
    • 証明書 - このオプションは、サーバーで生成された証明書がFlexSimを実行中のコンピュータにダウンロードされている場合に使用します。
  • 構成をチェック - このボタンは、入力された設定でターゲットUAサーバーに正しく接続できるかどうかをチェックする場合に押します。
  • 認証パス - 証明書へのファイルパス。
  • プライベートキー - 指定された証明書に関連付けられたプライベートキー。
  • ユーザー名 - サーバーを使用して認証するユーザー名。
  • パスワード - 証明書またはユーザーのパスワード。

[変数]タブ

[変数]タブには次のプロパティがあります。

フィルタ

変数リストを絞り込む方法は3つあります。

  • 接続 - このタイプの接続だけを表示します。
  • 変数 - エミュレーションツールウィンドウを使用して作成される変数であるローカル変数にすることも、動的に作成される処理フロー変数にすることもできます。
  • 変数タイプ - このタイプの変数だけを表示します。
アイコン 説明
変数を追加します。
選択した変数を複製します。
選択した変数を削除します。
選択した変数をリストの上に移動します。
選択した変数をリストの下に移動します。

変数リスト

変数のリストを表示します。

センサー(PLC入力)、コントロール(PLC出力)、およびデータの3種類の変数を追加できます。

センサー(PLC入力)

PLC、サーバー、またはデータ変数にデータを書き込むためにセンサーが使用されます。センサーから読み取る場合、返される値はFlexSimに格納されるローカル値になります。センサーの接続がアクティブな場合は、値を変更すると、その値がPLCまたはサーバーに書き込まれます。接続が非アクティブな場合、その値はローカルでのみ変更されます。

コントロール(PLC出力)

PLC、サーバー、またはデータ変数からデータを読み取るためにコントロールが使用されます。コントロールは、コントロールの接続が非アクティブな場合のみ変更できます。これにより、内部ラダーロジックがPLCとして動作し、モーターの開始/停止などのコントロールを変更できます。接続がアクティブな場合にコントロールの値を変更しようとすると、例外がスローされます。

コントロールから読み取る場合、戻り値はコントロールの設定方法によって異なります。コントロールを[変更をサブスクライブ]または[外部変更をポーリング](接続タイプによる)に設定した場合は、サーバーが変更された値をFlexSimに通知する(サブスクライブ)か、FlexSimがイベントを使用して変更を問い合わせます(ポーリング)。後でこれらのコントロールから値を読み取ろうとすると、戻り値はFlexSimが最後に値を読み取ったときのキャッシュされた値になります。[変更をサブスクライブ]または[外部変更をポーリング]チェックボックスがオフの場合は、コントロールの値を読み取ると、PLCまたはサーバーにアクセスして、値が同期的(FlexSimは値を受け取るまで待機してからシミュレーションを続行します)または非同期的に読み取られます。

データ

Allen-Bradley接続などの一部の接続タイプには、データをサーバー/PLCからプルしてから、センサーやコントロールタイプの変数にリンクする追加のデータ変数タイプがあります。これらの変数は、モデル内のオブジェクトに関連付けられていません。

これらの変数のプロパティを以下で説明します。

Allen-Bradleyタグ

Allen-Bradleyタグは、PLCと直接通信してデータの読み書きを行います。その後で、Allen-Bradleyのコントロールとセンサーがタグにリンクされ、そのタグの値を取得または設定できるようになります。これにより、変数ごとに1つずつのリクエストではなく、単一のネットワークリクエストで大量のデータをPLCからプルすることができます。タグは、単一の要素または複数の要素を指すことができます。複数の要素にリンクされた場合は、FlexSimがタグデータを配列として扱います。

  • エイリアス - 変数の名前。FlexSimで変数を識別するために使用されます。
  • 接続 - この変数が関連付けられている接続。
  • CPUパス - 追加のルーティングが必要なPLCの場合は、タグを介して通信するCPUへのパスになります。たとえば、1, 0です。
  • タグ名 - PLC上のタグの名前。タグのフルネームにする必要があります。配列から単一の要素にアクセスする場合は、TestBigTag[10,42]を使用して要素を指定します。[参照]ボタンをクリックすると、PLCの使用可能なタグのリストが表示されます。
  • 要素タイプ - タグ内の各要素のデータタイプを定義します。
  • 要素サイズ - 各要素のデータサイズ(バイト単位)。
  • 要素カウント - タグの要素の数。

Allen-Bradley変数

Allen-Bradley変数のプロパティは、センサーとコントロールの間で非常に似ています。これらのプロパティの説明は以下のようになります。

  • エイリアス - 変数の名前。FlexSimで変数を識別するために使用されます。
  • Allen-Bradleyタグ - この変数が関連付けられたAllen-Bradleyタグ。
  • オフセット - 読み取りを開始するAllen-Bradleyタグ内の最初の要素(0ベース)。たとえば、タグの値が[3, 5, 6, 9]でオフセットが2に設定されている場合は、コントロール値が6から始まります。
  • 要素カウント - コントロール専用。Allen-Bradleyタグの[オフセット]から読み取る要素の数。要素カウントが1より大きい場合は、値が配列になります。
  • 関連付けられたオブジェクト - この変数とモデル内のオブジェクトを関連付けます。関連付けられたオブジェクトによって、センサーに利用できるイベントを書き込むが定義されます。[イベントを書き込む]と[アクション]の選択オプションでは、currentが関連付けられたオブジェクトです。
  • 非同期書き込み - センサー専用。このオプションは、接続が[非同期書き込み]を使用するように設定されていない場合にのみ使用できます。オフになっている場合は、FlexSimが、書き込みオペレーションが完了するのを待ってから実行を続行します。そうでない場合は、FlexSimが、書き込みオペレーションが完了するのを待たずに実行を続行します。
  • イベントを書き込む - センサーにオブジェクトが関連付けられている場合、そのオブジェクトのイベントをリッスンできます。 をクリックすると、新しいイベントが追加されます。
    • イベント - リッスン対象のイベント。
    • 書き込み値 - センサー(および接続がアクティブな場合のPLC)に書き込む値。
  • 変更を確認 - オンになっている場合は、リンク先のAllen-Bradleyタグが、PLCでタグに対する変更をポーリングするように設定されます。コントロール変数のデータが変更されると、タグによってその変数の値が更新されます。
    • アクション - 変更を確認する場合は、接続の[間隔を変更]に基づいてFlexSimイベントが作成されます。イベントが発生すると、PLCから値が読み取られます。コントロールの値が変更された場合は、コントロールのアクションが評価されます。各アクションは、新しい値がフィールドと一致するか、デフォルトに達するまで、トップダウンで評価されます。アクションが起動し、それ以上のアクションはテストされません。 をクリックすると、新しいアクションが追加されます。
    • - 照合する値。
    • アクション - 新しい値がと一致したときに実行するアクション。

Modbusレジスター

Modbusレジスター変数のプロパティは、センサーとコントロールの間で非常に似ています。これらのプロパティの説明は以下のようになります。

  • エイリアス - 変数の名前。FlexSimで変数を識別するために使用されます。
  • 接続 - この変数が関連付けられている接続。
  • レジスタータイプ - レジスターのタイプ。コイル、離散入力、保持レジスター、入力レジスターを設定できます。保持レジスターと入力レジスターの場合は、データタイプドロップダウンボタンでレジスターのデータタイプを定義します。
  • レジスター# - レジスターのアドレスを定義します(0~9999)。
  • 初期値 - レジスターの初期値。これは、独自のデータを格納するサーバーまたはスレーブタイプの接続でのみ使用できます。
  • 関連付けられたオブジェクト - この変数とモデル内のオブジェクトを関連付けます。関連付けられたオブジェクトによって、センサーに利用できるイベントを書き込むが定義されます。[イベントを書き込む]と[アクション]の選択オプションでは、currentが関連付けられたオブジェクトです。
  • イベントを書き込む - センサーにオブジェクトが関連付けられている場合、そのオブジェクトのイベントをリッスンできます。 をクリックすると、新しいイベントが追加されます。
    • イベント - リッスン対象のイベント。
    • 書き込み値 - センサー(および接続が有効な場合はサーバー)に書き込む値。
  • 外部変更をポーリング - コントロールの値の変更についてスレーブまたはサーバーをポーリングします。これは、マスターまたはクライアントタイプの接続でのみ使用できます。
    • アクション - 変更をポーリングすると、接続の間隔を変更に基づいてFlexSimイベントが作成されます。このイベントが起動すると、サーバーから値が読み込まれます。コントロールの値が変更された場合は、コントロールのアクションが評価されます。各アクションは、新しい値がフィールドと一致するか、デフォルトに達するまで、トップダウンで評価されます。アクションが起動し、それ以上のアクションはテストされません。 をクリックすると、新しいアクションが追加されます。
    • - 照合する値。
    • アクション - 新しい値がと一致したときに実行するアクション。

OPC DAタグ

OPCタグ変数のプロパティは、センサーとコントロールの間で非常に似ています。これらのプロパティの説明は以下のようになります。

  • エイリアス - 変数の名前。FlexSimで変数を識別するために使用されます。
  • 接続 - この変数が関連付けられている接続。
  • タグID - サーバー上のタグのパス。[参照]ボタンをクリックすると、サーバーの使用可能なタグのリストが表示されます。
  • 関連付けられたオブジェクト - この変数とモデル内のオブジェクトを関連付けます。関連付けられたオブジェクトによって、センサーに利用できるイベントを書き込むが定義されます。[イベントを書き込む]と[アクション]の選択オプションでは、currentが関連付けられたオブジェクトです。
  • イベントを書き込む - センサーにオブジェクトが関連付けられている場合、そのオブジェクトのイベントをリッスンできます。 をクリックすると、新しいイベントが追加されます。
    • イベント - リッスン対象のイベント。
    • 書き込み値 - センサー(および接続が有効な場合はサーバー)に書き込む値。
  • 変更をサブスクライブ - サーバーの変更をサブスクライブします。値が変更されるとFlexSimに通知されます。
    • デッドバンド(%) - アナログの変更をサブスクライブする場合、デッドバンド(%)でコントロールの値に対する小さい変更(ノイズ)を除外できます。
    • アクション - 変更をサブスクライブする場合、コントロールの値が変更されると、変更通知がFlexSimに送信されます。アクションを使用すると、新しい値に基づいてその通知で何を行うかを定義できます。各アクションは、新しい値がフィールドと一致するか、デフォルトに達するまで、トップダウンで評価されます。アクションが起動し、それ以上のアクションはテストされません。 をクリックすると、新しいアクションが追加されます。
    • - 照合する値。
    • アクション - 新しい値がと一致したときに実行するアクション。

OPC UA 変数

OPC UA変数のプロパティは、センサーとコントロールの間で非常に似ています。これらのプロパティの説明は以下のようになります。

  • エイリアス - 変数の名前。FlexSimで変数を識別するために使用されます。
  • 接続 - この変数が関連付けられている接続。
  • 表示名 - サーバー上の変数のパス。[参照]ボタンをクリックしてサーバーの使用可能なタグのリスト表示し、そこからタグを選択します。
  • ノードID - 変数のUA ID文字列を表示します。
  • 説明 - 変数のUA説明を表示します。
  • 関連付けられたオブジェクト - この変数とモデル内のオブジェクトを関連付けます。関連付けられたオブジェクトによって、センサーに利用できるイベントを書き込むが定義されます。[イベントを書き込む]と[アクション]の選択オプションでは、currentが関連付けられたオブジェクトです。
  • イベントを書き込む - センサーにオブジェクトが関連付けられている場合、そのオブジェクトのイベントをリッスンできます。 をクリックすると、新しいイベントが追加されます。
    • イベント - リッスン対象のイベント。
    • 書き込み値 - センサー(および接続が有効な場合はサーバー)に書き込む値。
  • 変更をサブスクライブ - サーバーの変更をサブスクライブします。値が変更されるとFlexSimに通知されます。
    • サンプリング間隔[ms] - 変数に対する変更を検出するために変数をサーバーからサンプリングする頻度を定義します。
    • アクション - 変更をサブスクライブする場合、コントロールの値が変更されると、変更通知がFlexSimに送信されます。アクションを使用すると、新しい値に基づいてその通知で何を行うかを定義できます。各アクションは、新しい値がフィールドと一致するか、デフォルトに達するまで、トップダウンで評価されます。アクションが起動し、それ以上のアクションはテストされません。 をクリックすると、新しいアクションが追加されます。
    • - 照合する値。
    • アクション - 新しい値がと一致したときに実行するアクション。