You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Description
I'm running a long (hours) datalogger using pycomm3 sometime when I close the connection (PLC.close()) it will report a parse replay failure on the forward_close(). Seems to happen more often after running for a longer (>10 minutes) time. The datalogger will read a set of tags. And when I interrupt it using the exception instructs pycomm3 to close the connection.
Target PLC
Model: 1756-L73
Firmware Revision: 32.11
Other Devices in CIP Path: 1756-ENBT/A v 5.006
Code Sample
Stripped back to minimal
from pycomm3 import LogixDriver
import logging, time, datetime
from pycomm3.exceptions import RequestError
PLCAddress = 'PC15'
PLC = LogixDriver(PLCAddress, init_program_tags= False)
PLC.open()
print(PLC.info)
logging.info('Connected')
packtags = 'A15S1_PackData','A16S1_PackData','A16S1S3_PackData','A16S3_PackData','A16S3S4_Packdata','A16S4_PackData','A16S4S5_Packdata','A16S5_PackData','A17S1_PackData','A17S2_PackData','A17S3_PackData'
try:
logging.info('Reading')
while True: # and ChangeCount < 3:
for tagname in packtags:
packdata_i = PLC.read(tagname)
print('*' , end = '')
time.sleep(1)
except KeyboardInterrupt:
pass
except Exception as err:
logging.exception(err)
finally:
logging.info('Disconnecting')
PLC.close()
Additional context
Output from DEBUG logging:
2024-07-25 07:22:30,514 Sending generic message: forward_close
2024-07-25 07:22:30,515 Sent: GenericUnconnectedRequestPacket(message=[b'N', b'\x02 \x06$\x01', b"\n\x05'\x04\t\x10\xbd\xea>q", b'\x03\x00\x01\x00 \x02$\x01'])
2024-07-25 07:22:30,520 Failed to parse reply
Traceback (most recent call last):
File "C:\Users\plompt\AppData\Local\Programs\Python\Python311\Lib\site-packages\pycomm3\cip\data_types.py", line 156, in encode
return cls._encode(value)
^^^^^^^^^^^^^^^^^^
File "C:\Users\plompt\AppData\Local\Programs\Python\Python311\Lib\site-packages\pycomm3\cip\data_types.py", line 216, in _encode
return pack(cls._format, value)
^^^^^^^^^^^^^^^^^^^^^^^^
struct.error: ubyte format requires 0 <= number <= 255
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\plompt\AppData\Local\Programs\Python\Python311\Lib\site-packages\pycomm3\packets\ethernetip.py", line 127, in _parse_reply
self.service = Services.get(Services.from_reply(self.raw[40:41]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\plompt\AppData\Local\Programs\Python\Python311\Lib\site-packages\pycomm3\cip\services.py", line 99, in from_reply
val = cls.get(USINT.encode(USINT.decode(reply_service) - 128))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\plompt\AppData\Local\Programs\Python\Python311\Lib\site-packages\pycomm3\cip\data_types.py", line 158, in encode
raise DataError(f"Error packing {value!r} as {cls.__name__}") from err
pycomm3.exceptions.DataError: Error packing -128 as USINT
The text was updated successfully, but these errors were encountered:
Pre-checks
Description
I'm running a long (hours) datalogger using pycomm3 sometime when I close the connection (PLC.close()) it will report a parse replay failure on the forward_close(). Seems to happen more often after running for a longer (>10 minutes) time. The datalogger will read a set of tags. And when I interrupt it using the exception instructs pycomm3 to close the connection.
Target PLC
Model: 1756-L73
Firmware Revision: 32.11
Other Devices in CIP Path: 1756-ENBT/A v 5.006
Code Sample
Stripped back to minimal
Additional context
Output from DEBUG logging:
The text was updated successfully, but these errors were encountered: