Variablenabfrage wärend einer Bewegnung

  • Hallo.
    Ist es möglich eine sich ständig verändernde Variable so abzufragen das sie während einer Bewegung eingreift ohne dazu eine Interrupt-Routine zu verwenden.


    Folgendes Problem.Ich fahre einen Suchlauf mit dem KRC.Dazu verwende ich einen Analogsensor, der mir den Abstand als analogen Eingang bringt.Wenn der wert in einem definierten Fenster liegt hält er durch einen Interrupt an (suchlauf_stop).
    Nun ist das Problem, wenn ich zu schnell herran fahr schaltet er zu spät um und greift nicht mehr genau(wegen der Reaktionszeit und so weiter).Und auf Grund von Taktzeiten ist ein herran pirschen nicht möglich :uglyhammer_2:.
    Ich würde nun gern vorher ungefähr 3 Zentimeter vom Endpunkt entfernt meine Geschwindigkeit verringern.
    Welche Möglichkeiten habe ich um das um zusetzten?wenn jemanden was einfällt wäre mir echt geholfen.


    Danke im Vorraus.


    Gruß Mad.

    &quot;Bier ist der Beweis,das Gott uns liebt und will das wir glücklich sind&quot; Banjamin Franklin<br /><br /> :beerchug:

  • Schritt für Schritt zum Roboterprofi!
  • Hallo,


    Mit zweiten Interrupt die Geschwindigkeit runter nehmen. Das geht ohne das der Roboter anhält.
    Und versuch mal ob du mit Brake F dann im Interrupt besser stoppst.
    Brake F ist schneller stopp.


    Mit freundlichen Grüßen Michael

  • Brake F habe ich schon drin. Gab trotzdem keine Verbesserung.
    Naja ein tweiter Interrupt könnte es bringen doch funktioniert das das er von einem Interrupt in den nächsten springt ohne Probleme?weil bei meinem Suchlaufstop ist nur ein brake und Resume befehl drin.

    &quot;Bier ist der Beweis,das Gott uns liebt und will das wir glücklich sind&quot; Banjamin Franklin<br /><br /> :beerchug:

  • Hallo,


    Das ist kein Problem. Habe ich schon oft so gemacht. Beide einschalten geht zusammen ohne Probleme. Versuch mal das du Interrupt 1 und 2 benutzt, die werden dann mit hoher Priorität abgefragt und werden nicht im System benutzt. Das hilft auch noch mal.
    Mit Interrupt 2 Schaltest du die Geschwindigkeit runter auf die gewünschte % Zahl und den Interrupt 2 aus. Oder du schreibst eine Variable auf True und machst die Reduzierung in der SPS.sup dann kann die keiner mehr Manuel hochstellen.
    Im Interrupt 1 Schaltest du einfach beide auf aus, machst Brake und Resume.


    Mit freundlichen Grüßen Michel

  • Hallo


    Ich mach das immer so. Zwei Laser an den Greifer. Laser 1 schaltet im Fernbereich und Laser 2 im Nahbereich. Diese beiden Signale auf die schnellen Messeingänge legen und in Interrupts auswerten. Damit bist du dann unabhängig von Reaktionszeiten des Buses.


    MfG

    Einmal editiert, zuletzt von Stethi ()

  • Hallo,
    Aber mit Analogeingang und Schnellenmesseingang müsste noch mehr an der Hardware geändert werden. Mit normalen Ini's ist das die beste lösung.


    MFG Michel

  • Ich habe das jetzt so gelöst.
    Den Analogwert hab ich in einen Bereich gelegt der mir eine boolsche Variable schaltet wenn er in den Bereich kommt.
    In der sps.sub wird er durch eine If-Bedingung verwendet in der ich sage das er den §ov_pro wert runternimmt.
    Ist es möglich den Wert $vel_act zu verwenden ohne das ermir den Fehler bringt: Variable schreibgeschützt?
    Oder gibt es noch eine andere Möglichkeit auf die Geschwindigkeit zuzugreifen.


    Danke für eure Hilfen. :merci:

    &quot;Bier ist der Beweis,das Gott uns liebt und will das wir glücklich sind&quot; Banjamin Franklin<br /><br /> :beerchug:

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