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>
3.1 KiB
OPC UA Server Layout — Build Plan
Overview
Extract the Galaxy object hierarchy and tag definitions from the ZB (Galaxy Repository) database to construct an OPC UA server address space. The root node is hardcoded as ZB.
Step 1: Build the Browse Tree
Run queries/hierarchy.sql to get all deployed automation objects and their parent-child relationships.
For each row returned:
parent_gobject_id = 0→ child of the root ZB nodeis_area = 1→ create as an OPC UA folder node (organizational)is_area = 0→ create as an OPC UA object node (container for tags)- Use
browse_nameas the OPC UA BrowseName/DisplayName - Store
gobject_idandtag_namefor attribute lookup and tag reference translation
Build the tree by matching each row's parent_gobject_id to another row's gobject_id. The result is:
ZB (root, hardcoded)
└── DEV (folder, is_area=1)
├── DevAppEngine (object)
├── DevPlatform (object)
└── TestArea (folder, is_area=1)
├── DevTestObject (object)
└── TestMachine_001 (object)
├── DelmiaReceiver (object, browse_name from contained_name)
└── MESReceiver (object, browse_name from contained_name)
Step 2: Attach Attributes as Tag Nodes
Run queries/attributes.sql to get all user-defined attributes for deployed objects.
For each attribute row:
- Match to the browse tree via
gobject_id - Create an OPC UA variable node under the matching object node
- Use
attribute_nameas the BrowseName/DisplayName - Use
full_tag_referenceas the runtime tag path for read/write operations - Map
mx_data_typeto OPC UA built-in types:
| mx_data_type | Description | OPC UA Type |
|---|---|---|
| 1 | Boolean | Boolean |
| 2 | Integer | Int32 |
| 3 | Float | Float |
| 4 | Double | Double |
| 5 | String | String |
| 6 | Time | DateTime |
| 7 | ElapsedTime | Double (seconds) or Duration |
- If
is_array = 1, create the variable as an array with rank 1 and dimension fromarray_dimension
Step 3: Monitor for Changes
Poll queries/change_detection.sql on a regular interval (e.g., every 30 seconds).
SELECT time_of_last_deploy FROM galaxy;
Compare the returned time_of_last_deploy to the last known value:
- No change → do nothing
- Changed → a deployment occurred; re-run Steps 1 and 2 to rebuild the address space
This handles objects being deployed, undeployed, added, or removed.
Connection Details
See connectioninfo.md for database connection parameters and sqlcmd usage.
sqlcmd -S localhost -d ZB -E -Q "YOUR QUERY HERE"
Query Files
| File | Purpose |
|---|---|
queries/hierarchy.sql |
Deployed object hierarchy with browse names and parent relationships |
queries/attributes.sql |
User-defined attributes with data types and array dimensions |
queries/attributes_extended.sql |
All attributes (system + user-defined) with data types and array dimensions |
queries/change_detection.sql |
Poll galaxy.time_of_last_deploy for deployment changes |