This project has moved and is read-only. For the latest updates, please go here.

Important Update

The Time-series Framework has been merged into the "Grid Solutions Framework". Projects starting on .NET 4.5 framework need to migrate to this new platform.

Project Description
The Time Series Framework administered by the Grid Protection Alliance (GPA) is a core collection of classes used to manage, process and respond to dynamic changes in fast moving streaming time-series data in real-time.

The time-series data processing framework allows applications to be architected as measurement routing systems. Any application can host the framework which will allow the system become a “measurement router”.

The open Phasor Data Concentrator, open Phasor Gateway and open Historian are examples of projects based on this framework.


The time-series framework can be molded to route measurements in any fashion, but the system defines three fundamental measurement processing categorizations to kick start most any time-series processing architecture; these are the Input, Action and Output interface adapters. These base level adapters are called Iaon Adapters (pronounced “yo-wan” if you want to speak it). Each adapter type performs a basic time-series data operation:

  • InputAdapters: Typically “maps” measurements from a data source (i.e., assigns a timestamp and an ID to measured values parsed from a stream of data), new measurements are presented to the system by calling “void OnNewMeasurements(ICollection<IMeasurement> measurements)” method. Interface: IInputAdapter, base class: InputAdapterBase
  • ActionAdapters: Typically filters and sorts measurements by time allowing adapter to take action on a synchronized set of data provided in the “abstract void PublishFrame(IFrame frame, int index)” method which adapter overrides (note that frame contains a collection of measurements all collected into the same time-indexed frame bucket). If the action causes the creation of new measurements, new measurements are presented to the system by calling “void OnNewMeasurements(ICollection<IMeasurement> measurements)” method. Interface: IActionAdapter, base class: ActionAdapterBase
  • OutputAdapters: Typically queues all measurements (no sorting) for processing. Queued measurements are presented to the adapter for processing in the “void ProcessMeasurements(IMeasurement[] measurements)” method – if measurements continue to build up in memory and are not processed in a timely manner they will be removed from the queue as protective measure to prevent catastrophic out-of-memory failures. Since output adapters are used to archive data this is often the slowest part in the system (disks tend to be a bottleneck), outputs can optionally be set to filter based on a measurement’s defined “Source” property – this allows multiple outputs to be targeted to several different distributed outputs which allows large systems to stay ahead of the incoming data stream. Interface: IOutputAdapter, base class: OutputAdapterBase


The Iaon adapter source code definitions can be found in the solution in the TimeSeriesFramework library project under "Adapters".

Click here to download binaries from nightly build. Nightly builds happen at midnight in the Eastern time zone each day so long as there was a code change checked into the solution that day.


Last edited Apr 21, 2016 at 1:51 AM by ritchiecarroll, version 26