Build a third-party .NET module that appears as a native TagProvider in the Unified Namespace.
Reference → Code → Extensions API → Extension Module API Reference
Overview
You can build your own connector for FrameworX. The Extension Module API enables the development of custom .NET
modules that
integrate directly into the FrameworX Unified Namespace as native TagProviders. It lets third-party
systems, such as analytics platforms, AI and machine learning engines, cloud
services, or custom
business logic, expose their data inside FrameworX (browsable and read/write
) with no external gateway
<TagProvider> element carries IsExtensionModule="True".The official starting point is the UnsModuleSample project shipped in the TagProviderTemplateAdvanced reference. A second project in the same reference, UnsTagDiscoverySample, demonstrates the Discovery pattern and historian access.
In this section...
| Children Display |
|---|
Anatomy
File | Role |
|---|---|
| Manifest. Declares the provider and generates the configuration UI. |
| Static entry-point class. The methods the host calls, plus the delegate fields the host injects. |
| Per-instance worker holding the namespace and value cache. |
| One node: Name, TypeName, Min, Max, EngUnits, Description, Value, Quality, UtcTimestamp. |
Manifest
The <TagProvider> element identifies the provider type; IsExtensionModule="True" is what makes it an Extension Module. The <Station><Custom> block defines the positional, semicolon-separated configuration fields shown in the Designer.
Entry-point methods (host → module)
Method | Role |
|---|---|
| Split the station string into a dictionary. |
| Connection lifecycle. |
| Return the type of a node. |
| Browse the tree; returns a DataTable (schema below). |
| Register / unregister a node and its metadata. |
| Batch read: returns a bool[] plus out values, qualities, UTC timestamps. |
| Write a value to a node. |
| Optional lifecycle hooks (empty stubs in the template). |
Host callbacks (module → host)
Delegate | Role |
|---|---|
| Read / write FrameworX tags from inside the module. |
| Emit trace through the host pipeline. |
GetChildrenElements DataTable schema
Fixed columns: Name, IsAttribute, HasChildren, HasAttributes, HasHistorian, Value, TimeStamp when includeValue, Type, Error, IsExcluded, IsHidden, IsDeleted, Separator. A branch row sets IsAttribute=false, HasChildren=true, Type="Object". A leaf row sets IsAttribute=true, Type to the node type, and fills Value/TimeStamp.
Data types
Node types use the FrameworX-internal vocabulary: Integer, Double, Text, Digital (also available: Float, Long, Short, Byte, DateTime, TextArray, Folder).
Getting started
UnsModuleSample project as a starting point.AssemblyName, DefaultName, and the <Station> configuration fields.ConnectInfo and the entry-point methods in Util..config.xml in the FrameworX Bin/Protocols folder.or middleware. This extends the platform's connectivity to virtually any system, surfacing external data and results directly where displays, scripts, and alarms already consume them, and giving customers a single namespace that unifies plant data with third-party intelligence.
If you need to access this API, contact us through support@tatsoft.com.
In this section...
Page Tree