Mats-
See below. The black text is what exists. The red is what I am looking at adding. Can you help confirm if this will work?
!***********************************************************
!
! Procedure Operate
!
! This routine executes one operation. It pops one
! operation and execute all its targets and actions.
! Before moving towards every first target in the
! operation, the robot will go to a intermediate position.
!
! Arguments:
! IN:
! pm_wadescr WorkArea
!
!***********************************************************
PROC Operate(VAR pm_wadescr WorkArea)
VAR pm_operationdata Op;
VAR pm_targetdata Tgt;
VAR pm_actiondata Act;
VAR bool FirstTgtInOp:=TRUE;
VAR string sWAName;
VAR num nPallet1Found;
VAR num nInfeeder1Found;
VAR num nOutfeeder1Found;
VAR num nOffsetXFromPLC;
VAR num nOffsetYFromPLC;
VAR num nOffsetZFromPLC;
! check which work area
sWAName := PmGetWaName (WorkArea);
! defines pallet as current work area
nPallet1Found := StrMatch(sWAName, 1, “Pallet1”);
! defines infeeder as current work area
nInfeeder1Found := StrMatch(sWAName, 1, “Infeeder1”);
PmGetOperation WorkArea, Op;
WHILE PmGetTarget(WorkAreaOpHandle:=Op.OpHandle,Tgt) DO
! closes up tool when work area is pallet
IF nPallet1Found = 1 THEN
SetGo pmGripper1_goActivators, 103;
ENDIF
! opens tool when approaching infeeder
!IF nInfeeder1Found = 1 THEN
! SetDO doPalletHooksOpen, 0;
! SetDO doPalletHooksClose, 1;
! SetGO SDelay := 1, pmGripper1_goActivators, 31;
!ENDIF
WHILE PmGetTgtAction(WorkArea, Tgt.TargetHandle,Act) DO
!!Sets the offset from a group input
nOffsetXFromPLC:=giOffsettXPLC_IO;
nOffsetYFromPLC:=giOffsettYPLC_IO;
nOffsetZFromPLC:=giOffsettZPLC_IO;
PmCalcArmConf Act.RobTgt,Tgt.TargetTool,Tgt.TargetWobjcf6MaxAngle:=MaxToolAngleMinAngle:=MinToolAngle;
IF nOutfeeder1Found = 1 THEN
Act.RobTgt.trans.x:=Act.RobTgt.trans.x+nOffsetXFromPLC;
Act.RobTgt.trans.y:=Act.RobTgt.trans.y+nOffsetYFromPLC;
Act.RobTgt.trans.z:=Act.RobTgt.trans.z+nOffsetZFromPLC;
ENDIF
IF FirstTgtInOp AND (NOT MultiOperation) THEN
MoveInterMid WorkArea,Tgt,Act,PmSafetyOffsetZMaxAngle:=MaxToolAngleMinAngle:=MinToolAngle;
FirstTgtInOp:=FALSE;
ENDIF
PmDoAction WorkArea,Tgt,Act;
SetLastPos WorkArea,Tgt,Act;
ENDWHILE
ENDWHILE
MultiOperation:=FALSE;
ERROR
TEST ERRNO
CASE PM_ERR_PALLET_REDUCED:
RAISE;
CASE PM_ERR_PALLET_EMPTY:
RAISE;
ENDTEST
ENDPROC
ENDMODULE