Skip to content

Releases: GridProtectionAlliance/openECA

openECA v1.4

15 May 17:27
95788ef
Compare
Choose a tag to compare

This is the official release for openECA v1.4

This is version 1.4.2 of the openECA, released on May 15, 2021

NOTE: If you are upgrading from a prior version of the openECA, you must migrate your existing configuration to use the latest database schema when the Configuration Setup Utility is run after the installation completes - this version includes schema updates.

PMU Connection Tester is installed separately, if needed:
https://github.com/GridProtectionAlliance/PMUConnectionTester/releases

Known Issues:

  • During last step of configuration setup utility, system reports it cannot find ValidateAssemblyBindings.exe, this can be safely ignored. Message is reported twice.
  • Currently the test harness for Matlab generated projects report an error during startup - GPA is looking into issue

Major Updates:

  • Added full support for IEEE C37.118 Std2011 optional Configuration Frame 3
  • Added tag removal options for OSIsoft PI adapter metadata synchronizations
  • Improved phase guess operations for synchrophasor device wizard
  • Updated DNP3 adapters to latest OpenDNP3 code base with SSL support
  • Added "SystemName" for system level deployment level identification provided at install time
  • Added SNMP reporting for system statistics
  • Improved operation with PostgeSQL schema
  • New system level statistics

Notable Updates to openECA for version 1.4

  • Improved Matlab project support for returning result values
  • Added auto-sync ability for service / manager database configuration mismatch.
  • Added code to correct any non-unique SQL Server Device unique IDs before database migration
  • Added new dependent DLLs to installer for updated PostgreSQL database assembly
  • Fixed installer deployment names for Npgsql dependencies
  • Fixed PostgreSQL operation for assigning existing database
  • Updated all database connection tests and failure messages to be consistent
  • Updated installer to add Utilities folder with CLI shortcuts / also now remembers last install path.
  • Updated installer to retrieve last service account during installation.
  • Updated Postgres assembly version to use 4.0.11

See full release notes since last release.

openECA v1.2 Release

20 Jun 18:09
Compare
Choose a tag to compare

This is the openECA official release, version 1.2.11

openECA v1.1 Release

27 Mar 19:55
Compare
Choose a tag to compare

This is the openECA official release, version 1.1.25

openECA v1.0.12 Beta Release

06 Jul 19:27
Compare
Choose a tag to compare

This release fixes an issue with generating projects in the openECA client.

openECA v1.0 Beta Release

06 Jun 00:33
Compare
Choose a tag to compare

This is the initial 1.0 release of the openECA. This update includes the ability to deploy analytics as a service which includes an associated installation package, plus many bug fixes.

openECA v0.8 Alpha Release

02 Jan 23:29
Compare
Choose a tag to compare
Pre-release

This is the initial Alpha Release of the openECA. The update includes metadata and data structure definitions for returning values to the openECA server components and enhanced UI components.

See UI Enhancements

openECA v0.2

16 Nov 15:25
Compare
Choose a tag to compare
openECA v0.2 Pre-release
Pre-release

This update includes data windowing options, parallel data and metadata structure inputs, UI improvements and bug fixes including type pagination, auto-definition of phasor types from synchrophasor input streams, and more.

See more detail for new UI updates.

openECA v0.1.37

12 Jul 04:11
Compare
Choose a tag to compare
openECA v0.1.37 Pre-release
Pre-release

This is an update to the pre-release of version 0.1 of the openECA platform that now includes analytic templates for creating "Test Harness" applications in MATLAB. The templates can also target C#, F#, Visual Basic and IronPython all of which can be used for algorithm development.

Example MATLAB algorithm:

classdef Algorithm
    methods (Static)
        function UpdateSystemSettings()
            NET.setStaticProperty('ECAClientFramework.SystemSettings.ConnectionString', 'server=localhost:6190; interface=0.0.0.0');
            NET.setStaticProperty('ECAClientFramework.SystemSettings.FramesPerSecond', 30);
            NET.setStaticProperty('ECAClientFramework.SystemSettings.LagTime', 3);
            NET.setStaticProperty('ECAClientFramework.SystemSettings.LeadTime', 1);
        end
        function output = Execute(input) % AllInput
            import ECAClientFramework.*;

            output = AllOutput();

            try
                output.IMVMProduct = input.VIPair.Current.Magnitude * input.VIPair.Voltage.Magnitude;
                output.FreqAverage = mean(input.Frequencies.Values);

                MainWindow.WriteMessage(strcat('IM*VM=', num2str(output.IMVMProduct), 'Freq Avg=', num2str(output.FreqAverage)));
            catch ex
                % Display exceptions to the main window
                MainWindow.WriteError(System.InvalidOperationException(getReport(ex)));
            end
        end
    end
end

openECA v0.1.34

06 Jul 17:18
Compare
Choose a tag to compare
openECA v0.1.34 Pre-release
Pre-release

This is an update to the pre-release of version 0.1 of the openECA platform that includes an operational prototype of the Data Modeling Manager and analytic templates for creating "Test Harness" applications. The templates now target C#, F#, Visual Basic and IronPython all of which can be used for algorithm development.

Example C# algorithm:

using System.Linq;
using ECAClientFramework;
using CS.Model.GPA;

namespace CS
{
    static class Algorithm
    {
        public static void UpdateSystemSettings()
        {
            SystemSettings.ConnectionString = @"server=localhost:6190; interface=0.0.0.0";
            SystemSettings.FramesPerSecond = 30;
            SystemSettings.LagTime = 3;
            SystemSettings.LeadTime = 1;
        }

        public static AllOutput Execute(AllInput input)
        {
            AllOutput output = new AllOutput();

            MainWindow.WriteMessage($"IM*VM={input.VIPair.Current.Magnitude * input.VIPair.Voltage.Magnitude}, Freq Avg={input.Frequencies.Values.Average()}");

            return output;
        }
    }
}

Example F# algorithm:

namespace FS

open System.Linq
open ECAClientFramework
open FS.Model.GPA

module Algorithm =
    let UpdateSystemSettings() =
        SystemSettings.ConnectionString <- @"server=localhost:6190; interface=0.0.0.0"
        SystemSettings.FramesPerSecond <- 30
        SystemSettings.LagTime <- 3.0
        SystemSettings.LeadTime <- 1.0
    let Execute(input : AllInput) : AllOutput =
        let output = new AllOutput()

        MainWindow.WriteMessage("IM*VM=" + (input.VIPair.Current.Magnitude * input.VIPair.Voltage.Magnitude).ToString() + ", Freq Avg=" + input.Frequencies.Values.Average().ToString())

        output

Example IronPython algorithm:

import clr

clr.AddReference('System.Core')
clr.AddReference('ECAClientFramework')

from System import *
from System.Linq import Enumerable
from ECAClientFramework import *

class Algorithm(object):
    @staticmethod
    def UpdateSystemSettings():
        SystemSettings.ConnectionString = "server=localhost:6190; interface=0.0.0.0"
        SystemSettings.FramesPerSecond = 30
        SystemSettings.LagTime = 3
        SystemSettings.LeadTime = 1

    @staticmethod
    def Execute(input): # AllInput
        from Model.GPA import AllOutput
        output = AllOutput.AllOutput()

        MainWindow.WriteMessage('IM*VM=' + str(input.VIPair.Current.Magnitude * input.VIPair.Voltage.Magnitude) + ', Freq Avg=' + str(Enumerable.Average(Array[Double](input.Frequencies.Values))))

        return output

Example Visual Basic algorithm:

Imports ECAClientFramework
Imports VB.Model.GPA

Module Algorithm

    Public Sub UpdateSystemSettings()

        SystemSettings.ConnectionString = "server=localhost:6190; interface=0.0.0.0"
        SystemSettings.FramesPerSecond = 30
        SystemSettings.LagTime = 3
        SystemSettings.LeadTime = 1

    End Sub

    Public Function Execute(input As AllInput) As AllOutput

        Dim output As new AllOutput()

        MainWindow.WriteMessage($"IM*VM={input.VIPair.Current.Magnitude * input.VIPair.Voltage.Magnitude}, Freq Avg={input.Frequencies.Values.Average()}")

        Return output

    End Function

End Module

openECA v0.1

29 Jun 10:07
Compare
Choose a tag to compare
openECA v0.1 Pre-release
Pre-release

This is a pre-release of the openECA platform that includes an operational prototype of Data Modeling Manager and C# based analytic template, i.e., the "Test Harness" application to be used for algorithm development.