Skip navigation
All Places > All Things PI - Ask, Discuss, Connect > Japan PI Square > Blog > 2017 > October > 27

PI OPC DA InterfaceでHA構成を組んだ場合、Device Status = 70のログが出力され、頻繁にFail Overが発生する場合があります。

本来であればOPCサーバーとPI OPC DA Interface間で問題点を抽出すべきですが、なかなか原因が究明できない事もあります。

その場合の対応策を記述します。

 

対応可能バージョン

PI OPC DA Interface 2.6.15.3 以降

Read-Only、Read-Write共に対応可能

 

対応策

Device Status = 70の詳細確認

発生しているインスタンスに対してHealth Tagを追加します。

追加するHealth Tagは「Device Status」です。

Device Statusを収集するとDevice Status 70の詳細な内容を取得する事ができます。

 

それぞれの現象の詳細は以下の通りです。

https://livelibrary.osisoft.com/LiveLibrary/web/pub.xql?c=t&action=home&pub=int-opc-v6&lang=en#addHistory=true&filename=GUID-BED9E4B9-09AD-42F3-AEA1-AFED10855F3A.xml&docid=GUID-7460893F-398B-4FEA-898A-400CF49E93C2&inner_id=&tid=&query=&scope=&resource=&toc=false&eventType=lcContent.loadDocGUID-7460893F-398B-4FEA-898A-400CF49E93C2

 

 

/ISDSパラメータ

OPC DA Interfaceの起動パラメータに/ISDSパラメータを追加します。

Device Status = 70の原因についてFail Over条件から除外します。

パラメータの詳細は以下をご確認ください。

https://livelibrary.osisoft.com/LiveLibrary/web/pub.xql?c=t&action=home&pub=int-opc-v6&lang=en#addHistory=true&filename=GUID-27CBB4CD-0031-4D77-885B-AC325E33C924.xml&docid=GUID-16E29D13-D619-4CA8-B499-F2F80C3CD3FE&inner_id=&tid=&query=&scope=&resource=&toc=false&eventType=lcContent.loadDocGUID-16E29D13-D619-4CA8-B499-F2F80C3CD3FE

 

/ISDS = 127 を設定するとすべての原因を除外します。

Point TypeがDigitalのPI Pointに対してのデータ収集動作がUniIntのバージョンによって異なります。

ご注意ください。

 

UniInt 4.5 以前

収集文字列の右側の空白文字列を自動でTrimし、DigitalSetの文字列と比較して格納します。

 

サンプル

入力文字列:"Bad_____" → 収集文字列:"Bad"

(_でスペースを表現しています)

 

 

UniInt 4.6以降

収集文字列に対して自動ではTrimしません。

そのままの文字列で比較して格納します。

 

サンプル

入力文字列:"Bad_____" → 収集文字列:"Bad_____"

(_でスペースを表現しています)

 

UniInt 4.6以降で入力文字列をTrimする方法

ICUのUniInt画面で「Trim Digital State Names」チェックを付けてください。

左右の空白文字列をTrimします。

※説明文は左側だけTrimするように記述されていますが、左右Trimします。

https://techsupport.osisoft.com/Troubleshooting/Known-Issues/120958

 

 

コマンドラインパラメータは /DigStateTrimLeft です。

PI UFL InterfaceのDigCode関数はバージョンによって出力結果が異なります。

ご利用時にはPI UFL Interfaceのバージョンをご確認ください。

 

DigCode関数について

DigCode関数はパラメータに文字列を受け取り、その文字列に対応した SYSTEM DigitalSetの値を返します。

 

サンプル

' -246が返ります

Value_Number = DigCode("I/O Timeout")

 

 

バージョン間の違い

Ver 3.3.12.13まで

SYSTEM DigitalSet 0 ~ 3000:該当する数値が返ります。

SYSTEM DigitalSet 3001以降:-255 (Bad Input) が返ります。

 

Ver 3.3.21以降

SYSTEM DigitalSet 0 ~ 350:該当する数値が返ります。

SYSTEM DigitalSet 351以降:-255 (Bad Input) が返ります。

 

 

文字列比較の特性

DigCode関数のパラメータの文字列はSYSTEM DigitalSetの文字列と完全に一致する必要があります。

大文字・小文字の違いも判断されるので気を付けてください。

また、必要に応じてTRIM関数を使用し、文字列の前後の空白文字列を削除してください。