One possibility is that the difference stems in archive vs. snapshot values of the input tags. Note that as the trigger goes, a snapshot event triggers a new calculation for a PE; however, for the calculation, the archive value is used. Can you leave the trigger value the same but use a separate tag for the calculation (Tag*0.98 with a third tag) and see if it responds with the snapshot event of the trigger tag?
On a related note, have you looked into Totalizers? The main difference between a Performance Equations point and a Totalizer point calculating the same summary is that Totalizer calculates based on Snapshot events while the Performance Equation Scheduler calculates based on Archive events. Thus, a Totalizer point may have more accurate results.
Though PE takes the input from Archive, the latest value should be snapshot. I created a test input tag and a test PE tag. and populated the test input tag using PIPoint.Data.UpdateValue. As shown below, it can be seen that PE closely follows the input tag.
In the original case, the input tags are fed by PI OPC interface. After further check i found that the PE calculation is happening just 5 secs before the new snapshot. To illustrate, given below is a few datapoints from PI.
Input Tag Tag * 1.02 3:37:54 PM 0.7 3:39:29 PM 0.4 3:39:24 PM 0.714 3:45:14 PM 1 3:45:09 PM 0.408 3:51:24 PM 2 3:51:19 PM 1.02
Not sure what is causing this. The OPC interface scan period is 5 secs. But i don't think there is one more snapshot 5 sec before to trigger PE calc. Also the server and interface time difference is less than 1 sec. I have set the PE timestamp to be same as source triggering event's timestamp. Any idea where to look at?
By the way PI totalizer point is good for summary calculation over a time range. I dont know how to use it to calculate using the snapshot only. Also how to apply a custom formula in totalizer.
As for your test case, are you positive that the events don't make it (almost) instantaneously to the archives? In general what I said in my previous post is still true (PE's calculation is based on archive values); you can read more about it in the PI Server Application User Guide. In your OPC interface case things can be more complex. The 5 second scans pass through exception first. Then there is the possibility of letting the interface attach the timestamp on its own or takes the timestamp from the OPC server. When the event makes it to the server, then there is compression...
Another possibility is that when the snapshot event happens at 3:39:29 it pushes the existing snapshot event (at 3:39:24) to the archive (compression). This archive event, in turn is used in the calculation of the PE resulting in an archive event timestamped at 3:39:24 for the PE.
I would courteously suggest you follow up this case with Tech Support. They can have a live session with you tracking down the events and checking your interface settings. Looking forward to seeing your programming-related questions on vCampus