...
Code Block | ||
---|---|---|
| ||
{ "transport_layer":{ "url":"opc.tcp://localhost:4841/OPCUA/s2opc", "appUri":"urn:S2OPC:localhost", "productUri":"urn:S2OPC:localhost", "appDescription":"Application description", "localeId":"en-US", "namespaces":[ "urn:S2OPC:localhost" ], "policies":[ { "securityMode":"None", "securityPolicy":"None", "userPolicies":[ "anonymous" ] }, { "securityMode":"SignAndEncrypt", "securityPolicy":"Basic256Sha256", "userPolicies":[ "username_Basic256Sha256", "username_None" ] } ], "users":{ "user":"password", "user2":"xGt4sdE3Z+" }, "certificates":{ "serverCertPath":"server_2k_cert.der", "serverKeyPath":"server_2k_key.pem", "trusted_root":[ "cacert.der" ], "trusted_intermediate":[], "revoked":["cacrl.der"], "untrusted_root":[], "untrusted_intermediate":[], "issued":[] } } } |
...
OPC UA server endpoint interface
Connection
A client requierd knowledge of parameters provided in previous section to establish a secured channel with the server:
- Endpoint URL
- Server certificate (It is the responsibility of the server to ensure it is connecting to the expected server)
- User login/password, if applicable.
Endpoint
This section provides the user-level configuration details of an OPC UA server, once a client-server secured connection is established.
The endpoint (see "transport_layer.url
") is an OPC UA interface and provides several means of use by a client (Browse, Read, Write, Subscribe). The following items allow any connected client to access directly all server data without required prior use of browsing, provided that it has knowledge of the PIVOT object it needs and there related types.
Interface specification:
...
:
...
NodeId |
---|
...
NodeId | BrowseName/ DisplayName | IsOrganizedBy | NodeClass | Type | Default value | Details | |
---|---|---|---|---|---|---|---|
| <PIVOT_ID> |
(= "i=85") |
| Parent folder for each PIVOT data | |||
| Cause | ns=1;s= <PIVOT_ID> | Variable | UInt32 (Read-Only) | Mandatory | See Cause of Transmission | |
| Confirmation | ns=1;s= <PIVOT_ID> | Variable | Boolean (Read-Only) | false | ||
| Test | ns=1;s= <PIVOT_ID> | Variable | Boolean (Read-Only) | false | ||
| OperatorBlocked | ns=1;s= <PIVOT_ID> | Variable | Boolean (Read-Only) | false | ||
| Source | ns=1;s= <PIVOT_ID> | Variable | String (Read-Only) | "process" | "process" | "substituted" | |
| ComingFrom | ns=1;s= <PIVOT_ID> | Variable | String (Read-Only) | Mandatory | Any protocol name ("iec104" ,"opcua", ...) | |
| TmOrg | ns=1;s= <PIVOT_ID> | Variable | String (Read-Only) | Mandatory | "genuine" | "substituted" | |
| TmValidity | ns=1;s= <PIVOT_ID> | Variable | String (Read-Only) | Mandatory | Validity of the Timestamp of Value "good" | "invalid" | "reserved" | "questionable" | |
| DetailQuality | ns=1;s= <PIVOT_ID> | Variable | UInt32 (Read-Only) | 0 | OR-Mask of following values:
| |
| TimeQuality | ns=1;s= <PIVOT_ID> | Variable | UInt32 (Read-Only) | 0 | OR-Mask of following values:
| |
| Value | ns=1;s= <PIVOT_ID> | Variable | (See below) | Mandatory | (See below) |
...
- All read-only variables have a
OpcUa_BadWaitingForInitialData
quality (0x80320000
) intial value until a valid value is received from a south deviceFledgePower. - All non-mandatory values will be set automatically be 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
Value content and metadata
...
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.
...
The ns=1;s=
<PIVOT_ID>
/Value
variable contains the pivot value 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 |
PIVOT variant value
The base type of the value itself is static and depends on the confiuration provide in "exchanged_data
" section.
PIVOT Type | TypeId | BaseDataType of
| Note |
---|---|---|---|
SPSTyp | opcua_sps | Boolean_Id (=1) | |
DPSTyp | opcua_dps | Byte_Id (=2) | |
BSCTyp | opcua_bsc | TBD | Not supported in current version |
MVTyp | opcua_mva | 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 version |