Fehlermeldung "ENDEWENN fehlt"

Betrieb der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

joesch
Beiträge: 789
Registriert: 03.02.2007, 14:57
Hat sich bedankt: 65 Mal
Danksagung erhalten: 2 Mal

Fehlermeldung "ENDEWENN fehlt"

Beitrag von joesch » 27.12.2007, 14:47

Ich habe auf der Basis der freundlicherweise von squeeezer zur Verfügung gestellten Temperaturicons ein Objekt erstellt. Um die jeweilige Grafik zur Temperatur anzeigen zu können, habe ich folgendes Makro erstellt. Leider bekomme ich immer die Fehlermeldung "ENDEWENN fehlt". Nch meiner Meinung sind die WENN-Anweisungen aber vollständig. Da ich mittlerweile etwas "wenn-blind" :roll: bin die Bitte, ob sich jemand das Makro mal ansehen könnte bzw. ob es bei euch andere Lösungsansätze gibt.

Code: Alles auswählen

WENN HzgWZ < 0 DANN
 WENN HzgWZ < -22 DANN
  TempWZ := 1
 SONST
  WENN HzgWZ < -21.5 DANN
   TempWZ := 2
  SONST
   WENN HzgWZ < -20.5 DANN
    TempWZ := 3
   SONST
    WENN HzgWZ < -19.5 DANN
     TempWZ := 4
    SONST
     WENN HzgWZ < -18.5 DANN
      TempWZ := 5
     SONST
      WENN HzgWZ < -17.5 DANN
       TempWZ := 6
      SONST
       WENN HzgWZ < -16.5 DANN
        TempWZ := 7
       SONST
        WENN HzgWZ < -15 DANN
         TempWZ := 8
        SONST
         WENN HzgWZ < -13 DANN
          TempWZ := 9
         SONST
          WENN HzgWZ < -11 DANN
           TempWZ := 10
          SONST
           WENN HzgWZ < -9 DANN
            TempWZ := 11
           SONST
            WENN HzgWZ < -7 DANN
             TempWZ := 12
            SONST
             WENN HzgWZ < -5 DANN
              TempWZ := 13
             SONST
              WENN HzgWZ < -3 DANN
               TempWZ := 14
              SONST
               WENN HzgWZ <-1 DANN
                TempWZ := 15
               ENDEWENN
			  ENDEWENN
             ENDEWENN
            ENDEWENN
           ENDEWENN
          ENDEWENN
         ENDEWENN
        ENDEWENN
       ENDEWENN
      ENDEWENN
     ENDEWENN
    ENDEWENN
   ENDEWENN
  ENDEWENN
 ENDEWENN  
SONST
 WENN HzgWZ < 1 DANN
  TempWZ := 16
 SONST
  WENN HzgWZ < 3 DANN
   TempWZ := 17
  SONST
   WENN HzgWZ < 5 DANN
    TempWZ := 18
   SONST
    WENN HzgWZ < 7 DANN
     TempWZ := 19
    SONST
     WENN HzgWZ < 9 DANN
      TempWZ := 20
     SONST
      WENN HzgWZ < 11 DANN
       TempWZ := 21
      SONST
       WENN HzgWZ < 13 DANN
        TempWZ := 22
       SONST
        WENN HzgWZ < 15 DANN
         TempWZ := 23
        SONST
         WENN HzgWZ < 16.5 DANN
          TempWZ := 24
         SONST
          WENN HzgWZ < 17.5 DANN
           TempWZ := 25
          SONST
           WENN HzgWZ < 18.5 DANN
            TempWZ := 26
           SONST
            WENN HzgWZ < 19.5 DANN
             TempWZ := 27
            SONST
             WENN HzgWZ < 20.5 DANN
              TempWZ := 28
             SONST
              WENN HzgWZ < 21.5 DANN
               TempWZ := 29
              SONST
               WENN HzgWZ < 22.5 DANN
                TempWZ := 30
               SONST
                WENN HzgWZ < 23.5 DANN
                 TempWZ := 31
                SONST
                 WENN HzgWZ < 24.5 DANN
                  TempWZ := 32
                 SONST
                  WENN HzgWZ < 25.5 DANN
                 TempWZ := 33
                  SONST
                   WENN HzgWZ < 27 DANN
                    TempWZ := 34
                   SONST
                    WENN HzgWZ < 29 DANN
                   TempWZ := 35
                    SONST
                     WENN HzgWZ < 30.5 DANN
                      TempWZ := 36
                     ENDEWENN
                    ENDEWENN
                   ENDEWENN
                  ENDEWENN
                 ENDEWENN
                ENDEWENN
               ENDEWENN
              ENDEWENN
             ENDEWENN
            ENDEWENN
           ENDEWENN
          ENDEWENN
         ENDEWENN
        ENDEWENN
       ENDEWENN
      ENDEWENN
     ENDEWENN
    ENDEWENN
   ENDEWENN
  ENDEWENN
 ENDEWENN
ENDEWENN
Vielen Dank schon mal. Die "Deformation" der Struktur konnte ich beim Übertragen in das Forum leider nicht beeinflussen. Im Original ist die Struktur klar erkennbar.

Gruß Joesch

PS: TempWZ ist das Objekt, welches die Grafiken anzeigen soll, HzgWZ ist ein FHT8b.
System: RaspberryMatic auf Raspberry Pi 3 Model B Rev 1.2 (rpi3) mit RPI-RF-MOD (4.4.22)

kafibo
Beiträge: 186
Registriert: 02.02.2007, 21:22
Hat sich bedankt: 5 Mal

Re: Fehlermeldung "ENDEWENN fehlt"

Beitrag von kafibo » 27.12.2007, 15:11

Hallo,

Mit den vielen wenn, sonst und endewenn finde ich nicht durch.
Ich würde folgendes ins Makro vom jeweiligen FHT schreiben:

Code: Alles auswählen

wenn HzgWZ >19,3 und HzgWZ <= 19,8 dann
  tempWZ:=2
endewenn
wenn HzgWZ >19,8 und HzgWZ <= 20,3 dann
  tempWZ:=3
endewenn
........usw
Sollte dann eigentlich so funktionieren.

P.S.: wenn HzgWZ ein FHT-Raumregler ist, warum hast Du denn z.B. wenn HzgWZ<-22 an? Hast Du minusgrade im Wohnzimmer?
Gruß kafibo

joesch
Beiträge: 789
Registriert: 03.02.2007, 14:57
Hat sich bedankt: 65 Mal
Danksagung erhalten: 2 Mal

Re: Fehlermeldung "ENDEWENN fehlt"

Beitrag von joesch » 27.12.2007, 16:58

kafibo hat geschrieben: wenn HzgWZ ein FHT-Raumregler ist, warum hast Du denn z.B. wenn HzgWZ<-22 an? Hast Du minusgrade im Wohnzimmer?
Nein, das gerade nicht. Aber ich wollte das Makro einheitlich für alle Temperatursensoren verwenden können. Dann ist das Ganze nur ein Mal Tipparbeit.

Gruß Joesch

kafibo
Beiträge: 186
Registriert: 02.02.2007, 21:22
Hat sich bedankt: 5 Mal

Re: Fehlermeldung "ENDEWENN fehlt"

Beitrag von kafibo » 27.12.2007, 21:18

Hallo joesch,

Du kannst das ganze in einem FHT eingeben mit den Werten die haben möchtest und dann das komplette Makro in einen anderen FHT kopieren. Dann kannst Du durch Suchen / Ersetzen die Bezeichnung der Tempsensoren/FHT bzw. der Anzeigeobjekte auf einmal ändern.
Hast Du denn probiert ob das Makro so funkioniert?
Gruß kafibo

Benutzeravatar
Sanys
Beiträge: 270
Registriert: 31.01.2007, 12:29
Wohnort: Wetterau

Re: Fehlermeldung "ENDEWENN fehlt"

Beitrag von Sanys » 29.12.2007, 10:43

Hallo joesch,

ich würde mir das Makro einfach mal ausdrucken, auf dem Ausdruck kannst Du die wenn und endewenn dann gegenseitig ausstreichen. Das klingt jetzt zwar wie Steinzeit, es ist aber bestimmt übersichtlicher als am Bildschirm.

Ausdrucken über Projekt -> Drucken, dort das Makro/Objekt auswählen, "nur markierte Einträge" anklicken und dann drucken. Der Fehler sollte schnell zu finden sein.


Viel Erfolg!


sanys
FHZ 1350PC Prof. mit HomeputerStudio 100224 + Direktsendebefehle à la tsa (v 8.0)
WIN XP Pro SP3 (neuester Stand) + buempi's Minibrowser + etliche fs20+HMS+FHT Komponenten + nie genug Zeit, das alles fertig zu bekommen ;-)

Benutzeravatar
squeeezer
Beiträge: 545
Registriert: 17.07.2006, 00:00
Wohnort: Idstein

Re: Fehlermeldung "ENDEWENN fehlt"

Beitrag von squeeezer » 22.01.2008, 10:12

hi ...

ich persönlich habe das makro so wie kafibo gestaltet. meines wissens sind auch bei der verschachtelung von wann-statements irgendwo grenzen gesetzt (ich glaube 6 ebenen).

viele grüße ...
... squeeezer

Benutzeravatar
Sanys
Beiträge: 270
Registriert: 31.01.2007, 12:29
Wohnort: Wetterau

Re: Fehlermeldung "ENDEWENN fehlt"

Beitrag von Sanys » 22.01.2008, 11:50

Hi squeeezer,
meines wissens sind auch bei der verschachtelung von wann-statements irgendwo grenzen gesetzt (ich glaube 6 ebenen).
das würde mich wundern. Zumindest in php und Purebasic werden beliebig viele Verschachtelungen zugelassen. Ich denke, das ist in Studio nicht anders. Vielleicht kann contronics das klären, die Hilfe ist da eher oberflächlich.
Mit der WENN-Anweisung ist es möglich den weiteren Programmablauf von einer oder mehreren Bedingungen abhängig zu machen. Wenn-Anweisungen können auch verschachtelt werden, d.h. zwischen dem wenn und dem endewenn (bzw. sonst) können weitere wenn-Anweisungen stehen. Jede wenn-Anweisung muß mit einer endewenn-Anweisung beendet werden, ansonsten wird bei der Code-Generierung eine entsprechende Fehlermeldung ausgegeben.
@joesch
Ich habe mal nachgezählt: Du hast 37 wenn und 37 endewenn in dem Makro. Die sonst's sollten nicht stören, aber irgendwo wird wohl ein wenn nicht mit endewenn geschlossen, also vermutlich Schreibfehler.
Oder hast Du das Makro mitlerweile zu laufen gebracht?


Viele Grüße

sanys
FHZ 1350PC Prof. mit HomeputerStudio 100224 + Direktsendebefehle à la tsa (v 8.0)
WIN XP Pro SP3 (neuester Stand) + buempi's Minibrowser + etliche fs20+HMS+FHT Komponenten + nie genug Zeit, das alles fertig zu bekommen ;-)

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Fehlermeldung "ENDEWENN fehlt"

Beitrag von tsa » 22.01.2008, 17:11

Hallo Joesch,

es gibt sie - eine nicht dokumentierte Begrenzung in der Verschachtelungstiefe von WENN_DANN_SONST Konstrukten in der Makrosprache der Studio-Version:
19 Mal schachteln geht noch - 20 Mal geht nicht mehr!

Also folge den Vorschlägen meiner Vorredner - oder mache das ganze als PHP-Script - wenn es da keine Begrenzung gibt.
ODER: erzeuge einfach den Ergebnisswert mathematisch aus dem Abfragewert, dann hast Du nur noch ein WENN_DANN_SONST und zwei kleine Formeln?!

So richtig verstehe ich den Grund der Begrenzung allerdings nicht - normalerweise wird die Auflösung solcher Konstruktionen programmtechnisch durch REKURSION gelöst, und da wäre die Begrenzung einzig die Größe des STACKs - und der kann einiges ab bei normal ausgerüsteten PC's.

Aber der Brougrammieror wird schon gewusst haben, was er tüten tat...

Gruss
Thomas

joesch
Beiträge: 789
Registriert: 03.02.2007, 14:57
Hat sich bedankt: 65 Mal
Danksagung erhalten: 2 Mal

Re: Fehlermeldung "ENDEWENN fehlt"

Beitrag von joesch » 22.01.2008, 21:05

Guten Abend zusammen!

Zunächst mal danke für alle Hinweise. Ich habe mich letztlich doch für die wesentlich einfachere "Formelvariante" entschieden. Warum ich nicht schon eher drauf gekommen bin - keine Ahnung. Aber so sind es nur wenige Zeilen.
Zum Glück werden beim Zuweisen der Heizungstemperaturen (Dezimalzahl) an das Objekt (ganze Zahl?) nicht wie in der Dokumentation beschrieben die Zehntelstellen einfach weggeschnitten. Es erfolgt eine "saubere" Rundung, so dass z.B. ab 20,6 das Objekt den ganzzahligen Wert für die Temperatur von 21° übernimmt. Ist zwar nicht so dokumentiert, aber trotzdem Klasse!

Code: Alles auswählen

WENN HzgBad.Temperatur < 0 DANN
 TempBad := 1
SONST
 WENN HzgBad.Temperatur > 30 DANN
  TempBad := 33
 SONST
  TempBad := HzgBad.Temperatur + 2
 ENDEWENN
ENDEWENN
VG - Joesch

Benutzeravatar
squeeezer
Beiträge: 545
Registriert: 17.07.2006, 00:00
Wohnort: Idstein

Re: Fehlermeldung "ENDEWENN fehlt"

Beitrag von squeeezer » 23.01.2008, 14:30

ach so, du sprichst den status einfach über den index an ... genial, darauf bin ich noch gar nit gekommen ... ich werd mal meine makros dezent kürzen ... danke für den wink :-)
... squeeezer

Antworten

Zurück zu „homeputer Studio / Standard: allgemeine Fragen“