Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
11. September 2010, 02:56:38
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: >> Roboterprogrammierer gesucht !? <<

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Mitsubishi Roboter (Moderatoren: Werner Hampel, Urmel)  |  Thema: Sperrgebiet - RP-5AH 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] 2 Nach unten Drucken
Autor Thema: Sperrgebiet - RP-5AH  (Gelesen 1640 mal)
Torbinho
Neuling
*
Offline Offline

Beiträge: 12


« am: 06. Oktober 2009, 11:43:51 »

Hallo,

ich arbeite mit einem Mitsubishi RP-5AH und habe dabei ein kleines Problem. Leider bin ich nicht sehr programmier-erfahren, weshalb es mir schwer fällt, eine Lösung zu finden.
Der Roboter kann in z-Richtung um 50mm verfahren. Bei meinem Prüfstand kann es aber trotzdem passieren, dass der Greifer gegen einen Teil des Versuchsaufbaus fahren könnte. Dies lässt sich konstruktiv leider auch nicht vermeiden.
Ich habe mir überlegt, ob ich eine Art Sperrgebiet einrichten kann, das der Roboter nie durchfahren darf. Dafür habe ich auch schon die Funktion "Zone" gefunden, aber wie kann ich es bewerkstelligen, dass dauerhaft überwacht wird, dass der Roboter nicht in diese Zone kommt? Ist das überhaupt möglich?

Vielen Dank für die Hilfe,
Torben
Gespeichert
Martl
Stammgast
**
Offline Offline

Geschlecht: Männlich
Beiträge: 37



« Antworten #1 am: 06. Oktober 2009, 13:57:22 »

Hallo,

du hast die Möglichkeit deine Zone in einen Interrupt einzubinden.
Bei einem Interrupt im Hauptprogramm besteht die Möglichkeit in jederzeit
Ein -oder Auszuschalten. Die Überwachung könnte so ausgesetzt werden.
Das auslesen der aktuellen Position sollte in einem separaten Programm (Hintergrundtask) passieren.
(Programmplatzparameter als Always-Task deklarieren )

Bsp.:

Hintergrundtask (läuft bei Controller Start sofort los)


M1 = ZONE(P1,P2,P3)


Hauptprogramm:

DEF ACT 1, M1 = 1 GOTO *STOPROB
!Einschalten
Act 1 = 1

*STOPROB
HLT       



mfg Martl
Gespeichert
Torbinho
Neuling
*
Offline Offline

Beiträge: 12


« Antworten #2 am: 06. Oktober 2009, 14:15:55 »

Super, Danke schön für die schnelle Hilfe!

Werde das gleich mal ausprobieren Smile
Gespeichert
Torbinho
Neuling
*
Offline Offline

Beiträge: 12


« Antworten #3 am: 08. Oktober 2009, 09:22:40 »

Guten Morgen,
ich habe jetzt viel herum probiert und ebenso viel im Manual gelesen, habe aber noch nichts funktionierendes hinbekommen.
Die Struktur habe ich mir jetzt so überlegt:
Programm Nr. 1 besteht aus der Überwachung mit Hilfe der Zone-Funktion. Es ist in der Parameterliste mit ALWAYS deklariert und soll beim Start dann Programm Nr. 2 laden, in dem sich die Befehle für Bewegungen, etc. befinden.
Diese Struktur habe ich mir abgeschaut aus der Bedienungs- und Programmieranleitung, Seite 9-42f.
Wenn ich das ganze so machen möchte, muss ich aber den Parameter ALWENA ändern (laut Anleitung). Diesen Parameter finde ich nirgends... In der Parameterliste, in der ich schon SLT 2 und SLT 3 angepasst habe, taucht er nicht auf. Wo finde ich ihn?
Funktioniert das so, wie ichs mir überlegt habe, oder hat die Sache noch einen Haken?

Vielen Dank für Eure Hilfe!
Torben

Edit: Wenn diese Überwachung dann funktioniert, wie schnell stoppt der Roboter? Konkret: wenn die Steuerung bei voller Geschwindigkeit merkt, dass die aktuelle Position im "Sperrgebiet" liegt, wie weit fährt der Roboter dann noch bis er steht? Gibts dafür Erfahrungswerte oder muss ich es dann einfach mal ausprobieren?
Gespeichert
Martl
Stammgast
**
Offline Offline

Geschlecht: Männlich
Beiträge: 37



« Antworten #4 am: 08. Oktober 2009, 10:49:12 »

Hallo,

Programmierst du mit Cosirop?
In Cosirop wäre es einfacher das Programm zu deklarieren.
RCI-Explorer =>Slots
Programm in einen Slot laden => Eigenschaften ändern (auf Always) und dann Controller neu starten.
Das Programm muss aber dann zur Datensicherung wieder auf Start geändert werden, da sonst nicht gesichert werden kann.

In einem Alwaystask können keine Roboterbewegungen durchgeführt werden.

Würde auf alle Fälle den Hintergrundtask separat halten und nicht dein
Bewegungsprogramm damit starten.
Es soll ja nur zur Überwachung der aktuellen Position dienen.

Das mit dem Schlüsselschalter den Roboter anstarten ist auf jedefall eine gut Sache, wenn keine übergeordnete Steuerung verwendet wird.
Verwende ich auch des öfteren.



mfg

Martl
Gespeichert
Torbinho
Neuling
*
Offline Offline

Beiträge: 12


« Antworten #5 am: 08. Oktober 2009, 11:14:45 »

Hallo Martl,

ja, ich arbeite mit Cosirop. Allerdings habe ich Version 1.7 und kann dort keinen RCI-Explorer finden. Ich nehm an, man kann COSIROP auch nicht einfach updaten, sondern bräuchte eine neue Lizenz?!
Wenn ich den Hintergrundtask separat halten soll, wie knüpfe ich dann die Verbindung zwischen Haupt- und Hintergrundtask?

Hier mal die wesentichen Teile der Quelltexte:
Hauptprogramm:
Zitat
10 P4=(+200.000,+0.000,+25.000,+0.000,+0.000,+0.000)
20 PSTART=(+300.000,+0.000,+25.000,+0.000,+0.000,+0.000)
30 XLOAD 3, "2"
40 IF C_PRG(3)<>"2" THEN GOTO 40
50 XRUN 3
60 WAIT M_RUN(3)=1
70 DEF ACT 1, M1=1 GOTO *STOPROB
80 ACT 1=1
90 MOV PSTART
...
260 *STOPROB
270 HLT
280 END

Hintergrundtask
Zitat
10 P1=P_CURR
20 P2=(+150.000,-75.000,+0.000,+0.000,+0.000,-360.000)
30 P3=(+250.000,+75.000,+50.000,+0.000,+0.000,+360.000)
40 M1=ZONE(P1,P2,P3)
50 END

Dazu sind die Slots so eingestellt:
SLT2: 1, REP, START, 28
SLT3: 2, REP, ALWAYS, 10

Was mache ich falsch?

Besten Dank,
Torben
Gespeichert
Martl
Stammgast
**
Offline Offline

Geschlecht: Männlich
Beiträge: 37



« Antworten #6 am: 08. Oktober 2009, 13:08:41 »

Hallo,

um eine Verbindung vom Hintergrundtask zum Hauptprogramm zu erhalten
muss die Variable M1 als Globale Variable deklariert werden. Dazu wird normalerweise ein Benutzerbasisprogramm erstellt(ganz normales Cosirop Programm).

z.B var.mb4

und in diesem Programm deklarierst du die Variable

Def inte M1

dann mußt du den Programnamen in den
Parameter "PRGUSR" eintragen ohne (.mb4) also nur var
=> alles Speichern und dann neu booten

Somit ist die Variable dann Global gültig.
So kannst du jederzeit neue Variable ganz leicht
Global (für alle Programme gültig) machen
Jetzt kann jedes Programm die Variable M1 verwenden.

Dein Hintergrundtask wäre soweit in Ordnung.
Das mit dem Xload für den Hintergrundtask benötigst du gar nicht
da dein Hintergrundtask als Always in den Parametern deklariert ist,
und er dadurch beim booten sofort anstarten müsste.

Welche Teachbox hast du zu verfügung?
Wahrscheinlich die alte R28TB.
Mit ner neuen R46TB wäre alles viel übersichtlicher und du könntest
auch leicht prüfen ob der Task gestartet wurde.


 mfg


Martl


Gespeichert
Torbinho
Neuling
*
Offline Offline

Beiträge: 12


« Antworten #7 am: 08. Oktober 2009, 13:23:09 »

Hey Martl,

danke für die Hilfe! Das mit der globalen Variable hatte ich zwar schon irgendwo gesehen, aber noch nicht ausprobiert.
Dies Programm besteht in diesem Fall tatsächlich nur aus der einen Zeile, in der ich M1 deklariere?!
Muss ich das Programm auch in der SLT-Liste eintragen, oder reichts, wenn das einfach nur einmal an den Roboter übertragen wird?

Leider bin ich grad nicht mehr bei der Arbeit und werde auch erst Montag wieder da sein. Aber im Zweifelsfall habe ich die alte Teaching-Box. An dem Roboter scheint nichts neu zu sein Wink  Leider bin ich auch nicht in der Position, um einfach ne neue zu kaufen Sad


Besten Dank nochmal,
Torben
Gespeichert
Martl
Stammgast
**
Offline Offline

Geschlecht: Männlich
Beiträge: 37



« Antworten #8 am: 08. Oktober 2009, 13:28:14 »

Hallo,

das Programm brauchst du nicht in der Slotliste einzutragen.
Nur übertragen reicht vollkommen aus(und natürlich Controller neu starten).

Viel Glück! dadr

mfg

Martl
Gespeichert
Torbinho
Neuling
*
Offline Offline

Beiträge: 12


« Antworten #9 am: 13. Oktober 2009, 09:42:41 »

Guten Morgen,

nachdem ich nun wieder einige Zeit herumprobiert habe, bin ich schon etwas weiter gekommen. Jetzt habe ich nochmal zwei Fragen:

1. Wenn ich die SLT-Parameter ändere, dann ist der letzte Eingabewert ja die sogenannte Priorität. Wenn ich das Manual richtig verstehe, ist damit die Anzahl der abzuarbeitenden Zeilen gemeint, bevor die Steuerung aus Programm 1 in Programm 2 springt. Habe ich das so richtig eingestellt?

SLT1: str, REP, START, 1
SLT2: ueb, REP, ALWAYS, 4

Meine Logik dabei ist diese: Nach jeder Zeile im Steuerprogramm soll wieder die Arbeitsraumüberwachung ausgeführt werden. Das Programm ist 4 Zeilen lang und dementsprechend steht dort die 4 am Ende. Stimmt das?

2. Ich wundere mich etwas über das Label *STOPROB (Quelltext steht ja oben). Ich dachte, dass die Steuerung diese Zeilen ignoriert, wenn das Label nicht aufgerufen wird. Momentan häkt der Roboter aber jedes mal in dieser Zeile an, sprich er durchläuft sie ganz normal, wie jede andere Programmzeile... Habe ich da auch etwas falsch gemacht, oder ist das nomral so? Wie kann ich das ganze dann so einstellen, dass der Roboter nur dann die Befehle nach *STOPROB ausführt, wenn *STOPROB aufgerufen wird?


Vielen Dank für Eure ausdauernde Hilfe,
Torben

Edit: Gibt es außerdem eine Möglichkeit, obwohl ich die alte Teachbox (R28TB) verwende, zu sehen, ob der Hintergrundtask läuft?
Gespeichert
Torbinho
Neuling
*
Offline Offline

Beiträge: 12


« Antworten #10 am: 13. Oktober 2009, 10:58:41 »

Ok, ein kleiner Nachtrag:

Das Problem lag darin, dass ich die Globale Variable selbst definiert habe. Ich habe nun die vordefinierte Variable M_01 genommen, mit der das ganze auch funktioniert. Dann brauche ich auch keine var.mb4-Datei mehr, um die GLobale Variable zu definieren.
Mein Beitrag von eben hat sich damit komplett erledigt. auch das Label habe ich mittlerweile hinbekommen.
Dafür habe ich ein neues Problem:
Der Roboter stoppt erst, nachdem er an der gewünschten Position angekommen ist. Das ist aber ja nicht Sinn der Sache, er würde dann ja trotzdem noch ins Hindernis fahren und erst hinterher stoppen.
Im Manual steht dazu, man könne den DEF ACT-Befehl folgendermaßen abändern:
DEF ACT 1, M_01=1 GOTO *STOPROB, S
Mein Cosirop gibt bei diesem "S" aber einen Fehler aus, vielleicht ist die Betriebssoftware des Roboters nicht aktuell genug(kann eigentlich nicht sein: Habe Version H3, laut Manual funktionierts ab E3)?! Wisst ihr noch eine andere Variante? Oder muss ich das evtl. anders eingeben? habe schon einige Varianten probiert, die nicht funktionierten.

Besten Dank,
Torben
Gespeichert
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 558


« Antworten #11 am: 13. Oktober 2009, 12:43:59 »

Hallo,

er sollte schon bei einem Interrupt stehenbleiben.

Bist du sicher, das er überhaupt reinspringt ? Eventuell kannst du mal testweise ein HLT in das Interruptunterprogramm setzen und schauen ob er da stehen bleibt.

Ich würde auch die Priorität der Tasks erstmal auf den Standardwerten lassen und sie nur ändern, wenn es wirklich erforderlich ist.

Version H3 ist in der Tat schon sehr alt (6 Jahre ?), ob es da noch Bugs bei Interrupts gab, weiß ich nicht. Kann gut sein, dass es das mit dem "S" damals noch nicht gab.

Grüße

  Urmel
Gespeichert
Torbinho
Neuling
*
Offline Offline

Beiträge: 12


« Antworten #12 am: 13. Oktober 2009, 13:08:41 »

Hallo Urmel,

ich bin mir sicher, dass der Interrupt reinspringt. Ein HLT war genau der Zweck meines Interrupts Wink Außerdem kann ich auf dem Controller-Display sehen, dass er genau in die richtige Zeile springt. In diese Zeile verweise ich von keiner anderen Stelle aus!

Der Support hat mir eben geraten, es anstatt der komplizierteren Version mit Interrupt mit den Verfahrwegbegrenzungsebenen zu probieren. Mal sehen, ob ich die weit genug an meinen Versuchsstand anpassen kann. Das Prinzip hört sich ja schonmal einfacher an...

Wie ist das mit den Versionen? Sind die alphabetisch sortiert, die älteste ist A1 und dann kommen aufsteigend die neueren Versionen? Gibts irgendwo eine Übersicht darüber und kann man die Software updaten?

Liebe Grüße,
Torben
Gespeichert
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 558


« Antworten #13 am: 13. Oktober 2009, 13:47:22 »

Wie ist das mit den Versionen? Sind die alphabetisch sortiert, die älteste ist A1 und dann kommen aufsteigend die neueren Versionen? Gibts irgendwo eine Übersicht darüber und kann man die Software updaten?

A1 bedeutet 1.0, das letzte was ich auf einem Controller für einen S- oder A- Roboter gesehen habe war K8k. Die SD-Roboter mit Melfa Basic 5 sind glaube ich schon bei Version P.

Updaten geht mit einer Speicherkassette, die auf einen Steckplatz im Controller kommt. Ob das alle Kunden selber dürfen oder der Service macht, kann ich nicht sagen. Neuere Roboter mit USB-Anschluss kann man wohl auch von der Teachbox oder dem PC aus updaten.
Gespeichert
Torbinho
Neuling
*
Offline Offline

Beiträge: 12


« Antworten #14 am: 13. Oktober 2009, 15:37:40 »

hmm, das mit der Speicherkassette wäre mal ne Maßnahme. Mal schauen, ob ich das in den näcshten Tagen hinbekomme.

Hat jemand von Euch Erfahrung mit den Parametern AREAnP1, AREAnP2, AREAnME und AREAnAT?
Eigendlich erscheinen die mir am praktischsten, um einen Teil des arbeitsraums auszuschließen. Ich kriege es jedoch nicht zum Laufen. Meine Einstellungen, nur anhand eines kleinen Beispiels:

AREA1P1: 175.00,-25.00,20.00,-360.00,-360.00,-360.00
AREA1P2: 225.00,25.00,30.00,360.00,360.00,360.00
AREA1AT: 2
Nun fahre ich mit meinem Testprogramm einfach nur auf die Position (200,0,25), die ja innerhalb dieses Quaders liegen sollte. Aber es passiert schlicht und einfach gar nichts. Wenn ich AREA1At auf 2 setze, sollte ja eigentlich eine Fehlermeldung erscheinen, tut sie aber nicht. Wenn ich AREA1AT auf 1 setze, sollte ich an der Variable M_UAR sehen können, ob sich der Roboter in dem definierten Körper befindet. Aber auch hier tut sich nichts (M_UAR ist immer 0), auch nicht, wenn ich den Parameter USRAREA ändere. Habe da schon eine Menge Varianten durchprobiert, aber nichts passiert.

Habt Ihr damit Erfahrungen gemacht? Muss ich da etwas anders machen?

@Urmel: Dieses "S" bei den Interrupts funktioniert aber auf aktueller Software? Wäre für mich ein Grund mehr, die neue Software draufzuspielen...
Gespeichert
Seiten: [1] 2 Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Mitsubishi Roboter (Moderatoren: Werner Hampel, Urmel)  |  Thema: Sperrgebiet - RP-5AH « vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks
Prüfe XHTML 1.0 Prüfe CSS