Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


ModuleTables/UIRuntime NSDescription
UnsUnsTagsTag

UnsagProviders-
AlarmsAlarmsGrupsAlarm.Group.<name

Comprehensive product knowledge, for AI integration builders and advanced users.

Platform | Installation | Solution | Modules | Controls | Code | Troubleshooting

...


This page provides a comprehensive view of the FrameworX platform architecture, covering every module, data model, syntax rule, and integration pattern. It is designed for AI assistants working with FrameworX MCP services, system integrators building complex solutions, and advanced users who want a single-page understanding of how all platform components connect.

For getting started, see [Quick Start Guide]. For module-specific tutorials, see [BUILD section]. This page is the architectural map — not a tutorial.


This page provides a comprehensive view of the FrameworX platform architecture, covering every module, data model, syntax rule, and integration pattern. It is designed for AI assistants working with FrameworX MCP services, system integrators building complex solutions, and advanced users who want a single-page understanding of how all platform components connect.

For getting started, see [Quick Start Guide]. For module-specific tutorials, see [BUILD section]. This page is the architectural map — not a tutorial.

...

The Solution Designer is the Windows-based configuration environment where solutions are built and tested. The Runtime Engine (TServer.exe) executes solutions on any supported platform. Operator interfaces run as Rich Clients (WPF desktop), Web Clients (WebAssembly), or Mobile Clients. The Solution Manager SolutionCenter provides a visual launcher for selecting and starting solutions.

...

ObjectName is used by ScriptsExpressions. It binds a calculation to a namespace object. Format: full namespace path like Tag.Machine1/Level — requires the namespace prefix, no @, no .Value.

Key Columns: When using write_objects, the tables with a NAME Name field , require only the name is mandatory, when . Tables using TagName ( AlarmsItems, HistorianHistorianTags, and DevicesPoints), or ObjectName, it is necessary to include the 2 key columns of echo tables, and defined in the table_schema.

Singleton tables (SolutionSettings, AlarmsGlobalSettings, RuntimeStartup, DisplaysClientSettings) have no key column — they contain a single configuration row. RuntimeExecutionProfiles for AI will show only the differences between Development and Production profiles, directly on the Designer UI it has more options. 

Module Architecture

Tags — The Data Foundation

The Tags module provides the Unified Namespace (UNS) — the central real-time data repository that all other modules connect to.

UnsTags contains process data points organized in a hierarchical folder structure using / separators. The Name column holds the full path: Area1/Line1/Tank1/Level. Supported data types include Digital (Boolean), Integer, Double, String, DateTime, TimeSpan, and JSON.

Tags have a Domain property: Server domain (default) synchronizes values across all connected clients, while Client domain keeps values local to each client instance. Built-in client tags like @Client.UserName and @Client.Session.ComputerNameprovide session context.

UnsUserTypes defines custom tag templates (UDTs). When a UserType is defined with members such as Setpoint, ProcessValue, and AlarmLimit, creating a tag of that type automatically creates all member tags. Modifying the UserType definition auto-updates every tag instance — members are added, removed, or changed across the entire solution automatically. Members are accessed via dot notation: Tag.Loop1.Setpoint.

UnsTagProviders connects external data sources that dynamically populate the UNS with tags. When a TagProvider connects to an MQTT broker or OPC UA server, it discovers and creates tags automatically.

UnsEnumerations maps between numeric values and human-readable text labels.

Devices — Field Equipment Communication

The Devices module connects FrameworX to PLCs, sensors, controllers, and other field equipment through a three-layer architecture:

DevicesChannels configures the communication protocol. FrameworX includes 70+ native drivers: OPC UA, OPC DA, Modbus TCP/RTU, Siemens S7, Allen-Bradley EtherNet/IP, MQTT, MQTT Sparkplug B, BACnet, DNP3, IEC 61850, and many more.

DevicesNodes defines individual device addresses within a channel. Each node belongs to exactly one channel.

DevicesPoints maps tags to device addresses. Each point references an existing tag (via TagName) and specifies the device register or address to read/write. Points belong to nodes.

Six columns in Nodes and Points are protocol-dependent: ProtocolOptions, Interface, PrimaryStation, BackupStation, Address, and DataType. Their valid values change based on the protocol selected in the parent Channel. When configuring devices programmatically, always query the protocol schema to determine valid field values and formats.

Alarms — Event Detection and Notification

AlarmsGroups defines behavior rules including notification methods, escalation procedures, and acknowledgment requirements. Three groups are predefined: Critical (highest severity), Warning (operational attention), and AuditTrail (logging without operator notification).

AlarmsItems creates individual alarm triggers bound to tags. Each item references a tag via the TagName column and belongs to a group. Items define the alarm condition (high limit, low limit, rate of change, digital state change, etc.).

AlarmsAreas provides optional organizational hierarchy for grouping alarms by plant area, equipment type, or other criteria. Areas are not required for basic alarm configuration.

AlarmsGlobalSettings is a singleton table containing alarm module defaults such as acknowledgment requirements and notification options.

Historian — Time-Series Data Storage

HistorianStorageLocations defines where historical data is stored. The predefined TagHistorian location uses SQLite by default and can be changed to SQL Server, PostgreSQL, or other supported databases.

HistorianHistorianTables coordinates storage behavior — how frequently data is sampled, how long it is retained, and what compression is applied. The predefined Table1 provides default settings connected to the TagHistorian storage location.

or ObjectName require both key columns to uniquely identify an object:

TableKey 1Key 2Example JSON
AlarmsItemsTagNameCondition{"TagName": "Tank1/Level", "Condition": "1 (Hi)"}
DevicesPointsTagNameNode{"TagName": "Tank1/Level", "Node": "PLC1"}
HistorianHistorianTagsTagNameHistorianTable{"TagName": "Tank1/Level", "HistorianTable": "Table1"}
ScriptsExpressionsObjectNameExpression{"ObjectName": "Tag.Tank1/Level", "Expression": "Tag.Input1 + Tag.Input2"}

Singleton tables (SolutionSettings, AlarmsGlobalSettings, RuntimeStartup, DisplaysClientSettings) have no key column — they contain a single configuration row. RuntimeExecutionProfiles for AI will show only the differences between Development and Production profiles, directly on the Designer UI it has more options. 

...

Module Architecture

Tags — The Data Foundation

The Tags module provides the Unified Namespace (UNS) — the central real-time data repository that all other modules connect to.

UnsTags contains process data points organized in a hierarchical folder structure using / separators. The Name column holds the full path: Area1/Line1/Tank1/Level. Supported data types include Digital (Boolean), Integer, Double, String, DateTime, TimeSpan, and JSON.

Tags have a Domain property: Server domain (default) synchronizes values across all connected clients, while Client domain keeps values local to each client instance. Built-in client tags like @Client.UserName and @Client.Session.ComputerNameprovide session context.

UnsUserTypes defines custom tag templates (UDTs). When a UserType is defined with members such as Setpoint, ProcessValue, and AlarmLimit, creating a tag of that type automatically creates all member tags. Modifying the UserType definition auto-updates every tag instance — members are added, removed, or changed across the entire solution automatically. Members are accessed via dot notation: Tag.Loop1.Setpoint.

UnsTagProviders connects external data sources that dynamically populate the UNS with tags. When a TagProvider connects to an MQTT broker or OPC UA server, it discovers and creates tags automatically.

UnsEnumerations maps between numeric values and human-readable text labels.

Devices — Field Equipment Communication

The Devices module connects FrameworX to PLCs, sensors, controllers, and other field equipment through a three-layer architecture:

DevicesChannels configures the communication protocol. FrameworX includes 70+ native drivers: OPC UA, OPC DA, Modbus TCP/RTU, Siemens S7, Allen-Bradley EtherNet/IP, MQTT, MQTT Sparkplug B, BACnet, DNP3, IEC 61850, and many more.

DevicesNodes defines individual device addresses within a channel. Each node belongs to exactly one channel.

DevicesPoints maps tags to device addresses. Each point references an existing tag (via TagName) and specifies the device register or address to read/write. Points belong to nodes.

Six columns in Nodes and Points are protocol-dependent: ProtocolOptions, Interface, PrimaryStation, BackupStation, Address, and DataType. Their valid values change based on the protocol selected in the parent Channel. When configuring devices programmatically, always query the protocol schema to determine valid field values and formats.

Alarms — Event Detection and Notification

AlarmsGroups defines behavior rules including notification methods, escalation procedures, and acknowledgment requirements. Three groups are predefined: Critical (highest severity), Warning (operational attention), and AuditTrail (logging without operator notification).

AlarmsItems creates individual alarm triggers bound to tags. Each item references a tag via the TagName column and belongs to a group. Items define the alarm condition (high limit, low limit, rate of change, digital state change, etc.).

AlarmsAreas provides optional organizational hierarchy for grouping alarms by plant area, equipment type, or other criteria. Areas are not required for basic alarm configuration.

AlarmsGlobalSettings is a singleton table containing alarm module defaults such as acknowledgment requirements and notification options.

Historian — Time-Series Data Storage

HistorianStorageLocations defines where historical data is stored. The predefined TagHistorian location uses SQLite by default and can be changed to SQL Server, PostgreSQL, or other supported databases.

HistorianHistorianTables coordinates storage behavior — how frequently data is sampled, how long it is retained, and what compression is applied. The predefined Table1 provides default settings connected to the TagHistorian storage location.

HistorianHistorianTags specifies which tags are logged to which historian table, referenced via the TagName column.

...

MainPage plays a dual role. It is the default display loaded into the Content region at startup, and it also serves as the solution preview image — the Solution Manager SolutionCenter shows whatever is rendered on MainPage as the solution thumbnail when selecting solutions to open.

...

  1. TStartup.exe launches — loads the solution file, reads configuration, parses command line arguments, and activates the runtime engine
  2. TServer.exe starts — loads all objects, tags, templates, and assets into the real-time in-memory database and establishes the communication service
  3. Modules initialize — Historian, Alarms, Devices, Scripts, Datasets, and Reports start their services and connect to the main runtime process
  4. Execution profiles applied — modules configure themselves according to the selected profile (Development provides full access for testing; Production restricts modifications for operational safety)
  5. Designer auto-connects — if the Solution Designer is open, it connects to the running solution for live monitoring and diagnostics
  6. Client displays open — operator interfaces (WebAssembly or WPF) can be launched from any networked computer
  7. Online changes applied — configuration changes made during runtime are applied without disrupting the running solution. If the online configuration is enabled, the modifications are pushed right away. If the configuration online is disabled, or the modifications requires restart of modules, like changing UTDs, tag types, or other modifications there requires validation of scripts, or may have global impact, those require the command hot_updaterreload. That command is on Designer, Runtime Diagnostics pages, or by the AI MCP for Designer tools.

...

Tags with Client domain maintain separate values for each client instance. These are used for UI state, user preferences, navigation context, and session-specific data that should not propagate to other users.

JSON Exchange Format

Table JSON Structure

Solution configurations can be exchanged as JSON files organized per table. Each file contains a header identifying the solution and table type, followed by an array of objects:

...

, and session-specific data that should not propagate to other users.

...

JSON Exchange Format

Table JSON Structure

Solution configurations can be exchanged as JSON files organized per table. Each file contains a header identifying the solution and table type, followed by an array of objects:

Full solution exports produce ZIP archives containing one JSON file per table.

...

TermDefinition
SolutionA FrameworX project stored as a .dbSLN file containing all configuration
TagA data element in the Unified Namespace — the atomic unit of real-time data
UserType (UDT)A custom tag template that defines member tags and auto-updates instances
PointA tag mapped to a physical device address for reading/writing field data
ChannelA protocol configuration defining how to communicate with a class of devices
NodeA specific device address within a channel
DisplayAn operator interface screen (Canvas for absolute layout, Dashboard for grid layout)
SymbolA user-authored reusable graphic component with customizable appearance and behavior
WizardSymbolA pre-built symbol (TANK, VALVE, PUMP, MOTOR, BLOWER) with easy customization
CodeBehindC# or VB.NET code embedded in a display for event handling and custom actions
LayoutA screen region definition (Header, Footer, Menu, SubMenu, Content) for the running application
Hot UpdateReloadApplying configuration changes to a running solution without restart
Execution ProfileDevelopment (unrestricted) or Production (operational restrictions) mode
TagProviderAn external data source that dynamically populates the UNS with tags
Asset()A function for dynamic access to UNS paths, essential for TagProvider data
SolutionCenterThe application for selecting, launching, and managing solutions
SolutionCategoriesObject labels applied across the solution — the MCP label marks AI-created objects. 
The labels each object has are visible on the Column/Property Category of the object.

...