2813
Drive Not Responding Errors on Closed Loop SERCOS Controllers
XL200

On SERCOS controllers, the change in encoder count is sent to the DSP from the 80386. The 80386 reads the position from the SERCOS ring and converts that data to encoder counts. On other controllers, the encoders are hardwired the controller and DSP reads the encoder count via specialized encoder chips.

The 80386 to DSP communication on the DSP side is done via DMA. The data is sent one 16bit word at a time. The change in encoder count is sent to the DSP as a 32bit double word value.

The Rev C hardware has one input, 24, that has an interrupt tied to it. The Rev D hardware has three inputs that have interrupts tied to them. We use these inputs for hole detect controllers to capture the encoder count on an interrupt when the input turns on or off. These hole count interrupts are active all of the time. The controller simply ignores the information if it has no use for it.

The hole count interrupt was using the SERCOS encoder count change directly when it read the encoder count and then cleared the SERCOS encoder count change to avoid counting it more than once. However, this opened up the possibility that it could get cleared in the middle of the DMA transfer. If the change was a small negative number, clearing the least significant word caused the value to become a large negative number equivelent. For example 0xFFFFFF(-1) becomes 0xFFFF0000(-65536)

When the loop tries to correct such a large error it results in the analog maxing out. This is reported as a Drive Not Responding error.

This error was much more likely to occur on a Continuous press controller that uses input 22 (Feed OK) rather heavily. Input 22 is one of thre inputs that has an interrupt tied to it.

Model Version Released
XL2CL 4.33.00 11/10/2015
XL2CL 3.70.00 11/10/2015