Vielen Dank , aber wie sieht von der Syntax ein Interrupt bei Robotstudio aus ??
IRC5 Compact WorldZones
- monGO
- Erledigt
-
-
Das steht alles in der Dokumentation die in RobotStudio integriert ist.
Such einfach nach Begriffen wie: IDelete, Connect ISignalDI usw. -
Code
Alles anzeigenFUNC BOOL WatchWorkSpace(robtarget p1,robtarget p2) ! VAR robtarget pCurrent; VAR bool X; VAR bool Y; VAR bool Z; ! pCurrent := CRobT(\TaskName:="T_ROB1",\WObj:=wobj0); ! IF (p1.trans.X < p2.trans.X) THEN IF (pCurrent.trans.X > p1.trans.X) AND (pCurrent.trans.X < p2.trans.X) X:=TRUE; ELSE IF (pCurrent.trans.X > p2.trans.X) AND (pCurrent.trans.X < p1.trans.X) X:=TRUE; ENDIF IF (p1.trans.Y < p2.trans.Y) THEN IF (pCurrent.trans.Y > p1.trans.Y) AND (pCurrent.trans.Y < p2.trans.Y) Y:=TRUE; ELSE IF (pCurrent.trans.Y > p2.trans.Y) AND (pCurrent.trans.Y < p1.trans.Y) Y:=TRUE; ENDIF IF (p1.trans.Z < p2.trans.Z) THEN IF (pCurrent.trans.Z > p1.trans.Z) AND (pCurrent.trans.Z < p2.trans.Z) Z:=TRUE; ELSE IF (pCurrent.trans.Z > p2.trans.Z) AND (pCurrent.trans.Z < p1.trans.Z) Z:=TRUE; ENDIF ! RETURN (X AND Y AND Z); ! ENDFUNC !
damit machst du im Main des Semistaitischen ne überprüfung ober roboter sich im im rechteck, das sich aus p1 und p2 ergibt, befindet.
-
Sehr große Hilfe Loipe , vielen Dank .
Sry aber wo sagst du Ihm wie groß die Kartesischen Koordinaten sind die er nicht überschreiten soll ??
-
Ich bekomme meinen Task nich als Semistatischen Task eingestellt weil irgendeine Verknüpfung fehlt . Ich habe keine Ahnung und versuche seit stunden Herauszufinden was er für ne Verknüpfung brauch .
??? -
mach mal ein modul mit main als prog in den Task. wenn der leer ist gibts nen fehler.
Anhang mit bild als erklärung wo p1 und p2 herkommen. wenn dein tcp sich innerhalb diesses raumes befindet gibt die funktion true zurück
-
Das mit den zwei Ecken und das Aufspannen des Quaders versteh ich schon , nur er brauch ja die Kartesischen Werte in X, Y und Z für p1 und p2 . Das muss doch definiert werden wie groß Bzw. wo befindet sich p1 und p2 damit man die größe des Quaders ermitteln kann ???
-
Da fährst Du mal hin mit den greifer und schreibst dir die werte auf.
-
Ich habe die Werte schon , nur wo schreibe ich die Werte rein ?? Entschuldige mein Nichtverstehen
-
Code
Alles anzeigenMODULE Bereich LOCAL CONST robtarget pRaum1_1:=[[-100,-100,-100],[0,0,0,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; LOCAL CONST robtarget pRaum1_2:=[[ 100, 100, 100],[0,0,0,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; ! PROC main() ! IF WatchWorkSpace(pRaum1_1,pRaum1_2) THEN !Mach dies ELSE !Mach das ENDIF ! ENDPROC ! FUNC BOOL WatchWorkSpace(robtarget p1,robtarget p2) ! VAR robtarget pCurrent; VAR bool X; VAR bool Y; VAR bool Z; ! pCurrent := CRobT(\TaskName:="T_ROB1",\WObj:=wobj0); ! IF (p1.trans.X < p2.trans.X) THEN IF (pCurrent.trans.X > p1.trans.X) AND (pCurrent.trans.X < p2.trans.X) X:=TRUE; ELSE IF (pCurrent.trans.X > p2.trans.X) AND (pCurrent.trans.X < p1.trans.X) X:=TRUE; ENDIF IF (p1.trans.Y < p2.trans.Y) THEN IF (pCurrent.trans.Y > p1.trans.Y) AND (pCurrent.trans.Y < p2.trans.Y) Y:=TRUE; ELSE IF (pCurrent.trans.Y > p2.trans.Y) AND (pCurrent.trans.Y < p1.trans.Y) Y:=TRUE; ENDIF IF (p1.trans.Z < p2.trans.Z) THEN IF (pCurrent.trans.Z > p1.trans.Z) AND (pCurrent.trans.Z < p2.trans.Z) Z:=TRUE; ELSE IF (pCurrent.trans.Z > p2.trans.Z) AND (pCurrent.trans.Z < p1.trans.Z) Z:=TRUE; ENDIF ! RETURN (X AND Y AND Z); ! ENDFUNC ! ENDMODULE
-
ok
vielen Dank nochmal . Und jetzt muss ich mein Modul Bereich als Semistatischen Task Einstellen oder ??
Ich bekomme es nicht vernünftig hin den Task einzustellen. Er meckert immer -
Semistatischer Task Einstellen ?
-
Wenn das immer noch derselbe Fehler ist: Du hast einen semantischen Fehler im Programm. (Vermutlich Interrupt und virtueller Ausgang - ISignalDO (nicht DI) und den Ausgang als DO machen.)
Natürlich startet die Task nicht, wenn ein Fehler drin ist. Und dann hast Du ja immer noch SysFail als TrustLevel. Das heisst, das System geht sofort in Systemfehler, sobald die Task stoppt. Deswegen mein Rat: mach erst mal auf "kein", debugge das Programm, und erhöhe später den Fehlerlevel.Grüße,
Michael -
Kann ich auch einen Zustandswechsel bei Robotstudio abfragen ? Alos ein Flankenwechsel von 0 auf 1 vom Ausgang ?
Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum.
ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.
Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen