Your description of the communications beginning to work again after a keyswitch cycle suggests that the controller is experiencing a buffer overflow.
You will probably find that the logic executes a message instruction every 2 seconds without considering whether the previous message instruction has completed successfully or unsuccessfully. In the A-B instruction sets, we call these status indications the /DN and /ER bits of the message control block.
This can work if there are never any interruptions or failures on the network, but quickly gets backed up if there's a failure or timeout or retry. The logic just keeps on triggering MSG instructions and eventually the buffer that the PLC controller is holding them in while trying to deal with the active ones that are not completing gets filled up.
If you want to investigate the issue further, please post another thread with more details about the controller, the network, and the program.