Verschiedene Greifer: Über Programm laden oder Variablen-Definition?

  • Hallo!


    Da wir eine Anlage testweise mit unterschiedlichen Greifern fahren, muss ich momentan immer
    a) das Programm manuell laden
    oder
    b) die robtargets von Hand ändern,
    da sich eine handvoll Greifpositionen ändert (Programmablauf bleibt gleich, nur die Positionen verschieben sich um ein paar cm).


    In Zukunft (nach der Testphase) möchte ich mir ein SPS-Signal holen und dem Robi sagen, mit welchem Greifer er arbeitet und welche Positionen er dem entsprechend anfahren soll.


    Was ist nun sinnvoller:
    a) mit "WaitLoad" jeweils ein anderes Programm laden
    oder
    b) Variablen "umschreiben":
    IF diGreifer= 0 THEN GreifPos= GreifPos1...
    IF diGreifer= 1 THEN GreifPos= GreifPos2...


    Beide Varianten bieten Vor- und Nachteile.


    Was meint ihr?


    Gruß
    Buschmann

  • ANZEIGE
  • Unterschiedliche Greifer: unterschiedliche Loaddata, unterschiedliche Maße -> Tooldaten ändern

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Hi,
    also meiner Meinung nach bietet sich hier an die Positionen und tooldaten eines Dummys zu verwenden.
    Je nach Anwahl würde ich dann die jeweiliegen Daten in die Dummys laden.
    z.Bsp:
    tGreifer1 - tGreiferX
    p10_1 - p10_x
    p20_1 - p20_x


    TEST giGreiferNum
    CASE 1:
    tGreifer:=tGreifer1;
    p10:=p10_1;
    p20:=p20_1;
    CASE 2:
    tGreifer:=tGreifer2;
    p10:=p10_2;
    p20:=p20_2;
    .
    .
    .
    CASE X:
    tGreifer:=tGreiferX;
    p10:=p10_X;
    p20:=p20_X;
    ENDTEST


    giGreiferNum ist ein Gruppeneingang von der SPS welcher den jeweiliegen Greife angibt.
    Somit kannst Du all Deine Routinen verwenden und "schaltest" vom Prinzip her nur um.
    Musst halt nur beim teachen her aufpassen.


    Das mit dem Laden von Modulen und Programmen kannst Du aber auch machen. Der Aufwand dafür ist halt nur viel Größer.


    Gruß


    Sven

    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!


  • Hallo zusammen!
    Ich habe jetzt alle Positionen (p10, p10_1, p10_2, etc.) in Robtargets gepackt. Wenn ich diese bei der Abfrage allerdings zuweisen will, kommt die Fehlermeldung, dass es keine Konstanten, Persistenten oder Variablen sein dürfen... Muss bzw. kann ich den Wert numerisch übergeben (P10:= [[236.50,591.05,33.49],[0.710753,-0.00238841,-0.00472174,-0.703422],[-2,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; )
    Dann wird das Programm reichlich unübersichtlich. Svens Variante gefällt mir deutlich besser und sollte doch auch irgendwie machbar sein, oder?


    Gruß
    Buschmann

  • Hallo Buschmann,


    die robtargets p10, p20.., also alle die, denen zu einen neuen Wert zuweisen möchtest dürfen keine Konstanten (CONST) sein. Ob du nun allerdings Variable (VAR) od. Speichernde (PERS) nimmst ist eigentlich egal. Mir persönlich sind i. d. R. die speichernde lieber.



    Grüße
    Thilbi

  • Der unterschied zwischen PERS und VAR ist schon nicht ganz unerheblich.
    Die PERS-Variablen bleiben, was der Name eigentlich schon sagt, speichernd erhalten. Auch bei einem Programmabruch oder einem Start von Haupt. Hingegen die VAR-Variablen bekommen Ihren Initialisierungswert, welcher in der Deklaration festgelegt wurde.
    Ich für mein Fall würde bei dieser Art immer auf eine PERS-Variable setzen.
    Tja und CONST sind halt konstante Variablen die durch eine Programminstruktion nicht beeinflusst werden können.


    Gruß


    Sven


    P.S.: PERS:=CONST; So sollte es eigentlich funktionieren (PERS=speichernde Variable wie p10 etc; CONST= konstante Variable wie p10_1 etc)

    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!

    Einmal editiert, zuletzt von Sven Weyer ()


  • PERS:=CONST; So sollte es eigentlich funktionieren (PERS=speichernde Variable wie p10 etc; CONST= konstante Variable wie p10_1 etc)


    Genau so hab ich es auch umgesetzt - läuft prima! :danke:
    Jetzt muss ich nur noch irgendwie den Gruppeneingang mit den Werten einlesen (Umschaltung läuft momentan "manuell").


    Gruß
    Buschmann

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