Hallo Gemeinde,
ich habe vor mir eine Terrariumsteuerung zu bauen.
Zu diesem Zweck habe ich mir ein C-Control I UNIT M2.0 bei CONRAD gekauft. Vorher hatte ich eine einfachere Variante dieser Baureihe.
Jetz kommt mein Problem: Ich bin nun nicht der Programmierer, aber ich versuche mich in der Materie etwas hinein zu versetzen.
Ich möchte verschiedene (4) Relais mit einem Zeitprogramm steuern.
Ich habe da scho einiges probiert. Leider funzt das nicht so, wie ich es will. Die Relais fallen nach dem ansteuern eines zweiten immer wieder ab. Es bleibt sozusagen immer nur ein Relais angesteuert.
Wie bekomme ich so eine Art Schleife für das Halten des Relaiszustandes hin? Kann man da etwas mit Variablen, die den Zustand speichern arbeiten? Wie geht das denn?

Code:
define SDA          as port[9]
define SCL          as port[10]

define EXTPORT      as byteport[4]
define REL1         as port[29]
define REL2         as port[30]
define REL3         as port[31]
define REL4         as port[32]
define LIGHT as port[16]


LCD.INIT
LIGHT=off
SDA=on
SCL=on
EXTPORT=OFF


TYPE tUhrzeit
    Stunde AS BYTE
    _Minute AS BYTE
    Sekunde AS BYTE
END TYPE

DEFINE AlteUhrzeit AS BYTE
DEFINE Jahr AS WORD
DEFINE Heizungein AS tUhrzeit
DEFINE Heizungaus AS tUhrzeit
DEFINE Beregnungein AS tUhrzeit
DEFINE Beregnungaus AS tUhrzeit


Heizungein.Stunde = 20
Heizungein._Minute = 36
Heizungein.Sekunde = 00
Heizungaus.Stunde = 21
Heizungaus._Minute = 10
Heizungaus.Sekunde = 00

Beregnungein.Stunde = 20
Beregnungein._Minute = 37
Beregnungein.Sekunde = 30
Beregnungaus.Stunde = 20
Beregnungaus._Minute = 37
Beregnungaus.Sekunde = 30



DO

IF Heizungein.Stunde = HOUR THEN
IF Heizungein._Minute = MINUTE THEN
IF Heizungein.Sekunde = SECOND THEN
REL1=ON          
END IF
END IF
END IF

    
IF Heizungaus.Stunde = HOUR THEN
IF Heizungaus._Minute = MINUTE THEN
IF Heizungaus.Sekunde = SECOND THEN
REL1=OFF          
END IF
END IF
END IF


IF Beregnungein.Stunde = HOUR THEN
IF Beregnungein._Minute = MINUTE THEN
IF Beregnungein.Sekunde = SECOND THEN
REL4=ON
END IF
END IF
END IF


IF Beregnungaus.Stunde = HOUR THEN
IF Beregnungaus._Minute = MINUTE THEN
IF Beregnungaus.Sekunde = SECOND THEN
REL4=OFF
END IF
END IF
END IF



    IF AlteUhrzeit <> SECOND THEN
    
        AlteUhrzeit = SECOND
    
        Jahr = YEAR + 2000
           
        LCD.CLEAR
        LCD.POS 1,1
        
        IF HOUR < 10 THEN 
            LCD.PRINT "0" & HOUR
        ELSE
            LCD.PRINT HOUR
        END IF
        
        LCD.PRINT ":"
        
        IF MINUTE < 10 THEN 
            LCD.PRINT "0" & MINUTE
        ELSE
            LCD.PRINT MINUTE
        END IF
        
        LCD.PRINT ":"
        
        IF SECOND < 10 THEN
            LCD.PRINT "0" & SECOND
        ELSE
            LCD.PRINT SECOND
        END IF
        
        LCD.POS 2,1
        
        SELECT CASE DOW
        
            CASE BPPSunday
                LCD.PRINT "So."
            CASE BPPMonday
                LCD.PRINT "Mo."
            CASE BPPTuesday
                LCD.PRINT "Di."
            CASE BPPWednesday
                LCD.PRINT "Mi."
            CASE BPPThursday
                LCD.PRINT "Do."
            CASE BPPFriday
                LCD.PRINT "Fr."
            CASE BPPSaturday
                LCD.PRINT "Sa."
       
        END SELECT
        
        LCD.PRINT " " & DAY & "." & MONTH & "." 
        LCD.PRINT Jahr
                           
    END IF

LOOP

LCD.OFF
END