INTERFACE
USEPACKAGE CAM;
USES dGlobal,FB_Lib;
PROGRAM pAxis1Ctrl;
VAR_GLOBAL
instFBAxis1Enable : FBAxisEnableCtrl;
instFBAxis1ManualCtrl : FBAxisManualCtrl;
instFBAxesCammingCtrl : FBAxesCammingCtrl;
END_VAR
END_INTERFACE
IMPLEMENTATION
PROGRAM pAxis1Ctrl
instFBAxis1Enable(
enable := gboAlwaysOn
,axisEnable := gboAxesEnable
,toAxis := Axis_1
// ,busy =>
// ,axisCyclicInterface =>
// ,axisVaild =>
,axisEnabled => gboAxis1Enabled
);
instFBAxis1ManualCtrl(
enable := gboAlwaysOn
,toAxis := Axis_1
,manualMode := gboAlwaysOn
,axisHoming := gboAxis1HomingStart
// ,axisToHomePosition := 723
// ,axisJogPOS := 0
// ,axisJogNEG := 0
// ,relPositioningStart := 0
,absPositioningStart := gboAxis1MoveAbs
,axisMovingExecute := gboAxis1MoveVelocity
,axisStop := gboAxis1Stop
,sManualMotionData := gboAxis1ManualDataType
,BackTohomePositon := 0.0
,swLimitReqActive := 1
,swLimitMinusPosition := -100000000.0
,swLimitPlusPosition := 100000000.0
// ,busy =>
// ,vaild =>
// ,manualModeActive =>
// ,axisBackToPositionActive =>
// ,axisJoggingActive =>
// ,axisJoggingPOSActive =>
// ,axisJoggingNEGActive =>
// ,axisRelPositioningActive =>
,axisAbsPositioningActive => gboAxis1MoveAbsActive
,axisPositioningDone => gboAxis1MoveAbsDone
,axisMovingActive => gboAxis1MoveVelocityActive
// ,axisBackToPositionDone =>
// ,axisInStandStill =>
// ,axisSwLimitState =>
);
gboAxis1ManualDataType.r64homePosition := 0;
// gboAxis1ManualDataType.r64absPositioningPos := 2000000;
// gboAxis1ManualDataType.r64absPositioningVel := 20000;
gboAxis1ManualDataType.r64moveVelocity := gboAxis1MoveVelocity_Velocity;
gboAxis1ManualDataType.sAccelJerk.r64positiveAccel := 10000;
gboAxis1ManualDataType.sAccelJerk.r64positiveAccelJerk := 20000;
gboAxis1ManualDataType.sAccelJerk.r64negativeAccel := 10000;
gboAxis1ManualDataType.sAccelJerk.r64negativeAccelJerk := 20000;
gboAxis1ActualVelocity := Axis_1.motionStateData.actualVelocity;
gboAxis1ActualPosition := Axis_1.positioningState.actualPosition;
instFBAxesCammingCtrl(
enable := gboAlwaysOn
,toMaster := VirtualAxis
,toAxis := Axis_1
,toCam := Cam_1
,masterMode := ABSOLUTE
,slaveMode := ABSOLUTE
,cammingMode := CYCLIC
,synchronizingMode := ON_MASTER_POSITION
,syncOffMode := IMMEDIATELY
,syncPositionMaster := 0.0
,enableCammingSync := gboEnableCamming
,disableCammingSync := gboDisableCamming
// ,busy =>
// ,axisVaild =>
,axisSynced => gboAxis1Synced
);
IF gboAxis1MoveVelocity AND gboAxis1MoveVelocityActive THEN
gboAxis1MoveVelocity := FALSE;
END_IF;
IF gboAxis1MoveAbs AND (gboAxis1MoveAbsActive OR gboAxis1MoveAbsDone) THEN
gboAxis1MoveAbs := FALSE;
END_IF;
IF Axis_1.motionStateData.motionState = STANDSTILL THEN
gboAxis1Stop := FALSE;
END_IF;
END_PROGRAM
END_IMPLEMENTATION