Releases: GridProtectionAlliance/openECA
openECA v1.4
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
This is the openECA official release, version 1.2.11
openECA v1.1 Release
This is the openECA official release, version 1.1.25
openECA v1.0.12 Beta Release
This release fixes an issue with generating projects in the openECA client.
openECA v1.0 Beta Release
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
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.
openECA v0.2
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
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
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
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.