ecmccfg

A configuration framework for ECMC Motion Control Module for EPICS.

Start here

Use this manual as follows:

  1. Start with Quickstart if you want to bring up one axis with the current YAML-based workflow.
  2. Go to Examples if you want a reusable starting point from examples/PSI/best_practice/.
  3. Check Terminology first if you want the canonical meaning of terms such as axis, axis PLC, component, plugin, and master-less.
  4. Go directly to the section below if you already know what you want to configure.

Common tasks

For new configurations, the normal path is:

  1. require ecmccfg
  2. add slaves with addSlave.cmd
  3. apply hardware-specific setup with applyComponent.cmd
  4. load axes with loadYamlAxis.cmd
  5. load PLCs with loadYamlPlc.cmd or loadPLCFile.cmd
  6. add optional features such as data storage or plugins
  7. switch to runtime with setAppMode.cmd or finalize.cmd

Minimal startup skeleton:

require ecmccfg <VERSION>

${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "HW_DESC=EK1100"
${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "HW_DESC=EL7062"
${SCRIPTEXEC} ${ecmccfg_DIR}applyComponent.cmd "COMP=Motor-Generic-2Phase-Stepper, CH_ID=1, MACROS='I_MAX_MA=1000, I_STDBY_MA=100, U_NOM_MV=24000, R_COIL_MOHM=1230,L_COIL_UH=500'"

${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/ax1.yaml, ECMC_TMPDIR=/tmp/"
${SCRIPTEXEC} ${ecmccfg_DIR}loadPLCFile.cmd, "FILE=./cfg/main.plc, SAMPLE_RATE_MS=100"

For the detailed step-by-step breakdown of the startup structure, see introduction.

Preferred entry points

  • loadYamlAxis.cmd: preferred axis configuration path
  • loadYamlPlc.cmd: preferred structured PLC path
  • loadPLCFile.cmd: classic PLC-file path
  • applyComponent.cmd: preferred drive and encoder component setup
  • configureAxis.cmd, configureVirtualAxis.cmd, and applyAxisSynchronization.cmd: still supported, but mainly legacy compared to the YAML-first flow

Main sections

Topics