Create the naming rules plugin
- Last UpdatedApr 24, 2025
- 2 minute read
To create a new naming rules plugin
-
Create a RealTime Developer Environment (refer to the AVEVA Enterprise SCADA Shared Components Developer documentation).
-
Open <path to environment>\Tools\source\VirtualRTU.Examples.sln.
-
Rename or copy any projects or solutions as desired.
-
Create classes implementing rules interfaces for analog inputs, setpoints, digital inputs, commands, flow rates and volumes, as required. For each rule, provide implementation of filter (method AppliesTo) and derivation (method DerivesFrom). An example of the analog input rule implementation is shown below.
using OASySDNA.VirtualRtu.Configuration.NamingContract;
namespace OASySDNA.VirtualRTU
{
public class AnalogInputNamingRule : IAnalogNamingRule
{
public bool AppliesTo(IAnalogId analogId)
{
return analogId.Name != null && analogId.Name.StartsWith("ANA");
}
public string DeriveFrom(IAnalogId analogId)
{
return analogId.Name.Substring(3);
}
}
}
In the above example the derivation rule (trim first three characters) will be applied to an analog input, if its point name starts with "ANA".
You can provide multiple derivation rules for the same telemetry item type (for example, it is common to have different rules for deriving command texts corresponding to digital commands targeting valves and pumps).
Note: The filters implemented through AppliesTo method in rules classes should be mutually exclusive, that is, there should not be a point for which multiple different rules could apply.
The table below details telemetry types on which rules are applied and an explanation of input parameters of the AppliesTo and DeriveFrom methods, as well as derivation results.
|
Telemetry Type |
Interface To Be Implemented |
Input Parameter |
Output of Derivation |
|---|---|---|---|
|
Analog input |
IAnalogNamingRule |
IAnalogInputid, which is initialized by the point name. |
Model tag name |
|
Setpoint text |
ISetpointNamingRule |
ISetpointId, which is initialized by the point name. |
Setpoint command text |
|
Digital input |
IDigitalInputNamingRule |
IDigitalInputI, which is initialized by the point name, base message of a status/multistate point, and number of bits for the point as defined in RealTime database (RTDB). |
Array of model tag names (multiple values apply if the point value is synchronized from multiple model values) |
|
Digital command |
ICommandNamingRule |
ICommandId, which is initialized by the command name (e.g., "START" or "STOP" for pumps), the point name, and the base message set name (e.g., "Unit" for pumps). |
Model command text |
|
Flow rate |
IFlowRateNamingRule |
IFlowRateId, which is initialized by the point name. |
Model tag name |
|
Accumulator (Volume) |
IAccumulatorNamingRule |
IAccumulatorId, which is initialized by the point name. |
Model tag name |