更新KUKA程序
This commit is contained in:
128
KUKA/KRC/R1/System/masref_main.src
Normal file
128
KUKA/KRC/R1/System/masref_main.src
Normal file
@@ -0,0 +1,128 @@
|
||||
&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
|
||||
Reference in New Issue
Block a user