Skip to main content

安全な相互通信のための構成例

重要

ここで挙げた例は、 CODESYS Safety NetVars 分散プロジェクトでは、安全性が重視される環境で仕様に従って安全 POU を使用することは推奨されません。このような環境では、CODESYS 安全ユーザー マニュアルの指示に常に従う必要があります。

以下の例は相互に構築されています。例1では、2つのコントローラ間で相互通信が実装されています。例2では、例1のプロジェクトが1つのコントローラによって拡張されています。この3番目のコントローラは、他の2つのコントローラに接続されています。各安全アプリケーションのPOUには、 SF_EmergencyStop POUは、通常、物理的な緊急停止スイッチの出力信号を入力信号として受信します。簡単にするために、この出力信号は、例ではグローバル変数を持つGVLによってシミュレートされています。それぞれの緊急停止スイッチを安全ネットワーク変数に接続することで、 SF_EmergencyStop POU、 SF_EmergencyStop 安全ネットワーク変数を介して接続されたコントローラでコントローラのスイッチがトリガーされた場合にも、POU がトリガーされます。

これらの例における安全ネットワーク変数の設定に関する一般的な注意事項

重要

「安全ネットワーク変数リスト (送信側)」および「安全ネットワーク変数リスト (受信側)」オブジェクトに変更を加える前に、対応する標準コントローラのアプリケーションと対応する安全アプリケーションの両方からログアウトする必要があります。そうしないと、これらに必要な依存変更を正しく行うことができません。

. 例の安全ネットワーク変数リストの編集可能な構成値の説明
  • タブ: PLCネットワーク:

    • リスト識別子: リスト識別子は、テレグラムを割り当てるための下位の NetVarUDP プロトコルによって必要となるため、安全ネットワーク変数リストの送信者と受信者のペアのブロードキャスト ドメイン内で一意である必要があります。リスト識別子はペアで指定され、各方向 (送信者 -> 受信者) に 1 つの値、方向 (受信者 -> 送信者) に 1 つの値が必要です。

    • メインPLC上の変数リスト識別子のグループ (安全ネットワーク変数リスト (送信者) のみ): このグループは、送信用のこの安全ネットワーク変数リストに使用されるリスト識別子の一意の範囲を定義します。 1 つのグループ内の値は、別のグループの値と重複しません。

    • 宛先ネットワークアドレス: ブロードキャスト オプションを使用しない場合は、通信を行うリモート ターミナルの IP アドレスを宛先ネットワーク アドレスとして使用する必要があります。したがって、安全ネットワーク変数リスト (送信側) を持つコントローラの IP アドレスを受信側に入力し、安全ネットワーク変数リスト (受信側) を持つコントローラの IP アドレスを送信側に入力する必要があります。

    • ポート: 必要に応じて変更できます (たとえば、ルーターやファイアウォールのため)。例では、変更の必要がなく、デフォルト値が保持されることを前提としています。安全ネットワーク変数リストの接続ペア (送信側/受信側) は同じポートを使用する必要があります。

  • タブ: 安全構成 (安全ネットワーク変数リスト(送信者)

    • 安全アドレス: このアドレスは、接続の内部識別に使用されるため、ネットワーク全体で一意の値を持つ必要があります (Safety User Manual を参照)。したがって、この例では、プロジェクト全体で一意になるように注意しています。同じネットワークで追加の安全ネットワーク変数が設定されていないことを前提としています。

    • 受信者の最大数: この設定はデフォルト値のままです 4 例では、最大拡張レベルとして 4 つの相互通信コントローラを提供するため、この値を設定します。この値を後で変更すると、安全アプリケーションと標準コントローラの関連アプリケーションの両方を再度ダウンロードする必要があります。送信側が未使用の接続用にリソースを既に予約しているため、値を増やすとリソースの消費も増加します。したがって、必要以上に高い値を設定しないでください。

  • タブ: 安全構成 (安全ネットワーク変数リスト(受信機)

    • 接続ID: この ID は、接続 ID が接続の内部識別に使用されるため、ネットワーク全体で一意の値を持つ必要があります (「安全ユーザー マニュアル」を参照)。したがって、この例では、プロジェクト全体で一意になるように注意します。同じネットワークで追加の安全ネットワーク変数が設定されていないことを前提としています。

    • ウォッチドッグタイム: システムに応じて、適切な方法で設定する必要があります。使用する値に関する追加の要件または制限については、安全ユーザーマニュアルを参照してください。

プロジェクト準備

ヒント

ネットワーク変数機能をテストするには、まず物理的な緊急停止スイッチをGVLでシミュレートし、 SAFEBOOL 初期値が設定されている変数 TRUE物理的なスイッチを操作する代わりに、この変数の値は デバッグ → 値の書き込み 分散システム全体の反応を観察するためのコマンドです。

  1. テンプレートから新しいプロジェクトを作成する 空の安全プロジェクト 標準コントローラーとその下に安全コントローラーがあります。

  2. ノードポイントを選択 安全アプリ デバイスツリーでクリック オブジェクトの追加 → 拡張 POU (安全) コンテキスト メニューで。

  3. POUの名前を 拡張POU(安全性)の追加 ダイアログで選択 プログラム として POUタイプ. 次にクリックします 追加

  4. 挿入 SF_EmergencyStop 開かれたPOU内の関数ブロックに値を割り当てる TRUE活性化 エントリ。

  5. GVLを追加する 安全アプリ コマンドによって オブジェクトの追加 → グローバル変数リスト(安全)

  6. このGVLでは、グローバル変数を宣言します Local_EStop データ型 SAFEBOOL 初期値は TRUE (この例では、物理的な緊急停止スイッチを置き換えます)。

  7. 追加 安全ネットワーク変数リスト(受信機) そして 安全ネットワーク変数リスト(送信者) 安全アプリケーションを介して オブジェクトを追加 指示。

  8. 必要に応じて、 ウォッチドッグタイム 価値 (安全ネットワーク変数リスト(受信機)安全構成 タブ) の値を適用されたハードウェアと要件に対するアプリケーションの時間動作と一致するように設定する必要があります。

例1: 標準コントローラとその下の安全コントローラをコピーして、安全な相互通信用のデバイスを作成および構成する

  1. POUを開く 安全アプリ プロジェクトに挿入して AND POUの前の演算子 SF_EmergencyStop 出力は AND オペレータはPOU入力に接続されている E_StopIn

  2. グローバル変数を割り当てる Local_EStop 最初のエントリーに AND オペレーター。

  3. POUでローカル変数を宣言する bVar_Reset データ型 BOOL これを Reset POUの入力 SF_EmergencyStopこれはデバッグに必要です。

  4. 緊急停止スイッチの信号(グローバル変数 Local_EStop)を安全ネットワーク変数(送信者)を介して公開するには、変数を作成する SApp1_EStop データ型 SAFEBOOL 安全ネットワーク変数リスト(送信者)内。

  5. クリックしてPOUに新しいネットワークを追加します ネットワークを挿入(下記)変数の値を割り当てる Local_EStop (緊急停止スイッチの信号)を変数に SApp1_EStop

  6. プロパティダイアログを開く 安全アプリ 名前を変更して 安全アプリ1

  7. 次に、前の手順で構成した標準コントローラとその下の安全コントローラをコピーして貼り付け、プロジェクトに 2 番目のコントローラを作成します。コピーした標準コントローラと安全コントローラに対して、まず次の変更を行う必要があります。

  8. 挿入されたコピーの変更: 安全アプリ1 反対する 安全アプリ2 安全アプリケーション オブジェクトの名前はプロジェクト内で一意である必要があるためです。

  9. セット 安全アプリ2 アクティブなアプリケーションとして選択し、クリックします ビルド → ビルドビルドの結果、新しいマッピングアプリケーションが作成されます SafetyApp2_マッピング 新しい標準コントローラの下に作成されます。

  10. ビルド後、安全な相互通信に関するいくつかのエラーがメッセージビューに表示されます(表示 → メッセージ)。これは、最初に修正する必要がある現在の構成エラーを検出するのに役立ちます。これを行うには、表示される次のエラー メッセージを考慮してください。

    • エラー P0100 プロジェクト内のリスト識別子のグループが一意ではないことを意味します( 安全ネットワーク変数リスト(送信者) オブジェクトがコピーされました。エラーを修正するには、 安全アプリ2 アプリケーション。次に値を入力します メイン PLC 上の変数リスト識別子のグループPLCネットワーク タブ。この値はプロジェクトで既に割り当てられていない必要があります(例: 2)。

      この例でわかりやすい名前を付けるには、公開された変数の名前を変更する必要があります。これを行うには、 安全構成 安全ネットワーク変数リスト(送信者)のタブ 安全アプリ2 アプリケーションで宣言された変数の名前を SApp2_EStop

      安全ユーザーマニュアルによると、安全ネットワーク変数を使用するには、適用されるすべての送信者の安全アドレスが一意である必要があります。そのため、新しい この変数リストの安全アドレス安全構成 安全ネットワーク変数リスト(送信者)のタブ 安全アプリ2 アプリケーション(例: 1001)。

    • エラー P0200 安全ネットワーク変数リスト(受信者)に許可された送信者がまだ選択されていないことを意味します。これは次のように修正できます。 安全アプリ2 (例えば、メッセージビューでエラーメッセージをダブルクリックするなど)。次に、 関連送信者 ドロップダウンリストには、 SApp1_EStop 変数はステップ4で公開されました。プログラミングロジックで必要な場合は、変数のローカル名を変更できます。例では、これは次のように予約されています。 SApp1_EStop_1 なぜなら SApp1_EStop 変数は、アプリケーションをコピーすることで既に定義されています。次のステップのPOUは変更されるため、オープンセーフティネットワーク変数リスト(レシーバー)の名前を元に戻します。 SApp1_EStop 公開された変数と再び一致するようになります。

      適用されたすべての受信機のConnectionIDはネットワーク内で一意である必要があるため、別の一意のIDを入力する必要があります。 接続ID コピーされた安全ネットワーク変数リスト(受信機)内の 安全構成 タブ。

  11. POUを開く 安全アプリ2

  12. 変数を割り当てる SApp1_EStop の2番目のエントリに AND オペレーター。

  13. ローカル変数を割り当てる Local_EStop (SafetyApp2の緊急停止スイッチの信号)を送信元変数へ SApp2_EStop

  14. セット 安全アプリ1 もう一度アクティブアプリケーションとして選択し、クリックします ビルド → ビルド

  15. エラーをダブルクリック P0200 メッセージビューで。

    安全ネットワーク変数リスト(受信機) 安全アプリ1 開きます。

  16. 送信者変数リストを選択する 安全アプリ2 から 関連送信者 ドロップダウンリスト。

    他のコントローラの送信者にリンクすることで、送信者に定義された領域のリスト識別子が更新されます。

  17. POUを開く 安全アプリ1

  18. 利用可能なリモート変数を割り当てる SApp2_EStop の2番目のエントリに AND オペレーター。

  19. 再構築 安全アプリ1

    これ以上のエラーは報告されません。

  20. 次の手順では、明示的なアドレスを使用してネットワーク構成を実行します。

    まず、後でコントローラーにログインできるように、プロジェクト内の両方のコントローラーの通信設定を適切に設定する必要があります。

    ネットワークアドレスへのブロードキャストの場合 255.255.255.255 技術的な理由(ルーターの設定など)で望ましくない、または不可能な場合は、SafetyNetvars を介して通信できるコントローラーを明示的に定義することもできます。

    上記の2つのコントローラが関係する例では、 PLCネットワーク 送信者オブジェクトと受信者オブジェクトのタブは次のように定義されます。

  21. まずオプションを無効にします 宛先ネットワークアドレスとポートにデフォルト値を使用する (255.255.255.255、1202)PLCネットワーク プロジェクトのすべての安全ネットワーク変数リストのタブ。

  22. sil3_img_nvl_config_example1.png

    この図に従って、それぞれのリモート端末の IP アドレスを入力します。それに応じて、ネットワークの IP アドレスを変更する必要があります。

    宛先ネットワークアドレス 192.168.0.22 安全ネットワーク変数リストを与える必要がある 安全アプリ1 およびIPアドレス 192.168.0.1 安全ネットワーク変数リストの 安全アプリ2送信側のエントリは、リスト識別子が対応する受信側のものと一致するエントリに対して作成する必要があります。これは、下位層によってパッケージが正しく割り当てられるようにするために行われます。

    重要

    どの送信者エントリにIPが入力されているかを検出するために、送信者に接続された受信者のリストを 受信者を表示 ボタンの 安全構成 タブ。このリストのエントリをダブルクリックすると、接続された安全ネットワーク変数リスト (受信機) のエディターをすばやく開くことができます。エディターでは、受信機によって使用されるリスト識別子のペアを確認できます。

    プロジェクトは、相互通信の例用に構成されています。

  23. プロジェクトをテストするには、両方のアプリケーションを安全コントローラにダウンロードします。また、それぞれの 安全AppX_マッピング コントローラーにダウンロードされ、起動します。その後、アプリケーションを起動し、 SF_EmergencyStop POUは、 Reset 入力と bVar_Reset ステップ 3 で接続された変数。

    これでPOUをトリガーできます SF_EmergencyStop 両方の相互接続されたコントローラで、1つのコントローラで緊急停止信号をトリガーすることによって、緊急停止スイッチをシミュレートします。例では、グローバル変数を設定することで緊急停止スイッチをシミュレートします。 ローカル_EStopFALSE 2つのコントローラーのうちの1つにコマンドを入力して、このコントローラーの値を書き込む。 デバッグ → 値の書き込み

例2: ネットワーク変数コンポーネントを「作成」して、以前のプロジェクトを別のデバイスで拡張する

要件: 例 1 のプロジェクトが作成され、開かれています。

  1. プロジェクトに標準コントローラを追加し、その下に安全コントローラを配置します (コンテキスト メニュー: デバイスを追加)。

  2. コピー 手数料 そして グローバルVL オブジェクトから 安全アプリ1 新しい安全制御装置の下にあります。

  3. 新しい名前を変更する 安全アプリ安全アプリ3

  4. 1つ追加 安全ネットワーク変数リスト(送信者) そして2 安全ネットワーク変数リスト(受信機) 下のオブジェクト 安全アプリ3 によって オブジェクトを追加 指示。

  5. 開く 安全構成 両方の安全ネットワーク変数リスト(受信機)のタブから選択し、 関連送信者 ドロップダウンリストの送信者 安全アプリ1 最初の安全ネットワーク変数リスト(受信者)と送信者 安全アプリ2 そして2番目。

    必要に応じて、 ウォッチドッグタイム 安全ネットワーク変数リスト(受信機)内。

    ヒント

    接続 ID は、オブジェクトが挿入されるときにプロジェクト全体で一意の値が事前に設定されます。したがって、この例で説明する手順中に変更する必要はなくなります。

  6. 変数を宣言する SApp3_EStop データ型 SAFEBOOL 新しい 安全ネットワーク変数リスト(送信者)

    ヒント

    変数リストの安全アドレスは、オブジェクトが挿入されるときにプロジェクト全体で一意の値が事前に設定されます。したがって、この手順中に変更する必要はなくなります。変数リスト識別子のグループも、競合を避けるためにプロジェクト全体で一意の値が事前に設定されます。

  7. POUの割り当てを変更する 安全アプリ3 変数 Local_EStop 変数に割り当てられる SApp3_EStopこのようにして、緊急停止スイッチの値は、 安全ネットワーク変数リスト(送信者)

  8. 選択してください AND オペレーター、クリック 入力を追加 コンテキストメニューで、この新しい入力を変数にリンクします SApp1_EStop

    の入力は AND オペレーターは現在、 Local_EStopSApp2_EStop、 そして SApp1_EStop 入力。

  9. セット 安全アプリ3 アクティブアプリケーションとして選択し、クリックしてアプリケーションをビルドします。 ビルド → ビルド

    ビルド操作中、システムはプロジェクト全体の安全ネットワーク変数構成が一致しているかどうかを確認し、 SafetyApp3_マッピング が生成されます。

  10. 次の手順では、 安全アプリ2

  11. 新しいものを追加 安全ネットワーク変数リスト(受信機)安全アプリ2 送信元ネットワーク変数リストを選択します 安全アプリ3 から 関連送信者 ドロップダウンリスト。

  12. 必要に応じて、 ウォッチドッグタイム

  13. POUを開く 安全アプリ2 そして新しい入力を追加して AND 演算子(コンテキストメニュー: 入力を追加)。この新しい入力を SApp3_EStop 変数。

  14. 次の手順では、 安全アプリ1

  15. 新しいものを追加 安全ネットワーク変数リスト(受信機)安全アプリ1 送信元ネットワーク変数リストを選択します 安全アプリ3 から 関連送信者 ドロップダウンリスト。

  16. 必要に応じて、 ウォッチドッグタイム

  17. POUを開く 安全アプリ1 そして新しい入力を追加して AND 演算子(コンテキストメニュー: 入力を追加)。この新しい入力を SApp3_EStop 変数。

  18. 前の例と同様に、ネットワーク構成は明示的なアドレスで記述されます。

  19. 後でコントローラにログインできるように、プロジェクト内の 3 つのコントローラすべての通信設定を設定します。

  20. オプションを無効にする 宛先ネットワークアドレスとポートにデフォルト値を使用する (255.255.255.255、1202) すべての安全ネットワーク変数リスト内。

  21. sil3_img_nvl_config_example2.png

    この図に従って、それぞれのリモート端末の IP アドレスを入力します。それに応じて、ネットワークの IP アドレスを変更する必要があります。

    のために 安全アプリ3 この操作については、次の手順で詳しく説明します。

  22. 入力してください 宛先ネットワークアドレス 192.168.0.22 コントローラーの 安全アプリ2 エントリーとして リスト識別子 1080 1081PLCネットワーク 安全ネットワーク変数リスト(送信者)のタブ 安全アプリ3

    重要

    宛先ネットワーク アドレスを正しいリスト識別子に割り当てていることを確認してください。そうしないと、ネットワーク変数の転送が機能しません。

  23. 変数をインポートする安全ネットワーク変数リスト(レシーバー)を開く SApp2_EStop. 入力してください 宛先ネットワークアドレス コントローラーの 安全アプリ2 192.168.0.22

  24. 次に、 宛先ネットワークアドレス 192.168.0.1 コントローラー用 安全アプリ1 以下の場所にあります:

    リスト識別子の安全ネットワーク変数リスト(送信者)の最初 1082 1083 そして、変数をインポートする安全ネットワーク変数リスト(レシーバー)で SApp1_EStop

  25. これで、プロジェクトは相互通信用に構成されました。

    相互通信の例をテストするには、まず、関係するすべてのコントローラーにアプリケーションをダウンロードし、アプリケーションを起動します。それぞれの SafetyAppX_Mapping も実行されていることを確認します。

    SAppX_EStop 安全ネットワーク変数を使用して公開された変数は、他のSafetyAppsのPOUに値とともに転送されるようになりました。 TRUEこれは、 SAppX_EStop シミュレートされた緊急停止スイッチによる変数。

  26. 必要に応じて、 SF_EmergencyStop POUは、 Reset 入力と接続 bVar_Reset 変数。

    これでPOUをトリガーできます SF_EmergencyStop 1つのコントローラで緊急停止信号をトリガーすることで、相互接続された3つのコントローラすべてで緊急停止スイッチをシミュレートします。例では、グローバル変数を設定することで緊急停止スイッチをシミュレートします。 Local_EStopFALSE コントローラーの1つにコマンドを入力して、そのコントローラーの値を書き込む デバッグ → 値の書き込み