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

Japan PI Square

4 投稿の作成者:: mtamane 従業員

PI AFのイベントフレームは、AF分析のイベントフレーム生成や、

PI Event Frame Generator Interfaceなどを使用して生成できます。

イベントフレームの作成方法は以下の記事に簡単な紹介がございます:

https://techsupport.osisoft.com/Troubleshooting/KB/KB01197/

 

 

現時点では、各イベントフレームの分析やActive Pointによる生成は、イベントフレームを重複して生成することができません。

例として、ある開始トリガーと終了トリガーを持つイベントフレーム生成の分析が、

開始トリガーの条件が満たされたことにより開いている状態で、

再度開始トリガーの条件が満たされても、

既存のイベントフレームが終了しない限り、二つ目のイベントフレームが生成されることはありません。

これは子イベントフレームにおいても同様です。

 

 

開始トリガーの条件が満たされるたびに、

既存のイベントフレームを閉じることなく、

別のイベントフレームを開始したいこともあると思います。

その場合は、AFSDKを使用してイベントフレームを作成する方法があります。

以下のスクリプトは、今日の午前0時から現在時刻までの範囲を持つイベントフレームを一つ生成し、

その時間範囲内で、あるポイントの値が変動するたびにその下に子イベントフレームを生成するというサンプルです。

 

using OSIsoft.AF;
using OSIsoft.AF.Asset;
using OSIsoft.AF.EventFrame;
using OSIsoft.AF.Time;

            // Get the Database and the EF Template
            PISystems myPISystems = new PISystems();
            PISystem myPISystem = myPISystems["AFSERVERNAME"];
            myPISystem.Connect();
            AFDatabase myDB = myPISystem.Databases["AFDATABASENAME"];
            // Set the Event Frame Template and the Primary Referenced Element
            AFElementTemplate myTemplate = myDB.ElementTemplates["EFTEMPLATENAME"];
            AFElement myElement = myDB.Elements["ELEMENTNAME"];
            // Create a parent Event Frame starting from today            
            AFEventFrame myEventFrame = new AFEventFrame(myDB,"TestEF_"+DateTime.Today);
            myEventFrame.SetStartTime(DateTime.Today);
            myEventFrame.PrimaryReferencedElement = myElement;
            // Create child Event Frames
            AFAttribute myAttribute = myElement.Attributes["ATTRIBUTENAME"];
            AFValues myAFValues = myAttribute.GetValues(new AFTimeRange(DateTime.Today,DateTime.Now),100,null);
            
            foreach (AFValue V in myAFValues)
            {
                    AFEventFrame myChildEventFrame = new AFEventFrame(myDB, "ChildEF_" + V.Timestamp, myTemplate);
                    myChildEventFrame.SetStartTime(V.Timestamp);
                    myChildEventFrame.PrimaryReferencedElement = myElement;
                    myEventFrame.EventFrames.Add(myChildEventFrame);
            }
            // Close Event Frames and check in
            myEventFrame.SetEndTime(DateTime.Now);
            foreach (AFEventFrame E in myEventFrame.EventFrames)
            {
                E.SetEndTime(DateTime.Now);
            }
            myDB.CheckIn();

 

例として、以下の値を持つPIポイントをActive Pointとして使用します。

このPIポイントをエレメントの属性に割り当て、上記の"ATTRIBUTENAME"に指定します。

次の行で指定した時間範囲で、その属性から最大n個(上記では100と指定)の記録された値を取得し、それぞれを開始時刻としてイベントフレームを生成します。

結果はこのようになります。

OSIsoftのインターフェイスには、バッファリング機能が備わっております。

この機能は、データソースから収集したデータを何らかの原因でPI Data Archiveに送れなくなった場合、

インターフェイスが一時的にデータを格納し、PI Data Archiveとの接続の回復後に格納したデータを送ることで、

データ欠損を防ぐ仕組みです。

 

あらかじめバッファリングを設定しておくと、

ネットワークの問題が発生した場合はもちろん、

マシンのメンテナンスやハードウェア・ソフトウェア更新などでPI Data Archiveを止めなくてはならない場合でも、

絶え間なく収集されるデータを途切れさせることなく復旧・更新ができます。

 

OSIsoftは、二種類のバッファリング機能を提供しております。

・API Buffer Server

・PI Buffer Subsystem

 

二つの機能の相違点の詳細につきましては、KB00042をご参照ください。(英語)

基本的には性能の高いPI Buffer Subssytemを使用することをお勧めいたします。

 

今回は、バージョン4.3以降のPI Buffer Subsystemの設定方法の手順をご紹介いたします。

 

事前準備

・インターフェイスのインストールされたマシンに、PI Buffer Subsystemもインストールされていることをご確認ください。

・あらかじめインターフェイスのサービスを作成し、実際にデータを収集できるか動作確認を行っておくことをお勧めいたします。

サービス作成の手順につきましては、この記事をご参照ください。

 

手順

 

  1. スタート > PI System > PI Interface Configuration Utilityを開く
  2. Tools > Bufferingをクリックすると、『PI Buffer Subsystemがこのシステム上で構成されていません。構成しますか?』というメッセージが表示されるので、はいをクリックする


(既にPI Buffer Subsystemの設定ができている場合は、構成されたBuffering Managerのウィンドウが開きます。この場合は、設定を行う必要はありません)

 

  3. 開かれるBuffering Managerのウィンドウにて、Continue with configurationをクリックする

 

  4. 既にインターフェイスのサービスが作成されている場合は、Detected PI Interfacesにサービスの一覧が表示されるので、Bufferのチェックボックスにチェックを入れてNextをクリックする


  5. PI Data Archiveにアクセスするための権限を設定する画面にて、権限を選ぶ


この画面では、PI Buffer Subsystemがどの権限を持ってPI Data Archiveに書き込みを行うかを設定します。

インターフェイスのサービスが書き込みを行う権限と同じ権限で問題ありません。

画面では、管理者権限であるpiadminを使用しています。この権限を使用する場合、強すぎる権限を与えることは推奨されませんというメッセージが表示されます。

 

  6. バッファリングデータの保存先を設定し、Nextをクリックする

一時的にデータを蓄積する保存先を設定します。

デフォルトではProgramData\OSIsoft\Bufferingとなります。

 

  7. 確認画面で、Connected successfullyと表示されたら、Exit new installation wizardをクリックする


 

これで、PI Buffer Subsystemが構成されました。

 

その後、PI Buffer Subsystemが有効になっていない場合は、以下のメッセージが表示されますので、はいをクリックします。


 

ICUのインターフェイスのGeneralに移動すると、Buffering Statusという欄が追加されています。

上記の手順を行っても追加されない場合は、ICUを一度閉じてもう一度開くことをお試しください。

 

Buffering StatusがOffになっている場合は、EnableボタンをクリックしてOnにし、インターフェイスを起動すると、バッファリングが有効な状態となります。

Enableボタンをクリックした際、手順5と同じ画面が再び表示されることがあります。

その場合は、再び手順に従い構成を行ってください。

何度構成を行っても手順5と同じ画面が表示される場合、ICUを一度閉じてもう一度開くことをお試しください。

 

Buffering StatusがOnになっていれば、バッファリングが有効な状態です。

インターフェイスを起動すると、PI Buffer Subsystemを介してデータがPI Data Archiveに送信されるようになり、PI Data Archiveとインターフェイス間の通信が途絶えても、データが蓄積されるようになります。

バッファリングの状態は、ICUのTools > Bufferingをクリックして開く、Buffering Managerで確認できます。


インターフェイスがPI Data Archiveと通信できなくなると、Buffering Managerの緑色のチェックマークが黄色の警告マークに変化し、キュー内のイベント数が増加していきます。


再び接続が回復すると、キュー内のイベント数が減少し、蓄積されたデータがPI Data Archiveに送信されます。

 

バッファリングが有効になっているかどうかを確認する簡単な方法として、PIPC.logを見る方法もあります。

インターフェイスを起動するたびに、PIPC.logに起動したインターフェイスの名前とバッファリングの有無が記録されます。

PIPC.logにBuffered[1]と記録されていれば、バッファリングが有効であるということになります。


DCSやPLCから、あるいはマシンのPerformance Counterなど、対応するデータを収集し、PI Data Archiveに送信するインターフェイスは、基本的にWindows サービスとして登録することで動作します。

登録を行う方法は、大きく分けて三つ存在します。

 

1. PI Interface Configuration Utility (PI ICU)を使用する

2. コマンド プロンプト上で-install コマンドを使用する (テキストエディタ等でbatファイルの編集が必要です)

3. コマンド プロンプト上でSC コマンドを使用する (テキストエディタ等でbatファイルの編集が必要です)

 

OSIsoftとしては、GUI上で比較的容易に操作が行えること、PIサーバー側にインターフェイスの情報が登録されることなどから、

特に理由がない限りは1のPI ICUを使用する方法をお勧めしております。

今回はこのPI ICUを使用する方法をご紹介いたします。

 

事前準備

・インターフェイスのプログラムのインストールが正しく行われていることをご確認ください。

・対象のデータソースの機器とインターフェイスマシン間の通信が行えるかをご確認ください。

・インターフェイスマシンとPIサーバーマシン間の通信が行えるかをご確認ください。

・PIサーバーマシン上で、インターフェイスマシンにPI TrustやPI Mappings等のアクセス認証がされていることをご確認ください。

 

手順

今回は例として、PI Performance monitor インターフェイスのサービス登録を行います。

 

  1. PIサーバーのマシンにて、 スタート > PI System > PI Interface Configuration Utilityを開く
  2. メニューから、New Windows Interface Instance from BAT File...を選択する




  3. PIPC\Interfaces\PIPefMonにあるPIPerfMon.bat_newファイルを開く

(ほとんどのインターフェイスは、PIPC\Interfaces\上にあるフォルダ内にbatファイルが存在します。そのファイルを開くことで、新しいサービスを作成できます)


  4. Select the host PI Data server/collectiveの欄で、対象のPIサーバーの名前を選ぶ

(AboutPI-SDKで登録されているサーバーがここで表示されます。一覧に対象のサーバー名が存在しない場合は、Add Serverボタンを押して追加してください)


  5. Serviceに移動し、Create/ Removeの欄でCreateボタンを押す

(これでWindowsのサービスが作成されます)


 

  6. 以下のメッセージが出現するので、はいを押し、開かれる二つのメモ帳のファイルpisrvsitestart.batにnet start サービス名 、pisrvsitestop.batにnet stop サービス名とそれぞれ記入して保存する

(これにより、マシンの起動時や終了時に連動してインターフェイスも起動・停止するようになります)



サービス名は手順5でService nameの欄に書かれた名前を記入してください。

 

  7. Windowsのサービス一覧を開き、追加されたPI Performance Monitor インターフェイスのサービスを右クリック > プロパティを選択し、ログオンのアカウントをローカル システム アカウントに変更する

(PI Performance Monitor インターフェイスにおいて、Performance Counterの情報を取得するにはローカル システム アカウントに変更する必要があります。ほかのインターフェイスでも、多くの場合は対象のデータソースにアクセスが可能なアカウントでサービスを起動する必要があります)

 

  8. サービスを起動する

 

これで、インターフェイスのサービスが作成され、サービスが起動します。

この手順とは別に、多くのインターフェイスでは固有の設定が必要となる場合があります。

例えばPI Interface for OPC DAでは、接続先のOPCサーバーの名前などを指定する必要があります。

ICUのGeneralの下にあるインターフェイスの固有設定に移動することで設定ができます。


 

また、動作確認でサービスを起動する際には、PI message logとPIPC logを表示しておくことをお勧めいたします。

何らかの問題が発生してデータが収集できない場合、その原因がログに表示されますので、その情報をもとにトラブルシューティングを行ってください。

ICUで以下の二つのボタンを押すと、PI message logとPIPC logの二つのログをコマンド プロンプト上に表示することができます。


 

 

以下のKBも併せてご参照ください。(英語)

https://techsupport.osisoft.com/Troubleshooting/KB/KB00324

https://techsupport.osisoft.com/Troubleshooting/KB/KB00470

OSIsoftは2016年9月22日に、PI Connector for OPC UA 1.0.0.46を正式リリースいたしました。
PI ConnectorはOSIsoftの最新技術で、PI Interfaceと同様にセンサーやコントロールシステムなどからデータを収集しますが、
最小限の設定で、より簡単かつ直感的に、特定のデバイスプロトコルからデータ収集することができ、
なおかつ自動でPIポイントやAsset Frameworkモデルを作成してくれます。

 

PI Connector for OPC UAはOPC UA (OLE for Process Control Unified Architecture) サーバーから、
PI Data ArchiveやAFサーバーに関連する時系列データをコピーします。
OPC UAの静的変数はPI AFのエレメントと属性に紐づけられ、動的変数はPIポイントに変換されます。
使用を開始する前に、ユーザーはOPC UAのアドレス領域を、csv形式の型定義ファイルとして確認することができます。
この定義ファイルを編集してConnectorにアップロードすることで、
PI Systemに作成されるOPC UAのオブジェクトを取捨選択することができます。

 

OPC UAのアドレス領域の情報を元に、AFテンプレート、エレメント、属性、そしてPIポイントが自動で作成されます。
動的変数からリアルタイムのデータが、サブスクリプションによって読み込まれます。
バージョン1.0.0.46のConnectorでは、OPC UAのDA(Data Access)およびHA(Historical Access)の機能からの読み込みをサポートしています。

 

この記事では、PI Connector for OPC UAのインストールから起動までの手順の一例をご紹介いたします。

 

まずはPI Connector for OPC UAのインストーラーを起動します。
インストーラーはOSIsoftのテクニカルサポートのWebサイトより入手できます。

インストーラーを起動し、PI Connector for OPC UAのセットアップ画面に入ると、

まずPI Connector for OPC UAの管理のためのTCPポート番号の指定画面が表示されます。

 

PI Connector for OPC UAの管理画面は、Webブラウザーを使用してアクセスすることなります。

この管理サービスは、指定したTCPポートにWebサービスとしてインストールされます。

別のPCからPI Connector for OPC UAのインストールされたマシンにアクセスして管理を行う際には、

この画面で指定したTCPポートがファイアウォールにブロックされていない必要があります。

指定したポートが使用されていないことを確認し、Check Availabilityボタンを押すと、

"Port is available, click Next to continue."

というメッセージが表示され、次に進むことができます。

 

次に、PI Connector for OPC UAのWindowsサービスを起動するアカウントの指定画面に入ります。

ここでは、OPC UAサーバーにアクセスできる権限を持ったドメイン アカウントまたはローカル アカウントを指定します。

ここで、マシンの管理者アカウントなど、必要以上のアクセス権限を持つアカウントを指定した場合、以下のメッセージが表示されます。

管理者アカウントも使用は可能ですが、セキュリティ上の観点から、
OSIsoftとしてはOPC UAサーバーにアクセスできる最低限のアクセス権限を持ったアカウントを使用することを推奨しております。
有効なアカウントを指定して、Validateボタンを押すと、次に進めるようになります。

 

最後に、PI Connector for OPC UAがデータをやり取りするうえでのバッファリング用ファイルの保存場所の設定を行います。
デフォルトでは、C:\ProgramData\...\Tauというディレクトリに保存されます。
読み込みを行うデータの数によって、このファイルの容量はかなり大きくなる可能性があります。
Cドライブではなく別の場所に保存したい場合は、Browseボタンを押して場所を指定します。

これらの設定が終わったら、Installボタンを押してインストールを開始します。

インストールに成功すると、PI Connector for OPC UAの管理画面にアクセスするためのユーザーの設定画面が表示されます。

そのマシンのローカルに"PI Connector Administrators"というグループが作成され、

そのグループに所属しているアカウントが管理画面にアクセスすることができます。

"PI Connector Administrators"のグループにアカウントを追加します。

この設定は、Windowsの管理ツール  > コンピュータの管理  > ローカル ユーザーとグループ > グループでも追加・変更できます。

インストール時の設定をすべて終えると、

スタート > すべてのプログラム > PI Systemの欄に、"PI Connector for OPC UA Administration"という項目が追加されています。

これを選択すると、Webブラウザーが開き、PI Connector for OPC UAの管理画面にアクセスできます。

ページが表示できない場合は、Windowsのサービスの、

"PI Connector for OPC UA"

が実行中になっていることをご確認ください。

 

この管理画面では、以下の三つを設定する必要があります。
1. データソースの設定、すなわち接続するOPC UAサーバーの接続設定
2. PI Data Archiveサーバーの接続設定
3. PI AFサーバーの接続設定

 

まずは 1. のデータソースの設定を行います。
管理画面の左のメニューにある"Data Source List"をクリックし、
Data source nameの欄に新しく名前を付け、 "Add and configure"をクリックします。

 

データソースは、以下の手順で設定します。
1. Discovery or Server Endpoint URLに、対象のOPC UAサーバーのURLとポート番号を指定し、Discover Available Endpointsをクリックする
2. Please refresh the page to see the resultsと表示されたらWebページを更新する
3. Discovered Endpointsのドロップダウンリストから、接続可能なEndpointを選択する
4. 必要なら、ユーザー名やパスワードを入力する
5. Export available Type Definitionsをクリックして、型定義ファイルを取得する
6. 必要なら、型定義ファイルを編集する
7. 参照ボタンを押して、型定義ファイルをアップロードする
8. Saveボタンを押して設定を保存する

 

型定義ファイルの中には、三つの項目が存在します。
Select ( x ) ... xが入っている行のテンプレートをPI Systemに追加します。xを外すとそのテンプレートはPI Systemに生成されません。
Template name ... PI System上に生成されるテンプレートの名前を決定します。名前は自由につけることができますが、***MissingName***になっている場合は生成されません。

(OPC UAサーバー側で名前の付けられていないオブジェクトは***MissingName***となって型定義ファイルに記述されます)
Attribute name ... OPC UAサーバーが持つ属性の情報が表示されます。この部分を変更しないようにご注意ください。

型定義ファイルの情報をもとに、テンプレートの名前を変更し、
Select ( x )で収集するデータのテンプレートを取捨選択することができます。
一度PI Connectorを起動してAF上にテンプレートが作成された後は、Template nameを変更しないようにご注意ください。

 

データソースの設定が完了したら、次はデータを蓄積するPI Data ArchiveサーバーとPI AFサーバーの接続設定を行います。

管理画面の左メニューの"Server List"をクリックすると、それぞれのサーバーの設定画面に移行します。


ここでは、各サーバーの名前と、そのホスト名またはIPアドレスを入力します。
名前はPI Connector側で管理するためのものであり、自由につけることができますが、
ホスト名またはIPアドレスには、接続先のPI Data ArchiveサーバーおよびPI AFサーバーが正しく入力されている必要があります。
また、PI Connector for OPC UAのインストールされているマシンが、接続先のPI Data ArchiveサーバーおよびPI AFサーバーに対して読み書きのアクセス権限があることをご確認ください。
また、PI AFサーバーの設定には、追加でPI Asset Databaseの項目を指定する必要があります。
これは、OPC UAサーバーから取得するテンプレートを、PI AFサーバーのどのデータベースに生成するかを指定します。
事前にPI System Explorerを使用して、PI AFサーバー上にデータベースを作成しておきましょう。

 

Root PI Asset Pathを指定しない場合は、データベースのルート(最初の階層)にエレメントが生成されます。
指定した場合は、その指定したエレメントの下に生成されます。

 

これですべての準備が整いました。
管理画面の左メニューの"Overview"から、Start connectorをクリックして、PI Connectorを起動しましょう。

設定に問題がなければ、管理画面は以下のような表示になり、
PI AFサーバー上にはエレメントが作成され、
PI Data Archive上に作成されたPIポイントにデータが蓄積されていきます。