You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cg...@apache.org on 2023/12/05 12:00:02 UTC
(plc4x) 02/02: Correct reading and writing of TIME type in S7-400.
This is an automated email from the ASF dual-hosted git repository.
cgarcia pushed a commit to branch feature/s7strings
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 2faf2a3de55fe93728476e1a17a48b689f34f7d0
Author: Cesar Garcia <ce...@ceos.com.ve>
AuthorDate: Tue Dec 5 07:59:17 2023 -0400
Correct reading and writing of TIME type in S7-400.
---
.../generated/org/apache/plc4x/java/s7/readwrite/DataItem.java | 8 +++++---
.../apache/plc4x/examples/plc4j/s7event/PlcReadDataS7400H.java | 4 ++--
protocols/s7/src/main/resources/protocols/s7/s7.mspec | 2 +-
3 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java
index 8cbcc67d76..40dfd1d4d6 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/DataItem.java
@@ -180,7 +180,8 @@ public class DataItem {
} else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME")) { // TIME
// Simple Field (milliseconds)
- Integer milliseconds = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readInt("", 32);
+ Long milliseconds = /*TODO: migrate me*/ /*TODO: migrate me*/
+ readBuffer.readUnsignedLong("", 32);
return PlcTIME.ofMilliseconds(milliseconds);
} else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME")) { // LTIME
@@ -364,9 +365,10 @@ public class DataItem {
writeBuffer, _value, stringLength, "UTF-16");
} else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_TIME")) { // TIME
// Simple Field (milliseconds)
- int milliseconds = (int) _value.getInt();
+ long milliseconds = (long) _value.getLong();
/*TODO: migrate me*/
- /*TODO: migrate me*/ writeBuffer.writeInt("", 32, ((Number) (milliseconds)).intValue());
+ /*TODO: migrate me*/ writeBuffer.writeUnsignedLong(
+ "", 32, ((Number) (milliseconds)).longValue());
} else if (EvaluationHelper.equals(dataProtocolId, "IEC61131_LTIME")) { // LTIME
// Simple Field (nanoseconds)
BigInteger nanoseconds = (BigInteger) _value.getBigInteger();
diff --git a/plc4j/examples/plc4j-s7event/src/main/java/org/apache/plc4x/examples/plc4j/s7event/PlcReadDataS7400H.java b/plc4j/examples/plc4j-s7event/src/main/java/org/apache/plc4x/examples/plc4j/s7event/PlcReadDataS7400H.java
index 330212e7d9..cb08aea36d 100644
--- a/plc4j/examples/plc4j-s7event/src/main/java/org/apache/plc4x/examples/plc4j/s7event/PlcReadDataS7400H.java
+++ b/plc4j/examples/plc4j-s7event/src/main/java/org/apache/plc4x/examples/plc4j/s7event/PlcReadDataS7400H.java
@@ -250,9 +250,9 @@ public class PlcReadDataS7400H implements ConnectionStateListener {
if (!isConnected.get()) return;
try {
final PlcWriteRequest.Builder writeRequest = connection.writeRequestBuilder(); //(01)
- writeRequest.addTagAddress("TAG01", "%DB406:4:DWORD",(long) 0x0001_0001); //(02)
+ //writeRequest.addTagAddress("TAG01", "%DB406:4:DWORD",(long) 0x0001_0001); //(02)
- writeRequest.addTagAddress("TAG02", "%DB406:4:TIME", Duration.ofDays(7)); //(02)
+ writeRequest.addTagAddress("TAG02", "%DB406:4:TIME", Duration.ofDays(-11)); //(02)
final PlcWriteRequest wr = writeRequest.build(); //(03)
diff --git a/protocols/s7/src/main/resources/protocols/s7/s7.mspec b/protocols/s7/src/main/resources/protocols/s7/s7.mspec
index f399ed4a50..0d8179cd00 100644
--- a/protocols/s7/src/main/resources/protocols/s7/s7.mspec
+++ b/protocols/s7/src/main/resources/protocols/s7/s7.mspec
@@ -772,7 +772,7 @@
// -----------------------------------------
// - Duration: Interpreted as "milliseconds"
['"IEC61131_TIME"' TIME
- [simple int 32 milliseconds]
+ [simple uint 32 milliseconds]
]
//['"S7_S5TIME"' TIME
// [reserved uint 2 '0x00']