...
- 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")
- NodeId
- 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>
- NodeId
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.
DisplayName
IsOrganizedBy
ns=1;s=
<PIVOT_ID>
/Cause
Cause
ns=1;s=
<PIVOT_ID>
Variable
FieldName | Type | Reading field | Default value | Details |
---|
ns=1;s=
<PIVOT_ID>
<PIVOT_ID>
"Root.Objects"
(= "i=85")
Object
Cause | UInt32 (Read-Only) | do_cot | Mandatory | See Cause of Transmission |
Confirmation | Boolean (Read-Only) | do_confirmation | false | |
Source | String (Read-Only) | do_ |
source |
ns=1;s=
<PIVOT_ID>
/Confirmation
Confirmation
ns=1;s=
<PIVOT_ID>
Variable
"process" | "process" | "substituted" | |||
ComingFrom | String (Read-Only) | do_comingfrom | Mandatory | Any protocol name ("iec104" ,"opcua", ...) |
TmOrg | String (Read-Only) | do_ |
ns=1;s=
<PIVOT_ID>
/Source
Source
ns=1;s=
<PIVOT_ID>
Variable
ts_org | "genuine" | "genuine" | "substituted" |
TmValidity | String (Read-Only) | do_ |
ts_validity | " |
good" | Validity of the Timestamp of Value " |
good" | " |
ns=1;s=
<PIVOT_ID>
/ComingFrom
ComingFrom
ns=1;s=
<PIVOT_ID>
Variable
invalid" | "reserved" | "questionable" | ||
DetailQuality | UInt32 (Read-Only) | do_ |
ns=1;s=
<PIVOT_ID>
/TmOrg
TmOrg
ns=1;s=
<PIVOT_ID>
Variable
quality | 0 | OR-Mask of following values:
|
TimeQuality | UInt32 (Read-Only) | do_ts_ |
ns=1;s=
<PIVOT_ID>
/TmValidity
TmValidity
ns=1;s=
<PIVOT_ID>
Variable
quality | 0 | OR-Mask of following values:
| ||
SecondSinceEpoch | UInt64 (Read-Only) | do_ts | 0 | Number of seconds since Linux Epoch |
Value | (See below) (Read-Only) | do_ |
Validity of the Timestamp of Value
"good" | "invalid" | "reserved" | "questionable"
ns=1;s=
<PIVOT_ID>
/DetailQuality
DetailQuality
ns=1;s=
<PIVOT_ID>
Variable
(Read-Only)
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 inexchanged_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
OR-Mask of following values:
...
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
...
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 Validity | OPC UA quality |
---|---|
good | OPC_UA_GOOD |
invalid | OPC_UA_BAD |
reserved | OPC_UA_BAD (not used) |
questionable | OPC_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,
...
IsOrganizedBy
...
- 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.
OpcUa node ( ns=1;s= <PIVOT_ID> / ...) | Type | Reading field |
---|
Details |
---|
ns=1;s=
<PIVOT_ID>
<PIVOT_ID>
"Root.Objects"
(= "i=85")
Object
ns=1;s=
<PIVOT_ID>
/Trigger
Trigger
ns=1;s=
<PIVOT_ID>
Variable
UInt32
(Read-Only)
Common notes
- With
<PIVOT_ID>
as provided inexchanged_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) |
Reply | Boolean | ro_reply / ro_id | Return value from the south service Quality:
Value :
Note that there is no timeout handled in the plugin itself. If the remote equipment never acknowledges the request, |
Trigger | UInt8 | co_test co_se | Writing this node triggers the TC with current values, current timestamp and the command flags depending on the
Examples:
|
Timestamp | co_ts | co_ts = timestamp (Number of seconds since Linux Epoch). The value is defined by local time when |
PIVOT variant value
The base type of the value itself is static and depends on the configuration provide in "exchanged_data
" section.
PIVOT Type | TypeId of
| BaseDataType of
| Note | ||
---|---|---|---|---|---|
SPSTyp | opcua_sps | Boolean_Id (=1) | |||
DPSTyp | opcua_dps | String_Id (=12) | Enum is shown as string encoded. | ||
BSCTyp | opcua_bsc | TBD | Not supported in current version | String_Id (=12) | |
MVTyp | opcua_mvi | Int32_Id (=6) | In that case, the "mag.f" field is ignored | ||
MVTyp | opcua_mvf | Float_Id (=10) | In that case, the "mag.i" field is ignored | ||
SPCTyp | opcua_spc | Boolean_Id (=1) | Not supported in current version|||
DPCTyp | opcua_dpc | Byte_Id (=2) | Not supported in current version | ||
INCTyp | opcua_inc | Int32_Id (=6) | Not supported in current version|||
APCTyp | opcua_apc | Float_Id (=10) | Not supported in current version|||
BSCTyp | opcua_bsc | TBD | Not supported in current versionString_Id (=12) |