//Test TPs
IF astTouchprobe[1].lrPosition >= 360 THEN //Set period, required for SMGs TP
astTouchprobe[1].etSetposMode:=SMG.ET_SetposMode.Relative;
astTouchprobe[1].lrSetposValue:=-360;
astTouchprobe[1].xDoSetpos:=TRUE;
END_IF
CASE iState_TpTest OF
10://SMGs TP
astTouchprobe[1].ifTouchProbe:=TP_0;
astTouchprobe[1].etPositionSource:=SMG.ET_PositionSource.RefPosition; astTouchprobe[1].etEdge;
astTouchprobe[1].xArm:=FALSE; astTouchprobe[1].etSetposMode:=SMG.ET_SetposMode.Absolute;
astTouchprobe[1].lrSetposValue:=0.0;
astTouchprobe[1].xDoSetpos:=TRUE; iState_TpTest:=11;
11:
IF NOT astTouchprobe[1].xArm THEN
astTouchprobe[1].xArm:=TRUE;
iState_TpTest:=12;
END_IF
12:
tpFilter(IN:=TP_0.Value, PT:=T#300MS , Q=> , ET=> );
IF astTouchprobe[1].xCaptureOk AND NOT xTPLock THEN
xTPLock:=TRUE;
lrCapturedValue_TP0:=astTouchprobe[1].lrCapturedPosition;
END_IF
IF tpFilter.ET > T#10MS THEN
iState_TpTest:=13;
END_IF
13:
tpFilter(IN:=TP_0.Value, PT:=T#300MS , Q=> , ET=> );
IF NOT tpFilter.Q THEN
xTPLock:=FALSE;
iState_TpTest:=11;
END_IF
END_CASE