SPS.SUB und CELL AUFRUF

  • Hi,


    hab schon wieder ein "kleines Problem" mit meinen zwei KR 5 sixx (KR C2 sr).


    Ich habe in der sps.sub den Aufruf des cell-Programms abhängig von der Stellung des Betriebsartenschalters gemacht:


    IF ($mode_op==#EX) AND (b_autext==FALSE) THEN
    CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")
    b_autext=TRUE
    ENDIF


    IF ($mode_op==#t1) OR ($mode_op==#t2) THEN
    CWRITE($CMD,STAT,MODE,"CANCEL /R1/CELL()")
    b_autext=FALSE
    ENDIF


    Hab ich auch hier aus einem Thread geklaut ;)
    Und die Variable ist in der config.dat decl.


    Mein Problem ist, dass einer der beiden Roboter nach dem Hochfahren das aufgerufene cell-Programm startet und der Zweite nicht.
    Bei dem Zweiten muss ich den Schalter auf T1 und dann wieder auf Auto Ext tun.


    Kann es sein, dass der Roboter in T1 hochfahren muss und erst dann Auto Ext gewählt werden kann? Aber warum macht dann der Erste alles, wie ich mir gedacht habe??


    Oder könnte ich zur Not der Variable $Pro_I_O in der custom.dat statt der SPS.sub gleich cell zuweisen.
    (Funktioniert, aber ich weiss nicht, ob ich dann irgend etwas ungewollt überspringe)


    Vielen Dank schon mal!!
    MfG

  • Schritt für Schritt zum Roboterprofi!
  • Hört sich fast so an, also ob bei dem einen Roboter bei dem es nach dem Hochfahren nicht klappt, die b_autext variable schon true ist.
    Ich würde mal prüfen wie die nach dem Hochfahren steht, wird die denn mit dem korrekten Defaultwert initialisiert ?


    Und so nebenbei, müsste dein Code nicht auch im T1/T2 fall diese b_autext variable mit prüfen ? So wie der code aktuell ist, würde der doch in jedem SPS durchlauf versuchen das CELL Programm abzuwählen..

  • ich würde am Anfang des Submits erstmal alle Variablen initialisieren. Also im Initialisierungsteil (vor dem Loop):


    Code
    b_autext=false
    ...
    ...
    usw.


    Dann in deiner IF Abfrage noch $PRO_STATE1 auf #P_FREE prüfen.

    Greetings, Irrer Polterer!

    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.


    Life is a beta version. Full of bugs and no Manual.

  • Guten Abend


    Die Variable b_autext habe ich in der config.dat so declariert:


    DECL BOOL b_autext=FALSE
    (b_autext=False werd ich aber dann mal vor der Loop versuchen)


    Mein neuer Code sieht dann so aus:


    ---------------------------------------------------------------------------------------------------
    IF ($mode_op==#EX) AND (b_autext==FALSE) AND ($PRO_STATE1==#P_FREE) THEN
    CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")
    b_autext=TRUE
    ENDIF


    IF ($mode_op==#t1) OR ($mode_op==#t2) AND NOT ($PRO_STATE1==#P_FREE) THEN
    b_autext=FALSE
    ENDIF
    ---------------------------------------------------------------------------------------------------


    Konnte ich leider noch nicht testen, aber über eine "Vorabnahme" bzw. Verbesserungsvorschläge würde ich mich freuen!


    @ IrrerPolterer: Was bewirkt die Abfrage von ($PRO_STATE1==#P_FREE) bzw. kann ich die Bedeutung von Systemvariablen irgendwo nachlesen?


    @ Domonoky: Im unteren Teil frag ich doch ab: if T1 oder T2 then b_autext = false
    Darf doch eigentlich nichts passieren.


    Danke schon mal.
    MfG


  • Was bewirkt die Abfrage von ($PRO_STATE1==#P_FREE) bzw. kann ich die Bedeutung von Systemvariablen irgendwo nachlesen?


    $PRO_STATE1 beinhaltet den Programmstatus als Enumerator.
    #P_FREE - Programm nicht angewählt
    #P_RESET - Programm zurückgesetzt
    #P_ACTIVE - Programm aktiv
    #P_STOP - Programm gestoppt
    #P_END - Programmende erreicht


    $PRO_STATE0 beinhaltet übrigens den Status des Submit-Interpreters.


    Nachzulesen in der Doku zu den Systemvariablen, die hier schon öfter gepostet wurde. z.B. hier: http://www.roboterforum.de/rob…teuern/msg50246/#msg50246

    Greetings, Irrer Polterer!

    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.


    Life is a beta version. Full of bugs and no Manual.

  • Deine deklaration DECL BOOL b_autext=FALSE in der $Config.dat speichert übrigens den letzten Wert beim Ausschalten. Darauf kannst du verzichten, wenn du die Variable im Submit (vorm Loop) initialisierst.


    In der $Config.dat wäre die Deklaration dann nur:

    Code
    DECL BOOL b_autext

    Greetings, Irrer Polterer!

    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.


    Life is a beta version. Full of bugs and no Manual.

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