XL220CL
4.101.0
8/21/2025

The Y-Axis State Machine was getting "corrupted" when positioning any Axis higher than 3. The machine index stored in the state machine was getting corrupted which ultimately resulted in Axes with ID's higher than 2 not positioning.

What was actually happening is that the size of the Array of state machines was defined with one literal variable which was too small. The array bounds checking was being done with the correct literal. Any Axes with an ID higher than 2 was using memory that it didn't own, which resulted in it eventually being "corrupted" by the actual owner.

This has been resolved.

Sercos errors for all drives are cleared in phase 2 during the phase run up to phase 4.

Once the system has gotten to phase 4 and errors need to be cleared, it is most likely to get the line back up to full operation as quickly as possible, not for troubleshooting. For this reason a request for Error Clear will cause a new phase run up to clear errors in all drives and resolve any other potential state machine issues.

Some Manufacturers have an external power enable circuit to their SERCOS drives to enable power. This prevents the Cyclical Interrupt from being installed, which traps the SERCOS state machine in a place where it does not do its normal processing.

In this state, I have added checking to allow drive settings to be modified and drive errors to be cleared. The drive status is also modified to indicate the drive is not ready and is waiting for Cyclical Data to be enabled.

Closed Loop SERCOS controllers could get stuck in Coast mode if the Drive fails to enable when entering the run mode. Among other reasons, this can happen if the SERCOS ring is stuck in phase 3 or lower.

It gets detected that the drive is unable to be enabled. However, the code was lacking the trigger to satisfy the condition to escape the loop that was waiting for the drive to be under torque.

When Two Encoder Selective Closed Loop was configured, the controller did not output any analog voltage for the feeder.

All of the calculations for the voltage were correct but the value was not being written to the analog port.

This has been resolved.

When Selective Two Encoder Closed Loop was enabled, the setup, Enable Feed Forward was still created but it was not visible. This opened up the possibility for the Selective Two Encoder Closed Loop to get disabled.

The fact that it was created opened up a potential issue for controllers with Eclipse that had old settings backed up. If the controller was ever configured without the Selective Two Encoder Closed Loo and the settings had been backed up, the setup could be downloaded and then disable the Feed Forward settings and functionality.

This issue has been resolved. When Selective Two Encoder Closed Loop is configured, the problem setup is disabled and the correct values are forced into the setting.

I have been unable to duplicate the F37 Excessive Position Command Value Difference fault that has been occuring in the field. The fault seems to happen most often on the first drive enable or move after a power cycle. Once manually enabled, the drives seem to function correctly.

Under the theory that the drive is intermittently failing to remember the prior position command properly on a Power Cycle, the follwing change has been made.

While the drive is disabled, the Command Position is updated on everly cycle time with the current axis position, ensuring that there is no significan't jump when the drive gets enabled.

Home Sensor Detection has been an issue at times The Die direction is chosen based on the initial state of the home sensor and up until now, the search for the home sensor was based on its current state rather than the expected transition.

The problem this change solves is to better deal with home sensors that have a small position sensing window. If the Referencing Velocity is too high or the acceleration is too low, the die can coast beyond the sensor and turn back off. This violated an assumption that was critical to the Homing Algorithm operation.

For example, if the die was returning to the home sensor and the sensor turned ON, the die would stop. If the die coasted beyond the sensor, the next move to move forward off the sensor would terminate before any move took place, because the sensor was already OFF. The next move, looking for an ON would then reverse the die into the overtravel’s looking for an ON state that was never going to come.

Now that we have changed the routine to look for a specific transition, ON to OFF or OFF to ON, the prior example will no longer be a problem. The die will return home looking for an OFF to ON transition, which it will find. Even though the die has coasted beyond the sensor, when it moves forward it will be looking for an ON to OFF transition. It will move forward until it see the OFF to ON transition and continue moving until the ON to OFF transition occurs.

Higher Referencing speeds and lower accelerations may now be used, and the homing routine can still function correctly, provided the die does not coast into an overtravel.

There is a limit to this new method. The home sensor inputs are debounced at 20msec. In order for the new routine to work properly, when searching for the home sensor, the sensor must be ON or OFF for a minimum of 20msec or the transitions may not be sensed.

A divide by zero error (C0000000) would occur when running a part with a Lock Size of 0.000".

This condition will now be tested for and will result in an error message indicating Lock Sizes must ne non-zero.

The E-Stop and the System Ready inputs (on an OL) are now required to Enable, Jog, Position, Reference to Home Switch ...etc. In addition, if the system loses the E-Stop or System Ready, the Multi-Axis drives will now also be disabled.

Two new options have been added to the MODBUS interface.

Requesting a Field Bus Reset will reset any present Field Bus, SERCOS or EtherCAT at the moment, back to its full operational state. Errors are cleared during the reset.

Requesting all Drives to be Disabled does what it says.

These options are available in MODBUS Version Level 1.30. More detailed documentation can be sources in the MODBUS Spec.