Initial commit: Wonderware / System Platform tools and reference

Five tools under one repo, all docs organized per DOCS-GUIDE.md:

- aalogcli: .NET 4.8 / x86 CliFx CLI for reading System Platform binary
  logs (*.aaLGX) for LLM debugging, built on aaOpenSource/aaLog. Commands:
  last, tail, range, unread, fields. Stable JSON envelope under --llm-json.
  Build template under lib/build/ for rebuilding aaLogReader.dll.

- aot: ArchestrA Object Toolkit 2014 v4.0 reference material. Dev guide
  (Markdown converted from CHM), API reference for the ArchestrA.Toolkit
  namespace, and the Monitor / Watchdog VS sample solutions.

- graccesscli: .NET 4.8 / x86 CliFx CLI that automates Galaxy
  configuration via the ArchestrA GRAccess COM interop. Includes session
  daemon, IPC protocol, and llm-json envelope contract.

- grdb: SQL/DDL exploration of the Galaxy Repository database. DDL
  captures, reusable queries, hierarchy / contained-name <-> tag-name
  translation notes.

- histdb: LLM-oriented reference for AVEVA Historian retrieval. INSQL
  linked-server, extension tables, every wwXxx time-domain extension,
  every retrieval mode, alarm/event SQL recipes, REST API. Distilled
  from the 243-page Historian Retrieval Guide.

Root contains:
- CLAUDE.md: thin index pointing into each tool's README.
- DOCS-GUIDE.md: doctrine for organizing docs for LLM consumption.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Joseph Doherty
2026-05-03 18:22:20 -04:00
commit 32f26272ae
411 changed files with 69973 additions and 0 deletions
@@ -0,0 +1,472 @@
//------------------------------------------------------------------------------
// Copyright (C) 2008 Invensys Systems Inc. All rights reserved.
//
// THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//------------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Collections;
using ArchestrA.Core;
using ArchestrA.Toolkit;
namespace ArchestrA.Toolkit.Monitor
{
[Guid("dbed4eb2-a279-4660-9497-448092f54047")]
/// <summary>
/// Summary description for MonitorConfigtime
/// </summary>
public class MonitorConfigtime : ConfigtimeBase
{
#region Attributes - Toolkit generated code
// The following C# properties have been defined to simplify access to
// attribute values - do not modify the contents of this region with
// the code editor.
private CMxFloat PVHiLimit
{
get { return InternalReferenceOnly.PVHiLimit; }
set { InternalReferenceOnly.PVHiLimit.Set(value); }
}
public __PVInputOutput PVInputOutput = null;
public class __PVInputOutput
{
public SupportWrapper Wrapper = new SupportWrapper();
private CMxReference _ReferenceSecondary = null;
public CMxReference ReferenceSecondary
{
get { if (_ReferenceSecondary == null) { _ReferenceSecondary = new CMxReference(Wrapper, "PVInputOutput.ReferenceSecondary"); } return _ReferenceSecondary; }
set { if (_ReferenceSecondary == null) { _ReferenceSecondary = new CMxReference(Wrapper, "PVInputOutput.ReferenceSecondary"); } _ReferenceSecondary.Set(value); }
}
private CMxReference _Reference = null;
public CMxReference Reference
{
get { if (_Reference == null) { _Reference = new CMxReference(Wrapper, "PVInputOutput.Reference"); } return _Reference; }
set { if (_Reference == null) { _Reference = new CMxReference(Wrapper, "PVInputOutput.Reference"); } _Reference.Set(value); }
}
private CMxBoolean _SeparateFeedbackConfigured = null;
public CMxBoolean SeparateFeedbackConfigured
{
get { if (_SeparateFeedbackConfigured == null) { _SeparateFeedbackConfigured = new CMxBoolean(Wrapper, "PVInputOutput.SeparateFeedbackConfigured"); } return _SeparateFeedbackConfigured; }
set { if (_SeparateFeedbackConfigured == null) { _SeparateFeedbackConfigured = new CMxBoolean(Wrapper, "PVInputOutput.SeparateFeedbackConfigured"); } _SeparateFeedbackConfigured.Set(value); }
}
private CMxDataType _DataType = null;
public CMxDataType DataType
{
get { if (_DataType == null) { _DataType = new CMxDataType(Wrapper, "PVInputOutput.DataType"); } return _DataType; }
set { if (_DataType == null) { _DataType = new CMxDataType(Wrapper, "PVInputOutput.DataType"); } _DataType.Set(value); }
}
public __PVInputOutput(AObjectBase baseClass)
{
Wrapper.baseClass = baseClass;
}
}
#endregion Attributes
#region Internal Reference Only
//Toolkit code required to access the attributes declared in the Object Class
private Monitor InternalReferenceOnly = null;
#endregion Internal Reference Only
#region Declarations
//Declare Configtime Class Variables here.
//Variables declared in this region are available to all methods
//in the Configtime Class.
#endregion Declarations
public MonitorConfigtime()
{
InternalReferenceOnly = new Monitor();
this.AObjectInstance = InternalReferenceOnly;
#region Configuration Event Registration - Toolkit generated code
// Required region for Configuration Events - do not modify
// the contents of this region with the code editor.
this.ConfigtimeInitialize += new ConfigtimeInitializeDelegate(MonitorConfigtime_ConfigtimeInitialize);
this.ConfigtimeValidate += new ConfigtimeValidateDelegate(MonitorConfigtime_ConfigtimeValidate);
this.ConfigtimeMigrate += new MigrateDelegate(MonitorConfigtime_ConfigtimeMigrate);
this.ConfigtimeDynamic += new ConfigtimeDynamicSetHandlerDelegate(MonitorConfigtime_ConfigtimeDynamic);
this.PreValidate += new ObjectEventDelegate(MonitorConfigtime_PreValidate);
this.PostCreate += new ObjectEventDelegate(MonitorConfigtime_PostCreate);
#endregion Configuration Event Registration
#region Optional Configuration Event Registration - Toolkit generated code
// Required region for Configuration Events - do not modify
// the contents of this region with the code editor.
// Optional events are enabled by the ObjectAttributes.Events
// attribute in the Object class.
#endregion Optional Configuration Event Registration
#region Configtime Set Handler Registration Toolkit generated code
// Required method for Configtime SetHandlers.
// Changes made using the code editor will appear in the Toolkit Editor.
//
// WARNING: Changes made to this region will result in a Shape Change.
// TODO: Configtime SetHandler registration
this.RegisterConfigtimeSetHandler("PVHiLimit", new ConfigtimeSetHandlerDelegate(PVHiLimitSetHandler));
#endregion Configtime Set Handler Registration
#region Primitive Wrapper Initialization - Toolkit generated code
PVInputOutput = new __PVInputOutput(this);
#endregion Primitive Wrapper Initialization
}
private void MonitorConfigtime_ConfigtimeInitialize(object sender)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - Initialize
//
// Any custom initialization can be done here, including caching of attribute
// values, primitive IDs etc.
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_ConfigtimeMigrate(object sender, ref MigrateHandler migrate)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - Migrate
//
// Migrate executes when importing a template into a Galaxy that contains
// a previous version (major) of the template. The template must be derived or
// instantiated for migrate to execute.
//
// Migrate provides access to the previous versions attribute information.
// A typical application for migrate code is to preserve attribute values
// when an attribute name has changed (refer to the Example code below).
//
// To enable this event the migrate option must be configured via the Toolkit
// Editor or in code (i.e. [ObjectAttributes.AMigrate("1","2")]).
//
// If no implementation is provided, the system will copy all attribute values
// from the old object to the new one by matching the attribute names.
//------------------------------------------------------------------------------
#region Example code
// //Check major version of previous template
// if (migrate.MajorVersion() == 1)
// {
// //Attribute "Eg_001" has been renamed to "Example_001".
// //Transfer attribute value, lock and security classification
// Example_001 = migrate.GetValue("Eg_001"); //Gets value
// Example_001.Locked = migrate.GetLocked("Eg_001"); //Gets lock status
// Example_001.Security = migrate.GetSecurity("Eg_001"); //Gets Security Classification
//
// //Transfer primitive values
// SetValue("Example_001.TrendHi", migrate.GetValue("Eg_001.TrendHi"));
// SetValue("Example_001.TrendHi", EATTRIBUTEPROPERTY.idxAttribPropLocked, migrate.GetLocked("Eg_001.TrendHi"));
//
// //Automatically migrate all child primitives
// migrate.AutoMigrateChildPrimitives = true;
// }
#endregion
}
private void MonitorConfigtime_ConfigtimeValidate(object sender, ref EPACKAGESTATUS status)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - Validate
//
// Validate sets the warning or error text for the object.
// It is used to check conditions that would not be checked using
// a SetHandler, such as reporting that an object was not
// configured, or that combinations of attributes are illegal.
//
// Other than calling AddWarningMessage or AddErrorMessage, Validate
// should never modify the state of the object.
//------------------------------------------------------------------------------
#region Example code
// if (MyTestDefaultState)
// {
// //Add a warning message using the dictionay phrase ID "ObjectStillInDefaultState"
// AddWarningMessage(GetText("ObjectStillInDefaultState"));
//
// //Change the status to Warning if the current status is Good
// if (status == EPACKAGESTATUS.ePackageGood)
// {
// status = EPACKAGESTATUS.ePackageWarning;
// }
// }
//
// if (MyTestAttributeCombinationValid)
// {
// //Add a warning message using the dictionay phrase ID "AttributeCombinationInvalid"
// AddWarningMessage(GetText("AttributeCombinationInvalid"));
//
// // Change the status to Warning if the current status is Good
// if (status == EPACKAGESTATUS.ePackageGood)
// {
// status = EPACKAGESTATUS.ePackageWarning;
// }
// }
#endregion
// By default set the object status to Good
status = EPACKAGESTATUS.ePackageGood;
// The following statement will exit validate when validating templates.
// Place code that should be validated in templates and instances before this
// statement. Code placed after this statement will execute in instances only.
if (IsTemplate)
{
return;
}
}
private void MonitorConfigtime_ConfigtimeDynamic(object sender, ref ConfigtimeSetHandlerEventArgs e)
{
string attrName = Get(e.attributeHandle.shAttributeId, e.attributeHandle.shPrimitiveId, EATTRIBUTEPROPERTY.idxAttribPropName);
//------------------------------------------------------------------------------
// TODO: Configtime Event - Dynamic Set Handler
//
// Implement set handler code for any dynamic attributes you create with set handlers
//------------------------------------------------------------------------------
#region Example
// if (attrName == "MyDynamic")
// {
// if (e.Value > 10)
// {
// LogWarning(string.Format("value for {0} must be less or equal to 10", attrName));
// }
// else
// {
// SetValue(attrName, e.Value);
// }
//
//
// return;
// }
#endregion
// if unhandled a warning is shown as a reminder
SetValue(e.attributeHandle.shAttributeId, e.attributeHandle.shPrimitiveId, e.Value);
LogWarning(string.Format("Uknown set handler for attribute '{0}'", attrName));
}
private void MonitorConfigtime_PostCreate(object sender, object optionalParameter)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostCreate
//
// OnPostCreate is called when an object is first created.
//
// One purpose for implementing this method is to insure that the initial
// state of the primitive is valid.
//
// This method can be used by a Resuable Primitive to correct invalid initial
// states that can arise when an attribute value has been overridden. If the
// attribute has a SetHandler with validation or side effects the SetHandler
// does not execute as overrides do not trigger SetHandlers.
//------------------------------------------------------------------------------
#region Example code
// // If statistics are enabled, add the Statistics virtual primitive
// // the way the SetHandler would have done it.
// if (StatsEnable)
// {
// AddPrimitive("Statistics", "Statistics1", "Statistics1");
// }
#endregion
}
private void MonitorConfigtime_PreValidate(object sender, object optionalParameter)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PreValidate
//
// PreValidate is called when the object is about to be validated (e.g. when
// an edit session is ending and the object is about to be saved.)
//
// A primitive can modify attributes within this method.
//
// Note: It is often not necessary to perform any actions in OnPreValidate.
//------------------------------------------------------------------------------
}
#region Optional Configuration Events
//------------------------------------------------------------------------------
// TODO: Optional Configtime Events
//
// Use the Toolkit Editor to enable each optional event or add the event to the
// ObjectAttributes.Events attribute in the object class.
//
// Multiple events can be enabled using the | delimiter.
//
// Example:
// [ObjectAttributes.Events(a.EventHandlerEnum.OnPreDeploy | a.EventHandlerEnum.OnPreDelete)]
//
//------------------------------------------------------------------------------
private void MonitorConfigtime_PreUndeploy(object sender, ref SupportEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PreUndeploy
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PreUnassign(object sender, ref GeneralEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PreUnassign
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PreRename(object sender, ref RenameEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PreRename
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PreDeploy(object sender, ref DeployEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PreDeploy
//
// Use the Toolkit Editor to enable this event or add OnPreDeploy to the
// ObjectAttributes.Events attribute in the object class. Multiple events can
// be enabled using the | delimiter.
//
// Example: [ObjectAttributes.Events(a.EventHandlerEnum.OnPreDeploy)]
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PreDelete(object sender, ref SupportEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PreDelete
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PreCheckIn(object sender, ref SupportEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PreCheckIn
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PreAssignTo(object sender, ref GeneralEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PreAssignTo
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PostUndeploy(object sender, ref SupportEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostUndeploy
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PostUnassignFrom(object sender, ref GeneralEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostUnassignFrom
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PostUnassign(object sender, ref GeneralEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostUnassign
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PostRename(object sender, ref RenameEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostRename
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PostDeploy(object sender, ref SupportEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostDeploy
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PostDelete(object sender, ref SupportEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostDelete
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PostAssignTo(object sender, ref GeneralEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostAssignTo
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PostAssign(object sender, ref GeneralEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostAssign
//
//------------------------------------------------------------------------------
}
private void MonitorConfigtime_PostCheckIn(object sender, ref SupportEventArgs e)
{
//------------------------------------------------------------------------------
// TODO: Configtime Event - PostCheckIn
//
//------------------------------------------------------------------------------
}
#endregion
private void PVHiLimitSetHandler(object sender, ref ConfigtimeSetHandlerEventArgs e)
{
PVHiLimit.SetHandlerValue = e;
}
}
}