Versions Compared

Key

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

This plugin is based on the S2OPC open source library.

OPC UA server protocol stack configuration

Connection configuration

This section provides the connection-level configuration details of an OPC UA server. 

Attributes definition

AttributeDescriptionExpected valuesMandatory
urlThe server URL endpoint

“opc.tcp://<IP>:<port>[/sub/path]”

e.g. “opc.tcp://10.5.0.1:4841
YES
appUriThe application URIe.g. “urn:S2OPC:localhost”YES
productUriThe product URIe.g. “urn:S2OPC:localhost”YES
appDescriptionApplication descriptionAny non-empty string.YES
localeIdThe default language Id.e.g. "en-US", "fr-FR", ...YES
namespaces

List of namespaces URI, starting at namespace 1.
Note that in current implementation, only namespace 1 is used.

Thus, the array should contain only one name. (Array is kept for portability)

e.g. for 2 users namespaces (ns=1, ns=2): [ "urn:S2OPC:localhost", "urn:S2OPC:localhost_2" ]YES
policiesArray of accepted policies

If no security is required: 
- a single element containing both "None" for Mode and Policy should be used.


YES
policies.securityMode

The security mode

A string among “None”, “Sign” and “SignAndEncrypt” (case insensitive)YES
policies.securityPolicyThe security policyA string among “None”, “Basic256”, “Basic256Sha256”, “Aes128Sha256RsaOaep” and “Aes256Sha256RsaPss”YES
policies.userPoliciesThe user policy

If no security is required, "Anonymous" should be used

A string among “Anonymous”, “username”, “username_None”, “username_Basic256”YES
usersA map of 'user':'password'.
If no user-authentication is required, it can be an empty object
e.g: {"user" : "password", "user2" : "xGt4sdE3Z+" }
e.g: {}
YES
certificatesNote: all certificate files are expected to be provided in the $(FLEDGE_INSTALL)/data/etc/certs/s2opc_srv folder
NO
certificates.serverCertPathThe Server certificate filename (DER format)e.g. "server_2k_cert.der"NO
certificates.serverKeyPathThe Server key filename (PEM format)e.g. "server_2k_key.pem"NO
certificates.trusted_rootThe list of trusted root certificates (DER)e.g. [ "cacert.der" ]NO
certificates.trusted_intermediateThe list of trusted intermediate certificates (DER)Same as “trusted_root”NO
certificates.revokedThe list of revoked certificates (DER)Same as “trusted_root”NO
certificates.untrusted_rootThe list of untrusted root certificates (DER)Same as “trusted_root”NO
certificates.untrusted_intermediateThe list of untrusted intermediate certificates (DER)Same as “trusted_root”NO
certificates.issuedThe list of untrusted issued certificates (DER)Same as “trusted_root”NO

Configuration JSON structure

Code Block
languagejs
{
   "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 requires 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 client 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 prior use of browsing, provided that it has knowledge of the PIVOT object it needs and there related types.

Interface specification:


NodeIdBrowseName/
DisplayName

IsOrganizedBy

NodeClass TypeReading fieldDefault valueDetails

ns=1;s=<PIVOT_ID>

<PIVOT_ID>

"Root.Objects"

(= "i=85")

Object 


do_id
Parent folder for each PIVOT data

ns=1;s=<PIVOT_ID>

/Cause

Causens=1;s=<PIVOT_ID>Variable

UInt32

(Read-Only)

do_cotMandatorySee Cause of Transmission

ns=1;s=<PIVOT_ID>

/Confirmation

Confirmationns=1;s=<PIVOT_ID>VariableBoolean

(Read-Only)

do_confirmationfalse

ns=1;s=<PIVOT_ID>

/Source

Sourcens=1;s=<PIVOT_ID>VariableString

(Read-Only)

do_source"process"

"process" | "substituted"

ns=1;s=<PIVOT_ID>

/ComingFrom

ComingFromns=1;s=<PIVOT_ID>VariableString

(Read-Only)

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

ns=1;s=<PIVOT_ID>

/TmOrg

TmOrgns=1;s=<PIVOT_ID>VariableString

(Read-Only)

do_ts_orgMandatory"genuine" |  "substituted"

ns=1;s=<PIVOT_ID>

/TmValidity

TmValidityns=1;s=<PIVOT_ID>VariableString

(Read-Only)

do_ts_validityMandatory

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

ns=1;s=<PIVOT_ID>

/TimeQuality

TimeQualityns=1;s=<PIVOT_ID>VariableUInt32

(Read-Only)

do_ts_quality0

OR-Mask of following values:

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

ns=1;s=<PIVOT_ID>

/Value

Valuens=1;s=<PIVOT_ID>Variable(See below)

do_value

do_value_quality

Mandatory(See below)

With <PIVOT_ID> as provided in exchanged_data.datapoints[].pivot_id section configuration.

Notes:

  • 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:

PIVOT ValidityOPC UA quality
goodOPC_UA_GOOD
invalid OPC_UA_BAD
reserved 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.

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 version
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)Not supported in current version
DPCTypopcua_dpcByte_Id (=2)Not supported in current version
INCTypopcua_incInt32_Id (=6)Not supported in current version
APCTypopcua_apcFloat_Id (=10)Not supported in current version
BSCTypopcua_bscTBDNot supported in current version