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

Japan PI Square

17 投稿の作成者:: Jerome Lefebvre 従業員

体重の予測モデルを作成したので、簡単に活用してみたいです。

 

例えば、一か月後の予測体重を表示してみたいなら、下記のようにできます。

一か月後の体重の属性を作成し、タグの参照の代わりに体重の予測値の値を参照します。

その後に、「値の取得方法」に一か月後のデータを取得するために「自動」と「+1mo」を記入しました。

 

 

(あぁ、あまり変わらない。。)

 

また、目標を設定して、いつごろ超えることができるのかが、AF分析で簡単に計算できます。

そのために、FindEqの式を利用します。未来のデータであっても、問題なく計算できます。

(今年以内であれば、それでもいいじゃないか)

 

 

その後に、いつもの通り、通信メールの設定をしたり、PI Visionで表示したりできますが、

このような予測をどういうふうに使ったほうがいいかのアイデアがあれば、下記のコメントに挙げてください。

PIに自分の体重のデータを書き込んだので、今後の予測をしたかったです。

(来月はどうなるだろう)

 

まずは結果を紹介させて頂きます。

PIに一週間の体重のデータをいれました。(緑線)

予測値は青い線で表示されています。

 

AF 2017 R2から提供されたLinRegrの関数を利用しています。この関数を利用すると単純な線形回帰の計算ができます。

今回は、LinRegrの関数を利用し、今年の7月の体重を予測しました。

 

(その調子で、やせるじゃないかよ!)

 

AF 2018から、AF分析の出力タイムスタンプを属性の値に設定できます。

つまり、体重を計るとこの計算が実行され、7月1日の体重の予測値が更新されます!

 

(この調子で、頑張って続けたいです)

PI Connector for UFLの1.3バージョンがリリースされました。

PI Connector for UFL 1.3: Unicode(UTF-8) support, statuses, REST headers

リリースについての質問があれば、下記のコメントにぜひ聞かせてください。

--------

 

次のPI Connector for UFLのバージョンにUnicodeの対応が改善されています。

(処理したいファイルにある日本語の内容を利用できるようになりました。)

 

現在、社内のベータ版を利用し、この機能を紹介したいと思います。

PI Connector for UFLのUnicodeのサポートが改善されたとは言っても、PI Data Archiveのサポートが改善されていないので、

残念ながら、十分利用はできない機能になっています。

 

以前は日本語があるデータファイルを事前処理してから、UFLで処理する必要がありましたが、

1.3のバージョンではこの事前処理が必要なくなりました。

 

 

1.3バージョンをテストをするために、個人の体重計のデータをPIに入れてみました。

体重計からのデータのフォーマットは下記の通りにエクスポートされます。

 

時間:05:02, 木曜日, 05/17/2018
体重  92.8kg  高い
体水分率  50.3%  不足
体脂肪率  29.5%  体重オーバー
骨量  3.1kg  健康
BMI  28.6  太る
内臓脂肪レベル  13  警戒
BMR  1808Kcal  低い
筋肉含有量  62.1kg  優秀

 

(かなり悪い数字しか出ていないのですが、それは無視してください。)

 

データのエクスポートはANSIのフォーマットです。

 

そのために、作成してみたINIファイルのフォーマットもANSIにし、

PI Connector for UFLのデータソースの設定に「Extended ASCII」を設定しました。(この設定は新しい設定になります)

 

一つのデータの行をみると、三つのデータがあります。 

1.体重

2.92.8kg

3.高い

 

「体重」をタグ名としてを利用したいのですが、タグ名はASCII以外利用できないので、

INIファイルでタグ名を変更します。

 

TagName = ["(*)  *"]
if TagName == "体重" then
  TagName = "Weight"
ENDIF

 

こうすると、PI Connector for UFLがUFL.Weightというタグにデータを書き込みます。

 

「高い」のデータも同じようにPI Data Archiveに書き込むのは推奨できないので、

その代わりに、数字に変更します。

State = ["*  *  (*)"]
' 体重の状態
If State == "高い" then
  State_Value = 2
endif
If State == "健康" then
  State_Value = 1
endif
If State == "低い" then
  State_Value = 0
endif

元の日本語がクライアントに表示されるために、列挙セットを作成しました。

 

AFでの結果

San Franciscoで開催されたPI Worldが終了しました。

グローバルで参加して頂いたお客さんの2100名でした。

その中に日本のお客さんとパートナーの60名以上参加し、誠にありがとうございます。

 

今週の発表はすでに公開しています。

発表の資料か、発表のビデオを閲覧ために、OSIsoft.comのページを開き、「About OSIsoft」の下にEvents-Presentationをクリックしてください。

 

 

今年も、関西電力様が参加して頂きました。

是非、ご覧ください!

Digital Transformation of Thermal Power Plants using the PI System

OSIsoftとそのパートナーのビジネスとが成長するにつれて、

OSIsoftのフィールドサービスエンジニアだけがPIの導入を実装するエンジニアになるとはもはや想定できません。

 

そのため、PIの導入のベストプラクティスの資料を公開されました。(英)

管理者向けのガイドに向いていないコツやアイデアを含めています。

これから、PIを導入するパートナーであれば、是非ご参考ください。

PI Server (PI Data Archive) Install FS Technical Standard

 

注:導入の際はこの資料だけではなく、管理者のガイドも必ず参考してください。

PI Data Archive 2017 R2 Installation and Upgrade Guide (日)

 

この記事とこのような資料についてのご質問があれば、本ポストでご聞きください。

テクストファイルの内容を取得し、PIに書き込むためのPI Connector for UFLがあります。

それぞれのデータファイルの種類を処理するためにINIファイルの作成が必要です。

このINIファイルにタグ名の取得の仕方などが含まれています。

 

INIファイルの作成をより簡単に作成するために、PI Connector for UFL v1.2に新しい関数が提供されています。

PI Connector for UFL v1.2は現在ベータとして提供されています。

ベータのバージョンを試したいパートナー様がいましたら、下記の開発のリードのChris Coenのメーセージを読んでください。(英語となります)

Beta program now open for PI Connector for UFL version 1.2

 

この新しい関数はCSV型とJSON型があるファイルを簡単に処理するための関数です。

 

例えば、CSVのファイルのにデータの行は「タイムスタンプ、値、値、値、値、...」のフォーマットであれば

データを取得するINIファイルの章は下記のように作成できます。

 

下記に事例では、利用する新しい機能はForeachの制御構造、CsvGetItemの関数、値の列と複数値を同時に送るためのStoreEventsの関数です。

 

Counter = 0
' 各項目をループします。
' __MESSAGEは現在処理する行という変数です。
FOREACH (CsvGetItem(__MESSAGE, ",")) DO
  ' 初の項目は値ではなく、タイムスタンプで、
  ' TimeStampの変数に保存します
  IF(Counter == 0) THEN
    TimeStamp = __ITEM
  ' 他の項目は値なので、値の列に追加する
  ELSE
    Values = Add(__ITEM)
  ENDIF
 Counter = Counter + 1
ENDFOR
' PI Serverに送ります。
StoreEvents(TagNames, ,Timestamp, Values)


 

この新しい関数を利用すると、CSVファイルの処理するために60行ぐらいのINIファイルでできます。

バージョン1.2以前では項目が多いCSVファイルの場合は500以上の行のINIファイルの作成が必要だったので、大部楽になりました。

PI上にアプリケーションを開発するお客様のためにAF SDKの入門資料を公開しました。

 

是非、ダウンロードしてAF SDKについて勉強してください!

https://techsupport.osisoft.com/Downloads/File/2c278307-bcfc-4f66-b0f4-2d9fc980e397

 

VLEも提供されております。

 

同トレーニングの利用するコードは下記に公開されています。

GitHub - osisoft/AF-SDK-Getting-Started-Guide: Lab Exercises for the PI AF SDK for Begginers

 

 

内容:

  • PI Data Archive や PI AF データベースに接続す る
  • アセットの検索
  • データの読み込みと書き込み
  • AF 階層の構築
  • AF イベントフレームを使用した作業

データを集まった後に、データをもう少し分かるためにいろいろな分析があります。

例えば、複数属性を比べて、相関性があるかどうか、あれば重回帰分析ができるかどうか。

今回、Tibco Spotfireの使い、単純なデモを紹介したいと思います。

 

AFでPLCのデータを管理しています。

 

 

相関性があるかどうかPI Vision 2017のXYplotのシンボルで確かめます。

例えば、センサ1とセンサ8は相関性があまりないですが、センサ2とセンサ8のほうが相関性があると確認しました。

(ρの絶対値は大きいほど相関性が高い)

 

それぞれの属性

すべての属性を相互に比較して相関を理解することができます。

ですが、膨大のデータやアセットがある場合は、分析の専門ツールを使って方がいい可能性があります。

そのため、Spotfireを使いました。

Spotfireで分析したいなら、まずはデータを渡すのは必要です。そのため、Integratorを使いました。PI Viewを作成した後に単純にSpotfireでデータを取得できます。

 

Spotfireにデータを渡した後に分析をしはじめます。

SpotfireのData Relationshipsの機能を使い、簡単に相関性の分析できます。

 

 

Data Relationshipsの機能を使うと下記のテーブルさ作成できます。例えば、センサ8について特に興味があれば、センサ1からセンサ16までに相関性があるかどうかすぐに確認できます。

このテーブルを見るとセンサ3、センサ2、センサ7、センサ4とセンサ5はセンサ8と相関性が高いと分かります。(Rの絶対値は大きいほど相関性が高い)

 

センサ3、センサ2、センサ7、センサ4とセンサ5を使い、センサ8の重回帰分析のモデルを作成できます。

モデルを作成するためにSpotfireのLine Similarityを使います。下記のテーブルを作成できます。

 

つまり、センサ8のモデルは下記のように作成できます。

'センサ8' 123.54 - 3.06*'センサ3' - 0.30*'センサ2' - 0.29*'センサ4' - 0.1*'センサ7' + 1.28*'センサ5'

 

こんなような式があれば、AF分析で簡単に実装できます。

 

PI Visionで確認すると良いモデルを作成できるようです。

機能の動作の確認、社内のデモのために、データの作成が必要なケースがあります。

 

そのために、色々なオプションがあります。

 

などあります。

 

今回はAF Analysisを使い、デモダータを作成したいと思います。

 

事前に準備した一分のデータをテーブルで作成しました。(このデータをExcelで作成しました)

 

このAFテーブルの定義です。

 

このデータを表示できる属性を作成します。データはAFテーブルに保存されているので、Table Lookのデータ参照を作成し、下記の定義を設定します。

他のテーブルデータ参照と違って、Whereの条件を使わずにAFテーブルに時系列データがあると設定します。

この属性のトレンドをPSEで下記のように表示されます。データは2017/01/01 00:00:00から2017/01/01 00:01:00までにだけあるので、この間だけにトレンドが現れます。

同じトレンドをループするために、AF Analysisで下記の分析を設定します。

一行目は現在の秒数を使用し、新しいタイムスタンプを作成します。このタイムスタンプはAFテーブルにあるタイムレンジの間にあります。

二行目では、モデルの属性の値を取得します。

 

この設定を使うと下記のデータを作成できます。

PI Coresight 2016 R2に写真を表示するカスタムシンボルについてのブログポストを作成した後に、PI ProcessBookで同じことできますでしょうかという質問を受けました。

 

取り急ぎですが、

 

ブログポストは下記にあります。

PI Coresight 2016 R2にて時系列の写真を表示するカスタムシンボル 

 

  • PI ProcessBookに写真の表示の仕方
  1. 表示したい写真をフォルダーのパスを取得する

  1. タグに表示したいファイル名を保存する。

  1. PI ProcessBookのディスプレイに値のシンボルと画像のシンボルを追加する。

   

  1. 画像のシンボルをVBAでアクセスするため、「スクリプト記述」を有効する。

 

 

 

 

  1. 値が更新すると、この画像も更新するために、下記の関数をプロジェクトに追加する
Private Sub Value1_DataUpdate()
    Dim path As String
    Dim filename As String
    Dim vrStatus As Variant
    Dim vrDate As Variant

    ' このディスプレイを共有する場合は、画像のフォルダーを共有フォルダーにするとお勧め致します。
    path = "C:\OSISoft\OSIsoft_Projects\GeneratePicturesForCoresightDemo\frames"
    filename = ThisDisplay.Value1.GetValue(vrDate, vrStatus)
    
    ThisDisplay.Graphic1.Load (path + filename)
End Sub

先週終わった「Visualization Virtual Hackathon」というPI Coresightのカスタムシンボルのハッカソンの提出が各チームからされました。

 

世界中のPIユーザー様、パートナー様と弊社の社員が参加しました。

それぞれ提出されたカスタムシンボルに紹介ビデオがある上に、ソースコードも記載されています。

 

カスタムシンボルについてご興味がある方、是非、御覧ください。

Visualization Virtual Hackathon: Submissions

 

僕はJSKのチームの一人として参加致しました。PI CoresightにAFツリーを表示するカスタムシンボルを作成しました。

PI Visualization Hackathon - JKS Staleness Alert Tree

AlarmTree.gif

通常、PI Tagの中に時系列データの値(数字)が入っているのが、一般的ですが、

時系列で、動画や定期間に取っている写真を表示したい場合もあります。

このような写真がある場合に表示する方法を紹介します。

 

例として、1秒毎に写真を取っています。

 

タグにこのファイルのデータを保存するのではなく、ファイル名のみを保存します。

表示するために、PI Coresightのカスタムシンボルの作成できます。

 

 

PI Coresightで表示するため、ファイルを保存されたフォルダーを仮想ディレクトリに追加します。

仮想ディレクトリの設定はパスと接続の認証です。

 

物理パスはネットワークの共有のフォルダーの場合は、IISから、共有フォルダーにアクセスするのは規定のユーザーが必要可能性があります。

 

PI Coresightの事例のSimple Valueの入門のhtmlファイル(template)だけを更新しました。

<img src="ExternalPictures/{{value}}" ng-attr-style="height:100%; width:100%; background: {{Fill || 'rgba(255,255,255,0)'}};">

 

これだけすると、PI Coresightですぐ見れます!(時刻をずらすことで画像が切り替わります)

Loop.gif

 

PI Coresightはデフォルトで5秒更新の点は注意が必要です。過去に戻ればその秒数以下のデータであっても画像を確認できます。

 

コードは下記に記載されています。

GitHub - JeromeLefebvre/PictureCustomSymbol: A simple custom symbol to display pictures

 

上記の例をKenji Hashimoto と作成しました。

 

パフォーマンスのテスト

ファイルサーバーが遠く、ファイルのサイズが大きい場合は、表示の時間が掛かるのは当然だと思いますが、

PI Coresightで表示するとファイルをファイルサーバーからローカルにコピーすると同じぐらい時間を表示すると確認しました。

 

※テストの環境:

マシンが3つ:

  • ファイルサーバー
  • PI ServerとPI Coresight
  • クライアント

ネットワークのスピード: 

     レイテンシ:1ms

ファイルのサイズ: 2.2MB

 

クライアントのマシンで次の写真を表示するための時間:80msから170msまでです。

 

 

ビデオの表示

 

もし、ビデオをPI Coresightに表示したい場合は、別の方法が幾つかあると思いますが、上記の方法で表示したいなら、

ビデオをファイルに分割が必要です。

ビデオをフレームに分割ツールも幾つかがあると思いますが、

私ではPythonのOpenCVのライブラリを使用し、MP4のビデオからJPGのファイルに問題なく分割できました。

OSIsoft Japan サポートチームは日本のお客様向けに便利な記事や設定方法などの資料を多数掲載しております。

 

Japan PI Squareのスペースをフォローして頂くと、新しい投稿があった際には、いち早くお知らせを受け取ることができます。

 

 

 

お知らせを受信する方法

 

Japan PI Squareの上右に「フォローする」メニューがあります。

このメニューを選択していただくと、二つのオプションが現れます。

   

1.「フォロー」にチェックを入れると、PI Squareの更新のお知らせがご登録のEmailに送られます。

2.「受信トレイ」にチェックを入れると、PI Squareの更新のお知らせが、PI Squareの受信トレイに送られます。

 

PI Square受信トレイ

 

通知メールの設定

PI Squareからのお知らせメールが多いと感じる場合、またはメールが受信できていない場合はPI Squareの個人設定を確認してください。

個人設定画面の「受信トレイ通知」メニューで、通知メールの設定を変更できます。

お知らせメールが多い場合は、概要のみ受信する設定に変更することも可能です。

 

 

 

 

 

今後ますますJapan PI Squareはコンテンツを増やしていく予定です。

この機会にぜひJapan PI Squareをフォローしていただき、投稿されるコンテンツをご活用ください!

GitHub - JeromeLefebvre/SilentInstaller: OSIsoftのサイレントインストールの例のページに下記にあるファイルをダウンロードできます。

事前

PI Systemの管理者は、多くのマシンにPIの製品をインストールしなくてはならず、多くの場合、自動インストール(サイレントインストール)を利用すると、効率よく作業できます。 そのサイレントインストールに使用するsilent.iniの書き方は、資料がとても少ないため、今回、その例を作成いたしました。

作業と環境の条件

今回はPI Buffer SubsystemはインストールせずにPISDK201664ビットのみをサイレントインストールにてインストールします。 (注意:平常は32ビットと64ビットの両方をインストールします。短い例を作成のため、64ビットのみのサイレントインストールさせて頂きます。)

環境の条件:

  1. PI-TestPI-Mainという二つPI Data Archiveがあり、規定サーバーはPI-Mainになり、「Production」というPI-Mainの別名があります。
  2. Domainositestです。
  3. PI Data Archiveとの接続は5450の規定ポートを利用します。
  4. PI Buffer Subsystemをインストールしない。
  5. 事前条件の.Net 4.6がすでにインストールされているものとします。

KST_INI_FILEの準備

KST(Known Server Table)はこのマシンに登録されているPI Data Archiveの一覧リストになります。 PI SDKにインストールすると、このリストにいくつかのPI Data Archiveを登録できます。 登録するために、「KST_INI_FILE」の作成が必要です。

KST_INI_FILE

[NUM_SERVERS]
; PI Data Archiveの数
NUM = 2
[PI_SERVER]
; それぞれのPI Data Archiveの名前
1 = PI-Main
2 = PI-Test
; PI Data Archiveのネットワークのパス
[PI_PATH]
1 = PI-Main.ositest.com
2 = PI-Test.ositest.com
; ポートを記入したい場合は、[PI_PORT]を使えますが規定の5450ポートの利用しているので、設定の必要がありません。
; 規定のPI Data Archiveは1です。
[PI_DEFAULT_SERVER]
1 = TRUE
; それぞれのPI Data Archiveのアリアスです。
[PI_ALIAS]
1 = Production

SILENT.INI

新規のインストールではSETUPKITNUMSETUPMODULESSETUPMODULESCOMMANDLINEの四つのモジュールがあります。

SETUPKIT

[SETUPKIT]
; インストールの表示名前
; 下記にあるNAMEとDISPLAYNAMEのパラメーターはインストールのログにでます。
NAME = SetupPISDK
DISPLAYNAME = PI Software Development Kit (PI SDK) 2016 64 bit
; サイレントインストールを実行すると下記の四つの設定はすべてTRUEに設定する
SUPPRESSCOMPLETIONMESSAGE = TRUE
SUPPRESSPROGRESSMESSAGE = TRUE
SUPPRESSHEADERMESSAGE = TRUE
SUPPRESSDIALOGS = TRUE

NUMSETUPMODULES

[NUMSETUPMODULES]
; 下記にモジュールの数
NUM=4

SETUPMODULES

setup.exeは、以下のモジュールを使用し、COMMANDLINEの下にリストされている与えられたパラメータを使用してインストーラーを実行します。

[SETUPMODULES]
; 下記の三つのmsiのファイルは事前条件のアプリケーションになります。
1 = MSRuntimes\MSRuntimes.msi
2 = VS2008Redistrib\MSVC9SP1x64Redistrib
3 = VS2015Redistrib\MSRuntimesVS2015u2_x64
;PI SDKの64ビットのインストーラー
4 = pisdk\PISDK_x64.msi

COMMANDLINE

下記の四つのインストーラーではマシンを再起動しないで済むので、 REBOOT=Suppress」と「/norestart」のパラメーターを使い、無駄な再起動が起きないようにインストールします。

[COMMANDLINE]
; MSRuntimes
1 = ALLUSERS=1 REBOOT=Suppress /qn
; 2008 SP1 Runtimes (64-bit)
2 = /q /norestart
; 2015 update 2 Runtimes (64-bit)
3 = /q /norestart
; PI SDK (64-bit)
; KST_INI_FILEのパラメーターはKSTのファイルのフルパスです。
; INSTALLDIRは%pihome64%のフォルダーになります。
4 = ALLUSERS=1 REBOOT=Suppress /qn INSTALLDIR="C:\Program Files\PIPC" IMPORT_KST=1 KST_INI_FILE="c:\kst.ini"

インストーラーを実行します

kst.iniのファイルをKST_INI_FILEに保存し、 PISDK_2016_が展開されたフォルダーにsilent.iniのファイルを入れ替え後に、下記のコマンドを実行します。

     silent.bat -install

実行後、インストーラーの結果が表示されます。 無事にインストールしたかどうか確認します。

 

他の製品のサイレントインストール

PI SDKに含まれているsilent.iniのファイルにはPI Buffer Subsystemなど、他の製品の設定例もあるので、参照になります。

下記のKB(英)もあります。

  1. KB01034 - How to Silently Install OSIsoft Software
  2. 3044OSI8 - How to perform a silent install of PI ProcessBook
  3. 3045OSI8 - How to perform a silent install of PI DataLink

今年の春から、ご要望の多いテクニカルサポートのKBを日本語に翻訳しております。

KB Articlesのサイトにアクセスすると、日本語の記事の一覧が表示されます。

 

追加で翻訳してほしいKBがあれば、ぜひこのブログにコメントしてください!

お客様の要望が多い場合には、次の翻訳対象として扱わせていただきます。

 

その他、KBの日本語の内容につきましても、何かフィードバックやコメント等ございまいたら、

ぜひ本記事に、コメントしてみてください。