| axis.id | Axis id | No |
| axis.type | Axis type | No |
| axis.mode | supported mode, CSV and CSP, defaults CSV | Yes |
| axis.parameters | Additional params to motor record driver | No |
| axis.healthOutput | Ethercat entry for health output | No |
| axis.feedSwitchesOutput | Ethercat entry for fed switches | No |
| axis.feedSwitchesValue | Value to write to axis.feedSwitchesOutput. Defaults to 1 | No |
| axis.group | Add axis to group (group will be created if not exists) | No |
| axis.autoMode.modeSet | Ethercat entry drive mode write (set CSV,CSP,homing) | No |
| axis.autoMode.modeAct | Ethercat entry drive mode reading (set CSV,CSP,homing) | No |
| axis.autoMode.modeCmdMotion | Drive mode value for normal motion (written to axis.drvMode.modeSet when normal motion) | No |
| axis.autoMode.modeCmdHome | Drive mode value for when homing (written to axis.drvMode.modeSet when homing) | No |
| axis.features.blockCom | Block communication to axis | Yes |
| axis.features.allowSrcChangeWhenEnabled | Allow traj/enc source change when axis is enabled | No |
| axis.features.allowedFunctions.homing | Allow homing | No |
| axis.features.allowedFunctions.constantVelocity | Allow constant velocity | No |
| axis.features.allowedFunctions.positioning | Allow positioning | No |
| axis.autoEnable.enableTimeout | If defined, ecmc tries to auto-enable for a maximum enableTimeout seconds. | No |
| axis.autoEnable.disableTimeout | If defined, ecmc disables axis after idle (non busy) in disableTime seconds | No |
| axis.autoEnable.atStartup | Auto enable axis at ioc start, default False | No |
| axis.tweakDist | Tweak value (both ecmc interface and motor record tweak value) | No |
| epics.name | Axis name | No |
| epics.precision | Decimal count | No |
| epics.description | Axis description | No |
| epics.unit | Unit | No |
| epics.motorRecord.enable | Enable motor record | No |
| epics.motorRecord.description | This is MR | No |
| epics.motorRecord.fieldInit | Extra config for Motor record | No |
| epics.motorRecord.syncSoftLimits | Sync softlimits between motor and ecmc (default false) | No |
| drive.numerator | Fastest speed in engineering units | No |
| drive.denominator | I/O range for ECMC_EC_ALIAS_DRV_VELO_SET | No |
| drive.type | Stepper: 0. DS402: 1 (DS402 = servos and advanced stepper drives) | No |
| drive.control | Control word ethercat entry | No |
| drive.enable | Enable bit index in control word (not used if DS402) | No |
| drive.enabled | Enabled bit index in status word (not used if DS402) | No |
| drive.status | Status word ethercat entry | No |
| drive.setpoint | Velocity setpoint if CSV. Position setpoint if CSP | No |
| drive.reduceTorque | Reduce torque bit in drive control word | No |
| drive.reduceTorqueEnable | Enable reduce torque functionality | No |
| drive.brake.enable | | No |
| drive.brake.output | Ethercat link to brake output | No |
| drive.brake.openDelay | Brake timing parameter in cycles (default 1kHz) | No |
| drive.brake.closeAhead | Brake timing parameter in cycles (default 1kHz) | No |
| drive.reset | Reset (if no drive reset bit then leave empty) | No |
| drive.warning | Warning (if no drive warning bit then leave empty) | No |
| drive.error[0] | Error 0 (if no drive error bit then leave empty) | No |
| drive.error[1] | Error 1 (if no drive error bit then leave empty) | No |
| drive.error[2] | Error 2 (if no drive error bit then leave empty) | No |
| encoder.numerator | Scaling numerator example 360 deg/rev | No |
| encoder.denominator | Scaling denominator example 4096 ticks per 360 degree | No |
| encoder.type | Type: 0=Incremental, 1=Absolute | No |
| encoder.bits | Total bit count of encoder raw data | No |
| encoder.absBits | Absolute bit count (for absolute encoders) always least significant part of ‘bits’ | No |
| encoder.absOffset | Encoder offset in eng units (for absolute encoders) | No |
| encoder.mask | Mask applied to raw encoder value | No |
| encoder.position | Ethercat entry for actual position input (encoder) | No |
| encoder.control | mandatory only if ‘reset’ is used | No |
| encoder.status | mandatory only if ‘warning’ or ‘error’ are used | No |
| encoder.ready | Bit in encoder status word for encoder ready | Yes |
| encoder.source | 0 = Encoder value from EtherCAT hardware, 1 = Encoder value from PLC | No |
| encoder.reset | Reset | Yes |
| encoder.warning | Warning | Yes |
| encoder.error[0] | Error 0 | Yes |
| encoder.error[1] | Error 1 | Yes |
| encoder.error[2] | Error 2 | Yes |
| encoder.filter.velocity.size | Filter size for velocity | Yes |
| encoder.filter.velocity.enable | enable velocity filter | Yes |
| encoder.filter.position.size | Filter size for encoder value | Yes |
| encoder.filter.position.enable | enable encoder value filter | Yes |
| encoder.latch.position | Link to latched value. Used for some homing seqs | Yes |
| encoder.latch.control | Bit in encoder control word to arm latch. Used for some homing seqs | Yes |
| encoder.latch.status | Bit in encoder status word for latch triggered status. Used for some homing seqs | Yes |
| encoder.latch.armCmd | Value in dec to arm latch/touch probe to write to encoder.control | Yes |
| encoder.latch.armBits | Bit size of encoder.latch.armCmd | Yes |
| encoder.primary | Use this encoder as primary (for control) | Yes |
| encoder.useAsCSPDrvEnc | Use this encoder as CSP drive encoder (ecmc controller enabled in CSP) | Yes |
| encoder.allowOverUnderFlow | Allow over/under flow of encoder raw counter (default true). Set to false for linear encoders. | Yes |
| encoder.homing.type | Homing sequence type | No |
| encoder.homing.position | Position to reference encoder to | No |
| encoder.homing.velocity.to | Velocity to cam/sensor (used for some homing seqs) | No |
| encoder.homing.velocity.from | Velocity from cam/sensor (used for some homing seqs) | No |
| encoder.homing.acceleration | Acceleration during homing | No |
| encoder.homing.deceleration | Deceleration during homing | No |
| encoder.homing.refToEncIDAtStartup | At startup then set the start value of this encoder to actpos of this encoder id | No |
| encoder.homing.refAtHome | If homing is executed then set position of this encoder | No |
| encoder.homing.tolToPrim | If set then this is the max allowed tolerance between prim encoder and this encoder | No |
| encoder.homing.postMoveEnable | Enable move after successfull homing | No |
| encoder.homing.postMovePosition | Position to move to after successfull homing | No |
| encoder.homing.trigg | EtherCAT entry for triggering drive internal homing seq (seq id 26) | No |
| encoder.homing.ready | Ethercat entry for readinf drive internal homing seq ready (seq id 26) | No |
| encoder.homing.latchCount | latch number to ref on (1=ref on first latch) | No |
| encoder.delayComp.time | Delay time between set and act [cycles] | No |
| encoder.delayComp.enable | enable (defaults to 1 if not set) | Yes |
| encoder.lookuptable.filename | Load correction lockuptable file. Value will be subtracted from encoder value. | Yes |
| encoder.lookuptable.enable | Enable correction table (default enabled if loaded). | Yes |
| encoder.lookuptable.scale | Scale applied to LUT (if you want value to be added then set scale to -1.0) | Yes |
| encoder.lookuptable.range | LUT modulo value (Lut should cover the range 0..range) | Yes |
| controller.Kp | Kp proportional gain | Yes |
| controller.Ki | Ki integral gain | Yes |
| controller.Kd | Kd derivative gain | Yes |
| controller.Kff | Feed forward gain | Yes |
| controller.deadband.tol | Stop control if within this distance from target for the below time | Yes |
| controller.deadband.time | Deadband time filter | Yes |
| controller.limits.minOutput | Minimum controller output | Yes |
| controller.limits.maxOutput | Maximum controller output | Yes |
| controller.limits.minIntegral | Minimum integral output | Yes |
| controller.limits.maxIntegral | Maximum integral output | Yes |
| controller.inner.Kp | Kp for when close to target | Yes |
| controller.inner.Ki | Ki for when close to target | Yes |
| controller.inner.Kd | Kd for when close to target | Yes |
| controller.inner.tol | Distance from target for when inner PID params will be used, defaults to atTarget tol | Yes |
| trajectory.type | Default 0 = trapetz, 1 = S-curve (ruckig) | No |
| trajectory.source | 0 = take trajectory setpoint from axis traj object, 1 = trajectory setpoint from plc | No |
| trajectory.axis.velocity | Default velo for axis | No |
| trajectory.axis.acceleration | Default acc for axis | No |
| trajectory.axis.deceleration | Default dec for axis | No |
| trajectory.axis.emergencyDeceleration | Deceleration when axis in error state | No |
| trajectory.axis.jerk | Default jerk for axis | No |
| trajectory.jog.velocity | Default velo fro JOG (motor record) | No |
| trajectory.modulo.range | Modulo range 0..360 | No |
| trajectory.modulo.type | Modulo type | No |
| input.limit.forward | Ethercat entry for low limit switch input, | No |
| input.limit.forwardPolarity | Polarity of forward limit switch | No |
| input.limit.backward | Ethercat entry for high limit switch input | No |
| input.limit.backwardPolarity | Polarity of forward limit switch | No |
| input.home | Ethercat entry for home switch | No |
| input.homePolarity | Polarity of home switch | No |
| input.interlock | Ethercat entry for interlock switch input | No |
| input.interlockPolarity | Polarity of interlock switch | No |
| input.analog.interlock | Ethercat entry for analog interlock | No |
| input.analog.interlockPolarity | 0: High value is bad, 1 = Low value is bad | No |
| input.analog.rawLimit | Analog raw limit | No |
| input.analog.enable | Enable analog interlock default true if analog.interlock is set | No |
| softlimits.enable | Enable soft limits | No |
| softlimits.forward | Soft limit position fwd | No |
| softlimits.forwardEnable | Soft limit position fwd enable | No |
| softlimits.backward | Soft limit position bwd | No |
| softlimits.backwardEnable | Soft limit position bwd enable | No |
| monitoring.lag.enable | Enable position lag monitoring (following error) | No |
| monitoring.lag.tolerance | Allowed tolerance | No |
| monitoring.lag.time | Allowed time outside tolerance | No |
| monitoring.target.enable | Enable at target monitoring (needs to be enabled and configured if using motor record) | No |
| monitoring.target.tolerance | Allowed tolerance | No |
| monitoring.target.time | Filter time inside tolerance to be at target | No |
| monitoring.velocity.enable | Enable velocity monitoring | No |
| monitoring.velocity.max | Allowed max velocity | No |
| monitoring.velocity.time.trajectory | Time allowed outside max velo before system init halt | No |
| monitoring.velocity.time.drive | Time allowed outside max velo before system disables drive | No |
| monitoring.velocityDifference.enable | Enable velocity diff monitoring (velo set vs velo act) | No |
| monitoring.velocityDifference.max | Allowed max difference | No |
| monitoring.velocityDifference.time.trajectory | Time allowed outside max diff velo before system init halt | No |
| monitoring.velocityDifference.time.drive | Time allowed outside max diff velo before system disables drive | No |
| monitoring.stall.enable | Enable stall monitoring. Attarget must be enabled for this functionallity | No |
| monitoring.stall.time.timeout | If not at target after “timeout” cycles after trajectory generator is ready then drive will disable | No |
| monitoring.stall.time.factor | Measures duration of last motion command (busy high edge to busy low edge). The new timeout will be defined as this duration multiplied by this factor. The timeout finaly used for stall detection will be the longest (of time.timeout and calculated from time.factor). | No |
| plc.enable | Enable axis plc | No |
| plc.externalCommands | Allow axis to inputs from PLC | No |
| plc.file | File with plc code | No |
| plc.code[0] | Enable axis if one of master axes is enabled | No |
| plc.code[1] | calculate set pos for physical axis | No |
| plc.velocity_filter.encoder.enable | Filter enable | No |
| plc.velocity_filter.encoder.size | Filter size | No |
| plc.velocity_filter.trajectory.enable | Filter enable | No |
| plc.velocity_filter.trajectory.size | Filter size | No |
| plc.filter.velocity.enable | Filter enable | Yes |
| plc.filter.velocity.size | Filter size | Yes |
| plc.filter.trajectory.enable | Filter enable | Yes |
| plc.filter.trajectory.size | Filter size | Yes |