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>
6.1 KiB
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 attribute’s 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.