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 2020/10/26 17:37:24 UTC
[plc4x] 01/01: Merge branch 'develop' of
https://gitbox.apache.org/repos/asf/plc4x into feature/plc4go
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/plc4go
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit b741a8369a61d815aed60802723a342816a9d4ee
Merge: 8a46474 30e82f8
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Oct 26 18:01:50 2020 +0100
Merge branch 'develop' of https://gitbox.apache.org/repos/asf/plc4x into feature/plc4go
Conflicts:
plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusFieldDataTypeTest.java
sandbox/test-java-df1-driver/pom.xml
.../plc4x/java/api/messages/PlcReadRequest.java | 3 +
.../plc4x/java/api/messages/PlcWriteRequest.java | 16 +
.../org/apache/plc4x/java/api/model/PlcField.java | 13 +
.../org/apache/plc4x/java/api/value/PlcBOOL.java | 4 +-
.../org/apache/plc4x/java/api/value/PlcBYTE.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcCHAR.java | 7 +-
.../org/apache/plc4x/java/api/value/PlcDINT.java | 16 +-
.../org/apache/plc4x/java/api/value/PlcDWORD.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcINT.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcLINT.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcLREAL.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcLWORD.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcREAL.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcSINT.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcUDINT.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcUINT.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcULINT.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcUSINT.java | 2 +-
.../org/apache/plc4x/java/api/value/PlcWCHAR.java | 7 +-
.../org/apache/plc4x/java/api/value/PlcWORD.java | 2 +-
plc4j/drivers/ads/pom.xml | 14 +-
.../org/apache/plc4x/java/ads/field/AdsField.java | 2 -
.../plc4x/java/ads/field/DirectAdsField.java | 1 +
.../plc4x/java/ads/field/SymbolicAdsField.java | 1 +
.../ads/AdsDiscoverySerializerParserTest.java | 30 ++
.../readwrite/context/FirmataDriverContext.java | 12 +-
.../java/firmata/readwrite/field/FirmataField.java | 2 +-
.../readwrite/field/FirmataFieldDigital.java | 2 +-
.../readwrite/protocol/FirmataProtocolLogic.java | 6 +-
.../plc4x/java/modbus/field/ModbusField.java | 2 +-
.../java/modbus/protocol/ModbusProtocolLogic.java | 17 +-
.../plc4x/java/modbus/ModbusFieldDataTypeTest.java | 10 +-
.../apache/plc4x/java/modbus/ModbusFieldTest.java | 10 +-
plc4j/drivers/opcua/pom.xml | 4 -
.../opcua/connection/OpcuaTcpPlcConnection.java | 2 +-
.../plc4x/java/s7/readwrite/field/S7Field.java | 2 +-
.../java/s7/readwrite/optimizer/S7Optimizer.java | 4 +-
.../s7/readwrite/protocol/S7ProtocolLogic.java | 6 +-
.../plc4x/java/s7/readwrite/field/S7FieldTest.java | 2 +-
.../plc4x/java/simulated/field/SimulatedField.java | 2 +-
.../java/simulated/field/SimulatedFieldTest.java | 2 +-
.../java/spi/messages/DefaultPlcReadRequest.java | 17 +-
.../java/spi/messages/DefaultPlcWriteRequest.java | 94 ++++-
pom.xml | 39 ++-
.../plc4x/protocol/ads/ADSDiscoveryProtocol.java | 49 +++
...e.plc4x.plugins.codegenerator.protocol.Protocol | 3 +-
.../resources/protocols/ads/ads-discovery.mspec | 89 +++--
.../protocols/ads/AdsDiscoverySerializerTest.xml | 377 +++++++++++++++++++++
.../resources/protocols/ads/DriverTestsuite.xml | 8 +-
.../resources/protocols/s7/DriverTestsuite.xml | 6 +-
sandbox/code-gen/pom.xml | 28 +-
sandbox/opcua-server/README.adoc | 121 +++++++
sandbox/opcua-server/pom.xml | 244 +++++++++++++
.../java/opcuaserver/AttributeLoggingFilter.java | 73 ++++
.../plc4x/java/opcuaserver/Configuration.java | 82 +++++
.../java/opcuaserver/DeviceConfiguration.java | 35 +-
.../plc4x/java/opcuaserver/KeyStoreLoader.java | 170 ++++++++++
.../apache/plc4x/java/opcuaserver/OPCUAServer.java | 357 +++++++++++++++++++
.../java/opcuaserver/PasswordConfiguration.java | 92 +++++
.../java/opcuaserver/RestrictedAccessFilter.java | 55 +++
.../org/apache/plc4x/java/opcuaserver/Tag.java | 28 +-
.../org/apache/plc4x/java/opcuaserver/User.java | 104 ++++++
.../opcuaserver/backend/Plc4xCommunication.java | 254 ++++++++++++++
.../java/opcuaserver/backend/Plc4xNamespace.java | 258 ++++++++++++++
sandbox/opcua-server/src/main/resources/config.yml | 43 +++
.../opcua-server/src/main/resources/logback.xml | 34 ++
.../org/apache/plc4x/java/opcuaserver/AppTest.java | 33 +-
sandbox/pom.xml | 29 +-
sandbox/test-java-df1-driver/pom.xml | 19 +-
src/site/asciidoc/users/adopters.adoc | 3 +
.../logo_record_evolution_single_dark_bgfont.png | Bin 0 -> 10498 bytes
71 files changed, 2797 insertions(+), 172 deletions(-)
diff --cc plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
index 3580c04,202fdff..45ad0c9
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
@@@ -278,10 -275,9 +279,10 @@@ public class ModbusProtocolLogic extend
private ModbusPDU getWriteRequestPdu(PlcField field, PlcValue plcValue) {
if(field instanceof ModbusFieldCoil) {
ModbusFieldCoil coil = (ModbusFieldCoil) field;
- ModbusPDUWriteMultipleCoilsRequest request = new ModbusPDUWriteMultipleCoilsRequest(coil.getAddress(), coil.getNumberOfElements(),
+ ModbusPDUWriteMultipleCoilsRequest request =
- new ModbusPDUWriteMultipleCoilsRequest(coil.getAddress(), coil.getQuantity(),
++ new ModbusPDUWriteMultipleCoilsRequest(coil.getAddress(), coil.getNumberOfElements(),
fromPlcValue(field, plcValue));
- if (request.getQuantity() == coil.getQuantity()) {
+ if (request.getQuantity() == coil.getNumberOfElements()) {
return request;
} else {
throw new PlcRuntimeException("Number of requested bytes (" + request.getQuantity() +
@@@ -300,21 -295,17 +301,20 @@@
}
} else if(field instanceof ModbusExtendedRegister) {
ModbusExtendedRegister extendedRegister = (ModbusExtendedRegister) field;
- int group1_address = extendedRegister.getAddress() % FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH;
- int group2_address = 0;
- int group1_quantity, group2_quantity;
+ int group1Address = extendedRegister.getAddress() % FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH;
+ int group2Address = 0;
+ int group1Quantity;
+ int group2Quantity;
byte[] plcValue1, plcValue2;
- short group1_file_number = (short) (Math.floor(extendedRegister.getAddress() / FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) + 1);
- short group2_file_number;
+ short group1FileNumber = (short)
+ (Math.floor(extendedRegister.getAddress() / FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) + 1);
+ short group2FileNumber;
ModbusPDUWriteFileRecordRequestItem[] itemArray;
-
- if ((group1_address + extendedRegister.getLengthWords()) <= FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) {
+ if ((group1Address + extendedRegister.getLengthWords()) <= FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) {
//If request doesn't span file records, use a single group
- group1_quantity = extendedRegister.getLengthWords();
- ModbusPDUWriteFileRecordRequestItem group1 = new ModbusPDUWriteFileRecordRequestItem((short) 6, group1_file_number, group1_address, fromPlcValue(field, plcValue));
+ group1Quantity = extendedRegister.getLengthWords();
+ ModbusPDUWriteFileRecordRequestItem group1 = new ModbusPDUWriteFileRecordRequestItem(
+ (short) 6, group1FileNumber, group1Address, fromPlcValue(field, plcValue));
itemArray = new ModbusPDUWriteFileRecordRequestItem[] {group1};
} else {
//If it doesn span a file record. e.g. 609998[10] request 2 words in first group and 8 in second.
diff --cc plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusFieldDataTypeTest.java
index 125b0c4,09f049b..51e61d1
--- a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusFieldDataTypeTest.java
+++ b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusFieldDataTypeTest.java
@@@ -36,8 -36,8 +36,8 @@@ public class ModbusFieldDataTypeTest
{"REAL","2"}};
for(int i = 0; i< datatypes.length; i++){
ModbusFieldHoldingRegister holdingregister = ModbusFieldHoldingRegister.of("holding-register:1:" + datatypes[i][0]);
- Assertions.assertEquals(datatypes[i][0], holdingregister.getDataType());
+ Assertions.assertEquals("IEC61131_" + datatypes[i][0], holdingregister.getDataType());
- Assertions.assertEquals(1, holdingregister.getQuantity());
+ Assertions.assertEquals(1, holdingregister.getNumberOfElements());
Assertions.assertEquals(Integer.parseInt(datatypes[i][1]) * 2, holdingregister.getLengthBytes());
Assertions.assertEquals(Integer.parseInt(datatypes[i][1]), holdingregister.getLengthWords());
}
@@@ -51,8 -51,8 +51,8 @@@
{"REAL","2"}};
for(int i = 0; i< datatypes.length; i++){
ModbusFieldInputRegister inputregister = ModbusFieldInputRegister.of("input-register:1:" + datatypes[i][0]);
- Assertions.assertEquals(datatypes[i][0], inputregister.getDataType());
+ Assertions.assertEquals("IEC61131_" + datatypes[i][0], inputregister.getDataType());
- Assertions.assertEquals(1, inputregister.getQuantity());
+ Assertions.assertEquals(1, inputregister.getNumberOfElements());
Assertions.assertEquals(Integer.parseInt(datatypes[i][1]) * 2, inputregister.getLengthBytes());
Assertions.assertEquals(Integer.parseInt(datatypes[i][1]), inputregister.getLengthWords());
}
@@@ -67,8 -67,8 +67,8 @@@
{"REAL","2"}};
for(int i = 0; i< datatypes.length; i++){
ModbusExtendedRegister extendedregister = ModbusExtendedRegister.of("extended-register:1:" + datatypes[i][0]);
- Assertions.assertEquals(datatypes[i][0], extendedregister.getDataType());
+ Assertions.assertEquals("IEC61131_" + datatypes[i][0], extendedregister.getDataType());
- Assertions.assertEquals(1, extendedregister.getQuantity());
+ Assertions.assertEquals(1, extendedregister.getNumberOfElements());
Assertions.assertEquals(Integer.parseInt(datatypes[i][1]) * 2, extendedregister.getLengthBytes());
Assertions.assertEquals(Integer.parseInt(datatypes[i][1]), extendedregister.getLengthWords());
}
@@@ -80,8 -80,8 +80,8 @@@
String[][] datatypes = {{"BOOL","1"}};
for(int i = 0; i< datatypes.length; i++){
ModbusFieldCoil coil = ModbusFieldCoil.of("coil:1:" + datatypes[i][0]);
- Assertions.assertEquals(datatypes[i][0], coil.getDataType());
+ Assertions.assertEquals("IEC61131_" + datatypes[i][0], coil.getDataType());
- Assertions.assertEquals(1, coil.getQuantity());
+ Assertions.assertEquals(1, coil.getNumberOfElements());
}
}
@@@ -91,8 -91,8 +91,8 @@@
String[][] datatypes = {{"BOOL","1"}};
for(int i = 0; i< datatypes.length; i++){
ModbusFieldDiscreteInput discrete = ModbusFieldDiscreteInput.of("discrete-input:1:" + datatypes[i][0]);
- Assertions.assertEquals(datatypes[i][0], discrete.getDataType());
+ Assertions.assertEquals("IEC61131_" + datatypes[i][0], discrete.getDataType());
- Assertions.assertEquals(1, discrete.getQuantity());
+ Assertions.assertEquals(1, discrete.getNumberOfElements());
}
}
}
diff --cc protocols/ads/src/test/resources/protocols/ads/AdsDiscoverySerializerTest.xml
index 0000000,7cde0e7..7cde0e7
mode 000000,100644..100644
--- a/protocols/ads/src/test/resources/protocols/ads/AdsDiscoverySerializerTest.xml
+++ b/protocols/ads/src/test/resources/protocols/ads/AdsDiscoverySerializerTest.xml
diff --cc sandbox/test-java-df1-driver/pom.xml
index 28c60db,f965298..f632529
--- a/sandbox/test-java-df1-driver/pom.xml
+++ b/sandbox/test-java-df1-driver/pom.xml
@@@ -132,29 -146,20 +131,45 @@@
<artifactId>jackson-dataformat-xml</artifactId>
<scope>test</scope>
</dependency>
+ <!-- Testing Dependencies -->
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
- <artifactId>groovy-test-junit5</artifactId>
++ <artifactId>groovy-test-junit5</artifactId>
++ <scope>test</scope>
++ </dependency>
+
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4x-build-utils-language-java</artifactId>
+ <version>0.8.0-SNAPSHOT</version>
+ <!-- Scope is 'provided' as this way it's not shipped with the driver -->
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4x-protocols-df1</artifactId>
+ <version>0.8.0-SNAPSHOT</version>
+ <!-- Scope is 'provided' as this way it's not shipped with the driver -->
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4x-protocols-df1</artifactId>
+ <version>0.8.0-SNAPSHOT</version>
+ <classifier>tests</classifier>
+ <type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>