Roboterprofis für Ihren Erfolg
Roboterprogrammierer auf Stundenbasis engagieren
jetzt Preise und verfügbare Roboterprogrammierer anfragen

Autor Thema:  Absturz  (Gelesen 3320 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dini

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Absturz
« am: 09. Dezember 2005, 13:08:28 »
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:
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert


ABB Robotertraining
günstig und verständlich mit Zertifikat
ABB Roboterschulung

Offline Micky

  • Forum Elite LV 3
  • *
  • Beiträge: 269
  • Bewertet: +40
Re: Absturz
« am: 09. Dezember 2005, 15:59:47 »
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
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline dini

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Absturz
« am: 09. Dezember 2005, 16:13:39 »
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
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline Werner Hampel

  • Administrator
  • Forum Legende LV 3
  • *
  • Beiträge: 1583
    • ROBTEC GmbH - Roboter Systemhaus
  • Bewertet: +23
Re: Absturz
« am: 09. Dezember 2005, 22:19:27 »
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.  :?
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
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.

mod-poser

  • Gast
Re: Absturz
« am: 14. Dezember 2005, 19:49:52 »
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
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline dini

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Absturz
« am: 15. Dezember 2005, 08:03:39 »
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:
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline Micky

  • Forum Elite LV 3
  • *
  • Beiträge: 269
  • Bewertet: +40
Re: Absturz
« am: 16. Dezember 2005, 17:33:11 »
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
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline burlibua

  • Forum Mitglied LV 11
  • *
  • Beiträge: 110
  • Bewertet: 0
Re: Absturz
« am: 05. Januar 2006, 09:10:28 »
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
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline mischwarz

  • Forum Mitglied LV 15
  • *
  • Beiträge: 194
  • Bewertet: +5
Re: Absturz
« am: 27. Januar 2006, 07:31:41 »
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
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Es gibt immer einen Weg. ( Wohin auch immer er führen mag )
mischwarz ANNO 2001

 

über das Roboterforum

Nutzungsbedingungen Impressum
Sitemap