motion

How to use this section

Start here if you want to configure axes, synchronization, homing, motor record behavior, or motion-related PLC logic.

If you want the preferred meaning of terms such as axis, axis PLC, and legacy motion, see Terminology.

For new configurations, the preferred path is YAML-based:

  1. configure slaves with addSlave.cmd and applyComponent.cmd
  2. load axes with loadYamlAxis.cmd
  3. load PLC logic with loadYamlPlc.cmd or loadPLCFile.cmd

If you are maintaining an older IOC based on .ax, .vax, and .sax files, go directly to legacy motion.

Common tasks

New axis bring-up

  1. motion best practice
  2. yaml configuration
  3. drive modes CSV, CSP, CSP-PC
  4. scaling
  5. direction
  6. homing
  7. motor record if the EPICS motor record is used

Synchronization and axis logic

  1. axis PLC
  2. yaml configuration
  3. motion best practice

Existing IOC with classic motion files

  1. legacy motion
  2. scaling
  3. direction
  4. homing
  5. motion knowledge base

Runtime tuning and diagnostics

  1. ecmc_cfg_tool
  2. motion knowledge base
  3. tuning knowledge base

Configuration Warnings

When an axis is validated before runtime, ecmc can write warnings to the configuration log buffer. These warnings are intended to catch configurations that are legal but likely to behave badly. They do not block startup by themselves, but they should be reviewed before the IOC is put into service.

Examples include:

  • enabled monitors with a zero limit or tolerance, such as at-target, position-lag, max-velocity, velocity-difference, or controller-output monitoring
  • controller Kp equal to zero when the ecmc position controller is used
  • controller settings configured in pure CSP, where the drive closes the position loop and ecmc controller parameters are not used
  • controller deadband larger than the at-target tolerance
  • requested target, maximum, or homing velocities that exceed the integer CSV velocity-setpoint range after scaling

For CSV axes with an integer velocity setpoint, a small at-target tolerance combined with a low Kp can also cause a warning. Close to the target, the position controller output is converted to the drive velocity setpoint. If Kp * monitoring.target.tolerance * abs(drive.denominator / drive.numerator) is below about 0.5 raw counts, the velocity setpoint may round to zero. The axis can then stop near the target because the remaining error no longer produces an effective velocity command. If stall monitoring is enabled, this can also result in ERROR_MON_STALL.

Mitigate this by increasing monitoring.target.tolerance, increasing the active Kp, or using suitable inner controller parameters for final positioning. This specific rounding warning applies to CSV axes with integer velocity setpoints. See also tuning and RT logger diagnostics.

Key references

Topics