Complete reference of all FrameworX objects: what you can create, dependencies, and minimum configuration.
Reference → Platform Modules Reference → Object Model Quick Reference
Complete reference of all FrameworX objects, aimed to assist programmers and AI LLM tools.
| Table of Contents | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
The FrameworX object model follows a one-to-three mirror system where the same structure reflects across:
| Layer | Description |
|---|---|
| Designer UI | Module organization and navigation tree |
| SQLite Database | Table structure in .dbSLN solution files |
| Git/DevOps | JSON export structure for version control |
Learning one structure teaches you all three.
All configurable objects follow a consistent hierarchy:
| Context | Format | Example |
|---|---|---|
| Single object | Singular | DatasetDB, DatasetQuery |
| Table (collection) | Plural | DatasetsDBs, DatasetsQueries |
| Runtime path | Singular | Dataset.Query.Query1 |
Designer ↔ Object ↔ Database: One-to-one mapping across Designer UI pages, object model classes, and SQLite tables in the solution file (.dbSLN).
Named Objects have unique names within their namespace and appear in the Designer navigation tree where users can create new instances. Internally, named objects are stored as tokens for efficient referencing — the Designer UI displays friendly names, but solution files store tokenized references.
Configuration Rows are objects without unique name identifiers, configured in grid/table editors:
| Object Type | Parent | Description |
|---|---|---|
DevicePoint | DevicesPoints | Individual point mappings within a Node |
AlarmItem | AlarmsItems | Individual alarm configurations within a Group |
HistorianTag | HistorianHistorianTags | Tag assignments within a Historian Table |
ScriptExpression | ScriptsExpressions | Expression-based calculations |
| Module |
|---|
...
| 4 Pillars Group | Objects | |
|---|---|---|
| UNS | Data Foundation | AssetFolder, Tag, UserType, Enumeration, TagProvider |
...
| Devices | Industrial Operations | Protocol, Channel, Node, Point, AccessType |
| Alarms | Industrial Operations | AlarmsGroup, AlarmsItem, AlarmsArea |
| Historian | Industrial Operations | StorageLocation, HistorianTable, HistorianTag |
| Datasets | Business | DatasetDB, DatasetQuery, DatasetTable, DatasetFile |
| Reports | Business | ReportForm, WebData |
| Scripts | Business | ScriptTask, ScriptClass, ScriptExpression, ScriptReference |
| Security | UI | SecurityUser, SecurityPermission, SecurityPolicy, SecuritySecret |
| Displays | UI | Display, Layout, Image, Symbol |
The Unified Namespace holds all process variables and provides the central data layer for all modules.
| Object | Table | Runtime Path | Purpose |
|---|---|---|---|
| Tag | UnsTags | Tag.{name} | Process variable |
| UserType | UserTypes | — | Data structure template |
| Enumeration |
...
| UserTypes | — | Number↔String mapping |
| TagProvider Service |
...
| UnsTagProviders | — | External data source connection |
None — user creates all objects.
| Property | Required | Default | Notes |
|---|---|---|---|
| Name | No | {Type}{N} | Recommended to define meaningful name |
| Type | Yes | — | Basic type (Integer, Double, Text, etc.) or UserType |
| Path | No | Root (empty) | Folder location in hierarchy |
| Description | No | — | Recommended for real projects |
| Path Column Value | Full Access Syntax |
|---|---|
| (empty) | Tag.TagName |
\Line1\Machine1 | Tag.Line1.Machine1.TagName |
UserTypes and Tags have nearly identical structure:
When a Tag uses a UserType, members are accessed as: Tag.Motor1.Speed, Tag.Motor1.Status
Enable dynamic external data without pre-defining tags:
Asset("path") syntax onlyConnects to field devices and maps device data to Tags.
| Object | Table | Runtime Path | Purpose |
|---|---|---|---|
| Protocol | DevicesProtocols | — (internal) | Built-in communication driver |
| Channel | DevicesChannels | Device.Channel.{name} | Protocol instance + settings |
| Node | DevicesNodes | Device.Node.{name} | Device address |
| Point | DevicesPoints | — (internal) | Tag ↔ device address mapping |
| AccessType | DevicesAccessTypes | Device.AccessType.{name} | Read/write behavior |
| Object | Pre-defined Values |
|---|---|
| Protocol | All built-in (Modbus, ControlLogix, MQTT, OPC UA, etc.) |
| AccessType | Read, Write, ReadWrite |
Protocol (built-in, select only)...
...
...
...
...
...
...
...
| To Create | Requires |
|---|---|
| Channel | Protocol selection |
| Node | Existing Channel |
| Point | Existing Node + Tag (auto-creates if omitted) + Address |
| AccessType | Nothing (standalone) |
| Property | Required | Notes |
|---|---|---|
| Node | Yes | Parent node |
| Tag | Yes | Auto-created if not specified |
| Address | Yes | Protocol-specific syntax |
| AccessType | No | Defaults to Read |
Monitors Tags for alarm conditions and manages alarm events.
| Object | Table | Runtime Path | Purpose |
|---|---|---|---|
| AlarmsGroup | AlarmsGroups | Alarm.Group.{name} | Behavior settings |
| AlarmsItem | AlarmsItems | Alarm.Item.{name} | Alarm definition |
| AlarmsArea | AlarmsAreas | Alarm.Area.{name} | Hierarchy organization |
| Object | Pre-defined Values |
|---|---|
| AlarmsGroup | Critical, Warning, AuditTrail |
| To Create | Requires |
|---|---|
| AlarmsGroup | Nothing (standalone) |
| AlarmsItem | Existing Tag + Existing Group |
| AlarmsArea | Nothing (standalone tree) |
| Property | Required | Notes |
|---|---|---|
| Tag | Yes | Tag to monitor |
| Condition | Yes | Trigger expression |
| Message | Yes | Alarm message text |
| Group | Yes | Can use pre-defined (Critical, Warning, AuditTrail) |
| Area | No | Optional hierarchy placement |
Records Tag values over time for historical analysis.
| Object | Table | Runtime Path | Purpose |
|---|---|---|---|
| StorageLocation | HistorianStorageLocations | Historian.StorageLocation.{name} | Where data is saved |
| HistorianTable |
...
| HistorianHistorianTables | Historian.Table.{name} | Storage conditions |
| HistorianTag |
...
| HistorianHistorianTags | Historian.Tag.{name} | Tag to historize |
| Object | Pre-defined Values |
|---|---|
| StorageLocation | Dataset.DB.TagHistorian (default to SQLite database |
...
| ) | |
| HistorianTable | Table1 (basic settings) |
...
...
...
...
...
...
| To Create | Requires |
|---|---|
| StorageLocation | Nothing (standalone) |
| HistorianTable | Existing StorageLocation |
| HistorianTag | Existing Tag + Existing HistorianTable |
| Property | Required | Notes |
|---|---|---|
| Tag | Yes | Tag to historize |
| HistorianTable | Yes | Can use pre-defined Table1 |
Connects to SQL databases for queries, table operations, and file I/O.
| Object | Table | Runtime Path | Purpose |
|---|---|---|---|
| DatasetDB | DatasetsDBs | Dataset.DB.{name} | Database connection |
| DatasetQuery | DatasetsQueries | Dataset.Query.{name} | SQL statement |
| DatasetTable | DatasetsTables | Dataset.Table.{name} | Direct table mapping |
| DatasetFile | DatasetsFiles | Dataset.File.{name} | File I/O |
| Object | Pre-defined Values |
|---|---|
| DatasetDB | TagHistorian, AlarmHistorian, RuntimeUsers, Retentive (all SQLite by default) |
| To Create | Requires |
|---|---|
| DatasetDB | Nothing (standalone) |
| DatasetQuery | Existing DatasetDB |
| DatasetTable | Existing DatasetDB |
| DatasetFile | Nothing (standalone, unrelated to DBs) |
| Property | Required | Notes |
|---|---|---|
| DatasetDB | Yes | Can use pre-defined |
| Query | Yes | SQL statement, supports {TagName} for runtime substitution |
Generates documents and handles web data interchange.
| Object | Table | Runtime Path | Purpose |
|---|---|---|---|
| ReportForm | ReportsForms | Report.Form.{name} | Document template |
| WebData | ReportsWebData | Report.WebData.{name} | JSON/XML/Text data object |
None.
| To Create | Requires |
|---|---|
| ReportForm | Nothing (references Tags in template) |
| WebData | Nothing (standalone) |
Custom code execution in C#, VB.NET, or Python.
| Object | Table | Runtime Path | Purpose |
|---|---|---|---|
| ScriptTask | ScriptsTasks | Script.Task.{name} | Event/time triggered code |
| ScriptClass | ScriptsClasses | Script.Class.{name} | Reusable function library |
| ScriptExpression | ScriptsExpressions | Script.Expression.{name} | One-line auto-executing expression |
| ScriptReference | ScriptsReferences | Script.Reference.{name} | External DLL reference |
None.
| To Create | Requires |
|---|---|
| ScriptTask | Nothing (can use Classes and References) |
| ScriptClass | Nothing (can use References) |
| ScriptExpression | Nothing (references Tags in expression) |
| ScriptReference | Nothing (standalone) |
ScriptExpressions can auto-trigger when referenced Tags change value.
Users, permissions, and access control.
| Object | Table | Runtime Path | Purpose |
|---|---|---|---|
| SecurityUser | SecurityUsers | Security.User.{name} | User account |
| SecurityPermission | SecurityPermissions | Security.Permission.{name} | Permission flags |
| SecurityPolicy | SecurityPolicies | Security.Policy.{name} | Login/session rules |
| SecuritySecret | SecuritySecrets | Security.Secret.{name} | Protected credentials |
| Object | Pre-defined Values |
|---|---|
| SecurityUser | Administrator, Guest, User |
| SecurityPermission | Administrator, Guest, Maintenance, Engineering, Supervisor, Operator, User, Group8–Group24 |
| SecurityPolicy | Default policy |
| To Create | Requires |
|---|---|
| SecurityUser | Existing Permission(s) + Existing Policy |
| SecurityPermission | Nothing (standalone) |
| SecurityPolicy | Nothing (standalone) |
| SecuritySecret | Nothing (standalone) |
Encrypted storage for passwords used in Datasets (DB connections) and Devices (device connections).
Operator interface screens and layouts.
| Object | Table | Runtime Path | Purpose |
|---|---|---|---|
| Display | Displays | Display.{name} | UI screen |
| Layout | Layouts | Layout.{name} | Frame organization |
| Image | Images | Image.{name} | Imported graphic |
| Symbol | Symbols | Symbol.{name} | Reusable component |
| Object | Pre-defined Values |
|---|---|
| Symbol | ~2000 in Product Library |
| To Create | Requires |
|---|---|
| Display | Nothing (standalone) |
| Layout | Existing Displays to place in frames |
| Image | External file to import |
| Symbol | Nothing (standalone) |
| Type | Purpose | Elements Allowed |
|---|---|---|
| Canvas | Process synoptics, fixed positioning | All elements + graphic primitives |
| Dashboard | Responsive grid layout | All elements (no primitives) |
These are built-in settings dialogs to the solution or specific modules, not
...
objects
...
to be created.
| Dialog | Location | Purpose |
|---|---|---|
| Solution Settings | Solution | Global solution configuration |
| Alarm Global Settings | Alarms | Alarm module defaults |
| Display Client Settings | Displays | Client behavior defaults |
Solution categories are metadata information labels, created by the user, that be can applied to any object in the system.
| Module | Objects |
|---|---|
| UNS | Tag, UserType, Enumeration, TagProvider Service |
| Devices | Protocol*, Channel, Node, Point, AccessType |
| Alarms | AlarmsGroup, AlarmsItem, AlarmsArea |
| Historian | StorageLocation, HistorianTable, HistorianTag |
| Datasets | DatasetDB, DatasetQuery, DatasetTable, DatasetFile |
| Reports | ReportForm, WebData |
| Scripts | ScriptTask, ScriptClass, ScriptExpression, ScriptReference |
| Security | SecurityUser, SecurityPermission, SecurityPolicy, SecuritySecret |
| Displays | Display, Layout, Image, Symbol |
| Context | Syntax | Example |
|---|---|---|
| Scripts / CodeBehind | @ prefix required | @Tag.Temperature.Value |
| Expressions / Grids | Direct access | Tag.Temperature.Value |
| Display Binding | Filtered by type | Temperature (tags only) |
| Domain | Scope | Examples |
|---|---|---|
| Server | Global, synchronized across all clients | @Server.Date, Tag.*, Alarm.*, Device.* |
| Client | Local to each client process | @Client.Username, @Client.DisplayName |
Even on a single computer, separate processes maintain this separation for security and performance.
→ Built-in Namespaces Reference
The following objects have dedicated visual editors. Content is stored in hidden *Contents tables managed internally by the system:
| Object | Editor Type |
|---|---|
| Display | Canvas Editor (XAML) |
| Symbol | Canvas Editor (XAML) |
| ScriptTask | Code Editor |
| ScriptClass | Code Editor |
| ReportForm | Report Designer |
| WebData | WebData Editor |
| DatasetQuery | SQL Query Editor |
| Type Name | Type ID | .NET Type | Range/Notes |
|---|---|---|---|
| Digital | 151 | Int32 | 0 or 1 |
| Integer | 152 | Int32 | ±2,147,483,647 |
| Double | 153 | Double | ±1.79×10³?? |
| Text | 154 | String | Unicode, 2GB max |
| DateTime | 155 | DateTimeOffset | Year 0001-9999 |
| Long | 156 | Int64 | ±9.2×10¹? |
| Decimal | 157 | Decimal | 28-29 significant digits |
| TimeSpan | 158 | TimeSpan | Days to milliseconds |
| Timer | 162 | Int32 | Multiple timer modes |
| Counter | 163 | Int32 | Up/down counting |
| DataTable | 164 | DataTable | In-memory table |
| Image | 165 | Byte[] | Binary content |
| Guid | 166 | Guid | 128-bit unique ID |
| Json | 167 | String | JSON with built-in parsing |
| Reference | 170 | Dynamic | Tag reference |
UserTypes are assigned IDs starting at 201:
In JSON, reference a UserType with: "Type": 201