SearchL mit gi Signal und IsignalGi

  • Es gibt leider keine Instruktion mit welcher ich eine Suchfahrt mit einen Gruppeneingang realisieren kann.


    Also muss ich mir selbst was basteln

    Multitasking habe ich schonmal nicht zur Verfügung ;(


    Also was mit IsignalGi ausgedacht.....


    Wenn ich den Interrupt ohne Single oder SingleSafe ausführe wird der bei jeder Änderung des Signales ausgeführt.


    Meine Frage: Überlaste ich das System damit? Läuft die Interrupt queue damit über?

  • ANZEIGE
  • Auch wieder was gelernt :thumbup:

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Hallo Robiman,
    CyclicBool funktioniert nicht mit Gruppeneingängen.

    Die Interrupt Queue sollte nicht überlaufen, wenn die Interruptroutine sofort wieder verlassen wird.
    Du könntest außerdem einen Single Interrupt verwenden, den Du am Ende der TRAP Routine wieder neu verbindest, so treten zumindest keine weiteren Interrupts auf.

    Du musst die TRAP Routine mit einem Long-Jump verlassen, sobald deine Bedingung erfüllt ist,
    Das heißt. du verwendest den RAISE Befehl in der TRAP-Routine z.B. RAISE ERR_SEARCHL_GI
    und in Deiner SEARCHL_GI-Instruktion verwendet Du in der Fehlerbehandlung

    Code
    ERROR (ERR_SEARCHL_GI)
      IF ERRNO = ERR_SEARCHL_GI THEN
    
      ENDIF
    ENDPROC

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Zu den Test CyclicBool bin ich nicht mehr gekommen....

    Aber geht geht ja ehhh nicht mit Gruppensignalen. Was aber wahrscheinlich erst beim Aufruf aufgefallen wäre. Übertragen lies es sich fehlerfrei.


    Ich hab jetzt folgendes probiert


    Wenn ich den Interrupt nicht sofort lösche läuft die Warteschlange über wenn die Bedingung in der TRAP erfüllt ist.

    (Warum auch immer das so ist????)


    Was noch fehlt nach den StopMove ist dann ein CRobT und mit Start Move dann weiter.


    Ich mach jetzt aber langes WE und am Montag gehts da weiter.... :)

  • Hallo RobiMan,
    wie bereits erwähnt, solltest Du einen Single Interrupt verwenden, da du durch den Dialog in der TRAP-Routine verweilst und alle weiteren Interrupts in die Queue eingereiht werden. Diese werden erst nach dem verlassen Deiner TRAP Routine ausgeführt. Das heißt, wenn Dein Interrupt weiterhin Werte liefert läuft Dir zwangsläufig die Queue über.

    Du solltest auf jeden Fall sicherstellen das deine Endposition mit einem Fine-Punkt angefahren wird, da ansonsten Dein Programm durch den Programmzeigervorlauf an einer falschen Stelle fortgesetzt wird.

    Du solltest einen ClearPath ausführen, falls Du nicht bis zum Endpunkt weiterfahren willst

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Jetzt schreib ich doch nochmal schnell was.

    OK, der Überlauf kommt also nur durch den Dialog und den dadurch stehenden PZ zustande.

    Bedeutet aber auch das System hat kein Problem damit durch den sich ständig ändernden Gruppeneingang die Interrupts abzuarbeiten. :thumbup:


    Plan war bei passender Bedingung sofort anzuhalten.

    StopMove;

    ClearPath

    CRobT pAcktPos

    Movel pAcktPos

    Start Move

    Movel pAcktPos

    Movel... weiter im Programm


    Ist das ClearPath da zwingend notwendig?

  • Hallo Robiman,

    den Befehl StartMove solltest Du vor der Instruktion "MoveL pAktPos" einfügen, den sonst bewegt sich der Roboter nicht.

    Die Instruktion "Clearpath" wird benötigt, da der Roboter bei "StartMove" die noch nicht beendete Bahn fortsetzen würde.

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Hallo Robiman,
    CyclicBool funktioniert nicht mit Gruppeneingängen


    Die Idee war eher den Gruppeneingang aufzulösen und die Bedingungen über eine CyclicBool abzufragen, macht natürlich nur Sinn wenns nich zu viele Signale sind. Da CyclicBool ja eine Bool ist, sollte das mit dem Suchlauf funktionieren, ich nutze das auch. Beispiel:

    Code
    ! Fernsensor G1_Bit28 (E605) ODER G1_Bit30 (E607)
    ! BT11 und BT12 Lichttaster 
    SetupCyclicBool mFernSensor,diG1_VI1_Bit30=1 OR diG1_VI1_Bit28=1;
    
    ! Nahsensor BTK (Sicherheit) G1_Bit24 (E601) ODER G1_Bit26 (E603)
    ! BT13/1 und BT 13/2
    SetupCyclicBool mNahSensor,diG1_VI1_Bit24=1 OR diG1_VI1_Bit26=1 OR diG1_VI1_Bit10=1 OR diG1_VI1_Bit12=1;
Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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