Position Maintenance in the 6K works a bit differently than in previous generation products. First of all, there is no encoder mode. All distances are always programmed in motor steps, not encoder steps. In this case, Position Maintenance simply compares actual position to command position at the end of the move. If they do not agree, a small correction move will be initiated. Nothing is done during the move to ensure the move has been completed.
Here are the steps to setting up Position Maintenance Mode.
Step 1: Position Maintenance only works in stepper mode. Make sure AXSDEF is set to 0 which is the Step and Direction Mode. This command is axis specific.
Step 2: The encoders are not defaulted to be enabled in stepper mode. Enable the encoder with ENCCNT command. This command is axis specific.
Step 3: Encoder resolution and drive resolution must be set in order for this feature to function properly. Set the ERES command to the Encoder resolution and the DRES command to the drive resolution. These commands are axis specific.
Step 4: Enable Position maintenance with the EPM command. This command is axis specific.
The following commands affect the performance of Position Maintenance:
EPM: This command enables position maintenance mode. When position maintenance mode is enabled, the actual end of move position is compared to the desired move position. If there is a difference between actual and desired position that is greater than the position maintenance deadband (EPMDB), a correction move will be generated to adjust for the discrepancy. The position error can be observed with the TPER command. Do not mistake position maintenance for true servoing. Position maintenance is only invoked at the end of a move, where it continually monitors the position and corrects for position errors. Servoing takes place throughout the entire move, making adjustments on-the-fly.
If position maintenance is enabled and the motor drifts, check that the encoder is connected properly.
EPMDB: The position maintenance deadband (EPMDB) command establishes the maximum encoder step error that is allowed at the end of a move. All EPMDB values entered are in motor steps. At the end of a move, if position maintenance is enabled (EPM1), the difference between the actual encoder count and the desired encoder step move distance is continually monitored. Should the difference be greater than the position maintenance deadband, a correction move will occur. This value also determines when the indexer considers itself in position. The status bit that reflects in position on a specific axis will not be set until the actual encoder count falls within the deadband. Bit 19 of the axis status register reflects whether the axis is within the deadband. The TAS command can be used to get the axis status response.
EPMV: The Position Maintenance Maximum Velocity (EPMV) command establishes the maximum velocity for any position maintenance correction move. Velocities outside the valid range are flagged as an error, with a message *INVALID DATA-FIELD X, where X is the field number. When an invalid velocity is entered the previous velocity value is retained. If scaling (SCALE) is not enabled, the velocity value is entered in motor revs/sec; this value is internally multiplied by the drive resolution (DRES) value to obtain a velocity value in motor steps/sec for motion calculations.
Scaling: If scaling (SCALE) is enabled, the EPMV command value is entered in user units/sec and is internally multiplied by the velocity scaling factor (SCLV) to convert user units/sec to motor steps/sec. The velocity value may be truncated if the value entered exceeds the velocity resolution at the given scaling factor. For further discussion on velocity scaling, refer to the SCLV command description.
EPMUPD: The Position Maintenance update rate specifies the time between position error calculations. The lower the value the faster the position maintenance works, at the cost of program execution time.
NOTE: EPMUPD0 will degrade processor performance by 50% on a four axis stepper system, and could cause dithering on some applications. EPMUPD0 is not recommended for this reason.