So hab mal was zusammengebastelt:
Wir starten im Main und springen darin ins Init. Im Init Frage ich folgendes ab:
IF SC1CBCREQ=1 OR SC1CBCWAR=1 THEN
SET dO_R1_CBC_Needed;
ENDIF
Wenn also die Zeit oder die Warnung erreicht ist setze ich ein Signal an die SPS.
Danach frage ich das Signal der SPS ab.
IF di_Braketest_Needed THEN
stInfo3_R1_Movement:="Start CyclicBrakeCheck";
ProgInfo\Show;
CyclicBrakeCheck_w_diagnosis;
ENDIF
Damit starte ich die Routine " CiclicBrakeCheck_w_diagnosis "
Darin passiert folgendes:
CyclicBrakeCheck;
IF SC1CBCACT=1 THEN
stInfo5_R1_Error:="ERR:CyclicBrakeCheck CBC_Active=1";
ProgInfo\Show;
SetAO aO_R1_ErrorCode,30;
Set dO_R1_Error;
EXIT;
ELSEIF SC1CBCERR=1 THEN
stInfo5_R1_Error:="ERR:CyclicBrakeCheck CBC_Error=1";
ProgInfo\Show;
SetAO aO_R1_ErrorCode,31;
Set dO_R1_Error;
EXIT;
ELSEIF SC1CBCREQ=1 THEN
stInfo5_R1_Error:="ERR:CyclicBrakeCheck CBC_Needed=1";
ProgInfo\Show;
SetAO aO_R1_ErrorCode,32;
Set dO_R1_Error;
EXIT;
ELSEIF SC1CBCOK=0 THEN
stInfo5_R1_Error:="ERR:CyclicBrakeCheck CBC_OK=0";
ProgInfo\Show;
SetAO aO_R1_ErrorCode,33;
Set dO_R1_Error;
EXIT;
ELSE
stInfo3_R1_Movement:="CyclicBrakeCheck successful";
ProgInfo\Show;
WaitTime 2;
Set dO_R1_CBC_OK;
ENDIF
Display More
Am Ende setze ich der SPS das der Bremsentest Erfolgreich war, sollte er nicht Erfolgreich sein bzw. unterbrochen worden sein und immer noch auf Aktiv stehen, geht es hier im nächsten Schritt zum erneuten ausführen:
!Continuing cylic brake check, if it was interruppted. In this case, still CBC_Active=1.
IF dO_R1_Area_Home=1 AND SC1CBCACT=1 THEN
stInfo3_R1_Movement:="Continue CyclicBrakeCheck";
ProgInfo\Show;
CyclicBrakeCheck_w_diagnosis;
ENDIF
Was haltet ihr davon?