&ACCESS RVO5 &REL 1 &COMMENT BrkTst-main task &PARAM EDITMASK = * &PARAM DISKPATH = TP/BrakeTest DEF BRAKETESTREQ(AxesBitMask: IN) ;BRAKETESTREQ ;fold {h} INT Idx, Key, AxesBitMask BOOL Test_Ende BOOL BraketestForce BraketestForce=false IF gBraketestForce THEN BraketestForce=true ENDIF gBraketestForce=false ON_ERROR_PROCEED AxesBitMask=AxesBitMask*1 IF ($ERR.Number<>0) THEN AxesBitMask=-1 ERR_CLEAR($ERR) ELSE ERR_RAISE($ERR) ENDIF IF Varstate("$pro_ip.si01.name[]")==#declared THEN ;program selected MsgDialog(Key, "DlgPeformManuallyBrakeTest", brakeTestMdbName[], , "Cancel", "GoToPark", "BTman",,,,,FALSE) SWITCH Key ;dialogue answer CASE 5 BraketestForce=TRUE CASE 6 BrakeTestStart() BraketestError() CASE 7 Return DEFAULT Return ENDSWITCH ELSE ;cyclic call IF NOT($BRAKETEST_REQ_INT) AND NOT(BraketestForce) THEN Return ENDIF ENDIF Test_Ende=false RobotBrkState=#BT_UNTESTED BrakeTestStart() BAS (#INITMOV,0 ) repeat PTP $AXIS_ACT RobotBrkState = Test_BRAKE(AxesBitMask, BraketestForce) SWITCH RobotBrkState CASE #BT_WARNING,#BT_EXCESSIVE, #BT_MAXUNKNOWN, #BT_READY CountResultUnknown = 0 Test_Ende = TRUE CASE #BT_ERROR BraketestError() CASE #BT_UNKNOWN Test_Ende = BraketestUnknown() CASE #BT_UNTESTED Test_Ende = TRUE ENDSWITCH until Test_Ende BrakeTestBack() END DEF BraketestError() INT Key Key = 0 MsgDialog(Key, "BT_BRAKE_ERROR", brakeTestMdbName[]," ", "GoToPark",,,,,,,FALSE) BrakeTestPark() WAIT FOR TRUE repeat MsgNotify("ParkPositionReached", brakeTestMdbName[]) halt until false END DEFFCT BOOL BraketestUnknown() INT Key Key=0 CountResultUnknown = CountResultUnknown + 1 IF (CountResultUnknown >= MaxCountResultUnknown) THEN MsgDialog(Key, "BT_BRAKE_UNKNOWN", brakeTestMdbName[]," ", "TryAgain", "Cancel",,,,,,FALSE) IF Key==7 then Return FALSE ELSE Return TRUE ENDIF ELSE Return TRUE ENDIF ENDFCT ;endfold