Skip navigation
All Places > All Things PI - Ask, Discuss, Connect > Japan PI Square > Blog > 2018 > July
2018
Jerome Lefebvre

PIとMaximoの連携

Posted by Jerome Lefebvre Employee Jul 23, 2018

状態基準保全のガイドブックが日本語で公開されたので、コンテンツの中身を実現したく本記事を書きました。

 

5章にPI SystemCMMSの連携の構成がいくつか紹介されています。

この記事では、Asset Analyticsを利用し、MaximoというCMMSにメーターのデータを更新する事例を紹介したいと思っています。

 

シナリオ4

残念ながら、Asset AnalyticsからMaximoへの直接データ送信は不可能です。なぜならば、Maximoにウェブ経由でデータを渡すためには、Token認証の接続が必要ですが、AF通信の機能は基本認証、Kerberos認証と匿名認証だけを対応しているからです。そのために、通信のために小さいウェブサーバー(Connector)を開発しました。

 
 

 

下記の事例で、AF上でポンプの稼働時間を計算し、このメーターのデータをMaximoに送信します。

稼働時間のデータのようなメーターデータであれば、一日一回のスケジュールで送れば十分です。

 

Maximo

Maximoの管理画面で、下記のように設備の一つのメーターデータを確認できます。

RUNHOURSというメーターが定義されて、現在、2018年2月3日にこのポンプの稼働時間は8392時間であったと確認できます。

 

この値の更新のために、MaximoRest APIに設備情報、メーターの名前などを送信する必要があります。

そのために、下記のようなリクエストを作る必要があります。

 

 

URLのパラメーターに設備の名前(ASSETNUM)、メーターの名前(METERNAME)などがあると確認できます。

このリクエストに必要な認証の情報もヘッダーにあります。

 

 

現在、AF通信はこの認証方法にまだ対応していませんが、下記のUserVoiceのアイテムがあります。ご興味があれば投票してください。

https://feedback.osisoft.com/forums/555148-pi-server/suggestions/33151276-enable-headers-for-soap-and-rest-web-service-notif

 

AF

ポンプの稼働時間を計算するために、センサーからポンプの流量(Flow Rate)を取得し、Maximoから最後の補修日(Last Maintance)を取得して、PIタグに保存しました。

 

ポンプのセンサーからON/OFFの信号の取得できないですが、流量がわかっているので、問題なくON/OFF信号が計算できます。

 

 

精度が落ちないために上記の計算をイベントトリガーに設定しています。

ON/OFFの信号があるので、稼働時間を簡単に計算できます。

稼働時間の計算が重い計算で、できれば頻繁に走らないほうがよいです。上記では一日一回だけ計算しています。

 

この計算を利用している補修のチームは、補修のスケジュールは毎週一回ぐらいと決めているので、頻繁に新規のデータを送っても、利用しないので、無駄の計算は実行する必要がありません。

■通信

AFの通信のトリガーはイベントフレームが作成されることです。一日毎にすべてのポンプの稼働時間を送るために、デーリーのイベントフレームを作成します。

注意:この方法で膨大のイベントフレームが作成され、その場合は、AFのパフォーマンスが悪化する可能性があります。Maximoに稼働時間を通信した後に、このイベントフレームを問題なく削除することです。イベントフレームの削除のサンプルコードは下記にあります。

 

■通信のトリガーとなるイベントフレーム

イベントフレームの作成のために、下記の定義を利用します。

 

結果のプレビューを確認すると、この分析は一日毎に一つのイベントフレームが作成される。

 

 

WebServiceの設定

このWebServiceはプロクシーのサーバーに稼働時間を通信するために、プロクシーサーバーのホスト名を記入します。プロクシーサーバーがPostリクエストを受けるため、Postも定義します。

 

Webserviceとトリガーとなるイベントフレームがあるので、下記のように通信を定義します。

 

 

Maximoに送りたい値

上記にあったリクエストにASSETNUMNEWREADINGNEWREADINGDATESITEIDのパラメーターをMaximoにリクエストがあります。このパラメーターをポンプのエレメントの属性に定義します。

 

この定義を通信のメッセージに定義します。

 

 

■プロクシーサーバー

上記の設定で、一日にすべてのポンプの稼働時間をプロクシーサーバーに通信します。

このプロクシーサーバーはAFからくる通信を受け、Maximoへのリクエストを作成します。このコードを下記のGitHubのページで確認してください。

https://github.com/JeromeLefebvre/Proxy-Server-for-PI-System-to-Maximo

 

 

■結果

高い精度の稼働時間はMaximo側で一日毎に更新されています。

PI Server 2018がリリースされ、新しい機能が多いですが、すぐに利用してみた機能は下記に公開しました。

PI Server 2018がリリースされました

体重の予測モデル

 

今回は一つのAF SDKの関数を紹介したいと思っています。

 

イベントフレームの機能は非常に便利だと思いますが、一つのAFサーバーで保存できるイベントフレームの数は限れています。

そのために、必要のないイベントフレームを周期で削除することが必要になるケースがあります。

 

イベントフレームを削除のために、PI System Explorer、AFDiagやAF SDKなどいろいろな方法があります。

AF 2018のバージョンからAF SDKからよりいい方法が提供されました。

2018のバージョンからAFEventFrame.DeleteEventFramesの関数があり、イベントフレームのIDのリストを取得すると一括で膨大のイベントフレームの削除は可能です。

IDを取得するために、下記のサンプルコードはAFEventFrameSearchのオブジェクトを利用します。

 

using System;
using System.Linq;
using System.Collections.Generic;
using OSIsoft.AF;
using OSIsoft.AF.EventFrame;
using OSIsoft.AF.Search;


namespace MassEFDelete
{
    class Program
    {
        static void Main(string[] args)
        {
            PISystem af = new PISystems().DefaultPISystem;
            AFDatabase db = af.Databases["Demo_Maximo_Integration"];


            // Retrieve all event frames that match the query, then access their GUID to delete them
            string query = @"Template:'Daily Event Frame' End:<'*-1d'";
            AFEventFrameSearch search = new AFEventFrameSearch(db, "Daily Event Frames", query);
            List<Guid> ids = search.FindObjectIds().ToList();
            
            AFEventFrame.DeleteEventFrames(af, ids);
        }
    }
}

 

このサンプルコードの実行結果です。

 

イベントフレームを検索するためにパフォーマンスのコツを下記の記事にいろいろあります。

AFEventFrameSearch Class

2018年6月27日に、PI Serverの最新版であるPI Server 2018がリリースされました。
PI Serverは、PI Data ArchiveとPI Asset Frameworkの両方の最新バージョンを含んだものとなります。
また、2018年7月16日に、PI Asset Framework 2018のUIを日本語化するパックである、
PI AF MUI 2018 Language Packがリリースされました。

 

PI Server 2018では、主に以下の変更点がございます:

 

インストール関連
1. インストールキットが統合され、PI Server 2018 Install Kit一つとなりました。
これまではPI Data ArchiveとPI Asset Frameworkのインストールキットは別々に提供されておりました。
インストール時にインストールするコンポーネントを選択できるので、
PI Data ArchiveとPI Asset Frameworkを別々のコンピューターにインストールすることも従来通り可能です。


2. 新規インストールする場合、PI Data Archiveの機能のうち、
比較的古い以下のコンポーネントがデフォルトでインストールされなくなり、

インストール時にユーザーが選択してインストールするようになりました。

なお、これらはPI Asset Frameworkで後継機能が存在します。
・PI Alarm Subsystem
・PI Performance Equation Scheduler
・PI Recalculation Subsystem
・PI Batch Subsystem
また、PI Module DatabaseとAFのデータベースをリンクするために使用するPI AF Link Subsystemもデフォルトでインストールされません。
PI Module Databaseに書き込みを行う場合は、PI AF Link Subsystemをインストールする必要があります。

 

3. PI Data Archiveのインストール時に、PI AF Serverが存在しなくてもインストールできるようになりました。
これまではPI AF Serverを先にインストールし、

PI Data Archiveをインストールするコンピューターと正常に通信ができる状態でないとインストールできないようになっておりました。

 

PI Data Archive関連
1. AF SDKを介してCollective構成のPI Data Archiveに接続する場合、
CollectiveメンバーのPI Data Archiveのうちの一つにランダムで接続するようになりました。
これにより、多くのクライアントがPI Data Archiveに接続する際の負荷軽減が期待できます。
これまではCollectiveに接続すると必ずPrimaryのPI Data Archiveに接続していました。
なお、従来通り手動で接続先を変更することも可能です。


2. セキュリティ向上のため、PI Message Subsystemの実行ユーザーがLocal SystemからNetwork Serviceに変更されました。


3. アーカイブファイルのアーカイブシフトをスケジューリングできるようになりました。
これにより、プライマリアーカイブの使用量にかかわらず、定期的に自動でアーカイブシフトを実行させることが可能となります。
アーカイブファイルを期間ごとに分けるような管理を行う場合に役立ちます。
PI Data ArchiveがCollective構成の場合、Primaryの自動アーカイブシフトと同じタイミングでSecondaryのPI Data Archiveでも自動アーカイブシフトが行われます。

タイムゾーンはPrimaryのものが使用されます。

 

PI Asset Framework関連
1. AFデータベースをインポートする際、内部のIDも一緒にインポートできるようになりました。


2. Event Framesによって生成されたイベントフレームを、

テンプレートと時間範囲を指定して一度に削除できるようになりました。
これまではイベントフレームを検索してその検索結果に一致するものを削除するか、
全てのイベントフレームを削除するという方法でした。


3. 属性値の表示桁数を設定できるようになりました。


4. AFのテーブルで線形補間に加えて、バイリニア補間が可能になりました。

テーブルの表にない部分の値が要求された場合に、これまでは線形補間による内挿された値を返すことが可能でしたが、

このバージョンでは加えてバイリニア補間により二次元的な補間が可能になりました。

例えば航空機のX座標とY座標のテーブルを使って、バイリニア補間を行うことで航空機の速度を割り出すことができます。

 

Asset Analytics関連
1. MATLAB Production Serverとの連携が可能になりました。


2. 分析の計算で、配列を出力データ型に指定することができるようになりました。
一度の計算で複数の値を持つような計算が可能となります。
配列のデータ型に使用する関数もいくつか追加されております。


3. イベントフレーム生成の分析で、これまでの開始トリガーの条件式を記述する方法に加えて、
Pulse, Step, Step Continuousの三種類が追加されました。
これにより、従来のPI Batch GeneratorやEvent Frame Generator Interfaceと同じような、

Active Pointを設定しての生成が可能となります。

 

変更点の詳細につきましては、各製品のリリースノートや、下記のリリースアナウンスのページをご参照ください:
https://techsupport.osisoft.com/Troubleshooting/Releases/RL01327
リリースノートは、テクニカルサポートのWebページよりダウンロードが可能です。

 

このほかにも、バグ修正や安定性の向上など様々な改善が図られております。
これを機に、是非PI Serverのバージョンアップをご検討ください。

2018年10月15日(月)、16日(火)の2日間の日程で、虎ノ門ヒルズフォーラムにてOSIsoft Japan IIoT Conferenceを実施いたします。

 

参加受付は10月12日(金) 10:00までを予定しております。まだご登録がお済でない方は、ぜひお早めにお申し込みください。

 

以下のWebサイトより、当日のアジェンダの確認、および、参加申し込みを行っていただけます。皆様のご参加を心よりお待ちしております。

 

開催概要: RS-APAC-Q4-18-10-15-Japan Regional Seminar