Versions Compared

Key

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

Build a third-party .NET module that appears as a native TagProvider in the Unified Namespace.

ReferenceCodeExtensions API → Extension Module API Reference


Overview

An The Extension Module is a API enables the development of custom .NET assembly modules that FrameworX loads as a TagProvider, so a integrate directly into the FrameworX Unified Namespace as native TagProviders. It lets third-party system (analyticssystems, such as analytics platforms, AI and machine learning engines, cloud serviceservices, or custom logic) is business logic, expose their data inside FrameworX (browsable and read/write directly inside the Unified Namespace — ) with no external gateway process. It is declared by a manifest whose <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 accessor 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

Table of Contents
maxLevel3
stylenone

Anatomy

File

Role

*.config.xml

Manifest. Declares the provider and generates the configuration UI.

Util.cs

Static entry-point class. The methods the host calls, plus the delegate fields the host injects.

ConnectInfo.cs

Per-instance worker holding the namespace and value cache.

AssetInfo.cs

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

ParseConfiguration

Split the station string into a dictionary.

PrepareConnect / Connect / IsConnected / Disconnect

Connection lifecycle.

GetElementType

Return the type of a node.

GetChildrenElements

Browse the tree; returns a DataTable (schema below).

AddAsset / RemoveAsset

Register / unregister a node and its metadata.

ReadTagsValue

Batch read: returns a bool[] plus out values, qualities, UTC timestamps.

WriteHistorianData

Write a value to a node.

SetReadTime / SetActive / SetAccessMode

Optional lifecycle hooks (empty stubs in the template).

Host callbacks (module → host)

Delegate

Role

GetObjectValue / SetObjectValue

Read / write FrameworX tags from inside the module.

TraceMessageCallback / IsTraceEnabledCallback

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

  • Copy the UnsModuleSample project as a starting point.
  • Edit the manifest: set AssemblyName, DefaultName, and the <Station> configuration fields.
  • Implement the namespace in ConnectInfo and the entry-point methods in Util.
  • Build the class library (netstandard2.0) and place the DLL plus its .config.xml in the FrameworX Bin/Protocols folder.
  • In the Designer, open Unified Namespace > Tag Provider Services, click Add > Extension Module, select your module, and link it to a folder in the Asset Tree.