129 lines
4.2 KiB
Plaintext
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
|