This page covers the older classic motion configuration flow that is still used
in many existing IOCs and in the examples/ESS/ tree.
For new configurations, prefer the YAML-based workflow with
loadYamlAxis.cmd. The legacy flow is mainly relevant when:
.ax, .vax, and .sax filesconfigureAxis.cmd
configure one physical axis from a classic axis fileconfigureVirtualAxis.cmd
configure one virtual axis from a classic virtual-axis fileapplyAxisSynchronization.cmd
apply synchronization logic from a classic sync fileconfigureSlave.cmd
older combined slave setup pathapplySlaveConfig.cmd
apply a predefined slave configuration.ax
physical axis configuration.vax
virtual axis configuration.sax
synchronization between axes, often used for slit, mirror, or simple gear
structuresTypical startup pattern:
${SCRIPTEXEC} ${ecmccfg_DIR}configureAxis.cmd, "CONFIG=./cfg/linear_1.ax"
${SCRIPTEXEC} ${ecmccfg_DIR}configureVirtualAxis.cmd, "CONFIG=./cfg/center.vax"
${SCRIPTEXEC} ${ecmccfg_DIR}applyAxisSynchronization.cmd, "CONFIG=./cfg/center.sax"
The examples/ESS/ tree is the main reference for classic motion startup.
Typical patterns there include:
configureAxis.cmd.ax + .vax + .saxapplyAxisSynchronization.cmdconfigureSlave.cmd and
applySlaveConfig.cmdRepresentative examples:
examples/ESS/mcu1025.scriptexamples/ESS/mcu1024_slit/mcu1024.scriptexamples/ESS/mcu1025_slit/mcu1025.scriptexamples/ESS/mcu1021_coupler_simplegear/mcu1021_coupler.scriptexamples/ESS/mcu1025_slitdemo/mcu1025.scriptThe current preferred workflow is:
addSlave.cmd and applyComponent.cmdloadYamlAxis.cmdloadYamlPlc.cmd or loadPLCFile.cmdThe legacy motion flow is still valid, but compared to YAML it has these limitations:
When updating an older IOC, do not try to migrate everything at once.
A practical order is:
applyComponent.cmd where possible.ax to YAMLIf the IOC is stable and there is no strong need for migration, it is often better to keep the classic motion part as-is and only document that it is a legacy configuration.