Analogeingang überwachen

  • Hallo,


    wie kann ich am besten einen Analogeingangswert auf ein bestimmtes Minimum während
    der Bewegung konstant überwachen??


    SPS.sub gefällt mir nicht so!


    Gruss $CYCFLAG

  • Schritt für Schritt zum Roboterprofi!
  • Warum funktioniert diese Interruptdeklaration nicht?


    GLOBAL DEF CHANGE_PRESSURE (iTyp :IN,iSectionNr :IN,iPressure :IN,eChk :IN)
    INT iSectionNr,iPressure,iPressureTemp,iTol,iTyp
    DECL CHK_PR eChk


    iTol=1
    IF (iTyp==1) THEN
    INTERRUPT OFF 10
    CONTINUE
    AO_Druck=iPressure
    IF (eChk==#YES) THEN
    REPEAT
    BRAKE
    iPressureTemp=iPressure
    UNTIL (AI_DRUCK >= (iPressureTemp-iTol))
    ENDIF
    ELSE
    INTERRUPT DECL 10 WHEN (AI_DRUCK < (iPressureTemp-iTol)) DO ErrorInSection[iSectionNr]=TRUE
    ENDIF


    END

  • Hallo,
    weiss ich nicht, aber mit Interrupt-Deklarationen in Globalen Unterprogrammen
    hatte ich auch schon Probleme.


    Seither deklariere ich die immer im Hauptprogramm, auch wenn's anders schöner wäre.


    Aber vieleicht klappts mit:


    Code
    ..
    GLOBAL interrupt decl  ....
    ..


    Hermann

  • na ja, hier liegen 3, vielleicht auch 4 Gründe vor:


    1. Die Variable iPressureTemp ist nur während der Laufzeit des Programms bekannt.
    Wenn der Interrupt immer funktionieren soll, muss diese global deklariert werden.
    Das gleiche gilt auch für: iSectionNr und iTol


    2. Ebenfalls ist die Interruptdeklaration nur während der Laufzeit des Programms
    bekannt. Die Zeile in GLOBAL INTERRUPT ... ändern.


    3. Interrupt on fehlt


    4. Berechnungen in der Interruptdeklaration sind nicht möglich. Wenns so sein soll,
    muss man sich mit einem $CYCFLAG helfen.


    Berrad

  • Muss in der Interruptdeklarationszeile nicht ein Unterprogramm aufgerufen werden ?
    Ich wusste gar nicht, das auch ein Setzen einer Variable möglich ist. Wird das Programm
    nicht als fehlerhaft angezeigt ? javascript:replaceText('%20:kopfkratz:',%20document.forms.postmodify.message);

  • Berrad


    Aus dem Bauch raus würd ich sagen ein Trigger ist auch nur ein Interrupt - wenn's da geht - warum soll nicht auch ein Interrupt Wertzuweisungen vornehmen können.
    Hab's zwar no net g'macht - aber was net ist kann ja noch werden.

  • Moin!


    den Interrupt muss man doch wie alle Declarationen im Deklarationsteil vornehmen, oder?Im laufenden Programm wird dieser nur noch ein-, und ausgeschaltet.Im Interruptprogramm selbst kann man auch Wertzuweisungen vornehmen, allerdings nicht in der Declarationszeile. Und immer schön auf den Vorlauf achten, der hat mir schon so manch eine Überraschung bereitet.

  • Interrupts kann man zu jeder Zeit deklarieren.
    Sollte ein Interrupt der schon benutzt ist in einem UP neu deklariert werden,
    ist dieser nach Abarbeitung des UP's nicht mehr gültig. Auch nicht der Int der im aufrufendem Programm aktiv war!


    DEF Hauptprog()


    DECL INTERRUPT 10 WHEN....


    UP99()


    Ab hier ist kein Interrupt 10 mehr aktiv!


    END




    DEF UP99


    DECL INTERRUPT 10 WHEN...


    END

  • Hallo,


    beim $CYCFLAG gehen doch nur Boolsche ausdrücke oder?


    aus der Doku:


    $CYCFLAG[1]$CYCFLAG[32] haben den Datentyp BOOL. Bei einer Zuweisung an ein
    zyklisches Flag kann ein beliebiger bool’scher Ausdruck verwendet werden


    Gruss $CYCFLAG


  • Dann müsste aber folgendes gehen:
    REAL TESTVAR=0.0
    $CYCFLAG[1]=(TESTVAR > 0.5)


    Kann ich aber leider gerade nicht testen. Also lieber 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.

  • Dann müsste aber folgendes gehen:
    REAL TESTVAR=0.0
    $CYCFLAG[1]=(TESTVAR > 0.5)


    Kann ich aber leider gerade nicht testen. Also lieber prüfen!


    @ IrrerPolterer, yes geht wenn TESTVAR GLOBAL!!!


  • @ IrrerPolterer, yes geht wenn TESTVAR GLOBAL!!!


    Klar. Sowas vergesse ich gerne mal. :pfeif:

    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