You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2021/09/02 13:22:46 UTC
[plc4x] branch develop updated: changed delimiter of opc ua from :
to ; (#258)
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new 69376b3 changed delimiter of opc ua from : to ; (#258)
69376b3 is described below
commit 69376b3601dfc11d194b4acb6bf2ca4c18f4bdc6
Author: Matthias Milan Strljic <na...@users.noreply.github.com>
AuthorDate: Thu Sep 2 15:22:41 2021 +0200
changed delimiter of opc ua from : to ; (#258)
Co-authored-by: cdutz <ch...@c-ware.de>
---
.../apache/plc4x/java/opcua/field/OpcuaField.java | 2 +-
.../apache/plc4x/java/opcua/OpcuaPlcDriverTest.java | 20 ++++++++++----------
.../plc4x/java/opcua/protocol/OpcuaFieldTest.java | 18 ++++++++++--------
.../plc4x/java/opcuaserver/OpcuaPlcDriverTest.java | 14 +++++++-------
src/site/asciidoc/users/protocols/opc-ua.adoc | 8 ++++----
5 files changed, 32 insertions(+), 30 deletions(-)
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/field/OpcuaField.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/field/OpcuaField.java
index 2ac4177..8dd6df9 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/field/OpcuaField.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/field/OpcuaField.java
@@ -37,7 +37,7 @@ import java.util.regex.Pattern;
*/
public class OpcuaField implements PlcSubscriptionField {
- public static final Pattern ADDRESS_PATTERN = Pattern.compile("^ns=(?<namespace>\\d+);(?<identifierType>[isgb])=((?<identifier>[^:]+))?(:(?<datatype>[a-zA-Z_]+))?");
+ public static final Pattern ADDRESS_PATTERN = Pattern.compile("^ns=(?<namespace>\\d+);(?<identifierType>[isgb])=((?<identifier>[^;]+))?(;(?<datatype>[a-zA-Z_]+))?");
private final OpcuaIdentifierType identifierType;
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
index fa240f5..e5c3bbe 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
@@ -255,23 +255,23 @@ public class OpcuaPlcDriverTest {
PlcWriteRequest.Builder builder = opcuaConnection.writeRequestBuilder();
builder.addItem("Bool", BOOL_IDENTIFIER_READ_WRITE, true);
- builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE + ":BYTE", (short) 3);
+ builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE + ";BYTE", (short) 3);
builder.addItem("Double", DOUBLE_IDENTIFIER_READ_WRITE, 0.5d);
builder.addItem("Float", FLOAT_IDENTIFIER_READ_WRITE, 0.5f);
//builder.addItem("Int16", INT16_IDENTIFIER_READ_WRITE + "", (short) 1);
builder.addItem("Int32", INT32_IDENTIFIER_READ_WRITE, 42);
builder.addItem("Int64", INT64_IDENTIFIER_READ_WRITE, 42L);
builder.addItem("Integer", INTEGER_IDENTIFIER_READ_WRITE, 42);
- builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE + ":SINT", -127);
+ builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE + ";SINT", -127);
builder.addItem("String", STRING_IDENTIFIER_READ_WRITE, "Helllo Toddy!");
- builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE + ":UINT", 65535);
- builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE + ":UDINT", 101010101L);
- builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE + ":ULINT", new BigInteger("1337"));
- builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE + ":UDINT", 102020202L);
+ builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE + ";UINT", 65535);
+ builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE + ";UDINT", 101010101L);
+ builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE + ";ULINT", new BigInteger("1337"));
+ builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE + ";UDINT", 102020202L);
builder.addItem("BooleanArray", BOOL_ARRAY_IDENTIFIER, new Boolean[] {true, true, true, true, true});
- builder.addItem("ByteArray", BYTE_ARRAY_IDENTIFIER + ":BYTE", new Short[] {1, 100, 100, 255, 123});
+ builder.addItem("ByteArray", BYTE_ARRAY_IDENTIFIER + ";BYTE", new Short[] {1, 100, 100, 255, 123});
builder.addItem("DoubleArray", DOUBLE_ARRAY_IDENTIFIER, new Double[] {1.0,2.0,3.0,4.0,5.0});
builder.addItem("FloatArray", FLOAT_ARRAY_IDENTIFIER, new Float[] {1.0F,2.0F,3.0F,4.0F,5.0F});
builder.addItem("Int16Array", INT16_ARRAY_IDENTIFIER, new Short[] {1,2,3,4,5});
@@ -280,9 +280,9 @@ public class OpcuaPlcDriverTest {
builder.addItem("IntegerArray", INT32_ARRAY_IDENTIFIER, new Integer[] {1,2,3,4,5});
builder.addItem("SByteArray", SBYTE_ARRAY_IDENTIFIER, new Byte[] {1,2,3,4,5});
builder.addItem("StringArray", STRING_ARRAY_IDENTIFIER, new String[] {"1","2","3","4","5"});
- builder.addItem("UInt16Array", UINT16_ARRAY_IDENTIFIER + ":UINT", new Short[] {1,2,3,4,5});
- builder.addItem("UInt32Array", UINT32_ARRAY_IDENTIFIER + ":UDINT", new Integer[] {1,2,3,4,5});
- builder.addItem("UInt64Array", UINT64_ARRAY_IDENTIFIER + ":ULINT", new Long[] {1L,2L,3L,4L,5L});
+ builder.addItem("UInt16Array", UINT16_ARRAY_IDENTIFIER + ";UINT", new Short[] {1,2,3,4,5});
+ builder.addItem("UInt32Array", UINT32_ARRAY_IDENTIFIER + ";UDINT", new Integer[] {1,2,3,4,5});
+ builder.addItem("UInt64Array", UINT64_ARRAY_IDENTIFIER + ";ULINT", new Long[] {1L,2L,3L,4L,5L});
builder.addItem("DoesNotExists", DOES_NOT_EXIST_IDENTIFIER_READ_WRITE, "11");
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaFieldTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaFieldTest.java
index 5fd927a..9fe3e22 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaFieldTest.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/protocol/OpcuaFieldTest.java
@@ -46,9 +46,11 @@ public class OpcuaFieldTest {
assertMatching(ADDRESS_PATTERN, "ns=2;i=10846");
//string based address values
assertMatching(ADDRESS_PATTERN, "ns=2;s=test.variable.name.inspect");
+ assertMatching(ADDRESS_PATTERN, "ns=2;s=::AsGlobalPV:ProductionOrder");
+ assertMatching(ADDRESS_PATTERN, "ns=2;s=::AsGlobalPV:ProductionOrder;BOOL");
assertMatching(ADDRESS_PATTERN, "ns=2;s=key param with some spaces");
assertMatching(ADDRESS_PATTERN, "ns=2;s=\"aweired\".\"siemens\".\"param\".\"submodule\".\"param");
- assertMatching(ADDRESS_PATTERN, "ns=2;s=Weee314Waannaaa\\somenice=ext=a234a*#+1455!§$%&/()tttraaaaSymbols-.,,");
+ assertMatching(ADDRESS_PATTERN, "ns=2;s=Weee314Waannaaa\\somenice=ext=a234a*#+1455!§$%&/()tttraaaaSymbols-:.,,");
// GUID address tests
assertMatching(ADDRESS_PATTERN, "ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a");
// binary encoded addresses
@@ -60,17 +62,17 @@ public class OpcuaFieldTest {
public void testOpcuaAddressDataTypePattern() {
//standard integer based param
- assertMatching(ADDRESS_PATTERN, "ns=2;i=10846:BOOL");
+ assertMatching(ADDRESS_PATTERN, "ns=2;i=10846;BOOL");
//string based address values
- assertMatching(ADDRESS_PATTERN, "ns=2;s=test.variable.name.inspect:DINT");
- assertMatching(ADDRESS_PATTERN, "ns=2;s=key param with some spaces:ULINT");
- assertMatching(ADDRESS_PATTERN, "ns=2;s=\"aweired\".\"siemens\".\"param\".\"submodule\".\"param:LREAL");
+ assertMatching(ADDRESS_PATTERN, "ns=2;s=test.variable.name.inspect;DINT");
+ assertMatching(ADDRESS_PATTERN, "ns=2;s=key param with some spaces;ULINT");
+ assertMatching(ADDRESS_PATTERN, "ns=2;s=\"aweired\".\"siemens\".\"param\".\"submodule\".\"param;LREAL");
//REGEX Valid, additional checks need to be done later
- assertMatching(ADDRESS_PATTERN, "ns=2;s=Weee314Waannaaa\\somenice=ext=a234a*#+1455!§$%&/()tttraaaaSymbols-.,,:JIBBERISH");
+ assertMatching(ADDRESS_PATTERN, "ns=2;s=Weee314Waannaaa\\somenice=ext=a234a*#+1455!§$%&/()tttraaaaSymbols-.,,;JIBBERISH");
// GUID address tests
- assertNoMatching(ADDRESS_PATTERN, "ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a:*&#%^*$(*)");
+ assertNoMatching(ADDRESS_PATTERN, "ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;*&#%^*$(*)");
// binary encoded addresses
- assertNoMatching(ADDRESS_PATTERN, "ns=2;b=asvae:wavarahreb==");
+ assertNoMatching(ADDRESS_PATTERN, "ns=2;b=asvae;wavarahreb==");
}
}
diff --git a/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java b/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java
index 91465d9..d5015db 100644
--- a/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java
+++ b/plc4j/integrations/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/OpcuaPlcDriverTest.java
@@ -203,19 +203,19 @@ public class OpcuaPlcDriverTest {
PlcWriteRequest.Builder builder = opcuaConnection.writeRequestBuilder();
builder.addItem("Bool", BOOL_IDENTIFIER_READ_WRITE, true);
- builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE + ":BYTE", 255);
+ builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE + ";BYTE", 255);
builder.addItem("Double", DOUBLE_IDENTIFIER_READ_WRITE, 0.5d);
builder.addItem("Float", FLOAT_IDENTIFIER_READ_WRITE, 0.5f);
- builder.addItem("Int16", INT16_IDENTIFIER_READ_WRITE + ":INT", 32000);
+ builder.addItem("Int16", INT16_IDENTIFIER_READ_WRITE + ";INT", 32000);
builder.addItem("Int32", INT32_IDENTIFIER_READ_WRITE, 42);
builder.addItem("Int64", INT64_IDENTIFIER_READ_WRITE, 42L);
builder.addItem("Integer", INTEGER_IDENTIFIER_READ_WRITE, 42);
- builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE + ":USINT", 100);
+ builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE + ";USINT", 100);
builder.addItem("String", STRING_IDENTIFIER_READ_WRITE, "Helllo Toddy!");
- builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE + ":UINT", 65535);
- builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE + ":UDINT", 100);
- builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE + ":ULINT", new BigInteger("1337"));
- builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE + ":UDINT", 100);
+ builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE + ";UINT", 65535);
+ builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE + ";UDINT", 100);
+ builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE + ";ULINT", new BigInteger("1337"));
+ builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE + ";UDINT", 100);
builder.addItem("DoesNotExists", DOES_NOT_EXIST_IDENTIFIER_READ_WRITE, "Sad Toddy");
diff --git a/src/site/asciidoc/users/protocols/opc-ua.adoc b/src/site/asciidoc/users/protocols/opc-ua.adoc
index 01c66bf..a073dae 100644
--- a/src/site/asciidoc/users/protocols/opc-ua.adoc
+++ b/src/site/asciidoc/users/protocols/opc-ua.adoc
@@ -99,7 +99,7 @@ is selected based on the datatype of the returned value. For Unsigned data types
----
-ns={namespace-index};[s|i|g|b]={Identifier}:{Data Type}
+ns={namespace-index};[s|i|g|b]={Identifier};{Data Type}
----
@@ -135,17 +135,17 @@ The following are examples of valid addresses
String address:
----
ns=2;s=HelloWorld/ScalarTypes/Boolean
-ns=2;s=HelloWorld/ScalarTypes/Boolean:BOOL
+ns=2;s=HelloWorld/ScalarTypes/Boolean;BOOL
----
Numeric address
----
ns=1;i=1337
-ns=1;i=1337:DINT
+ns=1;i=1337;DINT
----
GUID address:
----
ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a
-ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a:REAL
+ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;REAL
----
Note the Identifiers `s`,`i`,`b` and `g` specify the format of the address not the data type of the returned value.