Skip to main content

安全性に関係のないプログラム(NonSafe PRGs)

コンパイラおよびランタイムバージョンV3.5.4.0以降では、PRGはSafetySIL2アプリケーションに安全性に関係のないコードを含めることもできます。デフォルトでは、すべてのPRGに安全関連のコードが含まれています。これは黄色のブロックで示されます sil2_icon_safe.png 標準のPOUシンボルの横にあるシンボル。

7. 安全関連のPRGを使用したアプリケーション
安全関連のPRGを使用したアプリケーション


コンパイラバージョンとランタイムシステムバージョンで上記の要件が満たされている場合、PRG プロパティ ダイアログには SIL2のプロパティ タブ付き 安全性に関連するPRG どこ 安全関連コードが含まれています PRGのプロパティを無効にすることができます。クリックすると プロパティ PRGのコンテキストメニューでコマンドを実行して、プロパティダイアログを開きます。

PRGに安全関連コードが含まれていない場合は、灰色のブロックで示されます sil2_icon_unsafe.png 標準のPOUシンボルの横にあるシンボル。

8. 安全性に関連するPRGと安全性に関連しないPRGを備えたデバイスツリー
安全性に関連するPRGと安全性に関連しないPRGを備えたデバイスツリー


安全性に関係のないプログラムを使用する際の注意事項

以下の注記は、安全性に関係のないプログラムを使用するための推奨される方法を説明しています。デバイスメーカーのマニュアルがこの情報を補足していることに注意してください。

全般的

  • 安全性に関係のないPRGは、主に、一般的に安全性が重要なアプリケーション内で、安全性に関係のない個々の部分関数を実行するために使用されます。

    これらの安全性に関係のないPRGは、安全性に関係のある部品に影響を与えてはなりません。安全なデータへの干渉からの解放は、メモリ保護によって行われます。

  • POUは、安全性に関係のないPRG(メソッド、アクションなど)の下に挿入しないでください。

  • 安全性に関係のないPRGは、POUプールで宣言してはなりません。共有POUはライブラリで管理する必要があります。

データアクセスと通話階層

ローカルおよびグローバルデータ

POUからのローカルデータの場所は、次のタイプによって異なります。

  • 関数

    ローカル変数はスタックにあります

  • FBインスタンス

    FBのローカル変数はFBインスタンスにあります。

グローバルデータの場合、次のPOUタイプを確認できます。

  • GVL(およびEVL)

    グローバル変数(標準データ型、FBインスタンス、DUT)

  • PRG

    グローバル変数(標準データ型、FBインスタンス、DUT)

次の表は、一般的に許可されているデータアクセスを示しています。

コンテキスト\アクセスタイプ

安全関連データ

安全性に関係のないデータ

読んだ

書く

読んだ

書く

安全関連コード

わかった

わかった

わかった

わかった

安全性に関連しないコード

わかった

許可されていません

わかった

わかった

呼び出し階層

安全性に関係のないPRG(これらのPOU内またはPOUからの呼び出し)の使用は、不正アクセスがPLCの安全な状態につながる可能性があるため、特定の制限の対象となります。

3. 呼び出し階層

からの呼び出し/への呼び出し

安全なPRG

機能(安全に使用可能)

安全なFBインスタンス

安全でないPRG

機能(安全でない-使用可能)

安全でないFBインスタンス

安全なPRG

わかった

わかった

わかった

良くないですよ

良くないですよ

良くないですよ

機能(安全に使用可能)

わかった

わかった

わかった

良くないですよ

良くないですよ

良くないですよ

安全なFBインスタンス

わかった

わかった

わかった

良くないですよ

良くないですよ

良くないですよ

安全でないPRG

良くないですよ

良くないですよ

良くないですよ

わかった

わかった

わかった

機能(安全でない-使用可能)

良くないですよ

良くないですよ

良くないですよ

わかった

わかった

わかった

安全でないFBインスタンス

良くないですよ

良くないですよ

良くないですよ

わかった

わかった

わかった



FBインスタンスは、一般的に安全性に関連すると見なされます。例外は次のとおりです。

  • FBはNonSafePRGでインスタンス化されます。

  • FBはEVLでインスタンス化されます。

  • FBインスタンスは、「属性の場所」によって移動されます。

  • FB宣言は、安全性に関係のないライブラリにあります。

6. 例1

標準ライブラリ(Safe)のTONは、PRG(Safe)でインスタンス化されます。

結果:TONインスタンスは安全なメモリにあります。



7. 例2

標準ライブラリ(Safe)のTONは、NonSafePRGでインスタンス化されます。

結果:TONインスタンスは安全でないメモリにあります。



8. 例3

Utilライブラリ(NonSafe)のPDは、PRG(Safe)でインスタンス化されます。

結果:PDインスタンスは安全でないメモリにあります。

重要

安全なPRGで安全でないライブラリのPOUを使用することは許可されていません。



9. 例4

Utilライブラリ(NonSafe)のPDは、NonSafePRGでインスタンス化されます。

結果:PDインスタンスは安全でないメモリにあります。