Include in RAPID

  • Hallo,


    einmal vorweg zur Erlärung. Wir lackieren nun seit gut einem Jahr in einer neuen Produktionsanlage mit 4 ABB IRB580 Robotern. Zu jedem Artikel gibt es (logisch) ein Typen-Programm bzw. Bewegungsprogramm und eine Brushtabelle, in welcher wir die Brushwerte für die einzelnen Farben zu den jeweiligen Artikeln festlegen. Ebenfalls in der Brushtabelle enthalten, sind die Werte für unsere Koagulierung.


    Wir haben die Anlage jetzt ein Jahr sozusagen manuell gefahren, damit jeder Mitarbeiter den Umgang mit Steuerung etc. richtig erlernt. Nun soll über Lesestationen der Farbwechsel etc. automatisiert werden. Für diese Automatisierung ist es nun erforderlich, gebau zu definieren Welche Farbe wie lackiert wird und unter welchem Case die nötigen Informationen dazu hinterlegt sind. Jede Farbe soll dazu einem Case zugeordnet werden.


    Nun ist es aber so, das wir ungefähr 25 Artikel fahren und jeder Artikel in mindestens 15 unterschiedlichen Farben lackiert wird, zu denen es dann auch jeweils individuell angepasste Werte für die Koagulierung gibt. Wenn ich also die Anpassunf vornehmen möchte, dann muss ich jede Brushtabelle einzeln bearbeiten und dieser Aufwand ist recht groß.


    Jetzt meine eigentliche Frage... kann ich z.B. den Programm Bereich in den die Cases definiert werden in eine andere Datei auslagern und dann in den Brushtabellen an entsprechender Stelle includieren? Wenn ja, wie müsste die Syntax dazu aussehen?


    Ziel ist es, für jeden Roboter lediglich ein File zu haben in dem alle Cases definiert sind, so braucht man später bei Änderungen lediglich an einer Datei arbeiten und nicht an Roboter (4) mal Anzahl der Programme (25) mal Anzahl der Farben insgesamt (55). Das dürfte dann in Zukunft einiges erleichtern.

  • ANZEIGE
  • Das hört sich doch hoffnungsvoll an, hier mal ein Auszug aus einer Brushtabelle, in die später die Datei includiert werden müsste...



    Ich möchte jetzt praktisch die 'selectBrush()' sowie die Variablen unter '![Koagulierung,Flockung,Entschäumung]' zusammen in eine externe Datei auslagern und diese dann an entsprechender Stelle includieren, so das es praktisch wie folgt aussieht...



    hier aufrufen...



    Ich hoffe ich konnte das soweit verständlich erläutern?!

  • Hallo,
    weiss jetzt nicht wo das Problem liegt :kopfkratz:.


    Ich würde die beiden Teile jeweils in ein einzelnes Modul packen,
    nicht irgendwie includieren wollen.
    Macht doch nix, wenn die beiden Teile in unterschiedlichen Modulen
    stehen. Die Daten sind global bekannt, also kann aus dem
    einen Modul jeweils auf Daten / Prozeduren aus dem anderen
    zugegriffen werden.


    Hermann

  • Da stimme ich Dir Hermann generell zu, die Problematik ist aber folgende.


    Diese Brushtabellen werden von allen vier Robotern benutzt. Wir fahren derzeit 25 unterschiedliche Artikel, bedeutet also 4 x 25 = 100 Programme. Für jeden Artikel fahren wir mindestens 15 Farben, also haben wir in 100 Programmen mindestens 15 Brushtabellen, dazu jeweils Case und Koagulierung.


    Wenn ich in einer einzelnen Datei lediglich die Werte für die Koagulierung und die Cases die ja eh auf jedem Roboter gleich sind auslagern kann, brauche ich in Zukunft lediglich an dieser einen Datei meine Änderungen vornehmen und nicht seperat jede einzelne Brushtabelle bearbeiten.


    Derzeit ist es so, wenn ich z.B. Werte für die Koagulierung anpassen möchte und alle Lömi Lacke sollen einen Flocker Wert von x bekommen, dann muss ich auf allen Robotern, jede Brushtabelle öffnen, mir die Werte raussuchen, bearbeiten, speichern und auf den Rob schieben. Könnte ich das in einer einzelnen Datei machen, wäre das mit suchen und ersetzen schnell erledigt und würde eine Menge Zeit sparen.


    Mein Problem ist, das ich nicht weiss wie ich genau das dem Kind sage. Ich weiss nicht wie ich Dateien includiere oder wie ich wie Du sagst sowas jeweils in einem Modul ablege. Irgendwie muss ich doch irgendwo vermerken, auf welche Datei oder welches Modul zurückgegriffen werden soll, oder nicht?

    Einmal editiert, zuletzt von eJUNKI3 ()

  • Hallo ejUNKI3,


    du könntest vielleicht das erforderliche Programmmodul das Du "includieren" willst mit der Instruktion "Load" in den Programmspeicher laden und anschließend bei einem Produktwechsel wieder löschen und das nächste laden, wobei aber bedacht werden sollte, dass das Laden eine geraume Zeit in Anspruch nimmt.


    Hierzu musst Du eigentlich nur eine Zurordnung der Typen zu den Modulnamen festlegen, z.B. Programmnummer.


    Über ModExist bzw. EraseModule kann man das Modulhandling entsprechend komfortabel gestalten.


    Gruß
    Micky

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

  • Hallo Zusammen,


    @ eJUNKI3
    so einen Befehl wie Include gibt es bei Rapid nicht. So viel wie ich weiss!
    Aber die Lösung für dein Problem könnte das Laden von Modulen sein. Du kannst abhängig von bestimmten Zuständen verschiedene Module laden. Ist ja fast so wie Include. Das Laden kann auch während dem Betrieb erfolgen. Persönlich habe ich mit diesen Funktionen nichts gemacht steht aber viel in der Dokumentation. Entfernen von Modulen ist natürlich auch möglich.
    Alle Farbeinstellungen und erforderlichen Variablen in ein separates Modul legen. Bei einem Farbwechsel dieses Modul mit einem Editor ändern. Danach kannst du dieses Modul bei jedem Roboter in das System laden. Das Laden eines Modul musst du aber irgendwie im Programm anstoßen. Über ein Menü wenn der Roboter in Grundstellung ist oder über einen Interrupt wenn der Robi läuft. Haben die auch Multitasking?
    Gruß Paul

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

  • Hi,
    irgendwie steh' ich echt auf dem Schlauch :huh:. Verstehe ich das jetzt so richtig:


    - Es gibt mehrere Module B001_001, B001_002 .... mit verschiedenen
    brushdata's.


    - Du willst in jedem dieser Module das selbe 'Zeug' includieren, nämlich
    die Variablen koagulierung und die Prozedur selectbrush()


    Vielleicht erkennst Du schon, dass ich mit der Lackiererei nix am Hut habe,
    aber mit 'Modulen laden' habe ich schon einiges gemacht, scheint mir hier
    aber absolut nicht notwendig zu sein.


    Wenn meine Vermutung stimmt, dann ist's wirklich extrem einfach zu realisieren.


    Im Zweifelsfall könnte man die Daten auch schlicht und einfach in eine
    Textdatei schreiben und von dort einlesen (ist aber auch nicht gerade
    turboschnell :()


    Hermann

  • Hermann, so sieht es aus. Zu jedem Artikel haben wir ein Modul, denn die Werte für den Brush sind je Farbe individuell, doch der zugewiesene Case und die Werte für die Koagulierung sind immer gleich. Aus diesem Grund möchte ich die fixen Werte auslagern, so muss ich im Falle von anliegenden Änderungen nicht je 25 Module auf 4 unterschiedlichen Robotern bearbeiten, sondern kann dies separat für alle auf einen Schlag erledigen.


    Anders ausgedrückt oder umschrieben würde ich die Problematik mit der Erstellung einer Website vergleichen. Warum in jede Seite das CSS einbinden, wenn man es für alle Seiten in einer Datei zusammenfassen kann. Bei Änderungen die alle Seiten betreffen, muss man so nur an einem File arbeiten.


    Ich selbst bin was RAPID an recht frisch, aber gelernter Anwendungsentwickler und komme oft an Punkte wo ich mich frage, warum man das nicht einfacher oder eleganter lösen kann. Ich bin mit der Syntax nicht sehr vertraut und habe lediglich alle 3 Wochen in der NAchtschicht die Gelegenheit mich mal damit zu befassen. Ich habe hier leider keine Referenzen oder Bücher in die ich mal schauen könnte, alles was ich bisher von RAPID kenne habe ich mir mit try and error angeeignet.

  • Hallo,
    dann mach' es so wie ich es am Anfang schon geschrieben habe:



    und fertig ist die Laube.


    Kein Include (gibt es nämlich auf ABB-Robotern nicht) und nix.
    Die Prozedur selectBrush() ist dann global bekannt und kann
    ohne weiteres aus jedem anderen Modul aufgerufen werden.


    Das ist ja der Witz an den Modulen. So kann man gemeinsame Teile
    (oder Standardroutinen) in einem Modul halten, und braucht's
    nur zu kopieren.


    Hermann

  • Hallo Leute
    Ich bin auch nicht der Fuchs wenn es um Lackierungen geht, aber...
    man kann die Module auch aufteilen.


    Pack deine fixen Werte In z.B "Daten_konstant.MOD"
    und die die sich ändern in "Daten_variabel.MOD"



    Hast du etwas zu ändern, musst nur das "Variable" Modul in alle Roboter kopieren.
    Du brauchst es aber nur einmal zu schreiben.


    Wie gesagt ein Modul ist bei ABB , wenn es "Global" deklariert ist von überall im Programm sichtbar und wird bearbeitet!!!
    Das muß man nicht "Includen" :biggrins:


    Gruß
    Högi

    Zwei Dinge sind unendlich,das Universum und die menschliche Dummheit. Aber bei dem Universum bin ich mir noch nicht ganz sicher, !!!!<br />Albert Einstein

    Einmal editiert, zuletzt von högi ()

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