Überschleifen nicht möglich

  • Nur nochmal zum Verständnis für Ungläubige:


    Heißt das wirklich, dass bei der folgenden Programmfolge beim Überschleifen vom PTP- auf den LIN-Satz das Kriterium $APO.CDIS = 1 mm verwendet wird ???


    $APO.CDIS = 100
    PTP P1 C_PTP C_DIS


    $APO.CDIS = 1
    LIN P2


    Gruß Hinky

  • Schritt für Schritt zum Roboterprofi!
  • Hallo,
    ich weiß, dass ich jetzt leicht off-topic bin, aber noch mal eine letzte Frage bzw. Anmerkung:


    fubini:
    A)
    Diese Aussage bedeutet doch:
    - Wenn ich die folgende Bewegungsfolge habe:
    PTP P1 C_PTP C_DIS
    LIN P2 C_DIS C_PTP
    PTP P3
    , dann habe ich keine Möglichkeit, das Distanzkriterium $APO.CDIS für den Beginn des LIN-Satzes (Überschleifen bei P1) und das Ende des LIN-Satzes (Überschleifen bei P2) verschieden zu wählen. Oder gibt es da einen anderen Weg ?


    B) Die gewählte Vorgehensweise steht in einem gewissen Widerspruch zur üblichen Systematik bei Programmabläufen bzw. Programmiersprachen. Im Normalfall wird, wenn eine Anweisung/Befehl (im Beispiel PTP P1 C_PTP C_DIS) den Wert einer globalen Variable (im Beispiel $APO.CDIS) verwendet, der zum Zeitpunkt der Anweisung geltende Wert dieser Variablen berücksichtigt. Dies ist ja offenbar bei der Parametrierung des Überschleifens bei KRL anders. Das sollte dann m.E. zumindest in der Dokumentation enthalten sein (habe ich im Programmierhandbuch Experte zu Release 5.4., Kapitel 3.5 zumindest nicht gefunden).


    Trotzdem vielen Dank an fubini für die Klarstellung !


    Gruß Hinky

  • Hallo Hinky,


    zu A)
    genau richtig erkannt. Wie ich aus einem LIN hinausüberschleife ist immer identisch damit wie ich hineinüberschleife. Eine Ausnahme gibt es jedoch und zwar das PTP C_DIS überschleifen mit C_DIS für den PTP (erst ab V5.5), also etwa folgendes:


    PTP C_DIS
    PTP oder LIN


    Hier wird immer der Wert des ersten PTP in den nachfolgenden PTP oder LIN herüberkopiert, so dass kartesisch gesehen eine Kugel herauskommt. Aus dem Dilemma das du gewisse Überschleifradien nicht explizit programmieren kannst, kommst du damit aber auch nicht heraus. Jetzt kannst du auch nicht festlegen das in den Neusatz mit einem anderen Kriterium hineinüberschliffen wird, als aus dem Altsatz herausüberschliffen wird. Einzige Abhilfe für dieses Verhalten wäre, dass jedem Bewegungssatz zwei Überschleifkriterien verabreicht werden: eines besagt wie hinein und das andere wie heraus überschleifen.


    zu B)
    Hier unterliegst du leider der Erwartung dass $APO eine globale Variable wäre. Das ist aber nicht der Fall. KRL ist eine Satzbezogene Sprache in der sich Anweisungen immer auf den nachfolgenden Bewegungssatz beziehen. Die Frage ist dann wann beginnt für dich beim Überschleifen der neue Satz in den hinenüberschliffen wird? Zählt der geplante Überschleifbogen noch zum Altsatz oder komplett zum Neusatz? In KRL ist diese Frage so gelöst, dass der Neusatz ab Überschleifmitte gilt und damit muss streng genommen auch das Neusatzkriterium verwendet werden.


    markz
    Sorry Markus das wir schon wieder deinen Thread missbraucht haben!


    Gruß
    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