Hallo zusammen,
habe da noch ein Problem bei der S4:
Bei Starten des Programmes über die Hauptroutine wird eine Initialisierung durchgeführt wo unter anderem die Homepos überprüft wird. Bei dieser Überprüfung stürzt das System ab. Dann geht nichts mehr und es hilft nur noch Aus- und Einschalten. Sobald der Rechner dann wieder hochgefahren ist, erscheint diese Meldung auf den Display: Status 10049
Netzfehler in der mitte von geschütztem Bereich der Task Main
Die Task wird von der haupt Routine neu gestartet
Da ich z.Zt. die Initialisierung mit goto überspringe läuft die Anlage, aber irgendetwas ist ja nicht in Ordnung.
So sieht die Überprüfung aus:
PROC CheckHomePos()
VAR num nAnswer;
!Prüfen ob sich der Roboter in der Homeposition befindet
WHILE PosVergleich(pHome,100,0.2)=FALSE DO
Meldung fmNotInHome;
TPReadFK nAnswer,"Wählen Sie MANUELL oder AUTO","MANUELL","","","","AUTO";
IF nAnswer=5 THEN
Meldung fmAutoHome;
TPReadFK nAnswer,"Wählen Sie WEITER oder ABBRUCH","WEITER","","","","ABBRUCH";
IF nAnswer=1 THEN
mvHomePos;
Meldung fmInHome;
WaitTime 2;
ELSE
EXIT;
ENDIF
ELSE
TPErase;
Meldung fmManualHome;
TPReadFK nAnswer,"Wählen Sie WEITER !","WEITER","","","","";
EXIT;
ENDIF
ENDWHILE
Meldung fmInHome;
WaitTime 2;
TPErase;
ENDPROC
!**********************************************************
!* Function Positionsvergleich *
!* *
!* Input Parameter: robtarget pVergleich *
!* num nMaxTrans *
!* num nMaxRot *
!* Return Parameter: bool bInPos *
!* *
!**********************************************************
FUNC bool PosVergleich(robtarget pVergleich, num nMaxTrans, num nMaxRot)
VAR bool bInPos:=TRUE;
VAR robtarget pAktuell;
!momentane Roboterposition einlesen
pAktuell:=CRobT();
!Vergleich der einzelnen Komponenten der Positionen
!bei Wertueberschreitung wird bInPos "false"
IF Abs(pVergleich.trans.x-pAktuell.trans.x)>nMaxTrans bInPos:=FALSE;
IF Abs(pVergleich.trans.y-pAktuell.trans.y)>nMaxTrans bInPos:=FALSE;
IF Abs(pVergleich.trans.z-pAktuell.trans.z)>nMaxTrans bInPos:=FALSE;
IF Abs(pVergleich.rot.q1-pAktuell.rot.q1)>nMaxRot bInPos:=FALSE;
IF Abs(pVergleich.rot.q2-pAktuell.rot.q2)>nMaxRot bInPos:=FALSE;
IF Abs(pVergleich.rot.q3-pAktuell.rot.q3)>nMaxRot bInPos:=FALSE;
IF Abs(pVergleich.rot.q4-pAktuell.rot.q4)>nMaxRot bInPos:=FALSE;
!Rueckgabewert
RETURN bInPos;
ENDFUNC
Irgendjemand ne Ahnung?