PI System ExplorerのAnalysis 式について

IF - THEN -ELSE の条件式にて、ELSEは必ず定義する必要があるのでしょうか?

ELSEの時には「何もしない」としたいです。

 

IF (EXPRESSION) THEN (X) ELSE (Y) でOutput AttributeにXかYが出力される。

Parents
  • ELSEは必要ですが、「何もしない」のNoOutputという関数があります。

     

    つまり、下記のような式であれば、ExpressionはTrueの場合はXを出力しますが、それ以外の時に出力がありません。

    IF (EXPRESSION) THEN (X) ELSE NoOutput()

  • Output AttributeがStatic Attributeの場合、以下エラーメッセージが出ます。

    Functions such as NoOutput are not supported unless all mapped outputs are configured to save output history.

    Static Attributeに対するNoOutput()に代わる手段は何か無いでしょうか?

  • PI Pointに出力しない場合、代わりに出力属性の名前を指定することで、

    Elseの条件となった場合前回と同じ計算結果とすることができます。

     

     

    IF (EXPRESSION) THEN (X) ELSE 'Output Attribute'

     

    そもそもElse時に何も出力したくないということであれば、PI Pointに結果を出力するようにし、

     

    NoOutput()を使用したほうが良いと思います。

     

  • IF (EXPRESSION) THEN (X) ELSE 'Output Attribute'

    Elseの場合元々出力されていた値を再出力するイメージでしょうか?

    分析式を変更し計算を行ってみたのですが以下メッセージが出力されるようになりました。

     

     

    Output: 属性 'Output Attribute' に循環参照が検知されました。

Reply
  • IF (EXPRESSION) THEN (X) ELSE 'Output Attribute'

    Elseの場合元々出力されていた値を再出力するイメージでしょうか?

    分析式を変更し計算を行ってみたのですが以下メッセージが出力されるようになりました。

     

     

    Output: 属性 'Output Attribute' に循環参照が検知されました。

Children
  • 確認したところ、現在のバージョンでは上記の設定ではエラーとなるようです。

     

    PI Pointを出力しない場合は、以下のようにシステムデジタルステートの値を出力することは可能です。

     

    IF (EXPRESSION) THEN (X) ELSE DigState("No Data")

     

    Elseの条件になると、値の代わりに"No Data"のシステムデジタルステートの値が表示されます。