Posts by Sven Weyer

    Was ich noch einbringen wollte, okay ist eigentlich allgemeines Grundwissen und sollte Voraussetzung sein aber manchmal sind es die unscheinbarsten Dinge.

    Interrupts werden nur bearbeitet und der Wechsel des Zustands der definierten Kondition nur erkannt und registriert in der Steuerung wenn das Programm abgearbeitet wird.

    Sprich wenn dein Programm nicht läuft wird der Interrupt trotz Definition etc. nicht anschlagen.

    Entschuldige, ich gehe eigentlich davon aus das dies Grundlage ist, daher nur als Hinweis noch einmal.

    Was auch wichtig wäre ist das sämtliche Interrupts einmal deaktiviert werden sollten, sprich alle zusammen. Nicht das IDelete für jede Definition separat durchführen, sondern für alle vorhanden Interrupts nacheinander so das es eine Situation gibt wo sämtliche Interrupts mit IDelete gelöscht worden sind bevor du den ersten wieder definierst und verbindest.

    Hierbei spielt ein interner Zähler in der Steuerung eine Rolle der nur zurückgesetzt wird wenn alle Interrupts einmal gelöscht worden sind.

    Wir hatten da schon einmal ein Problem mit dem Überlauf dieser Variablen.

    Ich muss mich leider korrigieren IWatch benötigst du nur wenn du vorher mit ISleep den Interrupt deaktiviert hast. nach einer Definition ist dieser in der Steuerung bekannt und aktiv. Wir verwenden das ISleep standardmäßig um eine unfreiwilliges Auslösen zu verhindern. Demnach sollte das eigentlich funktionieren ohne IWatch. Sorry war ich auf dem Holzweg.

    Da ich eigentlich keinen Grund sehe warum das an sich nicht funktionieren sollte wenn die Rahmenbedingung gegeben sind.

    Moin DS,

    danke für den Hinweis, da kann man so alt werden wie man will aber das mit der Doku lesen wird im alter nicht besser. :D

    Ich habe einmal einer Doku vom RobotStudio nachgesehen und konnte leider dein Kapitel nicht finden.

    Ich verwende gerade:

    Technical reference manual

    RAPID kernel

    RobotWare 6.14

    Document id: 3HAC050946-001

    Revision J


    Könntest du einmal prüfen, wenn du Zeit hast , mit welcher Dokumentenversion du arbeitest?

    Die Beschreibung zu dem Thema würde mich schon interessieren.


    Gruß


    Danke dir.

    Also ich hab es jetzt noch einmal getestet.

    Das Fragezeichen verhindert im RobotStudio einen Fehler, die Steuerung selber merkt dies aber und bringt diesen Fehler in einem normalen Programm wenn man bei der Werkobjetübergabe in Bewegungsinstruktionen das ":=" mit "?" ersetzt und das Werkobjekt nicht vorhanden ist.

    Bei deiner Routine ist es so, dass der Übergabeparameter WobJ optional ist und da bei den Bewegungsinstruktionen, auch MoveJ etc., das Werkobjekt nicht zwingen übergeben werden muss, Default wäre wobj0. Wird hier mit dem Fragezeichen dafür gesorgt das du ohne weitere Auswertung, ob die Übergabevariable initialisiert wurde oder nicht innerhalb deiner Routine, die Instruktion für den Roboter abarbeitungsfähig bleibt ohne einen Fehler zu generieren.

    Wenn du jetzt alles auf ":=" änderst kann das unter Umständen Fehler erzeugen.

    Interessante Information, liegt aber nur daran das die Bewegungsinstruktionen den Parameter wobj als optional ansehen.


    Also schön vorsichtig mit deinen Änderungen.

    Am besten mal im gesamten Programm nach schauen ob dort deine Routinen auch einmal ohne Wobj-Übergabe aufgerufen werden. ;)