I ran into a similar issue earlier this year on a project with a CPU315-2DP processor. When the memory became corrupted, the plc shut off ALL communication and was basically dead in the water. The only fix was to replace the MMC card with a new one (or find a piece of equipment capable of clearing the MMC memory) and reload the program.
I do not understand why Siemens does not provide a method for clearing out the memory to allow an opportunity to fix the problem. I do understand the fail safe mode of faulting when their is a problem with the PLC memory but at least allow a guy to clear the memory, re-establish communication and fix the problem.
Here is the real kicker, there was nothing wrong with the program! It appears that when I loaded the program using the ethernet interface, the program would get corrupted. When I loaded the program serially, everything worked fine. I spent a lot of time with tech support trying to figure out what was going on with no real answer. If I even tried to update a particular DB, FC or FB using ethernet, I would crash the PLC 50% of the time. I even upgraded to the latest SP and hot fixes per tech support with no difference.
I wound up going through several MMC cards until I quit modifying the program using ethernet(lots of egg on my face too). I could monitor the program just fine using ethernet but had to do all modifications serially. What a pain that was because the PLCs were quite a distance away.
Still to this day I have no idea what the problem was nor does tech support. I have to assume there may be some sort of conflict between various PLC programming software packages on my laptop computer but that is just a guess on my part.