Versions Compared

Key

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

...

  • Endpoint URL
  • Server certificate (It is the responsibility of the client to ensure iopcua_dpst that it is connecting to the expected server)
  • User login/password, if applicable.

...

  • There is a folder-type node for each PIVOT data. This folder is defined by:
    • NodeId ns=1;s=<PIVOT_ID>
    • BrowseName/DisplayName <PIVOT_ID>
    • IsOrganizedBy "Root.Objects" (= "i=85")
  • There is one variable Variable for each exposed filed of the PIVOT data:
    • NodeId ns=1;s=<PIVOT_ID>/<FieldName>
    • BrowseName/DisplayName <FieldName>
    • IsOrganizedBy ns=1;s=<PIVOT_ID>

TeleMeasure /TeleSignal

Both TeleMeasure and TeleSignal use exactly the same OPC variables organization. They both represent data received from a south plugin and therefore only expose Read-Only Nodes.


NodeIdBrowseName/
DisplayName

IsOrganizedBy

NodeClass 
FieldName

ns=1;s=<PIVOT_ID>

/Cause

Causens=1;s=<PIVOT_ID>VariableUInt32
TypeReading fieldDefault valueDetails

ns=1;s=<PIVOT_ID>

<PIVOT_ID>

"Root.Objects"

(= "i=85")

Object 

do_idParent folder for each PIVOT data
Cause

UInt32

(Read-Only)

do_cotMandatorySee Cause of Transmission
ConfirmationBoolean

(Read-Only)

do_confirmationfalse
SourceString

(Read-Only)

do_
cot
source
MandatorySee Cause of Transmission

ns=1;s=<PIVOT_ID>

/Confirmation

Confirmationns=1;s=<PIVOT_ID>VariableBoolean
"process"

"process" | "substituted"

ComingFromString

(Read-Only)

do_comingfromMandatoryAny protocol name ("iec104" ,"opcua", ...)
TmOrgString

(Read-Only)

do_
confirmationfalse

ns=1;s=<PIVOT_ID>

/Source

Sourcens=1;s=<PIVOT_ID>
ts_org"genuine" "genuine" |  "substituted"
TmValidity
Variable
String

(Read-Only)

do_
source
ts_validity"
process"
good"

Validity of the Timestamp of Value

"

process

good" | "

substituted"

ns=1;s=<PIVOT_ID>

/ComingFrom

ComingFromns=1;s=<PIVOT_ID>Variable

invalid" | "reserved" | "questionable"

DetailQualityUInt32

String

(Read-Only)

do_
comingfromMandatoryAny protocol name ("iec104" ,"opcua", ...)
quality0

OR-Mask of following values:

0x0001 = badReference 
0x0002 = failure
0x0004 = inconsistent
0x0008 = innaccurate
0x0010 = oldData
0x0020 = oscillatory
0x0040 = outOfRange
0x0080 = overflow
0x1000 = test
0x2000 = operator blocked

TimeQualityUInt32

(Read-

ns=1;s=<PIVOT_ID>

/TmOrg

TmOrgns=1;s=<PIVOT_ID>VariableString(Read-String

Only)

do_ts_
org"genuine" "genuine" |  "substituted"

ns=1;s=<PIVOT_ID>

/TmValidity

TmValidityns=1;s=<PIVOT_ID>Variable
quality0

OR-Mask of following values:

0x01 = clockFailure
0x02 = clockNotSynch
0x04 = leapSecondKnown

SecondSinceEpochUInt64

(Read-Only)

do_ts0Number of seconds since Linux Epoch
Value(See below)

(Read-Only)

do_

ts_validity"good"

Validity of the Timestamp of Value

"good" | "invalid" | "reserved" | "questionable"

ns=1;s=<PIVOT_ID>

/DetailQuality

DetailQualityns=1;s=<PIVOT_ID>VariableUInt32

(Read-Only)

do_quality0

OR-Mask of following values:

0x0001 = badReference 
0x0002 = failure
0x0004 = inconsistent
0x0008 = innaccurate
0x0010 = oldData
0x0020 = oscillatory
0x0040 = outOfRange
0x0080 = overflow
0x1000 = test
0x2000 = operator blocked

value

do_value_quality

Mandatory(See below)

Common notes

  • With <PIVOT_ID> as provided in exchanged_data.datapoints[].pivot_id section configuration.
  • All read-only variables have a OpcUa_BadWaitingForInitialData quality (0x80320000) initial value until a valid value is received from FledgePower.
  • All non-mandatory values will be set automatically by the server if not received from a south device.
  • If a mandatory value is missing, then the whole PIVOT object is not updated.
  • As a standard OPC UA server, all functional data are organized under the Root.Objects  node of namespace 0 ( nodeId = i=85).
  • All data are stored under the namespace 1. Its URI is configured in protocol "namespaces" parameter.

Value content and metadata

PIVOT timestamp

The ns=1;s=<PIVOT_ID>

...

/TimeQuality

...

(Read-Only)

...

/Value variable contains the pivot timestamp value (t.FractionOfSecond + t.SecondSinceEpoch) is converted to OPC-UA timestamp (Unit=  number of 100 nanosecond since Jan 1st,1600).

The timestamp is not optional in OPCUA. Thus, in case the timestamp were not provided by south layers, the OPC UA north plugin will set the timestamp to 0.

PIVOT value validity

OR-Mask of following values:

...

The

ns=1;s=<PIVOT_ID>

...

/SecondSinceEpoch

...

(Read-Only)

...

ns=1;s=<PIVOT_ID>

/Value

...

(Read-Only)

...

do_value

do_value_quality

...

/Value variable contains the pivot value <Root>.<type>.q.validity field. It is represented as the OPC UA Quality of the variable, using the following conversion:

PIVOT ValidityOPC UA quality
goodOPC_UA_GOOD
invalid OPC_UA_BAD
reserved OPC_UA_BAD (not used)
questionableOPC_UA_UNCERTAIN

TeleControl

...

The TeleControls represent commands received from an OPC UA client -connected to the North plugin- that must be sent to a south service. Therefore, they exposes expose Read/Write variables that will be written by a client, except for the feedback of operation, which is Read-Only (Variable Reply).

As several OPC varaibles must be written to send a single PIVOT TC contains the information provided in several OPC variables, the following procedure has been defined to ensure atomicity of the operation. An OPC UA client must:

  • first write all relevant parameters in the TC variables. This can be done in a single OPC UA 'write' operation,

...

  • The plugin will not check that all fields have been updated. This is under the responsibility of the OPC UA client.
  • then activate the command Trigger. This must be executed after the previous write command was successfully completed.
NodeIdBrowseName/
DisplayName

IsOrganizedBy

NodeClass 
OpcUa node ( ns=1;s=<PIVOT_ID>/...)
TypeReading field
Default value
Details
Details

ns=1;s=<PIVOT_ID>

<PIVOT_ID>

"Root.Objects"

(= "i=85")

Object 

Parent folder for each PIVOT data

ns=1;s=<PIVOT_ID>

/Trigger

Triggerns=1;s=<PIVOT_ID>Variable

UInt32

(Read-Only)

MandatorySee Cause of Transmission

Common notes

  • With <PIVOT_ID> as provided in exchanged_data.datapoints[].pivot_id section configuration.
  • All read-only variables have a OpcUa_BadWaitingForInitialData quality (0x80320000) initial value until a valid value is received from FledgePower.
  • All non-mandatory values will be set automatically by the server if not received from a south device.
  • If a mandatory value is missing, then the whole PIVOT object is not updated.
  • As a standard OPC UA server, all functional data are organized under the Root.Objects  node of namespace 0 ( nodeId = i=85).
  • All data are stored under the namespace 1. Its URI is configured in protocol "namespaces" parameter.

Value content and metadata

PIVOT timestamp

The ns=1;s=<PIVOT_ID>/Value variable contains the pivot timestamp value (t.FractionOfSecond + t.SecondSinceEpoch) is converted to OPC-UA timestamp (Unit=  number of 100 nanosecond since Jan 1st,1600).

The timestamp is not optional in OPCUA. Thus, in case the timestamp were not provided by south layers, the OPC UA north plugin will set the timestamp to 0.

PIVOT value validity

The ns=1;s=<PIVOT_ID>/Value variable contains the pivot value <Root>.<type>.q.validity field. It is represented as the OPC UA Quality of the variable, using the following conversion:


String

co_id

co_id = PIVOT ID


String

co_type

co_type = "opcua_inc" | "opcua_apc" | "opcua_bsc"

Other types not supported in current version.

Value(See below)co_value(See below)
ReplyBooleanro_reply / ro_id

Return value from the south service

Quality:

  • reset to OpcUa_BadRefreshInProgress when the Trigger variable is written.
  • set to OPC_UA_GOOD when the acknowledgement is received. (The "Reply" field is updated using the "opcua_reply" reading (See Filter plugin OPCUA to Pivot).

Value :

  • True: The command has been acknowledged (ro_reply=1)
  • False : The command has not been acknowledged (ro_reply=0 or any other value)

Note that there is no timeout handled in the plugin itself. If the remote equipment never acknowledges the request, Reply may never get OPC_UA_GOOD quality.

Trigger

UInt8

co_test

co_se



Writing this node triggers the TC with current values, current timestamp and the command flags depending on the Trigger Value:

  • Bit 0 (0x01) : Test (bit set <=> co_test=1)
  • Bit 1 (0x02) : Select (bit set <=>co_se =1).
        Note : co_se=0 is "Execute" and co_se=1 is "Select"

Examples:

  • Writing "0" triggers an Execute TC with Test =0
  • Writing "3" triggers a Select TC with Test =1

Timestamp

co_ts

co_ts = timestamp (Number of seconds since Linux Epoch). The value is defined by local time when Trigger is written.

PIVOT ValidityOPC UA qualitygoodOPC_UA_GOODinvalid OPC_UA_BADreserved OPC_UA_BAD (not used)questionableOPC_UA_UNCERTAIN

PIVOT variant value

The base type of the value itself is static and depends on the configuration provide in  "exchanged_data" section.

Not supported in current versionNot supported in current versionNot supported in current versionNot supported in current version
PIVOT Type

TypeId of

exchanged_data.datapoints.pivot_type

BaseDataType of

ns=1;s=<PIVOT_ID>/Value

Note
SPSTypopcua_spsBoolean_Id (=1)
DPSTypopcua_dpsString_Id (=12)

Enum is shown as string encoded.

See CDC double point status (DPSTyp)

BSCTypopcua_bscTBDNot supported in current versionString_Id (=12)
MVTypopcua_mviInt32_Id (=6)In that case, the "mag.f" field is ignored
MVTypopcua_mvfFloat_Id (=10)In that case, the "mag.i" field is ignored
SPCTypopcua_spcBoolean_Id (=1)
DPCTypopcua_dpcByte_Id (=2)Not supported in current version
INCTypopcua_incInt32_Id (=6)
APCTypopcua_apcFloat_Id (=10)
BSCTypopcua_bscTBDString_Id (=12)