Absturz

  • 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?


    :danke:

  • ANZEIGE
  • Hallo dini,


    ich weiß zwar momentan noch nicht wo der Fehler ist aber Du könntest mal vor die Routine CheckHomePos die Instruktion SpyStart "Spy.log"; und danach SpyStop schreiben.


    Weiterhin musst Du sicherstellen, dass das Modul in dem CheckHomPos drin enthalten ist nicht mit NoStepIn bzw. NnView geschützt ist.


    Mit SpyStart werden alle ausgeführten Instruktionen in die Datei Spy.LOG im Homeverzeichnis geschrieben. Nach dem Neustart musst du nur die Datei Spy.LOG auf deinen PC kopieren und kannst Die letzten ausgeführte Instruktionen ansehen.


    Dann kann man ggf. auch sagen, wo der Fehler liegt.


    :waffen100:


    Grüße Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Hallo Micky,
    werde das mal so machen wie du es vorgrschlagen hast.
    Ich vermute jedoch, das es irgendwo Hardwaremäßig hakt, da diese Routine nicht neu einprogrammiert wurde, sondern der Absturz plötzlich kam.


    Schönes Wochenende

  • an der Routine liegts nicht.


    Hab auch noch nie geschafft die S4 Steuerung mit Programmcode zum Absturz zu bringen. :pfeif:
    Eher ein Betriebssystemfehler oder Hardwaredefekt. :???:

    Menschen brauchen Roboter, aber auch Roboter brauchen Menschen.

    Roboter sichern die Arbeitsplätze und den Fortschritt der Industrieländer, da sie kostengünstig und qualitativ hochwertig produzieren.

    Ohne Automatisierung mit Robotern werden unsere Produkte in Billiglohnländern hergestellt.

    >> Abonniere meinen YouTube Roboterkanal <<

  • Hi,


    wer hat das denn mal im Original programmiert ?
    So ungefähr sieht die Init bei uns auch aus.


    !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
    >>>>>>> 1:1 und die strings fm... sind alles 5 Feld Arrays, oder ?


    Prüfe mal folgendes:
    Die Funktion Positionsvergleich hat bei uns dieses Problem:
    Sind in den Quaternien der zu prüfenden Position e-hoch Terme enthalten, bekomme ich fast nie ein true.
    Denn ABB rechnet anders als alle anderen !
    So geht das unter S4c plus : 0 +0.1+0.1+0.1+......-0.1-0.1-0.1.... Du erhälst nie wieder ein Ergebiss=0,
    und wenn Du ewig so hoch und runter rechnest.
    Aber so geht dass:
    const num zahl:=0.1;
    pers num ergebnis:=0;
     
    ergebnis:=ergebnis+round(zahl\dez:=1);
    ergebnis:=ergebnis-round(zahl\dez:=1);


    Die Werte der Homepos siehst Du indem Du das robtarget in der in der Programmzeile mit dem Cursor
    markierts und dann Menu Bearbeiten>Punkt 8. Oder KorrPos die Position einfach mal etwas umorientiert.
    Probleme machen immer Positionen, die im Bild Bewegen über das Menu Ausrichten(Allign) positioniert
    wurden.


    Hoffe Ich konnte Dir helfen.
    msc

  • Hallo mod-poser,
    ursprünglich ist diese Init-Routine bei Inbetriebnahme der Anlage durch einen ABB-Mitarbeiter geschrieben worden.
    Deine Idee werde ich mal aufnehmen, wird aber noch ein Weilchen dauern. Habe im Augenblick ein Problem mit einen Motoman.


    :merci:

  • Hallo dini,


    wir haben diesen Positionsvergleich als aller erste Version auf der S4 eingesetzt, sind dann umgestiegen auf einen Jointtargetvergleich. Seitdem es die Weltzonen gibt, verwenden wir diese um die Homeposition zu überwachen, so dass wir zum einen nur den Ausgang abfragen brauchen bzw. die Homepositionsmeldung direkt an eine SPS oder eine Lampe melden können.


    PROC PowerOn()
    VAR jointtarget jDelta;
    VAR jointtarget jHome;

    !Homeposition als jointtarget umrechnen
    jHome:=CalcJointT(pHome,tGreifer\WObj:=wobj0);
    !
    !Max. Abweichung der einzelnen Achsen festlegen
    jDelta.robax:=[ 2, 2, 2, 2, 2, 2];
    jDelta.extax.eax_a:=5;
    !
    !Weltzone für die Homeposition definieren
    WZHomeJointDef\Inside, shHomePos, jHome, jDelta;
    WZDOSet\Stat,wzHomePos\Inside,shHomePos,doIRBinHome,high;
    !
    ENDPROC


    So dass die Abfrage in Deiner Routine CheckHomepos wie folgt aussieht:


    WHILE Doutput(doIRBinHome)=low DO
    Meldung fmNotInHome
    ...



    :supi:


    Grüße Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Ich würde die Abfrage der HomePos mit CJointT() abfragen dann kannst du die Freigabe zum Automatischen Home anfahren in Grad der Achse bestimmen und brauchst nicht mit xyz-Q1-4
    dich herumquälen. Außerdem ist es möglich den Bediener etwas zu führen --- Fahrmal das Ding mit Achse 1 mehr nach rechts---oder so.


    Ich glaub da muß mal eine routine her oder ?


    mfG Burlibua

  • Ich mache es wie folgt :


    !------------------------------------------------------------
    !Funktion : fTestPos
    !Description : Testet die Aktuelle Position mit der angegebenen
    ! : Wenn keine uebereinstimmung,wird in angegebene
    ! : position gefahren mit verringerter Geschwindigkeit
    !Parameter
    ! Position : Vergleichsposition
    ! Tool : Vergleichstool
    ! Werkobjekt : vergleichswerkobjekt
    !------------------------------------------------------------
    LOCAL FUNC bool fTestPos(
    PERS robtarget Position,
    PERS tooldata Tool,
    PERS wobjdata Werkobj)


    VAR robtarget pTemPos;
    VAR num nOridist;
    VAR num nPosDist;


    ! Testet Aktuelle Position mit angegebenen Tool und WerkObj
    ! und vergleicht mit Sollposition
    ! wenn nicht identisch, wird in sollposition gefahren
    StopMove;
    pTemPos:=CRobT(\Tool:=Tool\WObj:=Werkobj);
    pTemPos.trans:=Position.trans-pTemPos.trans;
    pTemPos.rot.q1:=Abs(Position.rot.q1)-Abs(pTemPos.rot.q1);
    pTemPos.rot.q2:=Abs(Position.rot.q2)-Abs(pTemPos.rot.q2);
    pTemPos.rot.q3:=Abs(Position.rot.q3)-Abs(pTemPos.rot.q3);
    pTemPos.rot.q4:=Abs(Position.rot.q4)-Abs(pTemPos.rot.q4);
    nPosDist:=Sqrt(Pow(pTemPos.trans.x,2)+Pow(pTemPos.trans.y,2)+Pow(pTemPos.trans.z,2));
    nOridist:=Abs(pTemPos.rot.q1)+Abs(pTemPos.rot.q2)+Abs(pTemPos.rot.q3)+Abs(pTemPos.rot.q4);
    IF ((nOridist<0.1) AND (nPosDist<5)) THEN
    StartMove;
    RETURN TRUE;
    ELSE
    TPErase;
    TPWrite " ACHTUNG!! ";
    TPWrite " Fehlermeldung aus TestPos ";
    TPWrite " Manipulator nicht in Testposition ";
    TPWrite " Manipulator in Testposition oder Abbruch";
    TPReadFK reg1,"Roboter-Programm","","","","TestPos","Abbruch";
    IF reg1=4 THEN
    StartMove;
    TPErase;
    TPWrite " ACHTUNG ";
    TPWrite " Fehlermeldung aus TestPos ";
    TPWrite " Manipulator bewegt sich zur Testposition ";
    WaitTime 2;
    MoveJ Position,v50,fine,Tool\WObj:=Werkobj;
    WaitTime 0.2;
    RETURN TRUE;
    ELSE
    prog_exit;
    ENDIF
    ENDIF
    ENDFUNC

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden