Probleme mit PicoC

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Hesch@
    Extension Master
    • 31.08.2015
    • 194

    #1

    Probleme mit PicoC

    Hallo zuammen,

    ich bin momentan daran mir für den kommenden Sommer einen Prediction-Mode für meine Wärmepumpe über Loxone und Loxberry zu erstellen.

    Aber ich komme gerade nicht weiter. Diesen Code habe ich mal testweise erstellt:
    Code:
    while (TRUE)
    {
    sleep(1000);
    while (getinput(11) == 1)
    {
        // Abfrage WP auf Automatikbetrieb und Abwärtszähler auf 0
            // Überprüfung ob today bis today+3 Temperatur über WP-Pred-Mode Temperatur liegt
            if (getinput(2) > getinput(6) && getinput(3) > getinput(6) && getinput(4) > getinput(6) && getinput(5) > getinput(6)) {
                setoutput(1, 11);    
                setoutput(2, 96);
                break;
            }
            if (getinput(2) > getinput(6) && getinput(3) > getinput(6) && getinput(4) > getinput(6)) {
                setoutput(1, 12);    
                setoutput(2, 97);
                break;
            }
    }    
    while (getinput(11) == 0)
    {
            // Überprüfung ob today bis today+3 Temperatur über WP-Pred-Mode Temperatur liegt
            if (getinput(2) > getinput(6) && getinput(3) > getinput(6) && getinput(4) > getinput(6) && getinput(5) > getinput(6)) {
                setoutput(1, 22);    
                setoutput(2, 95);
                break;
            }
    }
    if (getinput(11) == 1) setoutput(6, 6); else setoutput(6, 16);
    
    }
    Ich hatte gedacht, dass in diesem Fall je nach Eingang (0 oder 1) von "getinput(11)" immer das erste while bzw. das zweite while abgearbeitet wird.

    Leider ist es so, dass wenn ich auf 1 schalte das erste while und die beiden if-Schleifen richtig abgearbeitet werden. Schalte ich jedoch auf 0 zurück, wird der Inhalt der zweiten while-Bedingung "(getinput(11) == 0)" nicht abgearbeitet.

    Wo habe ich einen Denkfehler?

    Der PicoC-Interpreter hier aus dem Forum hielft leider nicht weiter, da er bereits "getinput(0)" nicht kennt.

    Vielen Dank für Tipps
    Hesch@
  • romildo
    Lebende Foren Legende
    • 25.08.2015
    • 5144

    #2
    Hallo,
    Du kommst nie mit einer 0 an die Letzte if Zeile.
    Wenn der Eingang AI12 auf 1 liegt bleibt das Programm in der Routine getinput(11) == 1
    Wenn der Eingang AI12 auf 0 wechselt bleibt das Programm in der Routine getinput(11) == 0
    Beim nächsten Wechsel auf 1 springt er dann in die Letzte Zeile und setzt den AusgangAQ7 auf den Wert 6.

    Das setoutput(6, x) müsste somit in die jeweilige Schleife, zudem würde ich noch ein Sleep in die Schleifen einbauen.
    lg Romildo

    Kommentar


    • Hesch@
      Hesch@ kommentierte
      Kommentar bearbeiten
      Hat mir die Augen etwas mehr geöffnet.
      Vielen Dank Hesch@

    • romildo
      romildo kommentierte
      Kommentar bearbeiten
      Das tönt ja so, als hättest Du noch nicht wirklich den Durchblick

    • Hesch@
      Hesch@ kommentierte
      Kommentar bearbeiten
      Bei PicoC noch nicht so wirklich.
      Aber wer hat das schon.
Lädt...