Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Programm läuft nicht wie gewünscht Kategorie: Programmierung Basic (von Hauk - 27.01.2007 18:09)
 Als Antwort auf Programm läuft nicht wie gewünscht von Christian B. - 27.01.2007 13:13
Hauk nutzt:  CC1-Unit V1.1
Hallo

Überprüfe doch einmal die Anweisung vor der Funktion. Die gehört doch bestimmt in die Schleife rein.
Außerdem sind in dieser Anweisung linke und rechte Seite vertauscht.

> Hallo alle zusammen,
> ich habe da ein Problem mit der Programmierung. Irgendwie läuft das Programm nicht so wie es soll. Das Programm soll bei einer Temperatur von über 18°C Relais 2 an und Relais 1 ausschalten( Wasser wird kälter). Wenn das Wasser unter 18°C ist soll das ganze umgekehrt passieren. Wenn es genau 18°C ist sollen beide Relais aussein. Das Problem ist, dass die Relais nie schalten und nur die Temperatur gemessen wird.
>
> DEFINE Sensor AD[1]
> DEFINE REL1 as port[29]
> DEFINE REL2 as port[30]
> define REL3 as port[31]
> define REL4 as port[32]
> define LED1 as port[25]
> define LED2 as port[26]
> define LED3 as port[27]
> define LED4 as port[28]
> DEFINE i AS BYTE 'für die Temperaturberechnung
> DEFINE t AS WORD 'Temperatur
> Define Vortemp as Byte
> DEFINE LetzterWert AS BYTE
> DEFINE AktuellerWert AS BYTE
> DEFINE LIGHT as Port [16]
> DECLARE FUNCTION ErmittleTemp(Messwert AS BYTE)
> 'Konstanten
> DEFINE Vorlauftemp AS BYTE
> 'Funktionstest bei dem alle Relais und LED's getestet werden
> LCD.INIT
> LCD.POS 1,1
> LCD.Print "Funktionstest"
> LIGHT= on
> PAUSE 25
> LCD.POS 2,1
> LCD.PRINT "REL 1"
> REL1=ON
> PAUSE 25
> REL1=OFF
> LCD.POS 2,1
> LCD.PRINT "REL 2"
> REL2=ON
> PAUSE 25
> REL2=OFF
> LCD.POS 2,1
> LCD.PRINT "REL 3"
> REL3=ON
> PAUSE 25
> REL3=OFF
> LCD.POS 2,1
> LCD.PRINT "REL 4"
> REL4=ON
> PAUSE 25
> REL4=OFF
> LCD.POS 2,1
> LCD.PRINT "LED 1"
> LED1=ON
> PAUSE 25
> LED1=OFF
> LCD.POS 2,1
> LCD.PRINT "LED 2"
> LED2=ON
> PAUSE 25
> LED2=OFF
> LCD.POS 2,1
> LCD.PRINT "LED 3"
> LED3=ON
> PAUSE 25
> LED3=OFF
> LCD.POS 2,1
> LCD.PRINT "LED 4"
> LED4=ON
> PAUSE 25
> LED4=OFF
> LIGHT=off
> LCD.clear
> 'Hauptpogramm
> LIGHT= on
> LCD.Print "Heizungs"
> LCD.POS 2,1
> LCD.Print "steuerung"
> Pause 100
> LIGHT= off
>
> #DO    
> LED1=ON     'LED Lauflichter zur Kontrolle
> PAUSE 20    '20 Millisekunden Pause zwischen An und Aus
> LED1=OFF
>
> LED2=ON
> PAUSE 20
> LED2=OFF
>
> LED3=ON
> PAUSE 20
> LED3=OFF
>
> LED4=ON
> PAUSE 20
> LED4=OFF
> '___________________________________

       LetzterWert = AktuellerWert              'An dieser Stelle umspeichern
>     AktuellerWert = Sensor
>          LIGHT= on
>     IF LetzterWert <> AktuellerWert THEN
>         LCD.POS 1,1
>         LCD.PRINT t (AktuellerWert)
>         LCD.PRINT "  Grad Celsius"
>      END IF  
>     IF Vorlauftemp = t  Then        
>         LCD.POS 2,1
>         REL1= off
>         REL2= off
>     END IF  
>             IF Vorlauftemp > t Then      
>                 REL1 = on             'Relais 1 ist mait dem Mischer gekoppelt und bewirkt, dass der Mischer aufgeht
>                 REL2= off
>                 LCD.POS 2,1
>                 LCD.PRINT "Mischer auf"
>             END IF
>                  IF Vorlauftemp < t Then
>                     Rel2= on
>                     REL1= off
>                     LCD.POS 2,1
>                     LCD.Print "Mischer zu"
>                 END IF
>     goto Do
> LCD.OFF
> AktuellerWert = LetzterWert
>
> FUNCTION ErmittleTemp(Messwert AS BYTE)
>
>    
>
>     FOR i = 0 TO UBOUND(tTemp)
>         IF Messwert = LOOKTAB(tTemp, i) THEN
>             IF i <= 10 THEN
>                 t = -10 + i
>             ELSE
>                 t = i - 10
>             END IF
>             EXIT FOR
>         END IF
>     NEXT i
>
>     ErmittleTemp = t
>     Vorlauftemp = 18
> END FUNCTION
>
> TABLE tTemp
> 101 102 103 104 105 106 107 108 109
> 110 110 111 112 113 113 114 115 116 116 117 118 119
> 120 121 122 123 124 125 126 127 128 129 130 131 132
> 133 134 135 136 137 138 139 140 141 142 143 144 145
> 145 146 147 148 149 150 151 152 153 154 155 156 157
> 157 158 159 160 161 162 163 164 165 166
> END TABLE
>
> Schon mal danke im Voraus für eure Hilfe!!!

 Antwort schreiben

Bisherige Antworten: