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

Autor Thema:  Positionen anhand von GI  (Gelesen 3380 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Positionen anhand von GI
« am: 01. Februar 2006, 20:43:46 »
Servus,

weiß jemand, wie ich elegant anhand unterschiedlicher Formatnummern (GI)  unterschiedliche Robtargets anfahren kann?
Oder muß/kann ich das so schreiben, dass ich n+1 If-Instruktionen verwenden muß, quasi der lange Schreibweg?:


IF GI1=10 then
MoveJ ......
ENDIF
IF GI1=11 then
MoveL ......
ENDIF
IF GI1=12 then
MoveJ ......
ENDIF
......

 :danke:
  • 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

Offline rmac

  • Forum Elite LV 4
  • *
  • Beiträge: 281
  • Bewertet: 0
Re: Positionen anhand von GI
« am: 01. Februar 2006, 22:20:06 »
Hallo Noob,

ich weiß zwar nicht was du unter GI-Nummern (?) verstehst, aber prinzipiell kann man das auch über ein Array (Feld) von RobTargets lösen.

Also in etwa so:
  CONST robtarget rtP1:=...;
  CONST robtarget rtP2:=...;
  CONST robtarget rtPN:=...;
  CONST robtarget rtPosArray{3}:=[rtP1, rtP2, rtPN];

  ! oder auch direkt deklariert, d.h. ohne vorherige Dekl. der Einzelpos.
  CONST robtarget rtPosArray{3}:=[[...],[...],[...]];

  ! und dann so aufrufen:
  MoveL  rtPosArray{GI}, ....

Ist aber nur dann sinnvoll, wenn deine GI-Nummerierung möglichst fortlaufend ist und möglichst bei 1 beginnt, sonst wird's aufwändiger bzw. problematisch (könnte man lösen über Lookup/Hash-Tabelle von GI auf RobTarget-Index, blablabla...)
Vergleiche hierzu auch folgendes Posting:
http://www.roboterforum.de/roboter-forum/index.php?topic=1286.0

Das Gleiche gilt wenn unterschiedliche Bewegungen (MoveL, MoveJ, ...) und/oder variable Bewegungsparameter pro Bewegung notwendig sind (Zone, Speed, etc.)
Dann muß man für jeden Parameter ein gleichlanges "paralleles" Array mit den entsprechenden Werten pflegen und beim Aufruf der Instruktion einsetzen.
Alternativ (und besonders elegant) ist hier der Einsatz von benutzerdefinierten Datentypen (siehe in Doku unter RECORD/ENDRECORD) zu bevorzugen, d.h. man definiert einen eigenen Datentyp, der sämtliche benötigten Parameter enthält und deklariert dann ein Array dieses Datentyps: jedes Element des Feldes enthält dann einen kompletten Parametersatz...

Aber Achtung, soweit ich mich erinnern kann (!), muß für benutzerdefinierte Datentypen die Software-Option "Developer Functions" installiert sein (zumindest auf der S4C (?)).
Ich hab das nämlich mal fix in ein Programmkonzept mit eingebaut um dann festsstellen zu müssen, dass das ohne diese Option nicht funzt.
Das steht wahrscheinlich irgendwo im "Klitzeklitzeklein-Gedruckten"  :wallbash:   (oder auf schwedisch  :tot:)

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: Positionen anhand von GI
« am: 02. Februar 2006, 07:27:21 »
GI = Gruppeneingang

und merci Rainer
  • 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: Positionen anhand von GI
« am: 02. Februar 2006, 07:47:01 »
Moin,

Danke für die Aufklärung.
Hätte ich auch selbst drauf kommen können,
war nur durch den Ausdruck "Formatnummern" etwas verwirrt...  :huh:

Aber dann könnte es mit der fortlaufenden Indizierung ja funktionieren.

Gruß
Rainer
« Letzte Änderung: 02. Februar 2006, 07:49:30 von rmac »
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline Sven Weyer

  • Global Moderator
  • Forum Legende LV 1
  • *
  • Beiträge: 1056
  • Bewertet: +17
Re: Positionen anhand von GI
« am: 02. Februar 2006, 13:40:20 »
Hi Noob,
die Variante mit den Datenfeld haben wir auch schon so verwendet. Des weiteren könntest Du die einzelnen Bewegungen auch in Routinen verpcken und dann in Abhängigkeit des GI aufrufen.

Proc mp12()
  MoveJ...
endproc

Der Aufruf kann dann frei gestaltet werden.

%"m"+NumToStr(GI..,0)%

wäre demnach nur ein Zeile für den Aufruf.

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: Positionen anhand von GI
« am: 02. Februar 2006, 16:01:06 »
hmm die Robotic-Version gefällt mir besser, da übersichtlicher und für andere später nachvollziehbar ist.

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

Offline Noob

  • Forum Mitglied LV 4
  • *
  • Beiträge: 44
  • Bewertet: 0
Re: Positionen anhand von GI
« am: 02. Februar 2006, 17:37:18 »
Ich nochmal  :mrgreen: @robotic,

Dein Vorschlag beruht doch auf CallbyVar oder? Kann man da tatsächlich GruppenEingänge direkt nutzen oder sollte man den Wert im GI vorher lieber in eine Variable schieben?
  • 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: Positionen anhand von GI
« am: 02. Februar 2006, 19:02:11 »
Hi Noob,
wir benutzen das oft so. Dazu ist nichts notwendig. Es ist nur eine Frage wann und wie deine Signalkonsistenz ändert.
Aber wenn Du wirklich eine Bewegung in abhängigkeit der aktuellen Situation durchführen möchtest ist das eine Möglichkeit.

noch ein Beispiel:
%"r_"+NumToStr(giTypecode,0)+"_"+NumToStr(giVersionstyp,0)%;

so rufen wir unsere einzelnen Typen auf.
Funzt immer.

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: Positionen anhand von GI
« am: 02. Februar 2006, 20:01:32 »
oki, ich probiers mal aus  :merci:
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Viele Grüße Noobie

Offline burlibua

  • Forum Mitglied LV 11
  • *
  • Beiträge: 110
  • Bewertet: 0
Re: Positionen anhand von GI
« am: 05. Februar 2006, 01:27:56 »
Hi Noob

rmac hat dir da schon eine tolle Lösung geboten, aber du kannst die Robtargets im Programm die im Array sind nicht direkt mit "Korpos" korrigieren. Währe vielleicht besser wenn du die Varibale zuerst umladen würdest und dann wieder zurück

Ablagepos:=Ablagepos_all[Formatnummer];
MoveL Ablagepos ...........
Ablagepos_all[Formatnummer]:=Ablageposition;

so kannst du mit Korpos die Position einfach teachen.  Ablagepos am besten als PERS definieren.

Weiters würde ich den Gruppeneingang abfragen in eine numerische Variable speichern sonst kann es passieren daß die erste Hälft des Prg als zB: Fromat 1 durchlaufen wird und
die zweite Hälfte als Format 2 wenn dazischen umgeschaltet wird.

mfG Burlibua
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

Offline rmac

  • Forum Elite LV 4
  • *
  • Beiträge: 281
  • Bewertet: 0
Re: Positionen anhand von GI
« am: 06. Februar 2006, 01:30:08 »
Also man kann die Elemente von RobTarget-Arrays schon mit KorPos ändern (zumindest bei der S4C (?)):
- erst in die Datenansicht für RobTargets wechseln
- dann das gewünschte Datenfeld auswählen und im Menu "Bearbeiten | KorPos" wählen
- Rückfrage mit "Ja" bestätigen
- abschließend das gewünschte Element auswählen und mit "KorPos"-Button ändern

Ob das allerdings auch bei benutzerdefinierten Daten-Arrays geht, weiß ich nicht.  :kopfkratz:
...bin jetz auch zu faul zum ausprobieren

Die CallByVar-Methode (wie von robotic74 beschrieben) ist sicherlich besser wenn man wenige Varianten und/oder komplexe Bwegungsabläufe (z.B. Fügen) abzuarbeiten hat. Ich denke so ab >15-20 Varianten (=Routinen) wirds dann aber auch irgendwann unübersichtlich.
Die Array-Methode mit RobTargets ist nur bei vielen Typen mit simplen RobTarget-Zielen von Vorteil.

Ggfls. kann auch eine Kombination von beiden Methoden sinnvoll sein:
In einem Projekt mussten bei einer Blister-Palette abhängig von der Nest-Position unterschiedliche Füge-Routinen verwendet werden um die Teile sicher in die Nester abzulegen. Die Nester sind dabei von 1..N durchnummeriert. Gelöst wurde das über ein Array{1..N} von Strings das die Namen der Füge-Routinen für die jeweiligen Nester enthält. Das hat den Vorteil, dass man eine Füge-Routine auch für mehrere unterschiedliche Nester verwenden kann (vorher mit ProgDisplacement verschieben!) und nur einige Spezialfälle gesondert programmieren muß.

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

Offline burlibua

  • Forum Mitglied LV 11
  • *
  • Beiträge: 110
  • Bewertet: 0
Re: Positionen anhand von GI
« am: 08. Februar 2006, 08:44:19 »
Hey Rmac

Haste recht --- bin aber zu faul um immer wieder auf Ansicht  robtargets ... zu wechseln, und außerdem haste leicht einen Fehler. Wenn du nur eine Zeile im Index verwechselst hast gleich eine die Sch... perfekt. Da tu ich doch lieber umladen da sind die Fehler begrenzt -- mann darf nur nicht da PRG vorzeitig beenden.
Ansonsten sind die Lösungen sehr gediegen.

mfG Burlibua
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert


xx
TCP - Vermessen - Positionen

Begonnen von JHP

2 Antworten
1410 Aufrufe
Letzter Beitrag 16. September 2010, 19:19:13
von JHP
xx
Werkstückhandling mit RelTool-Positionen

Begonnen von Buschmann

2 Antworten
1654 Aufrufe
Letzter Beitrag 22. November 2008, 12:01:09
von Buschmann
xx
Positionen bei zwei Robotern

Begonnen von Feeli

9 Antworten
2890 Aufrufe
Letzter Beitrag 08. Mai 2007, 19:38:54
von Michael J.
xx
Robotstudio 5 & Offset Positionen

Begonnen von IH-Ilz

2 Antworten
1288 Aufrufe
Letzter Beitrag 08. Juni 2011, 07:12:36
von IH-Ilz
xx
Verschiebung von Positionen abhängig von Registern

Begonnen von Borg

2 Antworten
1709 Aufrufe
Letzter Beitrag 26. Januar 2006, 17:02:29
von Borg
 

über das Roboterforum

Nutzungsbedingungen Impressum
Sitemap