Beiträge von Micky

    Hallo irb6400R,


    eine Geschwindigkeitsänderung mit Velset ist immer erst bei der nächsten Position aktiv, ist der Roboter bereits in Bewegung erfolgt keine Änderung der Geschwindigkeit.


    ABB bietet die Software/Hardware-Option "Sensor Synchronisation" für deine Aufgabenstellung an, die den Öffnungshub der Presse über einen Encoder auswertet und die Geschwindigkeit des Roboters entsprechend anpasst.


    Auszug aus dem Handbuch:



    Gruß
    Micky

    Hallo stromer,


    wenn du ein Koordinatensystem ohne Berücksichtigung der Verdrehung des Ursprungskoordinatensystems bzw. des Verschiebungskoordinatensystems berechnen must, reicht die Addition der translatorische Anteile.


    Beispiel:


    Das Tool "tAlt" hat die gleiche Richtung wie das "tool0" (Orientierung [1,0,0,0]) und soll in Z-Richtung um 50 mm verlängert werden ("tNeu").


    Hierzu muss zur Z-Komponenete des Tools "tAlt" nur 50 mm addiert werden.


    PERS tooldata tAlt := [TRUE,[[0,0,200],[1,0,0,0]],[1,[0,0,0.1],[1,0,0,0],0,0,0]];


    PERS tooldata tNeu := [TRUE,[[0,0,250],[1,0,0,0]],[1,[0,0,0.1],[1,0,0,0],0,0,0]];



    Wenn Du ein Tool mit einer Drehung von 45 Grad um die Y-Achse hast und es dann in Werkzeugrichtung entlang der Z-Achse verschieben willst, verändern sich die X- und Z-Werte, so dass man diese ggf. mit den Winkelfunktionen berechnen müsste. Ist das Tool auch noch um die X- und Z-Achse gedreht, wird diese Berechnung entsprechend komplizierter.



    Durch Verwendung der Funktion PosMult wird die Richtung des Tools bei der Berechnung berücksichtigt, wobei man das Tool nicht nur verschieben sondern auch noch zusätzlich verdrehen kann.


    Beispiel:


    Gemäß der angehängten Zeichnung wird der um 45 Grad gedrehte Greifer "tool1" um 500 mm in Z-Richtung des Werkzeugs verschoben.
       


    Wenn man nun die Werte von "tool2" in den Tooldeklarationen mit denen in der Zeichnung vergleicht, kann man ganz leicht den Vorteil der Funktion PoseMult erkennen, vor allem wenn man ein Tool noch zusätzlich verdrehen will.



    z.B. Tool um 30 Grad um die X-Achse drehen und um 100 mm in die Z-Richtung des Tools verschieben.
       

    Code
    peOffset.trans:=[0,0,100];
        peOffset.rot:=:=OrientZYX(30,0,0);
    
    
        tool2.tframe:=PoseMult(tool1.tframe,peOffset);


    :huh:


    Die Funktion RelTool arbeitet nach dem gleichen Prinzip wie PosMult.



    Gruß
    Micky

    Hallo Leila,


    du musst die Instruktion PoseMult verwenden, denn die Addition wie von stromer beschrieben funktioniert so nicht. :uglyhammer_2:


    PoseMult ist im Prinzip das Addieren von zwei Koordinatensystemen, wobei durch Verwendung von PoseInv auch ein Koordinatensystem abgezogen werden kann.


    z.B. peBeisipiel:=PoseMult(PoseInv(peFrame1),peFrame2);


    Nähere Informationen kannst Du aber auch dem Handbuch entnehmen


    Gruß
    Micky

    Hallo Leila,


    in den Systemparametern musst Du lediglich die Schnittstellenparameter wie Baudarate, Stoppbits, etc. einstellen. Ein Übetragungsprotokoll ist nur notwendig wenn Du auf Systemebene mit einem PC kommunizieren willst (z.B. über RAP).


    :liebe029:


    Mfg
    Micky

    Hallo leila,


    um ein Koordinatensystem zu verschieben kannst Du die Funktion PoseMult verwenden.


    !Tool um 100 mm in Z-Richtung des Werkzeugkoordinatensystems verschieben
    tRelTCP.tframe:=PoseMult(tRelTCP.tframe,[[0,0,100],[1,0,0,0]);


    Gruß


    Micky

    Hallo Heini0707,


    so wie es aussieht hast Du das Gesamtkonzept der Sprache RAPID noch nicht verstanden.


    Eine Anwendung für einen Roboter kann aus mehreren Task bestehten, die paralell abgearbeitet werden, aber nur eine Task steuert den Roboter.


    Eine Task kann aus mehreren Modulen bestehen, die sich in Programmmodule bzw. Systemmodule aufteilen. Systemmodule werden verwendet, um gemeinsame, systemspezifische Daten und
    Routinen wie z. B. Werkzeuge zu definieren. Sie werden nicht zusammen mit einem
    Programm gespeichert, d. h. jede Aktualisierung eines Systemmoduls beeinflusst alle
    vorhandenen oder später in den Programmspeicher geladenen Programme.


    Beim Speichern eines Programms werden alle Programmmodule im Roboter in eine gemeinesame Datei mit der Endung *.PRG gespeichert (S4c)


    Innerhalb eines Moduls werden die erforderlichen Prozeduren, Funktionen oder Interruptroutinen und Datendeklarationen abgelegt, die innerhalb der kompletten Task oder aber nur innerhalb des Moduls bekannt sein sollen.


    Routinen und Datendeklarationen die nur einem Modul bekannt sein sollen, werden mit dem Wort LOCAL eingeleitet.


    Beispiel:


    !Lokale Datendeklaration
    LOCAL VAR num nTest;
    !Lokale Routine
    LOCAL PROC Besipiel()



    Signale werden in den Systemparametern deklariert und sind in allen Tasks nutzbar.
    Wenn über Variablen Daten zwischen den verschiedenen Tasks ausgetauscht werden sollen, so müssen diese alse PERSistent in jeder Task deklariert werden.


    z.B.
    PERS num nDaten:=10;
    ENDPROC


    Um mehrere Tasks nutzen zu können, muss der Roboter mit der Option "Multitasking" ausgestattet sein.


    Begriffsbestimmung


    Es gibt drei Arten von Routinen (Unterprogramme): Prozeduren, Funktionen und
    Interrupts.Interrupts.
    - Prozeduren geben keinen Wert zurück und werden im Kontext von Instruktionen verwendet.
    - Funktionen geben einen Wert eines bestimmten Typs zurück und werden im Kontext von
    Instruktionen verwendet.
    - Interrupt-Routinen dienen der Behandlung von Unterbrechungen. Eine Interrupt-Routine kann mit
    einem bestimmten Interrupt verknüpft werden. Wenn dann dieser Interrupt in einer späteren Phase
    auftritt, wird die Routine automatisch ausgeführt. Eine Interrupt-Routine lässt sich nicht explizit vom
    Programm aus aufrufen.



    Generell solltest Du Dir vielleicht mal das Handbuch "RAPID Referenzhandbuch, Überblick" anschauen.


    Gruß
    Micky

    Hallo leila,


    unter dem folgenden Link auf die Siemens Homepage findest Du im PDF-Dokument zur "Seriellen Schnittstellenbaugruppe ET 200S 1SI" eine Beschreibung zum Protokoll S3964.


    http://support.automation.siem…y2=&modelled=3964&lang=de


    Standardmäßig gibt es in der ABB-Steuerung kein fertiges Protokoll, dass man für die serielle Kommunikation auswählen kann. Man kann sein gewünschtes Protokoll durch Nutzung der Rapid-Instruktionen aber komplett selbst programmieren.


    :huh:


    Bei Befarf kannst Du bei ABB in Friedberg das fertige Schnittstellenprotokoll S3964 käuflich erwerben.


    Gruß
    Micky

    Hallo,


    die Option ScreenViewer gibt es nur für die S4c und S4c-plus. Für die IRC 5 gibt es jetzt die Option Flexpendant Interface, mit der man selbst erstellte Applikationen ausführen kann. Diese Anwendungen können automatisch gestartet werden, indem diese im Menü "Control Panel" unter "System" parametriert wird.


    Die .NET-Anwendungen müssen mit VisualStudio 2003 oder vorzugsweise mit VisualStudio 2005 unter VB.NET oder C# erstellt werden, wobei von ABB die Software "Robot Application Builder" verwendet werden muss.


    :meld:


    Im Anwenderforum für die ABB Software Produkte (http://www.robotstudio.com/userforum/) gibt es zu diesem Thema ein eigenes Forum.


    Grüsse
    Micky

    Hallo Bodo,


    die Funktion "TorqueSearch" dient zum Suchen einer Position, ohne Sensorik, indem über die Drehmomentüberwachung bei Kontakt mit einem Bauteil die Bewegung gestoppt wird. Da hierbei der Drehmomentanstieg überwacht wird, der sich durch eine Kollision ergibt, denke ich das TorqueSearch eher ungeeignet für die Anwendung ist, da sich die Kräfte die auf den Fräser während der Bearbeitung wirken, nicht wesentlich in die Drehmomentkurve einer Roboterachse auswirken sollten. Außerdem denke ich, das eher der Fräser abbricht bevor über TorqueSearch der Roboter gestoppt wird.


    Swagner3 muss m.E. warten bis ABB das ForceControl für Bearbeitungsaufgaben fertigstellt hat oder jemand anderes ein ähnliche Lösung wie Amatec anbietet :bawling:


    Gruß Micky

    Hallo Mani,


    mit der Funktion ReadBin empfängt man den ASCII-Code eines Zeichen (0-255). Den ASCII-Code kannst Du mit der Funktion ByteToStr in ein Zeichen umwandeln.


    :meld:


    Beispiel:


    Var byte btInput;
    VAR string stValue;


    btInput:= ReadBin(deRS232);
    stValue:=ByteToStr(btInput\Char)


    Bei der Übertragung eines Minus-Zeichens wird der ASCII-Code 45 übertragen und in die Variable btInput gespeichert. Durch Umwandlung in ein Zeichen mit der Funktion ByteToStr wird der ASCII-Code 45 in ein Minus-Zeichen umgewandelt.



    Da ReadBin Zeichenweise arbeitet, musst du bei einer vierstelligen Zahl 4 Zeichen mit ReadBin empfangen, diese umwandeln in ein String, die Strings zusammenbauen und dann mit StrToVal in eine Zahl umwandeln.


    Alternativ solltest Du Dir auch mal die Instruktionen ReadStr, ReadNum, ReadStrBin anschauen, den diese beinhalten bereits die Umwadlung in einen String oder einen Zahlenwert.


    Gruß
    Micky

    Hallo swagner3,


    man kann die 6. Achse als unabhängige Achse anmelden. Dazu muss aber die Steuerung im Servicemodus gebootet werden (Query -> Abfrage Standard oder Service mit Service beantworten).


    Die genaue Parametrierung der 6. Achse kann dem Benutzerhandbuch Kap. 7.3 "Definieren von unabhängigen Achsen" entnommen werden.


    Mit der Option "Advanced Motion" kann dann die 6. Achse unabhängig von den anderen 5 Achsen bewegt werden (z.B. mit IndAMove). Mit der Instruktion "IndReset" kann der Umdrehungszähler der 6. Achse geändert werden (z.B. auf Null), so dass ein zurückdrehen der 6. Achse unterbleiben kann.


    Beispiel:


    Die 6. Achse wird vor dem Ablegen eines Teiles um 400 Grad gedreht. Im Normalfall müsste die Achse jetzt um 400 Grad zurückgedreht werden. Durch Ausführen der Instruktion IndReset wird der Umdrehungszähler so geändert, das dieser anschließend wieder auf 40 Grad steht und der Achse nicht mehr zurückgedreht werden muss.


    :grinser043:



    Grüße
    Micky

    Hallo ABB-Anfänger,


    wenn Du den Schlüsselschalter in die Betriebsart Automatik stellst und den Betriebsartenwechsel bestätigst, dann ist die Passworteingabe zurückgesetzt.


    Das heißt, wenn Du jetzt wieder den Schlüsselschalter in den Hanbetríeb stellst, musst Du bei der nächsten Änderung zuerst wieder Dein Passwort eingeben.


    :icon_rofl:


    Mfg
    Micky

    Hi,


    das Tperase wirkt auf die unsichtbare Ausgabeseite die am FP nur angezeigt wird, wenn diese über TPreadFK bzw. TPReadnum eingeblendet wird.


    Da das Ausgabefenster die Meldungen aller Tasks anzeigt, wirkt hier das TPerase nicht.


    :bawling:


    Grüße Micky

    Hallo swagner3,


    ABB arbeitet gerade an dieser Funktionalität, mit der Bezeichnung Forcecontrol.


    Diese Option soll für Montageaufgaben für die IRC 5 vorraussichtlich mit Robotware 5.07 (Frühjahr 2006) verfügbar sein.


    Der Einsatz für Bearbeitungsaufgaben ist ab Robotware 5.08 geplant (Mitte 2006)


    :ylsuper:


    Gruß Micky

    Hallo totalfuchs,


    um eine Drehung der Bits durchzuführen muss inerhalb der EIO.CFG eine neue Sektion eingefügt werden:


    EIO_UNIT_MAP = EIO_PHS_MAP:


    Angenommen du hast die Signale 9 bis 16 für die Gruppe verwendet, dann must Du folgendes programmieren:


    -Phsig 9 -Type "DI" -Unit "Board10" -Startbit 8 -NoOfBits 8 -SwapBits


    (Für einen Byteswap kann zusätzlich noch -SwapBytes angegeben werden)


    Innerhalb der IRC 5 geht das ganze viel einfacher, da man bei der Definition des Unitmappings einfach die Reihefolge umdreht


    z.B.


    -Name "giTest" -SignalType "GI" -Unit "Board10" -UnitMap "15-8"


    :blumen:


    Grüße Micky

    Hallo dini,


    wir haben diesen Positionsvergleich als aller erste Version auf der S4 eingesetzt, sind dann umgestiegen auf einen Jointtargetvergleich. Seitdem es die Weltzonen gibt, verwenden wir diese um die Homeposition zu überwachen, so dass wir zum einen nur den Ausgang abfragen brauchen bzw. die Homepositionsmeldung direkt an eine SPS oder eine Lampe melden können.


    PROC PowerOn()
    VAR jointtarget jDelta;
    VAR jointtarget jHome;

    !Homeposition als jointtarget umrechnen
    jHome:=CalcJointT(pHome,tGreifer\WObj:=wobj0);
    !
    !Max. Abweichung der einzelnen Achsen festlegen
    jDelta.robax:=[ 2, 2, 2, 2, 2, 2];
    jDelta.extax.eax_a:=5;
    !
    !Weltzone für die Homeposition definieren
    WZHomeJointDef\Inside, shHomePos, jHome, jDelta;
    WZDOSet\Stat,wzHomePos\Inside,shHomePos,doIRBinHome,high;
    !
    ENDPROC


    So dass die Abfrage in Deiner Routine CheckHomepos wie folgt aussieht:


    WHILE Doutput(doIRBinHome)=low DO
    Meldung fmNotInHome
    ...



    :supi:


    Grüße Micky

    Hallo dini,


    ich weiß zwar momentan noch nicht wo der Fehler ist aber Du könntest mal vor die Routine CheckHomePos die Instruktion SpyStart "Spy.log"; und danach SpyStop schreiben.


    Weiterhin musst Du sicherstellen, dass das Modul in dem CheckHomPos drin enthalten ist nicht mit NoStepIn bzw. NnView geschützt ist.


    Mit SpyStart werden alle ausgeführten Instruktionen in die Datei Spy.LOG im Homeverzeichnis geschrieben. Nach dem Neustart musst du nur die Datei Spy.LOG auf deinen PC kopieren und kannst Die letzten ausgeführte Instruktionen ansehen.


    Dann kann man ggf. auch sagen, wo der Fehler liegt.


    :waffen100:


    Grüße Micky

    Hallo Frettt,


    wir benutzen das Programm "BeyondCompare". Mit diesem Programm kann man Verzeichnisse vergleichen (auch über FTP direkt zum Roboter) sowie Dateien.


    Der absolute Vorteil beim Dateienvergleich gegenüber anderen Programmen ist aber, dass man die beiden Dateien direkt editieren kann, so dass man Codesegmente direkt von der einen Datei in die andere übertragen kann bzw. einzelne Zeilen löschen kann.


    Das Programm kostet 30$ und kann unter der folgenden Adresse bezogen werden:


    www.scootersoftware.com


    Grüße Micky