Code:
;=============================================================================
                           MainStage
;=============================================================================
;Do gather if commanded (uncomment and recompile for debugging purposes)
;IF Aux11Key || ((SV_MPU11_ABS_POS_2 < SV_MACHINE_PARAMETER_45) && (SV_MACHINE_PARAMETER_45 < -1000)) THEN (Aux11KeyPD)
;IF Aux11KeyPD  THEN (SV_TRIGGER_PLOT_DUMP), SET SV_STOP
;IF Aux11Key || OUT25 THEN (SV_TRIGGER_PLOT_DUMP)

IF SV_PROGRAM_RUNNING THEN (ProgramRunning)

;cnctch.mac
IF OnAtPowerUp_M THEN RequestedLocation_W = CurrentTurretPosition_W
IF TRUE THEN TurretTimer = 700, ReversingTimer = 1500
IF M6 THEN (M6PD), SET DoingTurretIndex_M
IF M6PD THEN RequestedLocation_W = SV_TOOL_NUMBER

IF DoingTurretIndex_M && ((SV_TOOL_NUMBER < 1) || (SV_TOOL_NUMBER > 8))
  THEN SET OtherFault_M, FaultMsg_W = INVALID_TOOL_NUMBER, RST DoingTurretIndex_M, 
  RequestedLocation_W = CurrentTurretPosition_W, SET ToolChangeComplete

;code to calculate distance to move
IF CurrentTurretPosition_W > RequestedLocation_W THEN PositionsToMove_W = CurrentToolPosition_W - RequestedLocation_W
IF CurrentTurretPosition_W < RequestedLocation_W THEN PositionsToMove_W = (CurrentTurretPosition_W + 8) - RequestedLocation_W ;this assumes the PLC can handle ELSE..
IF TRUE THEN DistanceToMove_W = PositionsToMove_W * 45 ; This may need a further multiplication if we're not going to be moving in degrees (does this need extra movement to overshoot new position before reversing?)
;code to rotate A-axis require distance

;code to reverse A-axis

IF TRUE THEN SET ToolChangeComplete


IF !SV_PROGRAM_RUNNING THEN RST M6, RST DoingTurretIndex_M, RequestedLocation_W = CurrentTurretPosition_W

IF !M6 THEN RST ToolChangeComplete, RST TurretTimer
This is the barebones of what should be needed I think.
It still needs the required code to actually move the A-axis.
Also see the notes I've added.
Having scanned through the manual, I can't see how, or even if, you can move an axis via the PLC.