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
+131
View File
@@ -0,0 +1,131 @@
# Sample Projects
The ArchestrA Object Toolkit comes with two sample ApplicationObjects:
- Monitor object
- WatchDog object
By default, the projects for these objects are installed in the C:\Program Files\Wonderware\Toolkits\ArchestrA Object\Samples folder. You can examine these objects to learn more about the C# code generated by the ArchestrA Object Toolkit. This appendix gives a short overview of what these objects do and what their structure looks like.
> **Note**
> On a 64-bit operating system, projects for these objects are installed in C:\Program Files (x86)\Wonderware\Toolkits\ArchestrA Object\Samples.
## The Monitor Object
The Monitor object is a very simple ApplicationObject that reads an external input value and calculates its average. It also allows the user to output a new value that is below a configurable limit. It has no custom config time code and no alarm or history settings.
### Object Structure
The Monitor object uses the following primitives:
- InputOutput primitive to read and write the external value; external name: PVInputOutput
The Monitor object has the following custom attributes:
| Name | Type | Category | Description | Additional Settings |
| --- | --- | --- | --- | --- |
| PV | Float | Writeable_US | Process value | Calculated Quality, Frequently Accessed, Run Time Set Handler |
| PVHiLimit | Float | Writeable_USC | Limit value for PV output | |
| PVInputAvg | Double | CalculatedRetentive | Average value | Calculated Quality |
| ResetInputAvg | Boolean | Writeable_US | Resets the average value | Run Time Set Handler |
### Custom Object Editor
The custom editor of the Monitor object has only one custom tab with controls to configure the following attributes:
- PVHiLimit
- PVInputOutput.Reference
- PVInputOutput.SeparateFeedbackConfigured
- PVInputOutput.ReferenceSecondary
### Run Time Code
The Monitor object has the following custom run time code:
- **SetScanState event:**
- When going OnScan, set the quality of calculated attributes to Initializing.
- When going OffScan, set the quality of calculated attributes to Bad.
- **Execute event:**
- Get the new input value and write it to the PV attribute.
- Set the PV attributes quality to the quality of the new input value.
- Calculate the new average value and write it to the PVInputAvg attribute.
- **GetStatusDesc event:** Return messages for custom error codes.
- **Set handler for PV attribute:** Check that new value is less than PVHiLimit.
- **Set handler for ResetInputAvg:** Reset the average calculation.
## The WatchDog Object
The WatchDog object demonstrates basic input/output, alarming, and historization. It also shows how to use virtual primitives. The object:
- Monitors whether an input bit has changed.
- Calculates the time since the bit last changed.
- Raises an alarm if this time exceeds a timeout limit.
- Historizes this time.
- Provides optional statistics via a virtual primitive: average and maximum time since last change, time of last timeout, total number of timeouts.
### Object Structure
The WatchDog object uses the following primitives:
- Input primitive to read the external bit that should be monitored; external name: MonitoredBit
- Alarm primitive
- History primitive
- Custom virtual local primitive to calculate statistics; external name: Stats
The WatchDog object has the following custom attributes:
| Name | Type | Category | Description | Additional Settings |
| --- | --- | --- | --- | --- |
| TimeSinceChange | ElapsedTime | Calculated | Time since the MonitoredBit value last changed state | Historizable |
| Timeout.Limit | ElapsedTime | Writeable_USC_Lockable | Limit value for timeout alarm | Frequently Accessed, Run Time and Config Time Set Handlers |
| Timeout | Boolean | Calculated | Set when timeout has occurred | Alarmable |
| Stats.Enable | Boolean | PackageOnly_Lockable | Enable/disable Stats virtual primitive | Config Time Set Handler |
The Stats virtual primitive has the following custom attributes:
| Name | Type | Category | Description | Additional Settings |
| --- | --- | --- | --- | --- |
| Stats.DelayAverage | ElapsedTime | Calculated | Average time since last change | |
| Stats.DelayMax | ElapsedTime | Calculated | Maximum time since last change | |
| Stats.TimeoutCnt | Integer | Calculated | Timeout count | Historizable |
| Stats.LastTimeout | Time | Calculated | Time of last timeout | |
| Stats.Reset | Boolean | Writeable_U | Reset statistics | Run Time Set Handler |
### Custom Object Editor
The custom editor of the WatchDog object has two custom tabs with controls to configure the following:
- **General tab:**
- Input bit (MonitoredBit.InputSource)
- Enable statistics (Stats.Enable)
- Enable history and alarms for attributes
- **Advanced tab:**
- History and alarm settings for attributes
### Config Time Code
The WatchDog object has the following custom config time code:
- **Set handler for Stats.Enable attribute:** Enable/disable the Stats virtual primitive.
- **Set handler for Timeout.Alarmed attribute:** Enable/disable the timeout alarm primitive.
- **Set handler for Timeout.Limit attribute:** Check that the new value is positive.
- **Set handler for TimeSinceChanged.Historized** **attribute:** Enable/disable the history primitive for the TimeSinceChanged attribute.
### Object Run Time Code
The WatchDog object has the following custom run time code:
- **Startup event:** Initialize the time of last change.
- **Execute event:**
- Get the new input value.
- Calculate the time since the last change and write it to the TimeSinceChanged attribute.
- If the time exceeds the timeout limit, raise an alarm by setting the Timeout.Condition attribute to true.
- **GetStatusDesc event:** Return messages for custom error codes.
- **Set handler for Timeout.Limit attribute:** Check that the new value is positive.
### Stats Primitive Run Time Code
The Stats virtual primitive has the following custom run time code:
- **Execute event:** Calculate statistics (average/maximum time since last change, timeout count, last timeout time) and write them to the appropriate attributes.
- **Set handler for Reset attribute:** Reset all statistics attributes.