RAPID: Position mit variablen Werten anfahren

  • Hallo zusammen,


    ich versuche, eine Position über Variablen anzufahren. Der Einfachheit halber direkt als Beispiel:

    Normalerweise sieht mein Modul ca. so aus:

    Code
    MODULE MainModule
        VAR speeddata Speed := [800.0, 800.0, 800.0, 60.0];
        PROC main()
            MoveL [[200,100,50],[0,0,0,0],[-1,-2,0,1],[9E9,0,0,9E9,9E9,9E9]],Speed,z0,Tool,\WObj:=wobj0;
        ENDPROC
    ENDMODULE


    Nun würde ich gerne die xyz-Koordinaten nicht fest in die MoveL-Zeile schreiben, sondern stattdessen Variablen verwenden. Macht in diesem Fall natürlich wenig Sinn, da mein Modul aber größer und verschachtelter ist, wäre es für den Anwender praktisch, die Koordinaten als Variablen zu übergeben. Da ich aktuell noch wenig von RAPID verstehen, habe ich im Internet rumgesucht und das is rausgekommen:



    Funktioniert natürlich nicht, aktuell kommt immer "Unexpected 'var'" wenn ich den Code auf dem IRC5 Teach Pendant reinladen will. Aber ich gehe davon aus, dass der Fehler noch tiefer sitzt...könnt ihr mir bitte helfen? Vielen Dank für jegliche Tipps! :)


    Viele Grüße,

    Mo

  • ANZEIGE
  • Hi, wenn du die Position über Variablen anfahren möchtest, dann musst du die Variablen auch in die Position schreiben.

    Nichts ist für die Ewigkeit .

  • Hi, wenn du die Position über Variablen anfahren möchtest, dann musst du die Variablen auch in die Position schreiben.

    Das macht er ja bereits. S. zweiten Codeschnipsel.


    MoBa: kannst du bitte die Fehlermeldung eingehender analysieren und mal Screenshots schicken? Ich befürchte, dass der Fehler von irgendeiner anderen Stelle kommt. I.d.R. werden solche Meldungen immer mit einem Verweis auf Modul/Zeile gebildet.


    Nachtrag:

    ich habe jetzt einmal die Variablen x1, y1 und z1 aus der PROC in das Modul kopiert und erhalte damit die Fehlermeldung, dass es einen Typenkonflikt gibt.


    Dieser rührt aber daher, dass die Variable z1 als Überschleifzone bereits vordefiniert ist.


    Nachtrag 2: Die Fehlermeldung kam mir (so bilde ich mir es ein) mal unter, als ich versehentlich eine Variable mitten im Programm deklarieren wollte. Das geht nicht. Das mag er nur am Beginn eines Moduls und zu Beginn einer Prozedur / Funktion. Ebenso können RECORDs nur direkt nach der Moduldeklaration angelegt werden.

    2 Mal editiert, zuletzt von Potte1604 () aus folgendem Grund: Nachtrag 2

  • Hallo zusammen,


    erstmal vielen Dank für die ganzen Antworten! Ihr habt mir schon sehr geholfen, auch wenn das Problem noch immer da ist. Wenn ich den Code nur virtuell (in RobotStudio) auf die Steuerung packe, kann ich ihn dort interessanterweise ausführen, obwohl die virtuelle Steuerung eine Kopie der realen Steuerung ist. Sobald ich den Code jedoch auf den realen Roboter spiele, erhalte ich noch immer die Fehlermeldung "unexpected 'var".


    MoBa: kannst du bitte die Fehlermeldung eingehender analysieren und mal Screenshots schicken? Ich befürchte, dass der Fehler von irgendeiner anderen Stelle kommt. I.d.R. werden solche Meldungen immer mit einem Verweis auf Modul/Zeile gebildet.


    Ja das hast du wahrscheinlich recht. Ich gehe mittlerweile davon aus, dass das Problem darin liegt, dass es sich um einen stark integrierten Schweißroboter handelt. Dieser wird maßgeblich von einem externen Controller beeinflusst und steuert selbst wiederum die Schweißquelle als Master. Vermutlich funkt da irgendein Hintergrundprozess dazwischen, auch wenn es für mich wenig Sinn ergibt. Ich bringe das Thema somit zum Anlagenbauer, da der Code an sich ja wohl nicht das Problem ist :) Screenshot kommt sobald möglich.


    Hast du alles definiert?Tool?

    Ja, das Tool hat in Echt einen anderen Namen, habe es hier der Einfachheit halber einfach "Tool" genannt. Das Tool funktioniert auch mit den ganzen anderen Modulen, die wir ausführen.


    Was NIE geht ist eine Orientierung von [0,0,0,0], allerdings müsste das einen anderen Fehler werfen... aber standardmäßig besser mit der "neutralen" Orientierung [1,0,0,0] anfangen.

    Danke für den Hinweis! Ist in Echt auch eine andere Orientierung, hatte hier die [0,0,0,0] nur als Beispiel reingeschrieben, aber gut zu wissen dass das gar nicht geht (mach ja auch Sinn, hab nie darüber nachgedacht).


    Ich gebe Bescheid, sobald wir Neuigkeiten haben!

    Einmal editiert, zuletzt von MoBa ()

  • Was im Realem Roboter nicht geht soll beim Virtuellen auch nicht funktionieren.

    Ist es wie du sagst irgendwo anders die Fehler.Wird beim Realem Roboter die Fehlerstelle angezeigt?Wo hast du die defininitonen für die Variablen?

    Poste mal eine Backup.



    MFG


    Tamas

  • Was schonmal zwischen real und virtual beim übertragen Fehler verursachen kann ist wenn man Variablen in einem anderem Modul gespeichert hat als in dem das man überträgt.


    Hatte ich schon ab und zu mit Fahrbefehlen im richtigen Modul aber die Punkte waren irgendwie in Modul1 gerutscht. In der Simulation läuft alles aber sobald man an den echten Robi geht steht man auf einmal leicht blöde vor der Steuerung ;)

  • Ja, das Tool hat in Echt einen anderen Namen,..


    Danke für den Hinweis! Ist in Echt auch eine andere Orientierung..

    Bin verwirrt :/ Ist der obige Code jetzt derjenige, der das Problem in 'Echt' verursacht oder nicht?

    Bei solchen Fehlern sollte man den Code den man hier postet auf keinen Fall irgendwie ändern.


    Edit: Bei den meisten Fehlern, die beim Übertragen auftreten kann man auf die Fehlermeldung doppelklicken, dann springt der Cursor im Programmeditor an die entsprechende Stelle. Schon mal probiert ??

  • Was mir auch immer hilft bei solchen "learning by doing"-Sessions: jeder, wirklich jeder Variablen, jedem Modul- oder Routinennamen in allem, was man als Beispielcode vorgesetzt bekommt, konsequent ganz eindeutige und durchaus komplizierte deutsche Namen zu geben. Kann man hinterher immer noch schön machen im echten Anwendungsfall.

    Wenn schon das Testmodul ausgerechnet "MainModule" heisst, die Routine "Main", die Speeddata "Speed" und das Tool "Tool" und der Punkt "p1", dann kann man fast darauf wetten, dass man irgendwo mit Systemeigenschaften kollidiert, oder dass irgendwer das vorher schon mal so gemacht hat, oder, bestenfalls, dass man vor lauter Beliebigkeit seinen eigenen Code nicht mehr durchschaut, weil man nicht spontan weiß, ob das, was man da gerade anguckt, ein Befehl, ein Systemdatentyp, eine Systemvariable oder was Eigenes ist.


    Am schlimmsten finde ich (nicht ABB-spezifisch) immer spontan funktionierenden Code aus Dokus oder aus StackOverflow oder woher auch immer, der absichtlich für's Publikum superschön gemacht wurde. Bei Python ist das oft so - es geht einfach, und man weiß nicht, warum eigentlich. Ich benenne dann einzeln alles um, bis es Fehler wirft, dann hab' ich den Kern verstanden.

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