制限事項
CODESYS バージョン
ブートプロジェクトは両方のコントローラーでロード可能でなければなりません。以下の方法により、コントローラーの異なるランタイムバージョンでのシームレスなランタイムシステム更新が可能になります CODESYS Redundancy 機能。
リアルタイムでのタスクとコミュニケーション
周期的なタスクのみが許可されます。タイプのタスク イベント、 ステータス、または フリーホイーリング 同期できません。
の CODESYS Redundancy この機能は 1 つのタスクだけを同期します (冗長タスク)。他のタスクやアプリケーションも可能ですが、両方の PLC で非同期に実行されます。
さらに、タスクの実行と通信に影響を与える冗長システムは、特定のリアルタイム要求を満たす必要があります。冗長通信のメッセージ(要求と応答)の実行時間は、事前に定義された時間間隔内に存在する必要があり、タスクジッターを考慮する必要があります。この目的で使用されるリンクは、冗長通信にのみ使用してください。
リアルタイムタスク実行とは、冗長性によって制御されるアプリケーションタスクのジッターが制限されていることを意味します。リアルタイム通信とは、冗長リンクによって送信されたメッセージを、特定の時間内に他のPLCが受信する必要があることを意味します。
タスクの実行時間
メッセージング期間(要求と応答の時間)により、タスクの実行時間が長くなります。冗長性を使用すると、タスクの合計実行時間が長くなります。
アプリケーションとタスクの名前を変更する
冗長アプリケーションまたは冗長タスクの名前を変更することは重要な変更であり、冗長操作中は不可能です。これは、変更後、「冗長システムの構成」の「はじめに」で説明されているように、両方のPLCを再構成する必要があるためです。
タイムアウトの値
タイムアウトに指定する値は、タスクジッター時間と最大通信ジッター時間の合計より大きくなければなりません。
どちらの時間も、システムによって異なります。特定の最大タイムアウトを指定するには、リアルタイムタスクとリアルタイム通信の両方の機能が必要です。実行時にタスクジッターが大きく、メッセージ転送が遅れると、タイムアウトが発生します。他の PLC からのメッセージを待っている間、システムは他の PLC がもう動作していないと見なします。その結果、待機中の PLC と送信側の PLC はスタンドアロンモードに切り替わります。その結果、同期が失われ、フィールドバスでの通信の問題が発生します
ヒント
アクティブな PLC がスタンドアロンモードに切り替わるときのタイムアウトは、 冗長構成 エディタの 将軍 の「」タブ 冗長設定 タブ。さらに、値はランタイム設定ファイルに保存されます (例: CODESYSControl.cfg) エントリ付き StandbyWaitTime。
重要
場合によっては、両方の冗長コントローラーが予期せずシミュレーションモードに切り替わることがあります。
原因:アクティブコントローラでの冗長タスクの実行が中断されたり、大幅に遅延したりすると、タイムアウトが切れるまで同期メッセージがスタンバイコントローラに届かないことがあります。
結果として生じる動作は、以下によって異なります。 AutoSyncEnable フラグ:
もし
AutoSyncEnable = 0そして、2 番目のコントローラーがスタンドアロンモードに切り替わります。もし
AutoSyncEnabled = 1次に、2 番目のコントローラーは最初にスタンドアロンモードになります。このコントローラは遅延メッセージを受信すると、シミュレーションモードに入り、続いて別の接続を試みます
解決策:
この問題を回避するには、中断や遅延のリスクを最小限に抑えるために、冗長タスクに高い優先順位を割り当てる必要があります。
代替方法:冗長タイムアウトよりも小さいタイムアウト値でウォッチドッグタスクを有効にします。
代替方法:コントローラーを手動で同期します。
IECタイマー
両方のPLCで実行時間が異なると、PLCを切り替えるときに「バンプ」(出力値のずれ)が発生する可能性があります。これを防ぐために、IECタスクの実行中にIECタイマー値が凍結されます。 IECタイマーからの呼び出し(例:関数 TON)したがって、IECタスクを実行すると、物理時間が実行され続けても、常に同じタイマー値になります。したがって、実装は非アクティブに(おそらくループで)待機する必要があります。これは、IECタイマー値が現在のタスクスキャンで変更されないためです。
ポインター、リファレンス、インターフェイス
ザル POINTER TO、 REFERENCE TO、および INTERFACE アプリケーションユニット間の関係を表すステートメント (およびインターフェイスインスタンス) は、同期された冗長アプリケーションでは機能しません。
POINTER 冗長性によって制御されるデータ領域で変数を宣言してはなりません。これは、同期中に冗長制御されたデータが他のPLCに送信されるためです。ただし、他のPLCには別のメモリレイアウトが配置されている可能性があるため、ポインタは他のPLCでは無効です。
コンパイル時に、冗長機能は、ポインターが冗長制御された領域にあることを確認します。そこにあるポインタごとに警告が表示されます。このチェックは、次のエントリを使用してデバイス記述ファイルで非アクティブ化できます。
<Device>
<Custom>
<Redundancy DisablePointerChecks="true">EtherCAT DC
この冗長性の拡張は、工場の自動化よりもプロセス業界を対象としています。このため、分散クロックを備えたEtherCATドライブはサポートされていません。ただし、EtherCAT I / Oはサポートされています。
上記の「リアルタイムでのタスクと通信」のセクションも参照してください。
「既存のマップ」:既存の変数へのマッピング
I/O マッピング方法「Map on Existing」(I/O を既存の変数にマッピングする) は、 CODESYS Redundancy。これらの種類の変数は、入力データ領域または出力データ領域には格納されませんが、宣言された場所に格納されます。その結果、動作中に同期されません。
ネットワーク変数
複数の書き込みテレグラムが同時に送信されるため、書き込み権限のあるネットワーク変数は使用しないでください。読み取り権限のあるネットワーク変数は許可されています
ファイルアクセス
異なるファイルデータは、切り替え時に異なるPLCで「バンプ」を引き起こす可能性があるため、ファイルアクセスを使用しないでください。
ファイルを使用する場合は、冗長性制御の対象とならないデータ領域でファイルハンドルを宣言する必要があります。ファイルは両方のPLCで別々に開く必要があります。ローカルPC上のファイルにアクセスするために、別のPLCのファイルハンドルを使用しないでください。
コンパイル時に、 CODESYS Redundancy 変数を処理するチェック (RTS_IEC_HANDLE、 CAA.HANDLE) は、冗長制御エリアに配置されています。このような領域で検出されたハンドル変数ごとに警告が発行されます。
オンラインセキュリティユーザー管理
オンラインセキュリティユーザー管理を使用する場合は、両方の PLC に同じユーザー名とパスワードを設定する必要があります。それ以外の場合は、次のようなオンラインサービスが必要になります write variable または online change スタンバイPLCには送信されません。
SoftMotion
CODESYS SoftMotion と CODESYS Redundancy 組み合わせることはできません。 SoftMotionの時間要件 できません 冗長性を使用するときに満たされます。