Programmaufruf

  • Hallo,


    kann ich irgendwie mit KRL Code überprüfen, ob ein bestimmtes Programm
    das im SPS.sub aufgerufen bzw. bearbeitet wird nicht auskommentiert wurde??


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Schritt für Schritt zum Roboterprofi!
  • Hallo


    du könntest vom KRL Programm aus von dem zyklisch ablaufenden Sub Programm eine Rückmeldung fordern.


    z.b.
    im Sub Programm

    Code
    bHalloRobProgramm = bHalloSubProgramm


    und im Rob Programm


    Code
    bHalloSubProgramm = Not bHalloSubProgramm
    ...
    ...
    ...
    If Not (bHalloSubProgram == bHalloRobProgram) Then
       ;Fehler
       Halt
    Endif


    Gruß Loipe

  • Hallo,


    SPS-Programm:

    RobRun = SubAlive


    Unterprogramm:


    SET_TIMER (0.5)
    SubAlive = TRUE
    SubAlive = NOT SubAlive
    IF NOT (SubAlive == RobRun) THEN
    REPEAT
    UNTIL (SubAlive == RobRun) OR $TIMER_FLAG[21]
    IF $TIMER[21]>0 THEN
    HANDLE=SET_MESSAGE (89,0,0,0,#STATE)
    REPEAT
    UNTIL (bLsrSubAlive == bLsrRobRun)
    CLEAR_MESSAGE ( HANDLE )
    ENDIF
    ENDIF


    Vielen Dank


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Hallo


    so ganz schön nur


    SubAlive = TRUE kannst du dir sparen du hast wenn du nur
    SubAlive = NOT SubAlive benuzt hast du jedesmal wenn du das Unterprogramm aufrufst eine Änderung


    wenn du vorher SubAlive auf TRUE setzt ist nach der zeile
    SubAlive = NOT SubAlive immer False
    und wenn der Sub net läuft und RobRun auf False ist merkst du es net


    und bei meinem Schnellschuß war noch nen Schöhnheits fehler :pfeif:


    um es beim ersten zyklus schon sicher zu machen solltetst vieleicht besser
    SubAlive = NOT RobRun benutzen damit erzwingts du auf jedenfall eine Änderung von RobRun
    es gäbe ja immer die 50/50 Chance das es grade mal passt beim ersten zyklus ^^


    Gruß und schönes WE


    Loipe

  • Hallo,


    jetzt so! noch etwas verschärft :aufsmaul: :aufsmaul:


    SET_TIMER (1)
    bSubAlive = NOT bRobRun
    IF NOT (bSubAlive == bRobRun) THEN
    REPEAT
    UNTIL (bSubAlive == bRobRun) OR $TIMER_FLAG[21]
    IF $TIMER[21]>0 THEN
    HANDLE=SET_MESSAGE (89,0,0,0,#STATE)
    WAIT SEC 1.0
    CWRITE($CMD,STAT,MODE,"STOP 1")
    CWRITE($CMD,STAT,MODE,"CANCEL 1")
    ENDIF
    ENDIF


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Code
    bSubAlive = NOT bRobRun
       IF NOT (bSubAlive == bRobRun) THEN
       ....


    Hallo, die Bedingung ist immer erfuellt, kannst du also weglassen.
    Geht auch nur mit einer Variablen, die im SPS.Sub nur zyklisch auf TRUE gesetzt wird.


    Code
    $timer_stop[21] = FALSE
       $Timer[21] = - 1000
       bSubAlive = FALSE
       repeat
       until bSubAlive OR $TIMER_FLAG[21]
       IF NOT(bSubAlive) THEN
         ; SPS sub anstarten, oder was auch immer
       ENDIF


    Gruss Stefan

  • Hallo,


    wie würdest Du das anstarten des SPS.sub machen? mit $PRO_STATE0?


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

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