Skip navigation
All People > Lonnie Bowling > Lonnie Bowling's Blog > 2017 > March

Team Members:

Rhys Kirk - TGG

Rob Raesemann - Raesemann Enterprises

Yevgeni Nogin - Aperio

Lonnie Bowling - Independent developer

Initial Brainstorming

Use cases:

Air – Fuel – Heat cycle: combustion engine performance

X-Y Plot Air vs. RPM (how much air is used for each revolution) this will create a performance curve

Plot Fuel vs. RPM (how much fuel is used for each revolution) same as air

Plot air/fuel curves for each truck over time to find outliers

Opportunity: this will show overall truck performance and identify what trucks have issues. Ideally we want a truck to operate along this curve always. This is the overall power performance metric

Effective utilization

Look at or create tuck states, such as stopped, running, loading, idle, etc. Perform a calculation for when the truck to being used but not actually traveling, all time that a truck is not moving it is not be fully utilized. This could be waiting in a line, driver taking a break, etc

Distribution of fuel level

Look at fuel level to identify when a truck is being refueled, capture the tank level before refueling. Show all trucks over time for when they are refueled, we want to see a 25% tank level at all times, anything other than that is an opportunity to save money.

Bar Code a truck

When a truck is scanned, we should show all the daily aggerates for most values.

Event Frames for Real time monitoring

Using the new features of Coresight 2017, a person monitors events for all trucks. These events are acknowledged with a note. The person does a root cause analysis and records what action is taken. For example, this could be “took truck out of service for emergency repairs”


Implementation of ideas


Effective Utilization

We implemented Analysis Services Functions to create Boolean PI tags for each truck indicating if truck is running, idle, loaded, loading, unloading, and in maintenance. Geo-fencing of Lat and Long data indicated if truck is in maintenance depot.

Hours per day in each status are calculated:


30 Day rolling average for each truck was also calculated. Additionally Rollup calculations for all trucks provide a fleet-wide trend for comparing individual trucks against. The fleet-wide trends also provide insight into trends in truck usage. Coresight displays provide initial visualization. These analyses would also be useful in a cross-tab report in Excel.



Event Frames for Real-Time Maintenance Monitoring

The initial concept was to use provided maintenance metrics implemented in Analysis Services to trigger Event Frames for each time that data indicated a problem.

The first attempt to implement a metric was to measure the exhaust gas temperature during high engine load and look at the range of values over a 14 day period. If spread was larger than 20degC then maintenance should be scheduled. If spread is over 50, truck should be stopped and inspected immediately.

We initially implemented equations to try to capture this data, however the range of exhaust temperatures was much larger than the metric would require. It would seem that we needed to average the temperature reading during each event where engine load is greater than 95%.

We implemented Event Frames to capture each time that the engine load was greater than 95%. We then average the exhaust gas readings. Again, the measured range of values was larger than we expected, so the data does not appear to be useful for implementing this metric.


Real time portal based on Angular 2 and D3 with Material Design

Can access on any device from a browser. See a live demo at:

  Show’s summary KPIs for current day:


Dashboard also features a trend control that shows fuel scores, this is an overall indication of truck health and performance.



Each truck can be viewed on a detailed KPI dashboard:


Mapping the location of the trucks

We can detect when the trucks are in maintenance, by extracting the location history.


Revolutions Per Liter (RPL) - metric for Engine Performance

Here we plot the relationship of the fuel inflow in liter/hour vs RPM:

We have also made a dashboard scatter plot to detect anomalies in this RPL metric:

By plotting the mean truck value, we can detect deviations from normality:


Finding Patterns

Integrated with Falkonry Pattern Recognition

Native PI Connector to stream millions of events into Falkonry

Ran an unsupervised model

Added Facts based on known patterns

Ran supervised model revisions


This is a prototype for a stackable trend. Sometimes it is eaiser to see the data when the trends are seperated vs. overlaid. Here are both the native OSIsoft trend and the stackable tend side by side. The goal is to have the same user experience with both trends. (can you tell which is which?)


Adding a second attribute to each trend make's it pretty clear that the stackable trend is on top:


This new trend does not yet have all the formatting and functionally that the cursor had for the native trend, but it is well on it's way. The big difference is is that the stackable trend is getting it's data for the traces using the PI Web API. This allows for some nice enhancements.


Like adding a second trace. Also, you cannot see in the screenshot, but when you drag a trace is shows the values changing on the fly, unlike the native trend that has to make a new request each time you let off the trace. (see the link below for a demo video)


Finally the last feature enhancement is adding more traces.


Future enhancements:

Add support for future data.

Allow tends to be formated, such as color traces.

More refinement to make it look an feel just like a native OSIsoft symbol.


Source code:

GitHub - LonnieBowling/coresight-stack-trend

Demo Video:



Lonnie Bowling