# Universal Robots - UR5 UR10 Programmierbeispiele



## mecs133 (4 November 2013)

Moin Zusammen.

Sorry es gehört nicht ganz hier her aber gibt es hier wen der schon mal etwas mit einem Universal Robot UR5 oder UR10 zutun gehabt hat?
Bin auf der Suche nach Programmier-beispielen bzw. nach wem der sich mit der Programmierung auskennt.

Gruß Max


----------



## van (4 November 2013)

Hallo

hatte schon mal einen UR5, vor einiger Zeit. Hab damals eine schnell Unterweisung von meinem Vertriebler bekommen. War jetzt nicht wirklich schwer, ist aber schon etwas anders als zB ein Kuka. 

Was suchst du genau ??

Hast du deinen UR schon ?? Einfach mit rumspielen, kann ja nicht viel kaputt gehen


----------



## MeisterLampe81 (4 November 2013)

Hallo mecs133,

wir haben einen UR10. Was für Programmierbeispiele suchst du? Warum brauchst du überhaupt Beispiele? Wie mein Vorredner van schon schrieb: "Einfach rumspielen, kann ja nicht viel kaputt gehen." 
Das Ding wird ja ganz einfach über das Touch Panel "programmiert" bzw. parametriert. Bei uns gab es mal einen 1-Tägigen Einführungskurs, der Rest ist und war learning-by-doing.. 

Gruß
MeisterLampe81


----------



## mecs133 (5 November 2013)

MeisterLampe81 schrieb:


> Hallo mecs133,
> 
> wir haben einen UR10. Was für Programmierbeispiele suchst du? Warum brauchst du überhaupt Beispiele? Wie mein Vorredner van schon schrieb: "Einfach rumspielen, kann ja nicht viel kaputt gehen."
> Das Ding wird ja ganz einfach über das Touch Panel "programmiert" bzw. parametriert. Bei uns gab es mal einen 1-Tägigen Einführungskurs, der Rest ist und war learning-by-doing..
> ...



Moin, 
Mein Programm ist soweit fertig, es handelt sich um ein selbst geschriebenes Stapel-Programm. Eine Entnahme Position und eine Kiste in die Abgestapelt wird. 
Mein Problem ist der "Force-Befehl" - Ich möchte bei der Entnahme und bei der Abgabe die Kraft auf den Wert x begrenzen. Also der Roboter soll seinen programmieren Weg fahren und stoppen sobald die Kraft größer x wird. Wenn ich das versuche, dann sieht es aus als wenn er einfach die Bremsen löst und fällt bis er seine Kraft x erreicht. Dann fährt er sein Programm wie gewohnt weiter.

Um den Roboter ohne Schutzzaun laufen zu lassen, muss doch sicher auch die Kraft begrenzt werden oder?#
Mein Händler kennt sich nur begrenzt aus und will mir nur den Lehrgang in Dänemark verkaufen.

Gruß Max


----------



## MeisterLampe81 (5 November 2013)

Hallo mecs133,

guck mal in das Handbuch vom UR5 http://www.universal-robots.com/Adm...ware_version_SW_1_6/manual_de_UR5_CB2_E67.pdf , da ist ab Seite 77 der FORCE-Befehl beschrieben.

Hier ist dein Problem auch beschrieben:" Trifft der Roboter in einer Achse, für die eine Kraft ungleich Null eingestellt ist, auf
keinerlei Hindernisse, beschleunigt er die Bewegung entlang/an dieser Achse."

Du kannst den UR5 und UR10 übrigens komplett ohne Schutzzaun/-gitter betreiben. Das war auch ein ausschlaggebener Grund, warum wir uns für diesen Roboter entschieden haben. Der Roboter hat eine spezielle Kollisionserkennung die sofort schaltet, wenn der Arm auf einen Gegenstand oder eine Person trifft. Habe es selber schon getestet... Die Beanspruchungsgrenze ist lt. Handbuch niedriger als 150N. Du mußt natürlich noch darauf achten, das das Werkzeug auch niemanden verletzen kann (schafe und spitze Kanten etc.).

Gruß
MeisterLampe81


----------



## Trilex (14 Juli 2014)

Hallo, ich hoffe es ist ok, auf einen so alten thread zu antworten?!

Bei den UR Robotern gibt es zweimal Force. Einmal den Force Modus und einmal die Funktion force().
Die force() Funktion findet man im Ausdruckseditor unter Funktionen.


Jetzt  muss einfach ein "IF force() < X" eingebaut werden (X Wert in Newton).  Beim IF noch den Haken setzen für Check Ausdruck kontinuierlich. Das ganze sollte dann in etwa so ausschauen:


In dem Beispiel fährt der Roboter von Punkt WP_Start zum Punkt WP_Testfahrt. Wenn auf dem Weg die Kraft von 30 Newton überschritten wird, stoppt der Roboter die Bewegung, springt in den else Bereich und gibt das Popup aus.
Um erst mal zu sehen, welche Kräfte im Betrieb wirken, kann man sich einen Thread erstellen, in dem die force() Funktion immer wieder ausgeführt wird und den Rückgabewert in eine Variable schreiben. Dann kann man den Wert im Reiter Variablen beobachten:


Grüße


----------



## simon_81 (24 November 2015)

Hallo,

Falls jemand zukünftig eine ähnliche Herausforderung hat und Roboter von Universal Robots (UR3, UR5 oder UR10) einfach programmieren können will oder auch kraft-sensitive Aufgaben lösen möchte, kann ich die Software hier empfehlen: 
:TOOL: ArtiMinds Robot Programming Suite (http://www.artiminds.com)

Damit kann rein visuell (ohne Programmierkenntnisse) und auch kraftgeregelt programmiert werden, online gibt es ein paar eindrucksvolle Videos bei Youtube von kraftgeregelter Montage

Viele Grüße,
Simon


----------



## MiLe (10 Dezember 2015)

MeisterLampe81 schrieb:


> Hallo mecs133,
> 
> guck mal in das Handbuch vom UR5 http://www.universal-robots.com/Adm...ware_version_SW_1_6/manual_de_UR5_CB2_E67.pdf , da ist ab Seite 77 der FORCE-Befehl beschrieben.
> 
> ...



Hallo zusammen 
Das was MeisterLampe81 da geschrieben hat, ist so leider nicht ganz richtig. Es muss für jede Anwendung eine extra Gefahrenanalyse gemacht werden. Einfach generell zu sagen, dass die UR´s ohne Schutzeinhausung laufen dürfen, ist eher fahrlässig. 

Auf diese Aussage kann man sich leider nicht berufen. 

Das Beispiel von Trilex ist aber sehr gut, und beschreibt das verhalten des UR sehr gut!

Schöne Grüße
Michael


----------



## speedyhoopster (4 August 2016)

Hallo, 
ich habe auch ein Problem mit dem UR 10. 
Ich will eine Kollisionserkennung machen, und habe das Problem das wenn ich den Roboter von Pos x nach y schicke, es eine Kollision gibt, ich das Programm zwar stoppen kann, jedoch nicht pausieren, da der Roboter nur einen Befehl akzeptiert. 
Ich möchte also das der Roboter bei einer Kollision stehen bleibt, kurz pausiert und danach mit dem eig Programm weitermacht. 
Gibt es eine Möglichkeit das umzusetzen ? 

Vielen Dank schon mal  

Gruß Speedy


----------



## MiLe (9 August 2016)

Hi speedyhoopster,
so generell standardmäßig gibt es da keine Möglichkeit, da in deinem beschriebenen Fall, der Roboter aus einem Sicherheitstechnischen Grund stehen bleibt, und daher nicht einfach von alleine wieder anfahren darf.
Man kann ein bisschen tricksen, indem du die Bewegung in einem Force Mode ausführst. Dann hast du aber fast keine Sicherheitstechnik mehr.

Warum willst du ihn absichtlich auf Kollision fahren lassen?

Grüße, MiLe


----------



## speedyhoopster (9 August 2016)

Hallo MiLe, 
also bei mir geht es nicht um einen Zwangsstopp aus Sicht des Roboters, sondern eine Kamera erkennt, dass sich z.B. eine Hand und der Roboter zu Nahe kommen und soll das Roboterprogramm pausieren, bis die Hand wieder verschwunden ist. 
Ich würde es gerne so machen, dass sich die laufende Bewegung pausiert und nach dem Entfernen der Hand wieder an dieser Stelle weitermacht. 
Ich habe bis jetzt leider nur die Möglichkeit gefunden, dass der Roboter sein komplettes Programm abbricht. 

Gruß, Speedy


----------



## nekron (20 August 2016)

Hallo ihr Universal Robots 

Habe eine Frage zu den Universal-I/O - was kann dort alles Eingestellt werden ? (Im Handbuch wird da kaum drauf eingegangen - Programm Start/Stop , Program läuft ..) - nur was da genau alles gemacht werden kann ist dort nicht erläutert. Da wir im Moment beim Kunden ein Projekt mit solchen Robotern in der Planungsphase haben wäre interessant, was hier alles an sinnvollen I/O Konfigurationen vorhanden ist. Somit könnte auch Softwaretechnisch schon begonnen werden bevor das Teil überhaupt da ist ...

Oder hab ich da ein Handbuch übersehen ?

OK ... habe http://www.universal-robots.com/how...pecial-functions-to-inputs-and-outputs-15418/
gefunden ...

Was ich aber noch gefunden habe ... kann der UR Standartmaessig ProfiNET ? Das wäre natürlich noch besser 
Kann mir das jemand beantworten ?

Danke & Gruss,
nekron


----------



## Matze001 (20 August 2016)

Soweit ich weiß kann er nur Modbus TCP.

Grüße

Marcel


----------



## Larry Laffer (20 August 2016)

Matze001 schrieb:


> Soweit ich weiß kann er nur Modbus TCP.



Das ist so ... 
Darüber hinaus hat er noch 7 oder 8 digitale Eingänge und genau so viele digitale Ausgänge.
Wenn du dann bei UR bzw. einem der Vertriebspartner nach der Anbindung an Siemens fragst erhältst du als Antwort : "Oooooh ... das geht ... aber so einfach ist das nicht und wir würden das auch nicht machen" ...
Ich habe diese Kopplung bislang nicht gebraucht ... aber zu denken gibt es einen dann schon ...

Ansonsten ist noch zu sagen, dass dieser "tolle" Roboter beileibe kein Rennpferd ist und das er mit einzulernenden Fahrbefehlen sehr unflexibel ist (er weiß nicht, wann er durch sich selbst hindurch fährt bzw. aus einer Position, in der sein Arm gestreckt ist, kann er sich nicht mehr selbst befreien).

Gruß
Larry

Gruß
Larry


----------



## Matze001 (20 August 2016)

Er weiß nicht wenn er durch sich selbst fährt? 
Das heißt wenn ich auf die andere Seite fahre brauche ich mindestens einen Stützpunkt? Oder schafft er das bei einer PTP Bewegung "grad so" weil es zufällig der effektivste Weg wäre?
Arm gestreckt -> Signularität in Achse 4 und 6? Auch schlecht wenn er da nicht mehr raus kommt.

Grüße

Marcel


----------



## brub (21 August 2016)

Soweit ich das grad noch richtig im Kopf habe ist der Universal Robot ab Steuerungsversion Cb 3 v 3.3 PROFINET fähig ,  dieses kann dann in den Einstellungen aktiviert werden. Für das Tia Portal wird auch ein Beispielprojekt mit der entsprechenden PROFINET Konfiguration auf der Support Seite zur Verfügung gestellt.Habe selbst aber auch nur mal kurz rein geschaut und noch keinen Anwendungsfall gehabt,  bei uns in der Firma laufen die meist autark.


----------



## Larry Laffer (21 August 2016)

@brub:
Ich fand den Robbi von UR nun nicht gerade toll - dennoch würde mich das, von dem du schreibst (einfach so) näher interessieren. Unser Vertriebspartner hatte uns dazu auch auf Anfrage hin nichts gesagt (also die PN-Geschichte).

@Marcel:
Ja ... du brauchst mindestens 1 besser sogar 2 Stützpunkte um seinen Mittelpunkt herum wenn du auf die andere Seite willst. Fand ich komisch und kannte ich bis dahin auch nicht so. Das liegt aber ggf. daran, dass das System in Raum-Koordinaten arbeitet und nicht mit ggf. viel einfacheren und möglicherweise auch schnelleren Achs-Bewegungen ...


----------



## brub (21 August 2016)

@ Larry: Ich bin mit dem System auch erst bei meinem neuen Arbeitgeber in Berührung gekommen,  wird auch nur für einfachste Handlingsaufgaben genutzt und ist preislich halt schon attraktiv im Vergleich zu anderen.
Fürbdie Anbindung an eine S7 1200 gibt es ein How To hier der Link.


----------



## Larry Laffer (21 August 2016)

@brub:
Danke schön ... vielleicht kann ich es ja mal irgendwann einmal gebrauchen ...


----------



## Mobi (22 August 2016)

Da wir einen UR5 der alten Generation haben, musste ich die Verbindung zu einer S7-1200 über Modbus TCP realisieren. Läuft sehr gut. Dabei haben die alles, wirklich alles, auf die Modbus Register gelegt.
Und das mit hindurchfahren ist halt nun wirklich so. Geht halt nicht anders.


----------



## MiLe (24 August 2016)

Also,
ab Softwareversion 3.3 (Gratis Update) ist Profinet Standardmäßig, wobei der UR hier als device und nicht als Steuerung fungiert.
Updatebar sind alle CB3.1 Varianten der UR, unabhängig von der Größe.

Das mit dem selbst durchfahren passiert nur bei Linearen bewegungen. Wenn man mit einem MoveJ Befehl fährt hat man da keine Probleme. Auch nicht mit Singularitäten.

Zu der eigentlich gestellten Frage zu den Konfigurierbaren Ein/Ausgängen: Schau im Handbuch mal bei den Sicherheitseinstellungen nach, dort sollten weitere Sicherheitstechnische möglichkeiten für die Config I/O´s sein.
Zudem können auch die Config I/O´s wenn diese nicht für Sicherheitstechnik gebraucht werden, auch als normale ein und ausgänge verwendet werden.

Zudem lieber Larry Laffer hat der UR Standardmäßig in seinem Schaltschrank 16 DI´s und 16 DO´s. Die von Ihnen beschriebene Variante ist ein CB2 Controller der seit Anfang letzem Jahr nicht mehr produziert wird.


----------



## julian1 (25 März 2019)

Hi,

ich reaktiviere einfach mal diesen alten Thread, da er ziemlich genau mein Problem beschreibt. Sollte das nicht erwünscht sein, kann ich auch gerne einen neuen aufmachen.

Ich arbeite derzeit mit einem UR5e Roboter. Dieser soll Positionen abfahren, und dabei Ventile in ein Bohrloch drücken. Die Ventile wurden bereits auf dem Bohrloch platziert. Damit mir der UR5e keinen Sicherheitsstopp auslöst (Kraft am Greifer >=150 Newton) wäre es sinnvoll, die Bewegung, welche dafür sorgt, dass der Greifer das Ventil in die Vorrichtung drückt, mit einer maximalen Kraft zu begrenzen. Wenn diese erreicht ist, soll der Roboter dann wieder in die ursprüngliche Position zurück fahren.

Bis auf die else-Abzweigung und einem Größer-als-, anstatt eines Kleiner-als-Zeichens, hab ich alles genau so gemacht wie der User Trilex (-> Universal Robots - UR5 UR10 Programmierbeispiele)

Mein pseudocode sieht dann folgendermaßen aus (habe leider gerade keine Möglichkeit das URP-Programm hochzustellen):

bewege achse
wegepunkt1
if force() > 40
wegepunkt2

Nach meinem Verständnis müsste dies doch dafür sorgen, dass der Roboter die Fahrt zum wegepunkt1 abbricht, sobald er eine Kraft größer 40 Newton registriert und dann den wegepunkt2 abfährt. Den Haken bei Check Ausdruck kontinuierlich habe ich auch gesetzt. Der Roboter lässt sich aber nach wie vor nur durch den Sicherheitsstopp (Kraftaufbringung >150 Newton) von der Ausführung seines aktuellen Bewegungsbefehls abhalten.

Gibt es hier noch zusätzliche Einstellungen die man beachten muss?


----------



## Trilex (25 März 2019)

Es ist eine Weile her, deswegen kann ich nicht großartig helfen. Am besten erstellst du einen Thread, in dem du den force() Wert alle 0,1 Sekunden in eine Variable schreibst. So kannst du die Werte im Betrieb beobachten. Es gab noch einen Befehl, mit dem du die force Werte für jede Richtung anzeigen lassen kannst. Den habe ich allerdings vergessen. 
Grüße


----------



## julian1 (26 März 2019)

Ok das werd ich morgen gleich mal ausprobieren. Danke!

Allgemein hat der UR ja bereits Kraftsensoren im Tool verbaut, sodass die Möglichkeit besteht Kräfte ohne zusätzlich angebrachte Kraftsensoren (https://www.jugard-kuenstner.de/universal-robots/kraft-momenten-sensor/) zu ermitteln oder?


----------



## Trilex (26 März 2019)

Wenn ich mich richtig erinnere, ist die Kraftmessung plus minus 20 Newton genau. Es kommt darauf an, welches Model (UR3/5/10) Ihr im Einsatz habt, welche Roboter-Generation und wie die Gelenke stehen. Wenn der Roboter sehr "zusammengeklappt", "ausgefahren" oder mit zu hoher Geschwindigkeit fährt, klappt das Ganze nicht immer wie man es sich vorstellt. Deshalb erstmal schauen, was der Roboter für Werte ausspuckt. ;-) Der Roboter hat (Wissenstand 3 Jahre alt) keine eigenen Sensoren, sondern berechnet die Kraft anhand der Leistungsaufnahme der Gelenke. Wenn es genauer werden soll, muss man zum Kraftsensor greifen.


----------



## MiLe (26 März 2019)

Hi zusammen,

Das was du hier gebaut hast macht folgendes: Roboter fährt auf Wegpunt1. Wenn die Kraft dann größer als 40N wird fährt er an den WP2 weiter. 
Du müsstest einen Kraftbefehl verwenden und dort den WP einfügen den du mit der bestimmten Kraft anfahren willst. Also keine If-Bedingung sodern den Force Befehl den du bei "Assistenten" findest.


Aktuell ist die Einstellbare Kraft im ForceMode auf 100N beschränkt, sofern ich mich nicht ganz täusche.
Bei solchen Fragen einfach an den Support deines Lieferanten wenden. In Bayern, Sachsen und Thüringen ist das Jugard+Künstner. Von denen hast du ja schon einen Link oben reinkopiert. Die haben auf der Homepage eine Support-Mail-Adresse. Wenn du wo anders gekauft hast bitte dort melden. J+K hilft dir dann zwar auch, verrechnet aber logischerweise die Arbeitszeit.

Der Kraftsensor ist nur in den eSeries-Modellen verbaut. Das hängt jetzt davon ab welchen Typ du hast. Wenn du eine CB Variante hast stimmt das was "Trilex" vor mir geschrieben hat.

Viel Erfolg weiterhin.


----------



## Trilex (26 März 2019)

Hi,

das mit dem IF geht auch. (Kann man ja auch bei zusätzlichen Sensoren nutzen)
Jetzt fällt mir aber auch erst der Fehler auf. Der Wegpunkt, der ggf. abgebrochen werden soll, muss ins If.

bewege achse
WP"vor eindrücken"
bewege linear
if force() < 40
  WP "wegepunkt1"
endif
WP "nach eindrücken"

So fährt der Roboter zu Wegpunkt "vor eindrücken".
Dann fährt/drückt er Richtung "wegpunkt1", bis die kraft 40N erreicht.
Danach fährt er zu "nach eindrücken"

Ob der Assistent besser ist, weiß ich nicht, der war mir immer zu schlecht erklärt und hat bei uns nicht besser "funktioniert" als das If. (da lasse mich aber gerne verbessern)
Interessant, dass es jetzt Versionen mit Sensor gibt, die gab es zu meiner Zeit noch nicht.


----------



## MiLe (27 März 2019)

Hey Trilex,

wenn du Probleme mit dem ForceMode hast würde ich dir ein CoreTraining empfehlen. Das gibt es auch bei der Firma die Julian1 oben schon erwähnt hatte. Da hab ich was auf der Homepage gesehen


----------



## Trilex (27 März 2019)

Hi MiLe,

ich hab das schon auf die Reihe bekommen, fand den Assistenten damals nur sehr schlecht gemacht. Ein Assistent sollte einem die Aufgabe erleichtern und selbsterklärend sein, das war er damals leider nicht. (Oder ich hab zu quer gedacht)
Dazu fand ich das If für so einfache Aufgaben voll ausreichend und schön übersichtlich.
Schulungen hab ich selbst gegeben.  Trotzdem danke für den Tipp!
Mittlerweile hab ich nichts mehr mit Robotern zu tun. Eigentlich schade, würde mir gerne mal ansehen, was sich alles getan hat.
Beste Grüße
...


----------



## MiLe (27 März 2019)

Dann ab auf die Hannover Messe nächste Woche


----------



## Trilex (27 März 2019)

Leider keine Zeit.
Ich glaub ich düse irgendwann mal bei meinem alten Arbeitgeber vorbei.
Spam Ende ;-)


----------



## julian1 (27 März 2019)

Herzlichen Dank für eure Hilfe. Hat alles wunderbar funktioniert. In den e-Series UR-Robotern ist tatsächlich im Roboterkopf eine Sensorik verbaut. Mein Roboter stoppt jetzt, sobald eine bestimmte Kraft erreicht/überschritten worden ist, und fährt dann automatisch den nächsten Punkt an (in meinem Fall einfach wieder zurück). Der extra thread, wo dann die Kraftvariable abgefragt werden kann, ist auch sehr hilfreich.


----------

