Hallo Michael, Hallo Micky,
vielen Dank für eure Ideen und Unterstützung. Werde mal aus dem ganzen mir noch etwas an Strategie überlegen.
Möchte halt nur ungerne HomePosRunning einsetzen und daher der Selbstversuch
Beiträge von Kotik
-
-
Hallo Michael,
leider geht es ohne "Start Main" nicht. Wäre es den möglich mir dieses Schnipsel zukommen lassen?ZitatIrgendwas Bescheuertes habe ich für einen anders gelagerten Fall mal gemacht, dass ich eigene Bewegungsbefehle gebaut hab, sozusagen einen Wrapper für MoveL etc., und wenn man da drinne ein bedingtes "Return" an die erste Zeile setzt, dann kann man sein ganzes Programm (abzüglich von Positionsüberprüfungen freilich) durchhecheln, OHNE überhaupt eine Bewegung zu machen, solange, bis die Bedingung wegfällt. Das könnte ein Zähler sein, der mitgelaufen ist oder sowas. Das müsste man dann nur SEHR konsequent handhaben. Und MoveC und Rückwärtsfahren und so fällt weg...
-
Wenn Du das dann noch auf drei oder mehr Ebenen verschachtelst wird man irgendwo in Schweden in einem Keller einen pentagrammförmigen Altar bauen, auf welchem Dein Portrait aufgestellt wird.Das ist auch mein Ziel am Ende :ylsuper:
-
Hallo Michael,
vielen Dank für Deine ausführliche Antwort. Die Idee mit dem Modul erstellen, finde ich gar nicht verkehrt
[size=2]Das Problem was ich habe, ist folgendes:[/size]
[size=2]Bei uns hängen drei Roboter an einer Steuerung und wenn einer von diesen Kollision fährt, bleiben alle stehen. Danach müssen alle drei freigefahren werden. Bei zwei Rob. läuft nach wiederholten Start alles automatisiert und sicher übers Menüauswahl automatisch in die HomePos.. Doch bei dem einem fehlt mir noch die richtige Idee. Bei diesem Rob. ist der sicherste Weg in die HomePos. zu fahren, die angefangene Routine zu Ende fahren lassen. Den, nach jedem Start über SPS werden die Rob. von Main gestartet.[/size]
[size=2]Deswegen war mein Gedanke, dass über MoveLSync eine Routine jedes Mal angesprochen wird und die abgearbeitete Zeile (mit incr) abgespeichert wird. Somit könnte ich beim Nächstem Start in die Routine springen und auf die zuletzt gespeicherte PZ/Zeile springen und von dort den Ablauf sicher zu Ende fahren lassen.[/size]
Meine Move Positionen sehen so aus:
MoveL [[1703.56,475.90,159.64],[0.704233,-0.203026,0.616582,-0.287512],[0,1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v500,z1,toR5_XX;
Es sind ca. 20-30 Position pro Vorrichtung. -
Ich kenne kein GoTo
Michael, du als Profi, hast bestimmt eine coole Idee als nur die GoTo ? -
Hallo zusammen,
gibt es eine Möglichkeit, wo ich den Programmzeiger in einer Routine auf eine bestimmte Zeile/Satz springen lassen kann und von dort die Abarbeitung weiter führe?
Vielen Dank im Voraus! -
Hast du UserVerwaltung? Nicht das du dem DefaultUser paar Rechte weg genommen hast. Oder probiere auch mit der RobotStudio 5.61Version.
-
Hallo zusammen,
gibt es eine Möglichkeit (wie auch beim KUKA) die einzelne Achsströme über Rapid auslesen zu können?
Vielen Dank schon mal im Voraus! -
Es ist ein Simuliertes Signal und es wird nur der Status zugeordnet. Ein Kollege meinte, dass es an dem Multimove liegt. Da drei Roboter über eine Steuerung laufen und bei einer Kollision werden die Motoren abgeschaltet und somit Stillstand für alle... Schade
-
Hallo Dust2,
vielen Dank für Deine ausführliche Unterstützung.
Die Error-Behandlung werde ich so umsetzen. Nur ich kann keine Verbindung zum Ausgang (do_SimCollision) finden. Es wird zwar unter Systemoutput deklariert "-Status "MotSupTrigg" -Signal "do_SimCollision", aber das Signal wird nirgendwo verarbeitet.
Oder, übersehe ich etwas? -
Hallo zusammen,
suche nach einer Möglichkeit den Rob. bei einer Kollision 20mm höher zu fahren. Der"MotSupTrigg" ist bei mir auf einen Ausgang gelegt worden. Den Ausgang kann ich auch über Interrupt abfangen, nur dann komm ich nicht wirklich weiter...
Wir haben eine MultiMove Anlage mit 3 Robotern. Bei einer Kollision stoppen komischerweise alle Roboter gleichzeitig, was nicht immer gut ist.
Wäre es möglich, dass die Roboter (wo keine Kollision besteht) den Zyklus zu Ende fahren können?
Und wie kann ich den Kollidierten Roboter 20mm höher fahren lassen?Vielen Dank schon mal im Voraus für eure Unterstützung.
-
Hallo zusammen,
vielen Dank für eure Unterstützung. Muss dann leider wieder was zusammen basteln -
Hallo Michael,
für mich ist es LogischProc rBlaBla ()
Move...
rGreifer "Gr_GS",0,"rBlaBla";
endprocUnd dies "rBlaBla" wollte ich automatisieren mit einem String-Befehl...
-
Hallo zusammen,
ich bin auf der Suche nach einer Möglichkeit, um die aktuelle Routine (wo der PZ sich gerade befindet) auslesen zu können.
Hat wer schon Erfahrung, ob dies über Rapid möglich sei?
Vielen Dank im Voraus! -
Hallo zusammen,
hat jemand schon die RW 6.04.001 installiert gehabt? Hab mal bei einer Steuerung upgedatet von 6.02.. auf die aktuelle und kann seitdem über Robotstudio auf die Steuerung zwar zugreifen, aber nicht in die Module einsehen. Diese werden nicht angezeigt. Beim hinzufügen der Steuerung bekomme ich eine Fehlermeldung "[size=2][font=Arial","sans-serif]RobAPI exception".[/font][/size]
[size=2][font=Arial","sans-serif]Mit dem Robotstudio 5.61 klappt alles ohne Probleme. Bei ABB gibt es momentan keine Lösung dafür.[/font][/size]
[size=2][font=Arial","sans-serif]Hat einer vielleicht schon eine Lösung?[/font][/size]
[size=2][font=Arial","sans-serif]Vielen Dank im Voraus![/font][/size] -
-
Hi,eventuell hilft Dir das folgende Beispiel:
Code
Alles anzeigenFUNC num GetOverride() VAR num nLength; VAR num nValue; VAR string strLocLesen:="1. Override 80"; !Länge der Zahl bestimmen nLength:=strlen(strLocLesen)-12; !Zahlenwert als String auslesen und direkt in eine Zahl konvertieren !Ist die Konvertierung erfolgreich, so wird die entsprechende Zahl zurückgemeldet IF StrToVal(StrPart(strLocLesen,13,nLength),nValue) RETURN nValue; ! !Schlägt die Konvertierung fehl, wird 100 zurückgemeldet RETURN 100; ! ENDFUNC
Gruß
MickyJop, es läuft und gefehlt mir besser.
Vielen Dank Micky.
-
Hallo Micky,
wie meinst du es?
Ein Beispiel wäre Super...Ich habe es jetzt etwas vereinfacht, aber noch nicht optimal
CodenLocMerker:=StrLen(strLocLesen{i})-12; !-- Ausgelesene Zeile aufteilen IF (nLocMerker>0 AND nLocMerker<=3) THEN !-- Wenn der gelesener Wert <=100% ist, dann RETURN den Wert IF (StrToByte(StrPart(strLocLesen{i},StrLen(strLocLesen{i})-nLocMerker+1,nLocMerker))<=100) RETURN StrToByte(StrPart(strLocLesen{i},StrLen(strLocLesen{i})-nLocMerker+1,nLocMerker)); ENDIF RETURN 100; !-- Wenn nix geht, dann 100% rausgeben
-
Hallo,
ich bin auf der suche nach eine Simpler Lösung, um Zahlen aus der *.txt Datei auszulesen.
In der *.txt steht in der ersten Zeile "1. Override 21"
In der Logik werden die einzelne Zeilen (bis Zeile leer) eingelesen und mit dem unten stehendem Rapid verarbeitet.
Gibt es eine einfachere Lösung, wo ich die letzten 3 Zahlen (von der Zeile) auslesen kann? d.h.: Egal ob da 1,2 oder 3 Zahlen stehen.
Das müsste Theoretisch mit einer Zeile zu lösen sein
Vielen Dank im Voraus!
Code
Alles anzeigen!-- 100% !-- Hier soll geprüft werden, ob eine 1 (100%) an der dritt letzte stelle steht !-- Wenn ja, dann bitte die Dreistellige Nummer übertragen IF (StrPart(strLocLesen{i},StrLen(strLocLesen{i})-2,1)="1") THEN IF (StrToByte(StrPart(strLocLesen{i},StrLen(strLocLesen{i})-2,1))>=1) RETURN 100; ENDIF !-- <10% !-- Hier soll geprüft werden, ob an der letzten stelle ein Wert vorhanden ist !-- Wenn ja, dann bitte die Zweistellige Nummer übertragen IF (StrPart(strLocLesen{i},StrLen(strLocLesen{i})-1,1)=" ") THEN IF (StrToByte(StrPart(strLocLesen{i},StrLen(strLocLesen{i}),1))<10) RETURN StrToByte(StrPart(strLocLesen{i},StrLen(strLocLesen{i}),1)); ENDIF !-- >=10% & <100% !-- Hier soll geprüft werden, ob an der zweit letzte stelle ein Wert vorhanden ist !-- Wenn ja, dann bitte die Zweistellige Nummer übertragen IF (StrPart(strLocLesen{i},StrLen(strLocLesen{i})-1,2)<>"") THEN IF (StrToByte(StrPart(strLocLesen{i},StrLen(strLocLesen{i})-1,2))<100) RETURN StrToByte(StrPart(strLocLesen{i},StrLen(strLocLesen{i})-1,2)); ENDIF
-
Hey Micky,
hat super geklappt. Vielen Dank dafür!!!