1 Reply Latest reply on Jul 6, 2015 1:21 PM by pthivierge

    Calculate Downtime using ACE




      I want to calculate Downtime and store it in a tag real time basis.

      I understand we can calculate using TimeEq function, but it give me total downtime in that range of time.


      I want to calculate last downtime duration and when the turbine is up it should reset to zero.

      And whenever the turbine is in fault(OFF) then it should count time automatically till it state changes to ON.


      Say, I have one digital tag say output as ON and OFF.


      I want to calculate the OFF time duration and store it in one of the PI ACE Tag.


      Based on that that if the duration is more than 30 mins than I m triggering some webservice only once.

      And when the digital tag goes to ON state I reset a timer counter and store it as 0 and wait until digital tag to transit to OFF state.


      I need some ace code help, to ccalculatedowntime thro ace of the digital tag.


      Thanking You,

        • Re: Calculate Downtime using ACE

          Hello Ilyas,


          Do you have AF and Asset Based Analytics installed on your server?

          If yes, you could generate event frames to persist when turbine is faulted / stopped / running into events.  Then you can use these events for reporting and for your notifications.

          This is a very common usage for event frames.


          To get started with event frames you may look here:

          OSIsoft: How to Setup Event Frames Generation Analyses with PI AF [PI AF 2014- v2.6.0.5843] - YouTube


          Once you have your event frames, you can access them using AFSDK by either using PI ACE or a .NET code of your own:

          • Get event frames that correspond to your criterias (i.e. Specific Turbine + Specific event: Faulted)
          • Sum up the duration of all event frames to get the result for the period you are interrested in.


          if you cannot use event frames, you will have to persist the results of TimeEq into memory and on the disk from time to time and build a logic so you don't query the entire period on each calculation.


          Once we know if you can use AF we can start looking into code samples.



          1 of 1 people found this helpful