Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ InTouch HMI

IF…THEN…ELSEIF…ELSE…ENDIFおよび属性品質

IF…THEN…ELSEIF…ELSE…ENDIFおよび属性品質

  • Last UpdatedOct 08, 2024
  • 1 minute read

属性値を同じ型の別の属性にコピーすると、属性の品質もコピーされます。これは、I/O 属性で作業する際に特に重要です。たとえば、以下の 2 つのステートメントは値と品質の両方をコピーします。

me.Attr2 = me.Attr1;

me.Attr2.value = me.Attr1.value;

属性の品質が BAD の場合に値だけをコピーするには、一時変数を使用して値を格納できます。以下に例を示します。

Dim temp as Integer;

temp = me.Attr1;

me.Attr2 = temp;

Attr1 <> Attr2 のような比較があり、いずれかの属性の品質が BAD の場合、IF 制御ブロック内のステートメントは実行されません。たとえば、Attr1 の品質が BAD である場合を考えてみます。

if me.Attr1<> me.Attr2 then

me.Attr2 = me.Attr1;

ENDIF;

このスクリプトでは、ステートメント me.Attr2 = me.Attr1 は実行されません。Attr1 の品質が BAD で、BAD 品質値と Good 品質値との比較は定義されません(不可能です)。

推奨されるアプローチは、次の例に示すように最初に Attr1 の品質を検証することです。

if(IsBad(me.Attr1))で終わります。

LogMessage(「Attr1の品質が悪く、その値はAttr2」にコピーされません)。

else

if me.Attr1<> me.Attr2 then

me.AttrA2 = me.Attr1;

ENDIF;

ENDIF;

品質を検証する別の方法は、"==" 演算子を使用することです。

Me.Attr1==TRUEの場合

または、"value" プロパティを簡素化された IF THEN ステートメントに追加することができます。

IfMe.Attr1.value

上記のいずれかのメソッドを使用してデータ品質を検証した場合、スクリプトは正常に実行します。