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

Autor Thema:  Interne Var´s für Errorhandler  (Gelesen 4743 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Interne Var´s für Errorhandler
« am: 30. November 2005, 09:21:53 »
Hallo zusammen,

kann es sein, dass die Variablen bsuchenI.O und bsuchenN.IO systeminterne Features sind, bei Verarbeiten eines ErrorHandlers? wie z.B. errno_signupsearch?
bei Linearensuchbefehl SearchL....

PROC GM5

var=bsuchen
.
.
.
.
ERROR
           IF bsuchenniO=true then (do what i want to do)
           else if
           raise;

die Variable wird am Anfang der Procedure deklariert, aber nirgens einen Wert zugeordnet...nur auf true and false im Errorhandler abgefragt.    :nocheck:

mfg. Noobie *edit: S4c plus*
« Letzte Änderung: 30. November 2005, 09:36:58 von Noob »
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Viele Grüße Noobie


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

mod-poser

  • Gast
Re: Interne Var´s für Errorhandler
« am: 30. November 2005, 18:40:54 »
Ist ja interessant, ist gibt doch noch welche, die im Variablennamen den Datentyp verstecken,
bsuchenI.O > b >>bool.
Zurück zum Thema: zu 90% NEIN, denn dafür gibt es ja die auswertbaren Errornummern.
Les' mal im Handbuch etwas über die zurückgegeben Fehlernummern des Search-Befehls.
Meine Vermutung ist, das diese booleans in einem Interrupt geschalten werden.
Tip: nicht im Backup suchen sondern Programm speichern, dann haste schonmal alle Programm-
module in einer Datei,  und dann einfach im Texteditor die Variablen suchen.
Sollteste Du sie da nicht finden, können die ja nur noch in den meißt wenigen Systemmodulen sein.
Kannst mir aber auch ein Backup schicken.

Gruß
msc
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 10:17:40 »
das ist es ja, im Handbuch hab ich nichts darüber gefunden.
die Variable wurde nachträglich nur in einem Programm.Mod hinzugefügt.
Wenn ich am Montag  wieder auf der Arbeit bin, schick ich Dir das Modul mal zu.
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Viele Grüße Noobie

Offline rmac

  • Forum Elite LV 4
  • *
  • Beiträge: 281
  • Bewertet: 0
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 11:13:36 »
Hallo Noob,

sorry, aber irgendwie kann ich die Syntax deines Programmausschnittes nicht nachvollziehen:  :bawling:
Zitat
Variablen bsuchenI.O und bsuchenN.IO ...
var=bsuchen ...
IF bsuchenniO=true then ...
:kopfkratz:

Zitat
die Variable wird am Anfang der Procedure deklariert, aber nirgens einen Wert zugeordnet...
Ein Wert muß auch nicht zwingend zugewiesen werden (Zitat Handbuch):
"Variables with value types may be initialised (given an initial value). The expression
used to initialise a program variable must be constant. Note that the value of an
uninitialized variable may be used, but it is undefined, i.e. set to zero.
"
d.h. in deinem Fall ist die Variable (wenn nicht anders initialisiert oder zugewiesen) also FALSE.

Selbst wenn es eine entsprechende globale Variable mit gleichem Namen geben würde, die intern zur Verarbeitung von SearchL o. dgl. genutzt wird, würde man auf diese Variable in der Procedure nicht zugreifen können sobald eine lokale Variable gleichen namens in der Proc deklariert wird, da diese im lokalen Kontext (Scope) bevorzugt werden würde.

Zu guter Letzt halte ich es für recht unwahrscheinlich, dass die RAPID-Entwickler (Schweden ?) für eine derartige Variable einen deutschen Namen verwenden würden. (Obwohl... weiß jemand was "Suchen" auf Schwedisch heißt ?)
BTW: Ich finde die "Main()  <-> Haupt()" Benennung ist schon ein ziemlich krampfhaftes Zugeständnis.  :wallbash:

Gruß
Rainer
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 12:00:19 »
ok, dann werde ich genauer:

Es soll etwas gesucht werden, wird duch einen Fehler die Instruktionsabarbeitung fehlerhaft, soll erneut gesucht werden. Das ganze 3x. Wird nach 3x nix gefunden, dann soll eine Meldung ausgebracht werden.
Was ich nirgends finde ist die Wiederholungschlaufe 3x. hier der Error-Handler:
Am Anfang wird deklariert:

  VAR robtarget pZaehl;
  VAR num nZaehl;
  VAR bool bSuchenNIO;


 ERROR
    !Suchen wiederholen               
    IF ERRNO=ERR_WHLSEARCH AND bSuchenNIO=FALSE THEN
      bSuchenNIO:=TRUE;
      RETRY;                                   
    ELSE
      Message tmGestSuchen;
    ENDIF
    IF ERRNO=erZurHomePos MoveToPos "20VP";
    IF ERRNO=erVakuum THEN
      Incr nVakFehler;
      !Entnahme abbrechen ?
      IF nVakFehler>=nMaxVakFehler THEN
        MoveToPos "20VP";
        Message tmVakuumAbbruch;
        IF OpMode()=OP_MAN_PROG TPReadFK nFKey,"","OK","","","",""\DIBreak:=diIRBzurHome\BreakFlag:=erFehler;
      ELSE
        !Roboter freifahren und Greifen wiederholen
        mv20GP_20FP;
        TRYNEXT;
      ENDIF
    ENDIF
    RAISE;
  ENDPROC

Wenn es doch 3x versucht werden soll, müßte meiner Meinung nach die Sache so aussehen:
1. nummerische Var zum Zählen deklarieren und Null-Setzen:

VAR num nSuchversuch
clear nSuchversuch

Dann die Wiederholungschleife im Handler

ERROR
    !Suchen wiederholen               
    IF ERRNO=ERR_WHLSEARCH AND nSuchversuch <=3          THEN
      incr nSuchversuch;
      RETRY;                                   
    ELSE
    Message tmGestSuchen;
     ......
« Letzte Änderung: 01. Dezember 2005, 12:26:04 von Noob »
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Viele Grüße Noobie

Offline Sven Weyer

  • Global Moderator
  • Forum Legende LV 1
  • *
  • Beiträge: 1056
  • Bewertet: +17
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 12:14:14 »
Hallo Noob,
das ist schön das Du uns nun doch gewillt bist uns genauere Informationen bekannt zu geben. Ich hatte Deinen Beitrag schon recht früh gesehen aber konnte mit den ganzen Wortfetzen leider nichts anfangen.
Die Schleife ist schon da aber ich kann leider keine 3x erkennen.
Schau Dir die Befehle RETRY und TRYNEXT an und du wirst fündig.  :mrgreen:
Denn wenn Deine Routine aufgerufen wird werden die Variablen, wie rmac schon sagte, initialisiert. d.h in Deinem Fall auf FALSE gesetzt.
Nun wird eine Suchfahrt durchgeführt und die führt nicht zu einem Erfolg. Dies war aber die erste Suchfahrt ohne Erfolg und somit ist Deine Variable "bSuchenNIO" =FALSE. Nun wird diese bei der ersten negative Messung auf TRUE gesetzt und durch den Befehl "RETRY" Deine Suche nochmals gestartet wo dieser Fehler aufgetreten ist. Sollte bei dieser Such noch einmal dieser Fehler auftreten wird der Errorhandler weiterabgearbeitet, bzw. eine Meldung ausgegeben.
Ich denke das sollte Dir weiterhelfen. :blumen:

Wenn nicht denke daran wenn Du bei uns eine klare schnelle Information haben möchtest die Frage auch demensprechend genau und klar zu stellen  mit allen erdenklichen Fakten. :supi:

@mod-poser: Bei uns sind alle Variablen mit Präfixen versehen um deren erkennung zu vereinfachen. Ist für das Verständnis im Programm viel besser! :supi:

Hilft im Schluß allen weiter!  :mrgreen:
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 12:24:41 »
Vielen Dank, während Du die Antwort geschrieben hast, habe ich meinen Betrag nochmal editiert, wie ich denke, dass eine 3x Schleife aussehen soll.
Danke für Eure Bemühungen, bin noch nicht ganz so fit im Rapid...
 :danke:
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Viele Grüße Noobie

Offline Sven Weyer

  • Global Moderator
  • Forum Legende LV 1
  • *
  • Beiträge: 1056
  • Bewertet: +17
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 12:26:28 »
Hallo Noob,
so kommen wir der Sache schon viel näher!  :grinser043:

Herzlichen Glückwunsch!! :blumen:

So wird es doch!! :biggrins:

robotic74
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 12:32:57 »
also ist das 3x Suchen so tasächlich machbar?

Wenn es doch 3x versucht werden soll, müßte meiner Meinung nach die Sache so aussehen:
1. nummerische Var zum Zählen deklarieren und Null-Setzen:

VAR num nSuchversuch
clear nSuchversuch

Dann die Wiederholungschleife im Handler

ERROR
    !Suchen wiederholen               
    IF ERRNO=ERR_WHLSEARCH AND nSuchversuch <=3          THEN
      incr nSuchversuch;
      RETRY;                                   
    ELSE
    Message tmGestSuchen;


Nochmals   :merci: für Eure Hilfe
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Viele Grüße Noobie

Offline Sven Weyer

  • Global Moderator
  • Forum Legende LV 1
  • *
  • Beiträge: 1056
  • Bewertet: +17
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 12:38:56 »
Hallo Noob,
natürlich sollte das so gehen!
Aber die Frage stellt sich mir warum Du dreimal die gleich Bewegung durchführen möchtest. Aber ist ja auch egal wirst schon Deine Gründe haben.

Bis denne

robotic74
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 12:43:58 »
Damit ich Dir auch helfen kann  :zwink:, weil wir Probleme mit dem Suchen haben, durch wechselnde Winkel des zu suchenden Materials (Scheiben) auf dem Gestell.


Grüße Noobie
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Viele Grüße Noobie

Offline rmac

  • Forum Elite LV 4
  • *
  • Beiträge: 281
  • Bewertet: 0
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 12:45:21 »
Hallo noob,

hier ein Ausschnitt aus meinem Fundus, vielleicht als Anregung.
(Habe ich schnell zusammengekürzt, deshalb OHNE GEWÄHR!)
  FUNC bool doMySearch()
    CONST num CMaxRetries:=3;
    VAR num nRetries:=0;
    VAR bool bRslt:=FALSE;

    WHILE (nRetries < CMaxRetries) AND (NOT bRslt) DO
      ! Hier Suchen initialisieren, d.h.
      ! an den Anfang der Suchposition fahren usw.
     
      Incr nRetries;
      bRslt := TRUE;
      SearchL ...;
     
      ! hier ggfls. Suchergebnis(se) auswerten wenn bRslt immer noch TRUE
      ! IF bRslt THEN ... ENDIF
    ENDWHILE
    RETURN bRslt;
   
  ERROR
    IF (ERRNO=ERR_WHLSEARCH) THEN
      bRslt:=FALSE;
      TRYNEXT;
    ELSE
      ! hier ggfls. weitere Fehlerbehandlung
      RAISE;
    ENDIF
  ENDFUNC

Gruß
Rainer
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 12:55:16 »
danke Rainer.
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Viele Grüße Noobie

mod-poser

  • Gast
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 16:56:11 »
Hier drin stecken, die Wiederholungen : "IF nVakFehler>=nMaxVakFehler", aber das ist auch aus Rainers
Beitrag ersichtlich. Ich denke mal es gibt einen wiederholten Versuch, das Teil zu finden und wenn dies
erfolgreich war, wird "nMaxVakFehler" mal versucht das Teil mit einem Vakuumsauger zu fassen.
Ohne das Programm zu kennen,würde ich aber fast behaupten, daß anstelle von TRYNEXT auch ein
RETRY stehen sollte. Ausserdem glaube ich nicht, dass es Sinn macht auf einen ERR_WHLSEARCH direkt
mit RETRY zu reagieren, ohne vorher zurückzufahren oder Positionsdaten zu ändern.
Kann ich aber erst sagen, wenn ich das komplette Programm kenne.
Bei TRYNEXT oder RETRY muß man immer aufpassen, wieoft ein RAISE ausgeführt wurde, bevor die
Fehlernummer abgefangen wird.

Gruß
msc
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Interne Var´s für Errorhandler
« am: 01. Dezember 2005, 18:10:30 »

Richtig. aber dafür muß das Teil erst gefunden werden  :P


auch korrekt, nach erfolgloser Suche, bewegt sich der IRB auf eine mittels-offset korregierte Startpos, bevor die Suche erneut beginnt. das wird aber schon in der Routine selbst gemacht.
Mir ging es nur darum, wie diese bsuchenNIO verarbeitet wird. Hatte den Sinn in Verbindung mit 3x Suchen nicht verstanden. ´Hat sich aber Dank Eurer Hilfe geklärt.
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Viele Grüße Noobie


xx
errorhandler

Begonnen von torben59

6 Antworten
1819 Aufrufe
Letzter Beitrag 19. November 2009, 10:42:08
von torben59
xx
Zugriff interne Netwerkschnittstelle LAN

Begonnen von Bernhard

6 Antworten
1746 Aufrufe
Letzter Beitrag 18. Juli 2008, 07:26:38
von Thilbi
 

über das Roboterforum

Nutzungsbedingungen Impressum
Sitemap