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

Japan PI Square

December 2017 先月 来月

AMChartを使用したレーダーチャートのサンプルがOSIsoftGithubにございます。

PI-Vision-Custom-Symbols/Community Samples/OSIsoft/amcharts-radar at master · osisoft/PI-Vision-Custom-Symbols · GitHub

こちらのサンプルは1つのアイテムの画面表示時間範囲における値をレーダーチャートで表示するものです。

それに対して複数のアイテムのsnapshot値をレーダーチャートに表示したいケースがあります。

例えばタービンの断面の温度をレーダーチャートで表示したい場合などが該当します。

弊社トレーニングなどでもこの要望はよく聞きました。

そこで今回、上記のサンプルコードを変更し、複数タグ、属性の値を表示できるサンプルを作成しました。

コードはgithubにあります。

https://github.com/kenji0711/PIVisionMultiRadarChart

元々の設定の他、ラベルの非表示も可能となっています(Show Label)。是非お試しください。

現在の処、タグ、属性を追加したら消せませんので、再度最初からやり直す必要があります。ラベルの表示内容の変更も対応していません。

ご注意ください。

本記事は英語版の翻訳をベースとしたものです。

How to Create a Certificate Using Your Enterprise CA for PI Web-based Products

 

PI Web APIを使用するにあたり、SSL証明書が必要となります。(PI Visionもhttpsで使用する場合は必要となります)

デフォルトのインストールでは自己証明書を作成しますが、ユーザーからみると証明書エラーが表示されてしまいます。

クライアントからはクリックしてエラー回避が可能ですが、ブラウザを危険にさらす可能性もあります。

よって日常的にこのように対処するのはあまりいい方法ではありません。

もっともシンプルに解決するためにはドメインにてEnterprise Certificate Authorityを使用し、証明書を作成することです。

ユーザーはグリーンのアイコンが表示され問題なく閲覧できるようになります。

このポストではどのようにドメイン証明書を作成するかを説明します。

PI VisionPI WebAPIのサーバーのことをPI Web Serverと記載します。

PI Web ServerLocal Administrators権限を持つドメインアカウントを用意します。

ドメインのAdministrator権限が必要になる場合があります。

Active Directory Certificate Servicesにて証明書を作成できる権限が必要となります。(ご自身の会社のITチームに確認することとなります)

 

手順

1.PI Web ServerLocal Administrators権限を持つドメインアカウントでログインします

2.スタートをクリック

3.プログラム検索ボックスでmmc.exeと入力し、Enterをクリックします。

4.File > Add/Remove Snap-inをクリックします。

5.リストの中からCertificatesを選択し、Addをクリックします

6.Computer accountをクリックし、次へをクリック

7.Local computerをクリックし、Finishをクリック

8.OKをクリック

9.コンソールツリーからCertificates(Local Computer)をダブルクリックします。

10.Personalを右クリックし、All Tasksを展開し、Request New Certificateをクリックし、Certificate Enrollmentウィザードを開始します

11.次へをクリック

12.次へをクリック

13.Web Serverテンプレートを探します。

もし、以下のスクリーンショットのようにテンプレートが見つからない場合、またはStatusがUnavailableの場合、

キャンセルをクリックし、Appendix 1に行ってください。手順を実行してからStep 10から再度実行します。

14.Web Serverテンプレートを選択します。WarningのMore information is required to enrol for this certificate. Click here to configure settingsのリンクをクリックします。

15.Subject nameの下にあるTypeにてCommon Nameをクリックします

16.Subject nameの下にあるValueにてサーバーのFQDN名を入力します。(FQDNはドメイン名までを含んだサーバー名です。ホスト名.ドメイン名)

17.Alternative nameの下にあるTypeにてDNSをクリックします

18.Alternative nameの下にあるValueにてPI Web ServerのFQDN名を入力します。

19.Alternative nameの下にあるValueにてPI Web Serverのマシン名(ホスト名)を入力します。

20.他の名前も登録したい場合、上記Alternative nameの手順を繰り返します。

21.OKをクリックします

22.Enrollをクリックします

23.Finishをクリックします

24.Personal > Certificates内にある、Certificate TemplateがWeb Serverの新しい証明書をダブルクリックします。

詳細タブにてSubject Alternative Name部分に上記入力した名前がすべて表示されている必要があります。

[Appendix 1]

  1. Certificate Authority Server(通常はDomain Controller)にてDomain AdministratorCA Administratorとしてログインします。
  2. CAコンピューター上でスタートからプログラムの検索ボックスにてcerttmpl.mscと入力し、Enterをクリックします。
  3. Certificate Templates Consoleにて表示されたWeb Server Templateを右クリックし、プロパティを開きます。

4.Securityタブをクリックします。

5.PI Web Serverのコンピューターアカウントをこちらに追加し、Enrollの権限を与えます。

あとはOKをクリックし、元の手順に戻ります。

 

 

[PI Web APIの証明書を変更する]

PI Web API Admin Utilityを起動し、CertificateにてChangeボタンをクリックします。

ドメインが発行しているCertificateを選びます。

 

[SHA1について]

SHA1は2017年2月以降、ChromeにてErrorとなります。

Active Directory Certificate Serviceのインストールおよび構成時に別のものを指定します。

本件はActive Directoryの知識ですが、質問があればコメントにご連絡ください。

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と指定)の記録された値を取得し、それぞれを開始時刻としてイベントフレームを生成します。

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