4.3.8. Power control
Current consumption reduction
Controller has an option to set current when idle to reduce power consumption. This mode is active by default. It is widely used to
lower stepper motor heating in hold mode while keeping position maintenance accuracy. Hold current is set as a percentage of nominal
winding current. A time delay after which current will be reduced is also defined. Current reduction mode can be disabled. To set
current reduction see set_power_settings function in Programming guide or XILab Power consumption settings page. Nominal engine
current is set by set_engine_settings function (see Programming guide) or on Settings of kinematics (Stepper motor) page in XILab.
A reasonable hold current level is 40-70%. This will lower power consumption 2-4 times, while keeping holding force sufficient. A
reasonable time to reduce power lies in 50-500 ms range. This is a sufficent time for mechanical oscillations, which might knock the
system out of the hold position, to subside.
The motor power shutdown
There is also a power shutdown mode to reduce power consumption of a stepper motor. It is mostly used to stop wasting power on
position hold, when no movements are performed for a long time. This mode is on by default, but can be disabled by the user. Time
from motor stop to power off is set in seconds. A reasonable time is 3600 seconds (one hour). To set power off options see
set_power_settings function in Programming guide or XILab Power consumption settings settings page.
Time delay calculation specifics
All timeouts work in the follwing way: on each transition to stop state time is saved with millisecond accuracy. After certain set time is
elapsed depending on PowerOff/CurrentReduce enabled state a motor will reduce winding current or turn its power off. All settings can
be changed online. For example, if you increase PowerOff timeout value after the poweroff has already happened then windings will get
powered on and a PowerOff function will activate after the new delay. Timeout countdowns cancel after each movement start.
Jerk free function
Sometimes smooth motor winding current changes are required to reduce vibrations of a mechanical system. That's why a Jerk free
option is provided, which allows one to set current ramp-up time from zero to nominal value with millisecond precision. When this
option is turned on all changes to stabilization current or winding powerdown will happen with smooth current increase or decrease. For
example, if jerk free time is set to 100ms and the controller needs to reduce current to 50% it will be reduced over the time of 50ms
(because 100ms are required to reduce current from full to zero). To setup Jerk free see set_power_settings function in Programming
guide or XILab Settings of kinematics (Stepper motor) page.
Smooth current change function activates on any change in the amplitude of the winding current, for example on nominal hold current
change. In this case current change speed is calculated based both on older and newer hold currents, whichever is higher. If controller
needs to turn off the motor windings then current is gradually ramped down, then power output circuits are disconnected. If controller
needs to power up the windings, then they are powered with zero current which increases up to nominal current.
There are exceptions to the rule, when the current is immediately reduced to zero even if Jerk free option is active. These are the
critical errors/Alarm state (see Critical parameters) and controller reset events on firmware update. These events are rare and should
not happen during normal stage operation.
A reasonable Jerk free time is 50-200ms, which merely leads to low-energy mechanical oscillations on 3-10 Hz frequencies which are
significantly lower than noise from other common sources. Higher Jerk free times will lead to constant delays when current is switched
on or off.