diff -r 680ea4684209 -r 0b636dc947a2 modbus/modbus.py --- a/modbus/modbus.py Mon Dec 21 21:15:47 2020 +0000 +++ b/modbus/modbus.py Mon Dec 21 22:26:36 2020 +0000 @@ -140,14 +140,23 @@ "description": "Modbus request execution control flag", "children": []}) entries.append({ - "name": "Request Status flag", + "name": "Modbus Request Status flag", "type": LOCATION_VAR_MEMORY, - "size": 16, # WORD flag - "IEC_type": "WORD", # WORD flag + "size": 8, # BYTE flag + "IEC_type": "BYTE", # BYTE flag "var_name": "var_name", - "location": "W" + ".".join([str(i) for i in current_location]) + ".0.1", + "location": "B" + ".".join([str(i) for i in current_location]) + ".0.1", "description": "Modbus request status flag", "children": []}) + entries.append({ + "name": "Modbus Error Code", + "type": LOCATION_VAR_MEMORY, + "size": 8, # BYTE flag + "IEC_type": "BYTE", # BYTE flag + "var_name": "var_name", + "location": "B" + ".".join([str(i) for i in current_location]) + ".0.2", + "description": "Modbus Error Code received in Modbus error frame", + "children": []}) for offset in range(address, address + count): entries.append({ "name": dataname + " " + str(offset), @@ -897,9 +906,13 @@ if iecvar["LOC"][4] == 0: loc_vars.append("u16 *" + str(iecvar["NAME"]) + " = &client_requests[%d].flag_exec_req;" % (client_requestid)) loc_vars_list.append(str(iecvar["NAME"])) - # Add if it is a Communication Status Flag (mapped onto %QWa.b.c.0.1), so last number is a '1' + # Add if it is a "Modbus Request Status flag" (mapped onto %QWa.b.c.0.1), so last number is a '1' if iecvar["LOC"][4] == 1: - loc_vars.append("u16 *" + str(iecvar["NAME"]) + " = &client_requests[%d].flag_exec_status;" % (client_requestid)) + loc_vars.append("u8 *" + str(iecvar["NAME"]) + " = &client_requests[%d].flag_tn_error_code;" % (client_requestid)) + loc_vars_list.append(str(iecvar["NAME"])) + # Add if it is a "Modbus Error code" (mapped onto %QWa.b.c.0.2), so last number is a '2' + if iecvar["LOC"][4] == 2: + loc_vars.append("u8 *" + str(iecvar["NAME"]) + " = &client_requests[%d].flag_mb_error_code;" % (client_requestid)) loc_vars_list.append(str(iecvar["NAME"])) client_requestid += 1 tcpclient_node_count += 1 @@ -947,9 +960,13 @@ if iecvar["LOC"][4] == 0: loc_vars.append("u16 *" + str(iecvar["NAME"]) + " = &client_requests[%d].flag_exec_req;" % (client_requestid)) loc_vars_list.append(str(iecvar["NAME"])) - # Add if it is a Communication Status Flag (mapped onto %QWa.b.c.0.1), so last number is a '1' + # Add if it is a "Modbus Request Status flag" (mapped onto %QWa.b.c.0.1), so last number is a '1' if iecvar["LOC"][4] == 1: - loc_vars.append("u16 *" + str(iecvar["NAME"]) + " = &client_requests[%d].flag_exec_status;" % (client_requestid)) + loc_vars.append("u8 *" + str(iecvar["NAME"]) + " = &client_requests[%d].flag_tn_error_code;" % (client_requestid)) + loc_vars_list.append(str(iecvar["NAME"])) + # Add if it is a "Modbus Error code" (mapped onto %QWa.b.c.0.2), so last number is a '2' + if iecvar["LOC"][4] == 2: + loc_vars.append("u8 *" + str(iecvar["NAME"]) + " = &client_requests[%d].flag_mb_error_code;" % (client_requestid)) loc_vars_list.append(str(iecvar["NAME"])) client_requestid += 1 rtuclient_node_count += 1