Skip to content

Commit

Permalink
fix: Fixed numerous issues when writing values to S7
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisdutz committed Sep 22, 2023
1 parent b57b9ad commit cad4fd5
Show file tree
Hide file tree
Showing 17 changed files with 99 additions and 281 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ public class ${type.name} {
<#elseif simpleField.name == "daysSinceEpoch">
${helper.getLanguageTypeNameForField(simpleField)} ${simpleField.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${helper.getLanguageTypeNameForField(simpleField)?cap_first}();
<#elseif simpleField.name == "daysSinceSiemensEpoch">
${helper.getLanguageTypeNameForField(simpleField)} ${simpleField.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${helper.getLanguageTypeNameForField(simpleField)?cap_first}();
${helper.getLanguageTypeNameForField(simpleField)} ${simpleField.name} = (${helper.getLanguageTypeNameForField(field)}) ((PlcDATE) _value).getDaysSinceSiemensEpoch();
<#elseif simpleField.name == "year">
${helper.getLanguageTypeNameForField(simpleField)} ${simpleField.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${helper.getLanguageTypeNameForField(simpleField)?cap_first}();
<#elseif simpleField.name == "month">
Expand Down
3 changes: 0 additions & 3 deletions plc4c/drivers/s7/src/driver_s7_encode_decode.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,9 +330,6 @@ plc4c_return_code plc4c_driver_s7_encode_address(char* address, void** item) {
any_address->s7_address_any_number_of_elements =
254 * any_address->s7_address_any_number_of_elements;
}
} else if (any_address->s7_address_any_transport_size ==
plc4c_s7_read_write_transport_size_TOD) {
any_address->s7_address_any_transport_size = plc4c_s7_read_write_transport_size_TIME_OF_DAY;
}
free(string_length);

Expand Down
1 change: 0 additions & 1 deletion plc4c/drivers/s7/src/driver_s7_packets.c
Original file line number Diff line number Diff line change
Expand Up @@ -975,7 +975,6 @@ void plc4c_driver_s7_time_transport_size(plc4c_s7_read_write_transport_size *tra
*transport_size = plc4c_s7_read_write_transport_size_UINT;
break;
case plc4c_s7_read_write_transport_size_TIME_OF_DAY:
case plc4c_s7_read_write_transport_size_TOD:
*transport_size = plc4c_s7_read_write_transport_size_UDINT;
break;
}
Expand Down
4 changes: 1 addition & 3 deletions plc4c/generated-sources/s7/include/transport_size.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,7 @@ enum plc4c_s7_read_write_transport_size {
plc4c_s7_read_write_transport_size_LTIME = 0x16,
plc4c_s7_read_write_transport_size_DATE = 0x17,
plc4c_s7_read_write_transport_size_TIME_OF_DAY = 0x18,
plc4c_s7_read_write_transport_size_TOD = 0x19,
plc4c_s7_read_write_transport_size_DATE_AND_TIME = 0x1A,
plc4c_s7_read_write_transport_size_DT = 0x1B
plc4c_s7_read_write_transport_size_DATE_AND_TIME = 0x1A
};
typedef enum plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size;

Expand Down
10 changes: 2 additions & 8 deletions plc4c/generated-sources/s7/src/data_item.c
Original file line number Diff line number Diff line change
Expand Up @@ -687,17 +687,11 @@ uint16_t plc4c_s7_read_write_data_item_length_in_bits(plc4x_spi_context ctx, plc
} else if(strcmp(dataProtocolId, "IEC61131_STRING") == 0) { /* STRING */

// Manual Field (value)
{
char* _value = data_item->data.string_value;
lengthInBits += (plc4c_spi_evaluation_helper_str_len(_value)) + (2);
}
lengthInBits += (((stringLength) * (8))) + (16);
} else if(strcmp(dataProtocolId, "IEC61131_WSTRING") == 0) { /* STRING */

// Manual Field (value)
{
char* _value = data_item->data.string_value;
lengthInBits += (((plc4c_spi_evaluation_helper_str_len(_value)) * (2))) + (2);
}
lengthInBits += (((stringLength) * (16))) + (32);
} else if(strcmp(dataProtocolId, "IEC61131_TIME") == 0) { /* TIME */

// Simple field (milliseconds)
Expand Down
91 changes: 8 additions & 83 deletions plc4c/generated-sources/s7/src/transport_size.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,20 +131,14 @@ plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_value_of(c
if(strcmp(value_string, "TIME_OF_DAY") == 0) {
return plc4c_s7_read_write_transport_size_TIME_OF_DAY;
}
if(strcmp(value_string, "TOD") == 0) {
return plc4c_s7_read_write_transport_size_TOD;
}
if(strcmp(value_string, "DATE_AND_TIME") == 0) {
return plc4c_s7_read_write_transport_size_DATE_AND_TIME;
}
if(strcmp(value_string, "DT") == 0) {
return plc4c_s7_read_write_transport_size_DT;
}
return -1;
}

int plc4c_s7_read_write_transport_size_num_values() {
return 26;
return 24;
}

plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_value_for_index(int index) {
Expand Down Expand Up @@ -219,14 +213,8 @@ plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_value_for_
return plc4c_s7_read_write_transport_size_TIME_OF_DAY;
}
case 23: {
return plc4c_s7_read_write_transport_size_TOD;
}
case 24: {
return plc4c_s7_read_write_transport_size_DATE_AND_TIME;
}
case 25: {
return plc4c_s7_read_write_transport_size_DT;
}
default: {
return -1;
}
Expand Down Expand Up @@ -304,15 +292,9 @@ bool plc4c_s7_read_write_transport_size_get_supported__s7_300(plc4c_s7_read_writ
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return true;
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return true;
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return true;
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return true;
}
default: {
return 0;
}
Expand Down Expand Up @@ -398,15 +380,9 @@ bool plc4c_s7_read_write_transport_size_get_supported__logo(plc4c_s7_read_write_
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return true;
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return true;
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return false;
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return false;
}
default: {
return 0;
}
Expand Down Expand Up @@ -492,15 +468,9 @@ uint8_t plc4c_s7_read_write_transport_size_get_code(plc4c_s7_read_write_transpor
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return 6;
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return 6;
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return 15;
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return 15;
}
default: {
return 0;
}
Expand Down Expand Up @@ -628,15 +598,9 @@ uint8_t plc4c_s7_read_write_transport_size_get_size_in_bytes(plc4c_s7_read_write
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return 4;
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return 4;
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return 12;
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return 12;
}
default: {
return 0;
}
Expand Down Expand Up @@ -740,15 +704,9 @@ bool plc4c_s7_read_write_transport_size_get_supported__s7_400(plc4c_s7_read_writ
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return true;
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return true;
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return true;
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return true;
}
default: {
return 0;
}
Expand Down Expand Up @@ -834,15 +792,9 @@ bool plc4c_s7_read_write_transport_size_get_supported__s7_1200(plc4c_s7_read_wri
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return true;
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return true;
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return false;
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return false;
}
default: {
return 0;
}
Expand Down Expand Up @@ -928,15 +880,9 @@ uint8_t plc4c_s7_read_write_transport_size_get_short_name(plc4c_s7_read_write_tr
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return 'X';
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return 'X';
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return 'X';
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return 'X';
}
default: {
return 0;
}
Expand Down Expand Up @@ -1034,15 +980,9 @@ bool plc4c_s7_read_write_transport_size_get_supported__s7_1500(plc4c_s7_read_wri
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return true;
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return true;
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return true;
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return true;
}
default: {
return 0;
}
Expand Down Expand Up @@ -1105,16 +1045,16 @@ plc4c_s7_read_write_data_transport_size plc4c_s7_read_write_transport_size_get_d
return -1;
}
case plc4c_s7_read_write_transport_size_CHAR: { /* '0x10' */
return plc4c_s7_read_write_data_transport_size_BYTE_WORD_DWORD;
return plc4c_s7_read_write_data_transport_size_OCTET_STRING;
}
case plc4c_s7_read_write_transport_size_WCHAR: { /* '0x11' */
return -1;
return plc4c_s7_read_write_data_transport_size_OCTET_STRING;
}
case plc4c_s7_read_write_transport_size_STRING: { /* '0x12' */
return plc4c_s7_read_write_data_transport_size_BYTE_WORD_DWORD;
return plc4c_s7_read_write_data_transport_size_OCTET_STRING;
}
case plc4c_s7_read_write_transport_size_WSTRING: { /* '0x13' */
return -1;
return plc4c_s7_read_write_data_transport_size_OCTET_STRING;
}
case plc4c_s7_read_write_transport_size_TIME: { /* '0x14' */
return -1;
Expand All @@ -1128,15 +1068,9 @@ plc4c_s7_read_write_data_transport_size plc4c_s7_read_write_transport_size_get_d
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return plc4c_s7_read_write_data_transport_size_BYTE_WORD_DWORD;
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return plc4c_s7_read_write_data_transport_size_BYTE_WORD_DWORD;
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return -1;
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return -1;
}
default: {
return 0;
}
Expand All @@ -1154,6 +1088,9 @@ plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_
case plc4c_s7_read_write_transport_size_INT: /* '0x06' */{
return plc4c_s7_read_write_transport_size_INT;
}
case plc4c_s7_read_write_transport_size_CHAR: /* '0x10' */{
return plc4c_s7_read_write_transport_size_CHAR;
}
case plc4c_s7_read_write_transport_size_REAL: /* '0x0E' */{
return plc4c_s7_read_write_transport_size_REAL;
}
Expand Down Expand Up @@ -1237,15 +1174,9 @@ char* plc4c_s7_read_write_transport_size_get_data_protocol_id(plc4c_s7_read_writ
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return "IEC61131_TIME_OF_DAY";
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return "IEC61131_TIME_OF_DAY";
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return "IEC61131_DATE_AND_TIME";
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return "IEC61131_DATE_AND_TIME";
}
default: {
return 0;
}
Expand Down Expand Up @@ -1398,15 +1329,9 @@ plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_base_t
case plc4c_s7_read_write_transport_size_TIME_OF_DAY: { /* '0x18' */
return -1;
}
case plc4c_s7_read_write_transport_size_TOD: { /* '0x19' */
return -1;
}
case plc4c_s7_read_write_transport_size_DATE_AND_TIME: { /* '0x1A' */
return -1;
}
case plc4c_s7_read_write_transport_size_DT: { /* '0x1B' */
return -1;
}
default: {
return 0;
}
Expand Down
Loading

0 comments on commit cad4fd5

Please sign in to comment.