Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
18. Mai 2012, 11:29:20
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: >> Roboterprogrammierer gesucht !? <<

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  ABB Roboter (Moderatoren: burlibua, Sven Weyer, rmac)  |  Thema: Include in RAPID 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Include in RAPID  (Gelesen 1549 mal)
eJUNKI3
Neuling
*
Offline Offline

Beiträge: 13


« am: 19. November 2008, 03:10:13 »

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.
Gespeichert
Robcheck01_MJ
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 269



« Antworten #1 am: 19. November 2008, 19:14:51 »

Hallo eJUNKI3,

sollte bestimmt möglich sein. Dazu sollte man aber mehr über dein Programmaufabeu wissen. So allgemein ist das dann immer etwas schwierig.

Gruss...
Gespeichert

„Herr, lass mich ein guter Mensch sein. Aber bitte nicht sofort.“
eJUNKI3
Neuling
*
Offline Offline

Beiträge: 13


« Antworten #2 am: 19. November 2008, 20:26:37 »

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

Code:
%%%
  VERSION:1
  LANGUAGE:ENGLISH
%%%

MODULE B001_001

!die Brushtabellen für die einzelnen Farben

    PERS brushdata Farbe1{15}:=[[0,150,150],[105,190,300],[105,190,300],[115,190,300],[115,190,300];
    PERS brushdata Farbe2{15}:=[[0,150,150],[105,190,300],[105,190,300],[115,190,300],[115,190,300];
    PERS brushdata Farbe3{15}:=[[0,150,150],[105,190,300],[105,190,300],[115,190,300],[115,190,300];

    ![Koagulierung,Flockung,Entschäumung]
    VAR koagulierung kgFarbe1{3} := [62,32,300];
    VAR koagulierung kgFarbe2{3} := [62,32,300];
    VAR koagulierung kgFarbe3{3} := [62,32,300];
             
PROC selectBrush()
    TEST getNextBrushNr()
      CASE 1:
        setBrushTabelle Farbe1, kgFarbe1, 150, "TypA";
      CASE 2:
        setBrushTabelle Farbe2, kgFarbe2, 150, "TypA";
      CASE 3:
        setBrushTabelle Farbe3, kgFarbe3, 150, "TypA";
    ENDTEST
ENDPROC

ENDMODULE

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...

Code:
    ![Koagulierung,Flockung,Entschäumung]
    VAR koagulierung kgFarbe1{3} := [62,32,300];
    VAR koagulierung kgFarbe2{3} := [62,32,300];
    VAR koagulierung kgFarbe3{3} := [62,32,300];
             
PROC selectBrush()
    TEST getNextBrushNr()
      CASE 1:
        setBrushTabelle Farbe1, kgFarbe1, 150, "TypA";
      CASE 2:
        setBrushTabelle Farbe2, kgFarbe2, 150, "TypA";
      CASE 3:
        setBrushTabelle Farbe3, kgFarbe3, 150, "TypA";
    ENDTEST
ENDPROC

hier aufrufen...

Code:
%%%
  VERSION:1
  LANGUAGE:ENGLISH
%%%

MODULE B001_001

!die Brushtabellen für die einzelnen Farben

    PERS brushdata Farbe1{15}:=[[0,150,150],[105,190,300],[105,190,300],[115,190,300],[115,190,300];
    PERS brushdata Farbe2{15}:=[[0,150,150],[105,190,300],[105,190,300],[115,190,300],[115,190,300];
    PERS brushdata Farbe3{15}:=[[0,150,150],[105,190,300],[105,190,300],[115,190,300],[115,190,300];

### AN DIESER STELLE MÖCHTE ICH DIE EXTERNE DATEI INCLUDIEREN ###

ENDMODULE

Ich hoffe ich konnte das soweit verständlich erläutern?!
Gespeichert
Hermann
Elite Member
*******
Offline Offline

Beiträge: 808


« Antworten #3 am: 19. November 2008, 20:38:51 »

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
Gespeichert
eJUNKI3
Neuling
*
Offline Offline

Beiträge: 13


« Antworten #4 am: 19. November 2008, 22:59:23 »

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?
Gespeichert
Micky
Junior Member
****
Offline Offline

Beiträge: 133



« Antworten #5 am: 20. November 2008, 10:19:48 »

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
Gespeichert
Paulaner
Junior Member
****
Offline Offline

Geschlecht: Männlich
Beiträge: 116



WWW
« Antworten #6 am: 20. November 2008, 10:28:19 »

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
Gespeichert

Erfahrung kann man nicht kaufen,
aber man kann dafür bezahlen.
Hermann
Elite Member
*******
Offline Offline

Beiträge: 808


« Antworten #7 am: 20. November 2008, 20:31:45 »

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  Sad)

Hermann
Gespeichert
eJUNKI3
Neuling
*
Offline Offline

Beiträge: 13


« Antworten #8 am: 20. November 2008, 21:17:57 »

@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.
Gespeichert
Hermann
Elite Member
*******
Offline Offline

Beiträge: 808


« Antworten #9 am: 21. November 2008, 18:46:24 »

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

Code:
%%%
  VERSION:1
  LANGUAGE:ENGLISH
%%%

MODULE KOAG
    ![Koagulierung,Flockung,Entschäumung]
    VAR koagulierung kgFarbe1{3} := [62,32,300];
    VAR koagulierung kgFarbe2{3} := [62,32,300];
    VAR koagulierung kgFarbe3{3} := [62,32,300];
             
PROC selectBrush()
    TEST getNextBrushNr()
      CASE 1:
        setBrushTabelle Farbe1, kgFarbe1, 150, "TypA";
      CASE 2:
        setBrushTabelle Farbe2, kgFarbe2, 150, "TypA";
      CASE 3:
        setBrushTabelle Farbe3, kgFarbe3, 150, "TypA";
    ENDTEST
ENDPROC

ENDMODULE

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
Gespeichert
högi
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 288



« Antworten #10 am: 21. November 2008, 21:05:07 »

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
Gespeichert

Zwei Dinge sind unendlich,das Universum und die menschliche Dummheit. Aber bei dem Universum bin ich mir noch nicht ganz sicher, !!!!
Albert Einstein
eJUNKI3
Neuling
*
Offline Offline

Beiträge: 13


« Antworten #11 am: 21. November 2008, 21:32:58 »

Ich danke Euch, ich werde es kommende Nachtschicht mal versuchen und mich ganz sicher bei Problemen wieder hier melden. thx.
Gespeichert
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  ABB Roboter (Moderatoren: burlibua, Sven Weyer, rmac)  |  Thema: Include in RAPID « vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS