tauchmaus63
20.07.2005, 19:09
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?
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
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?
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