Singularität im Submit erkennen und reagieren?

  • Hallo zusammen,


    gibt es eine Möglichkeit im Submit-Interpreter abzufragen, ob der Roboter eine Singularität durchfährt und eine automatische Geschwindigkeitsreduktion vornimmt?


    Hintergrund:
    Wenn $VEL_CP_TYPE = $VAR_ALL gesetzt ist durchfährt der Roboter die Singularität bei LIN-Bewegungen mit entsprechend reduzierter Geschwindigkeit. In meiner Anwendung lässt sich das leider nicht vermeiden. Dieser Fall kommt aber auch nur bei einem von tausend Teilen vor und stellt für die Anwendung kein Problem dar. Allerdings muss ich in diesem Fall einen Digital-Ausgang auf FALSE setzen.


    Eine Abfrage im Submit-Interpreter von $SINGUL_DIST[3] < 1.0 lässt die Steuerung leider nicht zu. Fehlermeldung „Lesen nicht erlaubt“.


    Hat jemand eine Idee?


    Danke und Gruß
    Brato

  • Schritt für Schritt zum Roboterprofi!
  • Hi Fubini,


    Ich habe den Interrupt wie vorgeschlagen in einem Modul deklariert: "GLOBAL INTERRUPT DECL 7 WHEN $SINGUL_DIST[3] < 1.0 do int_singularitaet()". War aber leider keine Lösung für das Problem. Der Compiler spuckt zwar keine Fehlermeldung aus, wenn ich das Programm dann aber anwähle und starten möchte, erscheint wieder die Fehlermeldung "Lesen nicht erlaubt".


    Es handelt sich übrigens um eine KRC4 Steuerung.


    Hat noch jemand eine Idee? Ich hatte z.B. auch schon überlegt die tatsächliche Geschwindigkeit vom CP mit der Programmierten Geschwindigkeit zu vergleichen und dann entsprechend zu reagieren. Ich tue mich da allerdings in der Umsetzung schwer und befürchte dass es öfters zu Fehlverhalten kommen kann.


    Gruß
    Brato

  • Das Stichwort lautet hier Hand PTP !


    Man kann das bei Inlineformularen (LIN Bewegung) auswählen, wenn man durch Singularitäten rauscht,
    um deren Auswirkungen zu reduzieren. Ob und wie es in KRL geht weiß ich leider nicht.


    Grüße



    P.S: Wenn Du genau weißt wo Du durch die Singularität fährst könntest Du auch die Beschleunigung und/oder Geschwindigkeit von Achse 4+6 für diese Bewegung reduzieren.

  • Hi Interrupt, danke für deine Antwort.


    Hand-PTP ist aber in meiner Anwendung leider keine Alternative. Das Durchfahren der Singularität ist auch nicht das eigentliche Problem - das funktioniert mittlerweile mit reduzierter Geschwindigkeit.


    Das Problem ist ich muss einen Digitalausgang setzen, wenn Ich die Singularität durchfahre. Quasi sobald die programmierte Geschwindigkeit nicht mehr mit tatsächlichen Geschwindigkeit vom TCP übereinstimmt (aufgrund der automatischen Geschwindigkeitsreduktion bedingt durch die Singularität).
    Das wollte Ich mit $SINGUL_DIST[3] < 1.0 im Submit bzw. im Interrupt lösen. Bei beiden Varianten meldet das KCP "Lesen nicht erlaubt!".


    Gruß
    Brato

  • Hallo Leute,

    wahrscheinlich 7 Jahre später wird das niemand lesen, aber ich versuche es trotzdem.


    Ich versuche, die Variable $SINGUL_DIST[3] im Submit-Programm oder in einem Interrupt zu lesen. Beides funktioniert bei mir nicht und ich habe auch die Meldung "Lesen nicht erlaub"(Genau das Thema die schon Brato hatte).


    &COMMENT USER specified PLC program

    DEF  Submit_Test ( )

    LOOP

    $CYCFLAG[2] = $SINGUL_DIST[3]< 10

    ENDLOOP

    ;FOLD ;%{H};

    END

    ;FOLD USER SUBROUTINE

    Ich habe versucht, was Sie zuletzt gesagt haben, aber oder ich bin dumm oder ich verstehe nicht wo das Problem liegt.

    Das Cycflag hilft mir nicht beim Submit und ich weiß nicht, wie ich es im Interrupt verwenden soll, ich sehe keinen Sinn darin.


    Vielen Dank im Voraus.

  • Macht keinen Sinn, ein cycflag in der Schleife des Submit ständig zu setzen.

    Der Sinn des cycflag ist, dass der Wert der hinter dem '=' steht direkt nach dem Ausführen der Zeile automatisch ständig im ipo-takt ausgewertet, und dem cycflag zugewiesen wird.

    Also sollte man diese cycflag - Zeile ein Mal am Anfang des Hauptprogramm schreiben, und das cyflag bekommt dann automatisch den Zustand, der hinter dem '=' steht.

    Problem wird sein, dass man im Submit nicht auf diese Variable zugreifen kann, im Haupttask aber schon (ist aber nur eine Vermutung meinerseits).

  • Das Cycflag hilft mir nicht beim Submit und ich weiß nicht, wie ich es im Interrupt verwenden soll, ich sehe keinen Sinn darin.

    Das Cycflag ist ein unabhängiger Mitarbeiter, dem sagst Du im Hauptprogramm einmal, was er zu beobachten hat. Und das macht er dann dauerhaft. Und immer, wenn Du ihn fragst, was er gerade sieht, und egal von wo aus Du ihn anrufst, sagt er die korrekte Antwort. solange sie "True" oder "False" lauten kann.


    Grüße,

    Michael

  • Hallo Leute,

    Danke Hermann und Programmiersklave für euere Antwort.


    Jetzt verstehe ich besser wie $Cycflag funktioniert, aber ich habe immer noch das Problem, dass ich die Variable $Singul_Dist[] nicht lesen kann, irgendwelche Ratschläge dazu? Meine Absicht ist es, einfach die Variable zu lesen, und wenn der Roboter in der Nähe einer Singularität ist, sollte er anhalten und den Weg zurückgehen. Das Hauptproblem ist das Lesen der Variablen, den Rest weiß ich wie es geht.


    Vielen Dank! :)

  • Welche Systemvariable in welchem Kontext gelesen/geschrieben werden kann ist in der KSS hart codiert. Also wenn du im Submit etwas nicht lesen kannst, gibt es keine Möglichkeit das für den Anwender zu ändern. Was evtl. geht ist wie oben beschrieben ein CYC_FLAG zu definieren und einen Interrupt mit Unterprogramm damit aufzuziehen, der dann so auf die von dir gewünschte Bedingung angetriggert wird. Also (ohne Test) in etwa so:


    $CYC_FLAG[1] = ($SINGUL_DIST[3] < 1.0)

    GLOBAL INTERRUPT DECL 7 WHEN $CYC_FLAG[1] do int_singularitaet()


    DEF int_singularitaet

    Interrupt off 7


    BRAKE

    WAIT FOR TRUE


    Interrupt on 7

    END


    Position wo der Interrupt getriggert wurde steht über $POS_INT zur Verfügung.


    Fubini

    3 Mal editiert, zuletzt von fubini ()

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