Two motors were failing with errors: one motor returned checksum errors after program download, the other motor was faulting as “overtemperature” while cold.
The root cause was an analog control in a user program that continuously issued a G command for 2 years. This caused a recalculation of trajectory and pinged current excessively forever. (The effect is similar to softly, repeatedly tapping a glass window with a hammer until one day it finally shatters.)
The checksum error was due to board breakdown, which resulted in common-ground noise. The overtemperature error was due to fatigue failure of the current-sense resistor. Both were caused by a WHILE LOOP with an update to the PT and G commands.
The solution was to rewrite the code to only issue a G command upon a dead-band offset change in commanded analog.