Ankündigung

Einklappen
Keine Ankündigung bisher.

cycle-Funktion mit Variablen als Argumente?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [EibParser] cycle-Funktion mit Variablen als Argumente?

    Hallo zusammen,

    kann man der cycle-Funktion eigentlich auch Variablen als Argumente mitgeben?

    Mein Fall: Ich möchte den Stromverbrauch der Lüftungsanlage visualisieren. Der ist abhängig von der Lüftungsstufe. Also berechne ich in Abhängigkeit der Lüftungsstufe, nach wievielen Minuten und Sekunden der Wh-Zähler für die Lüftungsanlage um 1 hochgehen soll. Mein Code dazu lautet:

    //so funktioniert es nicht:
    if Lueftungsstufe==NiedrigeLueftung then Minute=2u08; Sekunde=33u08 endif
    if Lueftungsstufe==NormaleLueftung then Minute=1u08; Sekunde=43u08 endif
    if Lueftungsstufe==IntensiveLueftung then Minute=1u08; Sekunde=17u08 endif
    if cycle(Minute,Sekunde) then WhLueftung=WhLueftung+1s32 endif

    Mit diesem Code bleibt WhLueftung aber immer bei Null (obwohl der Debugger anzeigt, dass die Variablen "Minute" und "Sekunde" die richtigen Werte haben). Erst wenn ich die Argumente der cycle-Funktion durch normale Zahlen ersetze, funktioniert das ganze wie es soll, und der Zähler zählt langsam hoch:

    // so funktioniert es:
    if cycle(1,43) then WhLueftung=WhLueftung+1s32 endif

    Ist das ein normales Verhalten der cycle-Funktion, weil sie eben keine Variablen als Argumente nehmen darf, oder mache ich etwas falsch?

    Danke,
    Marcus

    #2
    Ich habe folgenden Code getestet:

    Code:
    [EibPC]
    x=0
    y=10
    u='10/0/1'u08
    Test=AUS
    if Test then y=2 endif
    if cycle(x,y) then write('10/0/1'u08,1) endif
    Ergebnis
    Code:
    % 2015-04-28 13:01:49 | Sender: EibPC | GA: '10/0/1'u08 | Wert: 1 | Typ: positive Ganzzahl |  Schreiben
    % 2015-04-28 13:01:59 | Sender: EibPC | GA: '10/0/1'u08 | Wert: 1 | Typ: positive Ganzzahl |  Schreiben
    % Wert von Objekt 3044 (Test) vorgeben:
    % /home/michi/Test/nconf -v 3044 01 192.168.22.167
    % Wert von Objekt 3044 (Test) abfragen:
    % /home/michi/Test/nconf -q 3044 192.168.22.167
    % Wert von Objekt 3044: 01 00 00 00 {2015-04-28 13:02:03}
    % Typ: Binärwert
    % Wert: EIN
    %
    % 2015-04-28 13:02:09 | Sender: EibPC | GA: '10/0/1'u08 | Wert: 1 | Typ: positive Ganzzahl |  Schreiben
    % 2015-04-28 13:02:11 | Sender: EibPC | GA: '10/0/1'u08 | Wert: 1 | Typ: positive Ganzzahl |  Schreiben
    % 2015-04-28 13:02:13 | Sender: EibPC | GA: '10/0/1'u08 | Wert: 1 | Typ: positive Ganzzahl |  Schreiben
    Das Ganze funktioniert also so: Der Zyklus muss einmal beendet werden, damit der neue Zyklus geladen werden kann. Wenn man hier mit x=0 und y=0 initialisiert, wird dieser Zyklus ja nie beendet (was ein Problem bei Dir sein könnte).
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Ich hatte das auch als Ursache vermutet.

      Demnach müßte die Lösung so funktionieren:

      if Lueftungsstufe == 1 then kW_Counter1 = EIN; kW_Counter2 = AUS; kW_Counter3 = AUS endif
      if Lueftungsstufe == 2 then kW_Counter1 = AUS; kW_Counter2 = EIN; kW_Counter3 = AUS endif
      if Lueftungsstufe == 3 then kW_Counter1 = AUS; kW_Counter2 = AUS; kW_Counter3 = EIN endif

      if kW_Counter1 == EIN and cycle (2,33) then kW1 = kW1 + 1s32 endif
      if kW_Counter2 == EIN and cycle (1,43) then kW2 = kW2 + 1s32 endif
      if kW_Counter3 == EIN and cycle (1,17) then kW3 = kW3 + 1s32 endif

      kW = kW1 + kW2 + kW3

      Kommentar


        #4
        Super, vielen Dank an Euch beide.

        Kommentar


          #5
          Zitat von enertegus Beitrag anzeigen
          Ich habe folgenden Code getestet:
          [..]
          Das Ganze funktioniert also so: Der Zyklus muss einmal beendet werden, damit der neue Zyklus geladen werden kann. Wenn man hier mit x=0 und y=0 initialisiert, wird dieser Zyklus ja nie beendet (was ein Problem bei Dir sein könnte).
          Wird es da eine Fix geben?
          BR
          Marc

          Kommentar


            #6
            "fix" für cycle(0,0) ? Was soll der denn dann für einen Zyklus haben? Ich sehe da keinen Bug, sondern eben ein anständiges Verhalten, wie z.B. in der der ETS, wenn man die Zykluszeit auf 0 setzt, tut es nie.
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              Zitat von enertegus Beitrag anzeigen
              "fix" für cycle(0,0) ? Was soll der denn dann für einen Zyklus haben? Ich sehe da keinen Bug, sondern eben ein anständiges Verhalten, wie z.B. in der der ETS, wenn man die Zykluszeit auf 0 setzt, tut es nie.
              Hm, stimmt. So könnte/kann man also den zyklischen Aufruf abschalten.
              BR
              Marc

              Kommentar

              Lädt...
              X