Beiträge von Micky

    Hallo Frettt,


    wie beim Kuka gibt es bei ABB auch noch zusätzlich die Triggerbefehle TriggL, TriggJ und TriggC, mit denen bis zu 6 verschiedene Triggerereignisse vearbeitet werden können.


    Über die Deklaration der Triggerereignisse kann mann im Detail festlegen, was wann passieren soll.


    z.B.
    - TriggIO gunon, 10 \DOp:=gun, 1;
    - TriggEquip gunon, 10, 0.1 \DOp:=gun, 1;
    - TriggInt trigg1, 5, intno1;
    - TriggCheckIO checkgrip, 100, airok, EQ, 1, intno1;


    Wenn Du aber lediglich nur einen Ausgang setzen willst, sind die bereits beschriebenen Routinen die bessere Wahl.


    Gruß Micky

    Hallo Dini,


    wenn Du Crossconections zum schließen des Ventils verwendest, hast Du das Problem, das der Ausgang "KleberEin" wieder öffnet, wenn Du den Fehler quittierst. Weiterhin wird nicht immer der Systemausgang "Fehler" gesetzt, wenn das Programm stoppt. Wenn Du die Abschaltung unbedingt über Crossconnections lösen willst, dann solltest Du den SystemAusgang "CycleOn" verwenden, den dann ist die Pistole generell nur eingeschaltet, wenn das Programm läuft.


    :gutidee:


    Die besste Lösung ist jedoch die Verwendung von Ereignisroutinen, wie bereits von mod-poser erwähnt, den dort wird der Ausgang wirklich zurückgesetzt.


    Um eine Ereignisroutine zu verwenden, musst Du eine Prozedur schreiben die die Aktionen, die beim Stoppen des Programms ausgeführt werden sollen, enthält:


    PROC EVENT_STOP()
    RESET doKleberEin;
    ENDPROC


    Innerhalb der Systemparameter unter Steuerung musst Du im Menü "Typen" Ereignisroutinen auswählen.
    Durch Drücken der Taste HINZU, musst Du ingesamt zwei EreignisRoutine erzeugen.


    Folgende Daten musst Du eingeben:


    Ereignis: STOP
    Routine: EVENT_STOP
    Task: 0


    Ereignis: SK_STOP
    Routine: EVENT_STOP
    Task: 0



    Nach dem Neustart der Steuerung wird de Routine EVENT_Stop ausgeführt, wenn das Programm stoppt oder der Sicherheitskreis geöffnet wird, so dass Dein Ausgang auf jeden Fall abgeschaltet wird.


    Gruß Micky

    Hallo Mod-poser,


    mit der Softwareoption "Developer Function" ist es möglich das Systemparameter ausgelesen bzw. wieder beschrieben werden können.


    Hierzu werden die beiden Instruktionen ReadCfgData und WriteCfgData verwendet.


    Beispiele:


    ReadCfgData “/MOC/MOTOR_CALIB/irb_1”,”cal_offset”,offset1;
    Reads the value of the calibration offset for axis irb_1 into the num variable


    ReadCfgData “/EIO/EIO_USER_SIGNAL/process_error”,”Unit”,io_unit;
    Reads the name of the I/O unit where the signal process_error is defined, into
    the string variable io_unit.


    WriteCfgData “/MOC/MOTOR_CALIB/irb_1”,”cal_offset”,offset1;
    Writes the value of the num variable offset1 as calibration offset for axis irb_1.


    WriteCfgData “/EIO/EIO_USER_SIGNAL/process_error”,”Unit”,io_unit;
    Writes the value of the string variable io_unit as the name of the I/O unit where
    the signal process_error is defined.


    Limitations
    You must manual restart the controller in order for the change to have effect.


    Only named parameters can be accessed, i.e. parameters where the first attribute is
    ‘name’, ‘Name’, or ‘NAME’.


    RAPID strings are limited to 80 characters. In some cases, this can be in theory too
    small for the definition of InstancePath, Attribute, or CfgData.
    offset1.


    :huh:


    Gruß Micky

    Hallo Tscho,


    Eine Verbindung kannst Du über RAPID nur über die COM1 (in Abbildung "F") aufbauen. Die Schnittstelle MC-Console (in Abbildung "E") dient zur Fehlerdiagnose.


    Der Hauptfehler, warum eine Verbindung nicht funktionierrt, ist das die Schnittstelle nicht die gleichen Einstellungen auf beiden Seiten hat. Die erforderlichen Kommunikationsparameter must Du in den Systemparametern des Roboters einstellen (z.B. Baudrate, Parity, etc.).


    Zum Öffnen der Verbindung must Du folgende Instruktion verwenden:
    VAR iodev deChannel;
    Open "com1:", deCchannel\Bin;


    Ob Du ein Nullmodemkabel benötigst oder nicht ist abhängig von dem Gerät mit dem Du kommunizieren willst. Baust Du eine Verbindung zu einer Datenübertragungseinrichtung DCE (z.B. Modem, Drucker, etc.) auf, so benötigt Du ein 1:1-Kabel. Bei einer Verbindung zu einer Datenendeinrichtung DTE (z.B. Computer) wird ein Nullmodemkabel benötigt .


    Verwenden kannst Du dabei handelsübliche Kabel die man in jedem PC-Laden kaufen kann.

    Hallo maddin,


    :kopfkratz:


    in der IRC 5 besteht jetzt die Möglichkeit persistente Deklarationen auch Anfangswert zu deklarieren, wenn diese in verschiedenen Tasks verwendet werden.


    In Deinem Fall würde man dann in der Task 1 einen Anfangswert deklarieren


    z.B. PERS num nTest:=1;


    und in der Task 2 die gleiche Variable ohne Anfangswert deklarieren


    z.B. PERS num nTest;


    Nur die Werte aus der Task 1 würden hierbei gespeichert bzw. wieder geladen, die Task 2 würde den Inhalt der Persistenten beim Laden nicht verändern.


    Gruß
    Micky

    Hallo Burlibua,


    über die Instruktion TestSigndefine und der Funktion TestSignRead kann man die Motorströme, etc. auslesen.


    Auszug aus dem Referenz-Handbuch: :wallbash:


    Ein Prüfsignal spiegelt kontinuierlich einen angegebenen Bewegungsdatenstrom,
    z. B. die Drehmoment-Referenz einer angegebenen Achse, wider. Der aktuelle Wert zu
    einem bestimmten Zeitpunkt kann in RAPID mit der Funktion TestSignRead abgelesen
    werden.


    Nur Prüfsignale für externe Roboterachsen können erreicht werden.


    Um das Prüfsignal für die Achsen des Master-Roboters zu verwenden oder nicht
    vordefinierte Prüfsignale zu nutzen, wenden Sie sich bitte an die nächste
    Niederlassung von ABB Flexible Automation.


    Die folgenden Prüfsignale sind für externe Manipulatorachsen im System vordefiniert. Alle Daten befinden sich in SI-Einheiten und werden an der Motorseite der Achse gemessen.


    CONST testsignal torque_ref := 9; ! Nm
    CONST testsignal resolver_angle := 1; ! rad
    CONST testsignal speed_ref := 4; ! rad/s
    CONST testsignal dig_input1 := 102; ! 0 oder 1
    CONST testsignal dig_input2 := 103; ! 0 oder 1


    Gruß


    Micky

    Hallo mwe,


    wenn Du die Task als semistatisch anstelle von Normal anmeldest, dann wird die Task bei jedem Neustart der Steuerung von vorne gestartet.


    Wenn Du Sie als Statisch anmeldest, dann wird die Abarbeitung der Task von der aktuellen Position des Programmzeigers fortgesetzt.


    Bisher war bei uns, die semistatische Anmeldung der Task, immer die beste Lösung.


    Gruß
    Micky


    :supi:

    Hallo robotic74,

    wie ich bereits oben erwähnte ist bei dem BullsEye eine Software dabei die den TCP berechnet, wobei die Funktion MToolTCPCalib nicht verwendet wird.

    Bei der Vermessung mit dem BullsEye wird das Werkzeug zuerst senkrecht zwischen den Laserstrahl positioniert und ungefähre Werte für den TCP (X,Y,Z und Gewicht) sowie weitere Einstellwerte angegeben. Anschließend wird die Vermessung des Tcp´s durch starten des Programms auegführt. Der Roboter fährt hierbei mit der Suchfunktion durch den Laserstrahl und sucht dabei die Dicke des Sensors sowie die Unterkante bzw. weitere erforderliche Positionen. Anschließend wird die Orientierung geändert und der Roboter fährt mit dem Werkzeug erneut durch den Laserstrahl. Aus den gefundenen Punkten berechnet die Software die Werte für den TCP.

    Des weiteren exisitiert nach der Aufnahme des Ursprungs-TCP´s die Möglichkeit den TCP über eine Schnellprüfung zu kontrollieren. Liegt dieser dabei außerhalb eines zulässigen Wertes, so wird der TCP erneut vermessen.

    Solltest Du die Funktion MToolTCPCalib verwenden, so fehlt Deinem TCP aber noch die Orientierung. Diese muss dann evtl. mit der dazugehörigen Funktion MToolRotCalib zusätzlich berechnet werden.


    Gruß Micky

    :beerchug:

    Hallo robotic74,


    in der Produktspezifikation steht nur die Wiederholgenauigkeit von +-0.006" (0.163mm).


    Die Angabe für einen minimalen und maximalen Fehlerwert konnte ich nicht finden.


    Ich habe Dir zusätzlich einen Auszug aus der Produktspezifikation angehängt.


    Gruß Micky

    Hallo robotics74,


    :grinser043:


    Ab der IRC 5, Version 5.06 kannst Du per einfachen Tastendruck Zeilen auskommentieren und wieder einkommentieren.


    Weiterhin ist es ebenfalls möglich durch einen Tastendruck eine MoveL-Instruktions in eine MoveJ-Instruktion und umgekehrt umzuwandeln.


    Gruß Micky.

    Hallo,


    ich habe mir Dein Programm angesehn und mich gefragt, warum du ständig die komplette Schleife durchläufst und nicht wartest bis die Daten aus dem Task zur Verfügung stehen.


    Z.B. könnte man das Programm auch wie folgt gestalten:
    PROC haupt()
    ! Hauptprogramm
    XWERT:=0;
    YWERT:=0;
    XFAHR:=0;
    YFAHR:=0;
    FindItem:=TRUE;


    WHILE TRUE DO
    GreiferAuf;
    HOME;
    !Warten bis Werte vom Visionsystem zur Verfügung stehen
    WaitUntil XWERT<>0 AND YWERT<>0;
    XFAHR:=XWERT;
    YFAHR:=YWERT;
    RotationZ:=ZROT+30;
    GreifposAnfahren;
    ...
    ENDWHILE
    ENDPROC


    :pfeif:


    Um zu Überprüfen welcher Code vom Roboter ausgeführt wird, solltest Du die Instruktion "SpyStart" am Anfang Deiner Hauproutine einfügen, denn dann werden alle ausgeführten Instruktionen aus allen Tasks mit der entsprechenden Ausführungszeit in die angegebene Datei gespeichert.


    z.B.

    Proc Haupt()
    SpyStart "spy.log";
    ...



    Um die Aufzeichnung wieder zu beenden musst Du die Instruktion "SpyStop" verwenden. Sobald die Instruktion SpyStart erneut ausgeführt wird, wird die Log-Datei wieder überschrieben.
    Du musst aber aufpassen, denn je nach Aufzeichnungszeit kann die Log-Datei ziemlich groß werden.



    Gruß
    Micky

    :wallbash:


    Hallo,


    mit dem OPC Server für die IRC 5 bzw. für die S4c+ können nur PERSistente Daten beschrieben bzw. gelesen werden, d.h. Du must also Deine Variablen mit dem Schlüsselwort PERS deklarieren (z.B. PERS num nBeispiel:=10;).
    Weiterhin können pro Controller nur maximal 200 Subscriptions angelegt werden. Zusätzlich muss die Steuerung sich im Automtikbetrieb befinden um Zugriff zu erhalten.


    Der Zugriff auf die Steuerung kann nur erfolgen, wenn die Option "PC-Interface" [616-1] gebootet ist.


    Für weitere Hinweise kannst Du aber auch die Help-Datei "ABB IRC5 OPC Server help", die sich zusammen mit dem OPC-Server auf der Boot-CD des Roboters befindet zu Rate ziehen.


    Gruß
    Micky

    :liebe024:
    Hallo,
    bei ABB in Friedberg gibt es im Schweißsektor die Vorrichtung "BullsEye" zum automatischen Vermessen des TCP´s eines Schweißbrenners. Diese besteht aus einem Ständer an dem ein Lasersensor angebracht ist und der dazugehörigen Software die den TCP neu vermisst oder aber überprüft.


    Wir haben diese Vorrichtung auch bereits zum Vermessen eines taktilen Sensors eingesetzt.


    Gruß
    Micky