AFの分析式

プロセス生データをAFの分析式でクレンジングしてDAサーバーに出力し、統計解析に使うことを計画しています。

以下のような2タイプのデータ処理を行いたいのですが、最適な分析式をなるべくTag数を増やさないように

構築するのに苦戦しています。良い分析式のアドバイスを頂けませんでしょうか?

 

<やりたいデータ処理その1>

①センサーエラー等によりStringデータが発生するので、まずはStringデータ(=Bad Val)を全てゼロに置換する。

②次に、任意の時刻(t)のデータF(t)について、 tの直前10点と直後10点の計20点のデータのメディアン値Median(t)を計算する。

もし、F(t)がMedian(t)の5倍以上又は1/5以下の場合、F(t)をMedian(t)に置換する。

そうでなければ、そのままF(t)の値とする。

t = *等、直後10点が存在しない場合は計算エラーで可。

 


pastedImage_11.png.png


pastedImage_12.png.png

 

 

<やりたいデータ処理その2>

一定の周期で、有意な値(正常な測定値)と無意味な値(ゼロ値や誤測定値)を繰り返すようなデータに対して、

(イラストの例では20分周期)

①センサーエラー等によりStringデータが発生するので、まずはStringデータ(=Bad Val)を全てゼロに置換する。

②無意味な値となっている期間の任意の時刻(t)のデータF(t)について、 

tの直前直後の周期の有意値全てを使ってmedian値を計算し、F(t)を計算したmedian値に置き換える。

t=*の場合等、tの直後の有意値期間が存在しない場合は、計算エラーで可。

 


pastedImage_18.png.png


pastedImage_20.png.png

 

Parents
  • 追記です。

    同じデータ処理を約200の変数(属性)に適応するのですが、1つ1つの属性に対して分析式を入力して出力を設定するのが煩雑です。効率よく同じ分析式を他の属性に適応する何か良い方法はありませんでしょうか?

  • ご希望の処理は、AFの配列を取り扱う関数を使用することで実現できるかと思います。

    一つ目の処理をこちらでも再現してみましたので、あくまで一例としてご参照ください。


    pastedImage_1.png.png

    最初の式FindTimestampで、現在時刻から10分前まで(これは使用するデータによって変更いただければと思います)で10個前の記録された値のタイムスタンプを取得します。

    2つ目の式RawValuesで、10個前の値のタイムスタンプから現在時刻の方向に、配列として最大21個のデータを取得します。

    3つ目の式Valuesで、11個目のデータ(真ん中のデータ)を取り除きます。

    4つ目の式ValuesRemoveBadで、Badの値を0に置き換えます。

    5つ目の式MedianCalcで、配列に入っているデータの個数が20個の場合は中央値を計算し、そうでなければErrorと返します。

    あとは

    If 'tag1' >= MedianCalc*5 or 'tag1' <= MedianCalc/5 then MedianCalc else 'tag1'

    のような式で5倍以上または5分の1以下なら中央値に置き換え、そうでなければ元データとするように設定します。

     

    この式はバックフィルすることでご希望の通りに処理されますが、

    リアルタイムの計算では常に現在時刻で計算をし、それより後の10個ぶんのデータが存在しないため、Errorとなります。

    バックフィルではなくリアルタイムで処理したい場合は、式内に指定している'*'を少し前の時間に設定し、分析のスケジューリングの詳細オプションにある"出力タイムスタンプ"をその少し前の時間に設定することで対処できます。

    例えば'*'を'*-5m'に設定し、出力タイムスタンプも'*-5m'に設定することで、AFの分析は常に5分前のデータを使って計算し、計算結果を5分前のものとして出力します。

     

    二つ目の処理に関しても同様に配列の関数を使用すれば問題なく行えるかと思います。

    詳細につきましては、PI System Explorerのヘルプトピックや、ユーザーガイドをご参照ください。

    配列の関数に関してご不明な点等ございましたら、ご質問ください。

     

     

    また、複数の変数に対して同じ処理を行い、出力を設定したい場合は、

    テンプレートを使用すると比較的容易に設定が行えるかと思います。

    AFの階層構造などある程度の設計は必要となりますが、それを行えば構成が同じようなデータの処理を一度に設定することができます。

  • ありがとうございます。

    LastValueやRecordeValuesBycount等、一部の関数が私が使用しているPSE内に見つかりません。

    PSEのバージョンが問題なのでしょうか?

  • 配列に関する関数は、PI AF 2018より追加されたものです。

    お使いのPI System ExplorerとPI AF Serverが2018よりも古いバージョンの場合は、

    2018以降にバージョンアップする必要があります。

    その他にも新機能が追加されておりますので、

    バージョンアップをご検討くださればと思います。

  • ありがとうございます。

    アップグレードのために、myOSIのProductsのページからInstall Kitをダウンロードしてアップグレードしてみます。

    アップグレードガイドを見ながら進めようとしているのですが、分からない点を教えて頂けませんか?

    ProductsのAsset Frameworkのところに、「PI Asset-Framework(AF) Client 2018 SP2 Install Kit」というファイルを

    見つけたのですが、このファイルをClient PCとServer マシンの両方にて実行すれば良いのでしょうか?

  • バージョン2018以降、PI Asset Frameworkのサーバー機能はPI Data Archiveとともに「PI Server」のインストールキットに含まれるかたちで提供されています。

    「PI Asset-Framework(AF) Client 2018 SP2 Install Kit」は、AFサーバーにアクセスするためのクライアント機能のみのインストーラーとなりますので、サーバー機能につきましては「PI Server」(現在の最新版は「PI Server 2018 SP2 Installation Kit」となります)を実行ください。

Reply
  • バージョン2018以降、PI Asset Frameworkのサーバー機能はPI Data Archiveとともに「PI Server」のインストールキットに含まれるかたちで提供されています。

    「PI Asset-Framework(AF) Client 2018 SP2 Install Kit」は、AFサーバーにアクセスするためのクライアント機能のみのインストーラーとなりますので、サーバー機能につきましては「PI Server」(現在の最新版は「PI Server 2018 SP2 Installation Kit」となります)を実行ください。

Children