ナビゲーションをスキップする
All Places > All Things PI - Ask, Discuss, Connect > Japan PI Square > ブログ > 作成者 mhayakawa

Japan PI Square

9 投稿の作成者:: mhayakawa 従業員

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関数を使用し、文字列の前後の空白文字列を削除してください。

Infomation

PI UFL Interfaceでデータ格納処理を作成するにあたり、文字列を判断する機能が新規に追加されました。

本機能はPI UFL Interface 3.5 以降で使用できます。

 

IsNumber 関数

IsNumber( "String" )

パラメータは文字列で受け取ります。

パラメータ文字列が数値と認識された場合は 1、そうでない場合は 0を返します。

 

使用例

データが数値だった場合はそのまま格納、文字列だった場合はDigitalSet SYSTEMで格納するサンプルを

以下に記述します。

 

IF (IsNumber(Value_String) == 1) THEN StoreInPI(Tag, ,Timestamp,Value_String, , ) ELSE StoreInPI(Tag, ,Timestamp, 0, DigCode(Value_String), , ) ENDIF

PI AFでエレメント構造を作成するにあたり、「参照」という機能があります。

参照を作成するにあたってかならず設定が必要なのが「参照型」です。

概念がわかりにくく、弊社でのパブリックトレーニングやカスタマサポートへのお問い合わせが

多く発生しておりますので、ブログ記事で開設させていただきます。

 

■ コピー と 参照の違い

エレメントのコピーはPSEGUI上で行う場合、Ctrlキーを押しながら、コピー元のエレメントを

選択し、コピー先のエレメント以下にドラッグします。

コピーとの名前の通り、実体の複製が作成されます。

 

参照の作成はPSEGUI上で行う場合は、特にキー操作せずに、

参照元のエレメントを選択し、参照を作成するエレメント以下にドラッグします。

参照は実体は一つのままです。

一つの実体を複数のエレメントの子エレメントとして使用する場合に使用できます。

 

参照が便利な場面は複数の組織で同一の設備を扱う場合です。

 

 

■ 参照型について

参照の種類には4種類あります。以下に参照の強度順に並べます。

1.      合成

2.      親子(プライマリ)

3.      親子(プライマリ以外)

4.      弱い参照

 

 

■ 合成について

合成はもっとも強力な関係性です。

合成関係は一つの親エレメントとしか結ぶ事ができません。

また、合成関係を持つと、他の親エレメントに親子(プライマリ)関係を結ぶ事はできません。

 

親エレメントとまったく同一の存在の表現方法です。

合成関係の親エレメントが削除された場合、自動で子エレメントも削除されます。

 

 

■ 親子について

親子関係(プライマリ)は一つの親エレメントとしか結ぶ事ができません。

また、親子関係(プライマリ)関係を持つと、他の親エレメントに合成関係を結ぶ事はできません。

親子(プライマリ以外)は複数の親エレメントと結ぶ事ができます。

 

標準的な関係を表現する方法です。

親子(プライマリ)関係の親エレメントが削除された場合、他の親子(プライマリ以外)関係の

親エレメントのうち一つが新たに親子(プライマリ)関係になります。

もし、一つも他の親子(プライマリ以外)関係が存在しない場合、自動で子エレメントも削除されます。

 

 

■ 弱い参照

複数の親エレメントと結ぶ事ができます。

 

親エレメント側で子エレメントの生存期間を管理しない場合に使用します。

子エレメントが削除された場合、自動で参照が削除されます。

 

 

■ 具体例について

以下に例を表現します。

 

RelationImage1.png

 

RelationImage2.png

燃料タンク1と燃料送液ポンプは 親子(プライマリ)関係です。

それとは別に参照で燃料タンク2と親子(プライマリ以外)関係を結んでいます。

 

もし、燃料タンク1が撤去されたとしても、燃料送液ポンプは

燃料タンク2につながっているため、自動で削除される事はありません。

 

燃料送液ポンプとモーターはお互いが密接な関係を持つので、

合成で関係を結びます。

燃料送液ポンプが削除されると、自動でモーターも削除されます。

 

また、設備管理部門がポンプやモーターを管理する場合には

弱い参照で関係を結びます。

この場合、設備として燃料送液ポンプやモーターが撤去された場合、

自動でポンプ管理やモーター管理から自動で削除される事となります。

本講座ではPI AFをお客様に活用していただけるよう、簡単なチュートリアル形式でソリューションを紹介していきます。

多くの皆様からのコメントをお待ちしております。

 

- イントロダクション -

PI AF 活用講座 その3で属性に自動でPI Pointを定義する方法を説明しました。

これまでの説明では事前にPI SMTやPI Builderを使用してPI Pointを作成する必要がありましたが、今回の講座ではテンプレートから自動でPI Data ArchiveにPI Pointを生成する方法を説明します。

 

作成の流れとして、属性テンプレートの設定を変更し、PI Data ArchiveにPI Pointが定義される事を確認します。

前提条件は以下の通りとします。

項目設定値
エレメント名原料タンク3
説明03
在庫量 タグ名Analytics_Output03001

今回のStepについては前回の内容が前提条件となります。

 

- Step1 属性テンプレートの設定を変更 -

  1. PSEから前回作成したテンプレートを選択します。
    ライブラリ画面を表示し、[テンプレート] - [エレメントテンプレート]から前回作成したテンプレートを選択します。
    ここでは「原料タンクテンプレート」を選択します。
  2. [属性テンプレート]タブを選択します。
    「在庫量」属性テンプレートを選択します。


  3. <設定>ボタンを押下します。
    [PIポイントデータ参照]ダイアログが表示されます。
  4. [タグ名]テキストボックスの右矢印ボタンを押下し、[名前置換値]の中から「%ElementDescription%」を選択します。
  5. そして入力された値の先頭に「Analytics_Output」、値の後ろに「001」を入力し、設定文字列を「Analytics_Output%ElementDescription%001」と設定します。
  6. [タグ作成]チェックボックスにチェックをつけます。
    [...]ボタンを押下し、[ポイントタイプ]を「Float32」に設定します。

    [タグ作成設定]ダイアログでは自動作成するPI Pointの初期設定値を定義する事ができます。

  7. [読み取り専用]チェックボックスのチェックを外し、<OK>ボタンを押下します。
    チェックインし、変更内容を反映させます。

- Step2 PI Pointの自動作成 -

  1. エレメント画面を表示します。
    前回の講座で作成したエレメントを選択します。
    ここでは「原料タンク3」エレメントを選択します。
  2. 「在庫量」属性に定義されているPI Pointが「Analytics_Output03001」になっている事を確認してください。
    またタグが自動で作成されている事を確認してください。
    ここではPI SMTで確認しています。

- PI AFを使う事のメリット -

属性テンプレートのタグ定義にリテラル文字列を使用する事と加え、PI Pointの自動作成機能を使用すると必要なPI Pointを効率よく作成する事ができます。

また、新規に設備を増やした時にも命名規則通りのPI Point作成となるため、人為的なミスを減らす事ができます。

 

今回の講座の内容はいかがでしたでしょうか?

わかりにくい部分がありましたらコメントをお願いいたします。

多くのみなさまからのコメントをお待ちしております。

本講座ではPI AFをお客様に活用していただけるよう、簡単なチュートリアル形式でソリューションを紹介していきます。

多くの皆様からのコメントをお待ちしております。

 

- イントロダクション -

PI AF 活用講座 その2でPI AFのテンプレートを使用して同様の設備のエレメントを簡単に追加する方法を説明しました。

レベル計のタグ名については直接手入力していましたが、テンプレートの機能をさらに活用する事でエレメントの属性に自動でPI Pointを定義する事ができます。

今回の活用講座ではその方法を説明します。

 

作成の流れとして、属性テンプレートの設定を変更し、実際に自動でPI Pointが定義される事を確認します。

前提条件は以下の通りとします。

項目設定値
レベル計 タグ名PI03001.PV
レベル計 工業単位mm
タンク面積32 m2
配管体積11.0 m3

 

今回のStepについては前回の内容が前提条件となります。

 

- Step1 属性テンプレートの設定を変更 -

  1. PSEから前回作成したテンプレートを選択します。
    ライブラリ画面を表示し、[テンプレート] - [エレメントテンプレート]から前回作成したテンプレートを選択します。
    ここでは「原料タンクテンプレート」を選択します。


  2. [属性テンプレート]タブを選択します。
    「レベル」属性テンプレートを選択します。


  3. <設定>ボタンを押下します。
    [PIポイントデータ参照]ダイアログが表示されます。


  4. [タグ名]テキストボックスの右矢印ボタンを押下し、[名前置換値]の中から「%ElementDescription%」を選択します。


  5. そして入力された値の先頭に「PI」、値の後ろに「001.PV」を入力し、設定文字列を「PI%ElementDescription%001.PV」と設定します。
  6. <OK>ボタンを押下し、変更を反映後、チェックインします。

- Step2 エレメントの作成 -

  1. Step1の操作でPI Pointが自動で反映されるようになった事を確認します。
    エレメント画面を表示します。
    新規にエレメントを作成します。[エレメントテンプレートの選択]ダイアログで先程編集したテンプレートを選択します。
    ここでは「原料タンクテンプレート」となります。



  2. 新規に追加したエレメントの[説明]テキストボックスに「03」を入力します。
  3. [属性]タブをクリックし、「レベル」属性のPI Point定義にすでにPI03001.PVが定義されている事を確認してください。

    「在庫量」属性のタグ登録方法については次回の活用講座で説明します。

  4. その他の属性の値を前提条件通りに設定し、チェックインします。

 

- PI AFを使う事のメリット -

属性テンプレートのタグ定義ではリテラル文字列を使用する事で簡単にPI Pointを定義する事ができます。

タグ名の命名規則が明確な場合はとても強力な機能となります。

今回使用した定義文字列以外にも多くの定義文字列があり、こちらに詳細が載っています。

 

 

今回の講座の内容はいかがでしたでしょうか?

わかりにくい部分がありましたらコメントをお願いいたします。

多くのみなさまからのコメントをお待ちしております。

本講座ではPI AFを活用いただけるよう、簡単なチュートリアル形式でPI AFの機能を説明します。

多くのみなさまからのコメントをお待ちしております。

 

- イントロダクション -

PI AF 活用講座 その1では原材料タンクのエレメントを作成しました。

このような原材料タンクはプラントに複数存在し、同じような性質をもっていると思います。

原材料タンクに在庫量計算の機能を持たせましたが、テンプレートという機能を活用する事で同じ機能をもったタンクのエレメントを簡単に作成する事ができます。

 

流れとしては現在のエレメントをテンプレートに変換し、そのテンプレートをもとに新規にタンクを作成します。

追加するタンクの前提条件は以下の通りです。

項目設定値
エレメント名原料タンク2
レベル計 タグ名PI02001.PV
レベル計 工業単位mm
タンク面積

28 m2

配管容量9.6 m3
出力タグ名Analytics_Output02001

 

今回のStepについては前回の内容が前提条件となります。

 

- Step1 エレメントのテンプレート変換 -

  1. PSEから前回作成したエレメントを選択します。
    ここでは「原料タンク1」を選択しています。
  2. 右クリックメニューから[変換]-[テンプレートに変換]を選択します。
  3. [属性をテンプレートに変換]ダイアログではそのまま<OK>ボタンを押下してください。


    この機能は属性へPI Pointを自動登録する機能になります。
    今後の講座で詳細を説明いたします。

- Step2 テンプレートの確認 -

  1. Step1の操作でテンプレートが作成されました。その内容を確認します。
    ライブラリ画面を表示します。
  2. 「エレメントテンプレート」以下にStep1で作成したエレメントが存在する事を確認してください。
    ここでは「原材料タンクテンプレート」として登録されています。
    [属性テンプレート]タブも選択し、属性も設定されている事を確認してください。

- Step3 テンプレートを利用したエレメントの作成 -

  1. またエレメント画面に戻ります。
    新規にエレメントを作成します。
    [エレメントテンプレートの選択]ダイアログにて追加されたテンプレートを選択します。
    ここでは「原料タンクテンプレート」となります。
  2. 「レベル」属性にPI Point PI02001.PV、「在庫量」属性にPI Point Analytics_Output02001を設定します。
    PI Point Analytics_Output02001については今回は手動で作成しておいてください。
    テンプレートからの自動作成については次回の講座で説明します。

    「配管容量」属性に9.6m3、「面積」属性に28m2を設定します。
    チェックインして新規に登録したエレメントで在庫量計算が動作している事を確認してください。


- PI AFを使う事のメリット -

PI AFではエレメントを増やすことで視覚的にデータにアクセスできるようになります。

そのためにもエレメントを簡単に登録する事が重要となりますので、簡単にエレメントが追加できるテンプレートを活用していただく事がPI AFの有効活用につながります。

 

今回の講座の内容はいかがでしたでしょうか?

わかりにくい部分がありましたらコメントをお願いいたします。

多くのみなさまからのコメントをお待ちしております。

本講座ではPI AFを活用いただけるよう、簡単なチュートリアル形式でPI AFの機能を説明します。

多くのみなさまからのコメントをお待ちしております。

 

- イントロダクション -

一般的にタンクの在庫量計算はレベル計の値に体積計算する事で求めます。

従来のPI SystemでもPEやPI ACEを使用して計算できましたが、PI AFでの計算方法について説明いたします。

 

流れとしては属性を作成し、計算式を追加します。

前提条件は以下の通りです。

項目設定値
レベル計 タグ名PI01001.PV
レベル計 工業単位mm
タンク面積

36 m2

配管容量12.5 m3
出力タグ名Analytics_Output01001

 

- Step1 属性の追加 -

  1. まずPSE(PI System Explorer)を起動します。データベースの新規作成または既存のデータベースを選択してください。
    ここでは「AF Japan Sample」データベースを選択しています。
  2. エレメント画面を表示し、必要なエレメント階層を構築します。
    ここでは「東京工場」-「原材料プラント」-「原料タンク1」としています。
  3. [属性]タブを選択し、属性を表示します。
    [新規属性]を選択し、属性を追加、名前を「レベル」、測定単位を「meter」に設定します。

    測定単位に直接「m」を入力すると簡単に入力できます。
  4. 「レベル」属性にPI Pointを定義します。
    <設定>ボタンを押下します。
    タグ名に「PI01001.PV」、測定単位に「mm」を選択し、<OK>ボタンを押下します。

    登録後、表示単位が自動変換される事を確認してください。
  5. 「面積」属性、「配管容量」属性も以下の表をもとに設定します。
    設定項目「面積」属性「配管容量」
    名前面積配管容量
    測定単位m2m3
    3612.5
  6. チェックインします。

 

- Step2 Analyticsによる演算の追加 -

  1. [分析]タブを選択します。
    [分析の新規作成]を選択します。
  2. [名称]に「タンク在庫量計算」を設定します。
    [式]に以下の計算式を入力します。
    「'レベル' * '面積' + '配管容量'」
  3. <評価>ボタンを押下して計算結果が表示される事を確認します。
  4. [マップ]をクリックします。
    [新規属性]をクリックします。
  5. [出力履歴の保存]を「はい」、[名前]を「Analytics_Output01001」に設定し、<OK>ボタンを押下します。
    チェックインします。
  6. [属性]タブを選択し、「在庫量」属性を選択します。
    [測定単位]を「m3」に選択し、データ参照の設定を「PI Point」、参照タグ名を「\\PI DataArchive名\Analytics_Output01001;pointtype=Float64」に設定し、チェックインします。
    「在庫量」属性を右クリックして[PI Pointの作成・更新]を選択します。

    PSEからPI DataArchiveに対して自動でPI Pointを作成する事ができます。
  7. 「レベル」属性のタグの値が変化すると「在庫量」属性の値が変わり、定義されたタグの値が変化する事を確認してください。

- PI AFを使う事のメリット -

従来のPE等を使用した場合、タンク面積や配管容量は演算式内に埋め込む必要があり、メンテナンスしにくいという問題がありました。

メンテナンスしやすいようにPI Point等を使用するとその分余計なPI Pointを使用する事になりますが、PI AFでは属性を使用する事で余計なPI Pointを使用しません。

計算に必要なパラメータが多ければ多いほどPI AFで計算するメリットが強くなります。

 

 

今回の講座の内容はいかがでしたでしょうか?

わかりにくい部分がありましたらコメントをお願いいたします。

多くのみなさまからのコメントをお待ちしております。