Files
motorBase/motorApp/AerotechSrc/doCommand.ab
T
2013-09-23 17:15:52 +00:00

148 lines
4.6 KiB
Plaintext
Executable File

HEADER
DEFINE cmdDONE 0
DEFINE cmdVELOCITY_ON 1
DEFINE cmdVELOCITY_OFF 2
DEFINE cmdHALT 3
DEFINE cmdSTART 4
DEFINE cmdPVT_INIT_TIME_ABS 5
DEFINE cmdPVT_INIT_TIME_INC 6
DEFINE cmdPVT1 7
DEFINE cmdPVT2 8
DEFINE cmdPVT3 9
DEFINE cmdPVT 10
DEFINE cmdABORT 11
DEFINE cmdSTARTABORT 12
DEFINE cmdSCOPEBUFFER 13
DEFINE cmdSCOPEDATA 14
DEFINE cmdSCOPESTATUS 15
DEFINE cmdSCOPETRIG 16
DEFINE cmdSCOPETRIGPERIOD 17
DEFINE cmdVar 45
DEFINE iarg1Var 46
DEFINE iarg2Var 47
DEFINE iarg3Var 48
DEFINE iarg4Var 49
DEFINE darg1Var 1
DEFINE darg2Var 2
DEFINE darg3Var 3
DEFINE darg4Var 4
DEFINE darg5Var 5
DEFINE darg6Var 6
DEFINE darg7Var 7
DEFINE darg8Var 8
DEFINE darg9Var 9
DEFINE numIArg 44
DEFINE numDArg 43
' Numerical values for first arg to scopedata()
DEFINE sd_PositionCommand 0
DEFINE sd_PositionFeedback 1
DEFINE sd_ExternalPosition 2
DEFINE sd_AxisFault 3
DEFINE sd_AxisStatus 4
DEFINE sd_AnalogInput0 5
DEFINE sd_AnalogInput1 6
DEFINE sd_AnalogOutput0 7
DEFINE sd_AnalogOutput1 8
DEFINE sd_DigitalInput0 9
DEFINE sd_DigitalInput1 10
DEFINE sd_DigitalOutput0 11
DEFINE sd_DigitalOutput1 12
DEFINE sd_CurrentCommand 13
DEFINE sd_CurrentFeedback 14
DEFINE sd_OptionalData1 15
DEFINE sd_OptionalData2 16
DEFINE sd_ProgramCounter 17
END HEADER
PROGRAM
DIM axis1Number AS Integer
DIM axis2Number AS Integer
DIM axis3Number AS Integer
DIM axis4Number AS Integer
DIM keepon as Integer
DIM iarg as integer
wait mode nowait
keepon = 1
WHILE keepon
IF IGLOBAL(cmdVar) = cmdVELOCITY_ON THEN
VELOCITY ON
ELSEIF IGLOBAL(cmdVar) = cmdVELOCITY_OFF THEN
VELOCITY OFF
ELSEIF IGLOBAL(cmdVar) = cmdHALT THEN
HALT
ELSEIF IGLOBAL(cmdVar) = cmdSTARTABORT THEN
START
ABORT @0 @1 @2 @3 @4
acknowledgeall
enable @0 @1 @2 @3 @4
keepon = 0
ELSEIF IGLOBAL(cmdVar) = cmdSTART THEN
START
keepon = 0
ELSEIF IGLOBAL(cmdVar) = cmdPVT1 THEN
axis1Number = IGLOBAL(iarg1Var)
PVT @axis1Number DGLOBAL(darg1Var), DGLOBAL(darg2Var) TIME DGLOBAL(darg3Var)
ELSEIF IGLOBAL(cmdVar) = cmdPVT THEN
axis1Number = IGLOBAL(iarg1Var)
axis2Number = IGLOBAL(iarg2Var)
axis3Number = IGLOBAL(iarg3Var)
axis4Number = IGLOBAL(iarg4Var)
if IGLOBAL(numIArg) = 1 then
PVT @axis1Number DGLOBAL(darg1Var), DGLOBAL(darg2Var) TIME DGLOBAL(darg3Var)
elseif IGLOBAL(numIArg) = 2 then
PVT @axis1Number DGLOBAL(darg1Var), DGLOBAL(darg2Var) @axis2Number DGLOBAL(darg3Var), DGLOBAL(darg4Var) TIME DGLOBAL(darg5Var)
elseif IGLOBAL(numIArg) = 3 then
PVT @axis1Number DGLOBAL(darg1Var), DGLOBAL(darg2Var) @axis2Number DGLOBAL(darg3Var), DGLOBAL(darg4Var) @axis3Number DGLOBAL(darg5Var), DGLOBAL(darg6Var) TIME DGLOBAL(darg7Var)
elseif IGLOBAL(numIArg) = 4 then
PVT @axis1Number DGLOBAL(darg1Var), DGLOBAL(darg2Var) @axis2Number DGLOBAL(darg3Var), DGLOBAL(darg4Var) @axis3Number DGLOBAL(darg5Var), DGLOBAL(darg6Var) @axis4Number DGLOBAL(darg7Var), DGLOBAL(darg8Var) TIME DGLOBAL(darg9Var)
end if
ELSEIF IGLOBAL(cmdVar) = cmdPVT_INIT_TIME_ABS THEN
PVT INIT TIME ABS
ELSEIF IGLOBAL(cmdVar) = cmdPVT_INIT_TIME_INC THEN
PVT INIT TIME INC
ELSEIF IGLOBAL(cmdVar) = cmdABORT THEN
axis1Number = IGLOBAL(iarg1Var)
axis2Number = IGLOBAL(iarg2Var)
axis3Number = IGLOBAL(iarg3Var)
axis4Number = IGLOBAL(iarg4Var)
if IGLOBAL(numIArg) = 1 then
ABORT @axis1Number
elseif IGLOBAL(numIArg) = 2 then
ABORT @axis1Number @axis2Number
elseif IGLOBAL(numIArg) = 3 then
ABORT @axis1Number @axis2Number @axis3Number
elseif IGLOBAL(numIArg) = 4 then
ABORT @axis1Number @axis2Number @axis3Number @axis4Number
end if
keepon = 0
ELSEIF IGLOBAL(cmdVar) = cmdSCOPEBUFFER THEN
SCOPEBUFFER IGLOBAL(iarg1Var)
ELSEIF IGLOBAL(cmdVar) = cmdSCOPEDATA THEN
iarg = IGLOBAL(iarg1Var)
if iarg = sd_PositionCommand then
DGLOBAL(darg1Var) = SCOPEDATA(PositionCommand, IGLOBAL(iarg2Var))
elseif iarg = sd_PositionFeedback then
DGLOBAL(darg1Var) = SCOPEDATA(PositionFeedback, IGLOBAL(iarg2Var))
elseif iarg = sd_CurrentFeedback then
DGLOBAL(darg1Var) = SCOPEDATA(CurrentFeedback, IGLOBAL(iarg2Var))
end if
ELSEIF IGLOBAL(cmdVar) = cmdSCOPESTATUS THEN
IGLOBAL(iarg1Var) = SCOPESTATUS(IGLOBAL(iarg1Var))
ELSEIF IGLOBAL(cmdVar) = cmdSCOPETRIG THEN
SCOPETRIG
ELSEIF IGLOBAL(cmdVar) = cmdSCOPETRIGPERIOD THEN
SCOPETRIGPERIOD IGLOBAL(iarg1Var)
END IF
IGLOBAL(cmdVar) = cmdDONE
DWELL 0.01
WEND
END PROGRAM