Funktionsgenerator hasst Interrupts!!! Workaround?

  • Servus ersteinmal an alle...
    Habe hier 2 Robis denen ich bald den Hals umdrehe und ich sage euch ich schaffe das.


    Worum es geht:



    Die Roboter fahren horizontal auf einer Ebene mit der Höhe Z =0 Lin und Circ bewegungen.
    Alles mit aufgeschaltetem Funktionsgenerator welcher ein Korrektur in Richtung Z bewerkstelligen soll.


    Nun kommt irgenwann ein Eingang.
    Wenn dieser Eingang kommt soll der Roboter an dieser Stelle stehen bleiben und Via Digin1 und Funktiongenerator
    die Höhe korrigieren.
    Sobald die Höhe erreicht ist, soll er die letzte Bewegung mit der neuen Z-Höhe fortführen.


    Nun hatte ich ein kleines Programm geschrieben, welches Via Interrupt gestartet wird und in dem
    sich eine Linbewegung mit $OV_Pro=0 befindet.
    Welche wiederum durch einen Interrupt bei erreichen der Höhe beendet wird.


    Nachdem ich es getestet hatte, stellte sich herraus das nichts passiert. Sprich der Funktiongenerator steuert nicht nach.
    Dann habe ich das Programm mal manuell sprich ohne Interrupt aus einem anderen Programm aufgerufen.
    Dort arbeitet der Funktionsgenerator wie gewünscht.


    Nach Absprache mit dem Support kam herraus das der Funktionsgenerator während der Abarbeitung von Interruptprogrammen nicht funktioniert.


    Warum ist mir schleierhaft...
    Naja die Lösung für diesen Fall war recht einfach.
    2 Interruptprogramme, eines setzt $Ov_pro auf 0 ,dass andere wieder auf den alten Wert..
    Die Lin bewegung dazwischen bei OV_PRO=0 übernimmt somit die aktuelle Bewegung...


    Nun kann es jedoch auch sein, dass eine Höhenkorrektur verlangt wird wenn überhaupt keine Bewegung stattfindet.
    Und genau an diesem Punkt bräuchte ich mal ein paar Denkanstösse...
    Vielleicht ist die Lösung ja ganz einfach...
    Vielen Dank soweit... :merci:

  • Schritt für Schritt zum Roboterprofi!
  • Servus


    Warum nicht ganz einfach $Base.Z ändern. Bei der nächsten Bewegung gilt das neue Z.

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

  • ja leider, wie du schon sagst, bei der nächsten bewegung.
    hinzu würde kommen das die korrektur um z den gesamten weg bis zum zielpunkt dauern würde.

  • Häng halt noch einen PTP $POS_ACT dran, dann ändert sich nur die Z Position.

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

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
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden