Skip to content

Commit 232888d

Browse files
authored
[feat] improved s7 opcua support (#2463)
* chore: Added a test for my S7-1500 opcua setup and did some minor tweaks to support reading and writing most types on this PLC. * chore: Fixed the build * chore: Ported the initial fix for the reading of arrays.
1 parent de4c97b commit 232888d

37 files changed

+441
-434
lines changed

plc4go/assets/testing/protocols/opcua/DriverTestsuite.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,7 +1338,7 @@
13381338
<tags isList="true">
13391339
<tag className="org.apache.plc4x.test.driver.internal.api.TestTag">
13401340
<name>time</name>
1341-
<address>ns=0;i=2258</address>
1341+
<address>ns=0;i=2258;DATE_AND_TIME</address>
13421342
</tag>
13431343
</tags>
13441344
</TestReadRequest>
@@ -1681,7 +1681,7 @@
16811681
<OpcuaTag>
16821682
<nodeId dataType="string" bitLength="88" encoding="UTF-8">ns=0;i=2258</nodeId>
16831683
<attributeId dataType="string" bitLength="40" encoding="UTF-8">Value</attributeId>
1684-
<dataType dataType="string" bitLength="32" encoding="UTF-8">NULL</dataType>
1684+
<dataType dataType="string" bitLength="104" encoding="UTF-8">DATE_AND_TIME</dataType>
16851685
</OpcuaTag>
16861686
</tag>
16871687
</PlcTagItem>

plc4j/drivers/opcua/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@
110110
<groupId>org.jacoco</groupId>
111111
<artifactId>jacoco-maven-plugin</artifactId>
112112
<configuration>
113+
<haltOnFailure>false</haltOnFailure>
113114
<excludes>
114115
<exclude>org/eclipse/**/*</exclude>
115116
</excludes>

plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/Variant.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ public abstract class Variant implements Message {
4444
protected final boolean arrayLengthSpecified;
4545
protected final boolean arrayDimensionsSpecified;
4646
protected final Integer noOfArrayDimensions;
47-
protected final List<Boolean> arrayDimensions;
47+
protected final List<Integer> arrayDimensions;
4848

4949
public Variant(
5050
boolean arrayLengthSpecified,
5151
boolean arrayDimensionsSpecified,
5252
Integer noOfArrayDimensions,
53-
List<Boolean> arrayDimensions) {
53+
List<Integer> arrayDimensions) {
5454
super();
5555
this.arrayLengthSpecified = arrayLengthSpecified;
5656
this.arrayDimensionsSpecified = arrayDimensionsSpecified;
@@ -70,7 +70,7 @@ public Integer getNoOfArrayDimensions() {
7070
return noOfArrayDimensions;
7171
}
7272

73-
public List<Boolean> getArrayDimensions() {
73+
public List<Integer> getArrayDimensions() {
7474
return arrayDimensions;
7575
}
7676

@@ -99,7 +99,7 @@ public void serialize(WriteBuffer writeBuffer) throws SerializationException {
9999
writeOptionalField("noOfArrayDimensions", noOfArrayDimensions, writeSignedInt(writeBuffer, 32));
100100

101101
// Array Field (arrayDimensions)
102-
writeSimpleTypeArrayField("arrayDimensions", arrayDimensions, writeBoolean(writeBuffer));
102+
writeSimpleTypeArrayField("arrayDimensions", arrayDimensions, writeSignedInt(writeBuffer, 32));
103103

104104
writeBuffer.popContext("Variant");
105105
}
@@ -133,7 +133,7 @@ public int getLengthInBits() {
133133

134134
// Array field
135135
if (arrayDimensions != null) {
136-
lengthInBits += 1 * arrayDimensions.size();
136+
lengthInBits += 32 * arrayDimensions.size();
137137
}
138138

139139
return lengthInBits;
@@ -222,10 +222,10 @@ public static Variant staticParse(ReadBuffer readBuffer) throws ParseException {
222222
readOptionalField(
223223
"noOfArrayDimensions", readSignedInt(readBuffer, 32), arrayDimensionsSpecified);
224224

225-
List<Boolean> arrayDimensions =
225+
List<Integer> arrayDimensions =
226226
readCountArrayField(
227227
"arrayDimensions",
228-
readBoolean(readBuffer),
228+
readSignedInt(readBuffer, 32),
229229
(((noOfArrayDimensions) == (null)) ? 0 : noOfArrayDimensions));
230230

231231
readBuffer.closeContext("Variant");
@@ -241,7 +241,7 @@ Variant build(
241241
boolean arrayLengthSpecified,
242242
boolean arrayDimensionsSpecified,
243243
Integer noOfArrayDimensions,
244-
List<Boolean> arrayDimensions);
244+
List<Integer> arrayDimensions);
245245
}
246246

247247
@Override

plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/VariantBoolean.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public VariantBoolean(
5050
boolean arrayLengthSpecified,
5151
boolean arrayDimensionsSpecified,
5252
Integer noOfArrayDimensions,
53-
List<Boolean> arrayDimensions,
53+
List<Integer> arrayDimensions,
5454
Integer arrayLength,
5555
byte[] value) {
5656
super(arrayLengthSpecified, arrayDimensionsSpecified, noOfArrayDimensions, arrayDimensions);
@@ -136,7 +136,7 @@ public VariantBoolean build(
136136
boolean arrayLengthSpecified,
137137
boolean arrayDimensionsSpecified,
138138
Integer noOfArrayDimensions,
139-
List<Boolean> arrayDimensions) {
139+
List<Integer> arrayDimensions) {
140140
VariantBoolean variantBoolean =
141141
new VariantBoolean(
142142
arrayLengthSpecified,

plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/VariantByte.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public VariantByte(
5050
boolean arrayLengthSpecified,
5151
boolean arrayDimensionsSpecified,
5252
Integer noOfArrayDimensions,
53-
List<Boolean> arrayDimensions,
53+
List<Integer> arrayDimensions,
5454
Integer arrayLength,
5555
List<Short> value) {
5656
super(arrayLengthSpecified, arrayDimensionsSpecified, noOfArrayDimensions, arrayDimensions);
@@ -138,7 +138,7 @@ public VariantByte build(
138138
boolean arrayLengthSpecified,
139139
boolean arrayDimensionsSpecified,
140140
Integer noOfArrayDimensions,
141-
List<Boolean> arrayDimensions) {
141+
List<Integer> arrayDimensions) {
142142
VariantByte variantByte =
143143
new VariantByte(
144144
arrayLengthSpecified,

plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/VariantByteString.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public VariantByteString(
5050
boolean arrayLengthSpecified,
5151
boolean arrayDimensionsSpecified,
5252
Integer noOfArrayDimensions,
53-
List<Boolean> arrayDimensions,
53+
List<Integer> arrayDimensions,
5454
Integer arrayLength,
5555
List<ByteStringArray> value) {
5656
super(arrayLengthSpecified, arrayDimensionsSpecified, noOfArrayDimensions, arrayDimensions);
@@ -142,7 +142,7 @@ public VariantByteString build(
142142
boolean arrayLengthSpecified,
143143
boolean arrayDimensionsSpecified,
144144
Integer noOfArrayDimensions,
145-
List<Boolean> arrayDimensions) {
145+
List<Integer> arrayDimensions) {
146146
VariantByteString variantByteString =
147147
new VariantByteString(
148148
arrayLengthSpecified,

plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/VariantDataValue.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public VariantDataValue(
5050
boolean arrayLengthSpecified,
5151
boolean arrayDimensionsSpecified,
5252
Integer noOfArrayDimensions,
53-
List<Boolean> arrayDimensions,
53+
List<Integer> arrayDimensions,
5454
Integer arrayLength,
5555
List<DataValue> value) {
5656
super(arrayLengthSpecified, arrayDimensionsSpecified, noOfArrayDimensions, arrayDimensions);
@@ -142,7 +142,7 @@ public VariantDataValue build(
142142
boolean arrayLengthSpecified,
143143
boolean arrayDimensionsSpecified,
144144
Integer noOfArrayDimensions,
145-
List<Boolean> arrayDimensions) {
145+
List<Integer> arrayDimensions) {
146146
VariantDataValue variantDataValue =
147147
new VariantDataValue(
148148
arrayLengthSpecified,

plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/VariantDateTime.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public VariantDateTime(
5050
boolean arrayLengthSpecified,
5151
boolean arrayDimensionsSpecified,
5252
Integer noOfArrayDimensions,
53-
List<Boolean> arrayDimensions,
53+
List<Integer> arrayDimensions,
5454
Integer arrayLength,
5555
List<Long> value) {
5656
super(arrayLengthSpecified, arrayDimensionsSpecified, noOfArrayDimensions, arrayDimensions);
@@ -136,7 +136,7 @@ public VariantDateTime build(
136136
boolean arrayLengthSpecified,
137137
boolean arrayDimensionsSpecified,
138138
Integer noOfArrayDimensions,
139-
List<Boolean> arrayDimensions) {
139+
List<Integer> arrayDimensions) {
140140
VariantDateTime variantDateTime =
141141
new VariantDateTime(
142142
arrayLengthSpecified,

plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/VariantDiagnosticInfo.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public VariantDiagnosticInfo(
5050
boolean arrayLengthSpecified,
5151
boolean arrayDimensionsSpecified,
5252
Integer noOfArrayDimensions,
53-
List<Boolean> arrayDimensions,
53+
List<Integer> arrayDimensions,
5454
Integer arrayLength,
5555
List<DiagnosticInfo> value) {
5656
super(arrayLengthSpecified, arrayDimensionsSpecified, noOfArrayDimensions, arrayDimensions);
@@ -142,7 +142,7 @@ public VariantDiagnosticInfo build(
142142
boolean arrayLengthSpecified,
143143
boolean arrayDimensionsSpecified,
144144
Integer noOfArrayDimensions,
145-
List<Boolean> arrayDimensions) {
145+
List<Integer> arrayDimensions) {
146146
VariantDiagnosticInfo variantDiagnosticInfo =
147147
new VariantDiagnosticInfo(
148148
arrayLengthSpecified,

plc4j/drivers/opcua/src/main/generated/org/apache/plc4x/java/opcua/readwrite/VariantDouble.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public VariantDouble(
5050
boolean arrayLengthSpecified,
5151
boolean arrayDimensionsSpecified,
5252
Integer noOfArrayDimensions,
53-
List<Boolean> arrayDimensions,
53+
List<Integer> arrayDimensions,
5454
Integer arrayLength,
5555
List<Double> value) {
5656
super(arrayLengthSpecified, arrayDimensionsSpecified, noOfArrayDimensions, arrayDimensions);
@@ -136,7 +136,7 @@ public VariantDouble build(
136136
boolean arrayLengthSpecified,
137137
boolean arrayDimensionsSpecified,
138138
Integer noOfArrayDimensions,
139-
List<Boolean> arrayDimensions) {
139+
List<Integer> arrayDimensions) {
140140
VariantDouble variantDouble =
141141
new VariantDouble(
142142
arrayLengthSpecified,

0 commit comments

Comments
 (0)