Files
6040-003/KUKA/KRC/R1/System/masref_main.src
2026-02-06 19:32:09 +08:00

129 lines
4.2 KiB
Plaintext

&ACCESS RVO
&REL 4
&COMMENT Mastering Reference Main Task
&PARAM EDITMASK = *
&PARAM DISKPATH = KRC:\R1\System
DEF MasRef_Main()
;*******************************************
;* main module for safety relevant feature *
;* 'Master Reference' *
;*******************************************
;FOLD Start conditions for mastering reference
MsgState(MASREF_StateMsgHandle,"MasterReferenceCheckStartConditions",MASREF_Modulname[],,, 103)
IF Varstate("$pro_ip.si01.name[]") <> #DECLARED THEN
;APP//MasRef_Main() wurde von einem uebergeordneten Programm aufgerufen
IF NOT $MasteringTest_Req_Ext AND NOT $MasteringTest_Req_Int THEN
;APP//weder interne noch externe Anforderung ist freigegeben
WAIT FOR Clear_KrlMsg(MASREF_StateMsgHandle)
RETURN
ENDIF
ENDIF
;APPBLOCK/*
;Signale Referenzgruppe in Position und
;Justagereferenzierung aktiv zuruecksetzen
;APPBLOCK*/
$MasteringTest_Group = 0
$MasteringTest_Active = FALSE
;APPBLOCK/*
;Schalter Hardware pruefen und
;Schalter darf nicht bedaempft sein
;APPBLOCK*/
REPEAT
IF NOT $MasteringTest_Switch_OK THEN
;APP//wartet auf Quittierung
MsgQuit("MasterReferenceSwitchFailure", MASREF_Modulname[], , , 100, MASREF_MsgOptWithLogging)
ENDIF
;APP//aktiviert Safety-Modul
$MasteringTest_Active = TRUE
WAIT SEC 0.2
;APP//lesend: Safety-Modul hat Variable wieder deaktiviert
IF NOT $MasteringTest_Active THEN
;APP//wartet auf Quittierung
MsgQuit("MasterReferenceNotActivated", MASREF_Modulname[], , , 101, MASREF_MsgOptWithLogging)
ENDIF
UNTIL $MasteringTest_Active AND $MasteringTest_Switch_OK
WAIT FOR Clear_KrlMsg(MASREF_StateMsgHandle)
;ENDFOLD (Start conditions for mastering reference)
;FOLD Reference group testing
FOR MASREF_GroupSequenceIdx = 1 TO MASREF_GroupSequenceSize
MASREF_GroupNumber = MASREFg_GroupSequence[MASREF_GroupSequenceIdx]
IF MASREF_GroupNumber > 0 THEN
MsgState(MASREF_StateMsgHandle,"MasterReferenceGroup",MASREF_Modulname[], MASREF_GroupNumber, , 104, MASREF_MsgOptWithLogging)
RunTest_Group(MASREF_GroupNumber)
WAIT FOR Clear_KrlMsg(MASREF_StateMsgHandle)
ENDIF
ENDFOR
;ENDFOLD (Reference group testing)
;FOLD Finalize mastering reference
MsgState(MASREF_StateMsgHandle,"MasterReferenceFinalize",MASREF_Modulname[],,, 106)
;APP//Positionspruefung in Sicherheitssteuerung beendet
$MasteringTest_Active = FALSE
MASREF_nLapsedTime = 0
REPEAT
WAIT SEC MASREF_TimeoutOneCycle
MASREF_nLapsedTime = MASREF_nLapsedTime + 1
;APPBLOCK/*
;lesend: warte bis Safety-Modul Variable auf FALSE setzt
;oder Timeout abgelaufen
;APPBLOCK*/
UNTIL (NOT $MasteringTest_Active AND NOT $MasteringTest_Req_Int) or (MASREF_nLapsedTime > MASREF_nLapsedTimeout)
IF $MasteringTest_Active THEN
;APP//wartet auf Quittierung
MsgQuit("MasterReferenceFailed", MASREF_Modulname[], , , 102, MASREF_MsgOptWithLogging)
ENDIF
WAIT FOR Clear_KrlMsg(MASREF_StateMsgHandle)
;ENDFOLD (Finalize mastering reference)
END
DEF RunTest_Group(nGrpNr:IN)
;FOLD Declaration
INT nGrpNr
;ENDFOLD (Declaration)
;FOLD Implementation
IF (nGrpNr <= 0) OR (nGrpNr > 3) THEN
MsgQuit("MasterReferenceUnknownGroup", MASREF_Modulname[], nGrpNr, , 105, MASREF_MsgOptWithLogging)
RETURN
ENDIF
SWITCH nGrpNr
CASE 1
;APP//Pruefposition Gruppe 1 anfahren
MasRefStartG1()
CASE 2
;APP//Pruefposition Gruppe 2 anfahren
MasRefStartG2()
CASE 3
;APP//Pruefposition Gruppe 3 anfahren
MasRefStartG3()
DEFAULT
ENDSWITCH
;APP//warte bis Pruefposition sicher erreicht
WAIT SEC 0.5
;APP//aktiviert Signal Referenzgruppe x in Position
$MasteringTest_Group = nGrpNr
;APP//warte bis Pruefung abgeschlossen
WAIT SEC 0.5
SWITCH nGrpNr
CASE 1
;APP//zurueck von Pruefposition Gruppe 1
MasRefBackG1()
CASE 2
;APP//zurueck von Pruefposition Gruppe 2
MasRefBackG2()
CASE 3
;APP// zurueck von Pruefposition Gruppe 3
MasRefBackG3()
DEFAULT
ENDSWITCH
WAIT SEC 0.2
;APP//deaktiviert Signal Referenzgruppe x in Position
$MasteringTest_Group = 0
WAIT SEC 0.2
;ENDFOLD (Implementation)
END