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 

 Schaltzeiten der RELAIS Kategorie: C-Control I V1.1 (von Andreas - 6.09.2005 18:17)
Andreas nutzt:  CC1-Station V2.0
Hallo Gemeinde,
ich habe immer noch ein Problem!
Ich hatte vorher schon einmal hier in das Forum gepostet, daß ich ein Problem mit Relais habe.
In meinem kleinen Programm habe ich eine Echtzeituhr und eine Temperaturabfrage mit Regelung zusammengebastelt. Doch sobald die Relais angesprochen werden, macht die Station ein RESET!
Waru ist das so? Ich habe doch noch Programmreserven, also dürfte ich daher doch keine Probleme bekommen.
Vielleich schaut Ihr Euch mein Werk einmal an - aber bitte nicht verzweifeln! Ich bin noch Anfänger!
Danke Andreas


'--------------------------
'------ I/O PORTS ---------
'--------------------------
define EXTPORT       byteport[4]
define SDA           port[9]
define SCL           port[10]
define LIGHT         port[16]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
define TEMP         word
define Zeit         word
define STATION_IO   byte[19]
define TEMPHI       byte[20]
define TEMPLO       byte[21]
define OLDSEC       byte[22]
define MyAddr       byte[23]
define DATA         byte[24]
define LED1         bit[17]
define LED2         bit[18]
define LED3         bit[19]
define LED4         bit[20]
define REL1         bit[21]           'Heizung
define REL2         bit[22]           'Wärmelampe
define REL3         bit[23]           'UV-Licht
define REL4         bit[24]           'Beregnung


const DS1631=158                      'Adresse Temp.-sensor

LIGHT=on


LCD.INIT

'-----------------------------------------------------------------------------
'-------- WILLKÃœRLICHE VOREINSTELLUNG ----------------------------------------
'-----------------------------------------------------------------------------
hour=23  
minute=59  
second=58

'-----------------------------------------------------------------------------
FUNCTION SHOW_TIME()
if HOUR<10 then LCD.PRINT "0"         'FÃœHRENDE NULL SCHREIBEN
LCD.PRINT  HOUR                       'STUNDEN AUSGEBEN
LCD.PRINT ":"                         'TRENNZEICHEN SCHREIBEN
if MINUTE<10 then LCD.PRINT "0"       'FÃœHRENDE NULL SCHREIBEN
LCD.PRINT  MINUTE
LCD.PRINT ":"                         'TRENNZEICHEN SCHREIBEN
if SECOND<10 then LCD.PRINT "0"       'FÃœHRENDE NULL SCHREIBEN
LCD.PRINT  SECOND
LCD.PRINT "  "
END FUNCTION
'-----------------------------------------------------------------------------

SDA=on
SCL=on
'--------------Alle Ports OFF-------------------------------------------------
STATION_IO=OFF                                       'STANDARD, alle Ports OFF  
EXTPORT=STATION_IO                      'zusätzlich, externen Port beschreiben
'-----------------------------------------------------------------------------
'-----------------------------------------------------------------------------
'------- AUF DEN SEKUNDENWECHSEL WARTEN --------------------------------------
'-----------------------------------------------------------------------------
FUNCTION WAITSEC()
do
LOOP UNTIL OLDSEC<>SECOND
OLDSEC=SECOND
END FUNCTION
'-----------------------------------------------------------------------------
'--------------------------
'--- DS1631 COMMANDS ------
'--------------------------
const CONVERT=51h
const STOP_CONVERT=22h
const READ_TEMP=AAh
const CONF=ACh
const RESET=54h

'-----------------------------------------------------
'------------------   DS1631 RESET  ------------------
'-----------------------------------------------------
FUNCTION DS1631RESET(ADDR REF MyAddr)
IIC.INIT
IIC.START
IIC.SEND ADDR
IIC.SEND RESET
IIC.STOP
IIC.OFF
END FUNCTION
'-----------------------------------------------------
'------------------   DS1631 CONVERT  ----------------
'-----------------------------------------------------
FUNCTION DS1631CONVERT(ADDR REF MyAddr)
IIC.INIT
IIC.START
IIC.SEND ADDR
IIC.SEND CONVERT
IIC.STOP
IIC.OFF
END FUNCTION
'-----------------------------------------------------
'----------------- GET DS1631 STATUS -----------------
'-----------------------------------------------------
FUNCTION DS1631GET_STATUS(ADDR REF MyAddr)
IIC.INIT
IIC.START
IIC.SEND ADDR
IIC.SEND CONF
IIC.STOP

IIC.START
IIC.SEND (ADDR+1)
IIC.GET DATA
IIC.STOP
IIC.OFF
RETURN DATA
END FUNCTION
'-------------------------------------------------------
'----------------- SET DS1631 STATUS -----------------
'-------------------------------------------------------
FUNCTION DS1631SET_STATUS(ADDR REF MyAddr,DATA as byte)
IIC.INIT
IIC.START
IIC.SEND ADDR
IIC.SEND CONF
IIC.SEND DATA
IIC.STOP
END FUNCTION
'-------------------------------------------------------
'----------------- WAIT DS1631 READY   -----------------
'-------------------------------------------------------
FUNCTION DS1631WAIT_READY(ADDR REF MyAddr)
#WT
if (DS1631GET_STATUS(ADDR)) and 80h = 0 then goto WT
END FUNCTION
'-----------------------------------------------------
'----------------- GET DS1631 TEMP -----------------
'-----------------------------------------------------
FUNCTION DS1631GET_TEMP(ADDR REF MyAddr)

IIC.INIT
IIC.START
IIC.SEND ADDR
IIC.SEND READ_TEMP
IIC.STOP

IIC.START
IIC.SEND (ADDR+1)
IIC.GET DATA
TEMP=DATA*256
IIC.GET DATA
TEMP=TEMP+DATA
IIC.STOP
IIC.OFF
RETURN TEMP
END FUNCTION

'-------------------------------------------------------------
DS1631RESET(DS1631)
DS1631SET_STATUS(DS1631,1)
'-------------------------------------------------------------
'-----            LOOP READING TEMPERATURE                 ---
'-------------------------------------------------------------
#LOOP
pause 5
DS1631CONVERT(DS1631)
DS1631WAIT_READY(DS1631)
TEMP=DS1631GET_TEMP(DS1631)
LCD.INIT switchonly
LCD.POS 2,3
TEMP=TEMP SHR 7
if (TEMP and 0100h) = 0100h then TEMP=(TEMP or FE00h)
LCD.PRINT "TEMP: " & TEMP/2 & "." & (TEMP and 1)*5 & " C        "
LCD.POS 1,3
SHOW_TIME()
LCD.OFF
'-----------------------------------------------------------------------------
'-----------------------------------------------------------------------------
'-----------Relais mit Zeitfunktion schalten und Temp.-reglung----------------
'-----------------------------------------------------------------------------
Zeit=hour *100 + minute
if Zeit = 2205 then REL3=off
EXTPORT=STATION_IO
if Zeit = 2000 then goto NASS
if Zeit = 1815 then REL3=on
EXTPORT=STATION_IO
if Zeit = 1405 then REL2=off
EXTPORT=STATION_IO
if Zeit = 0855 then goto NASS

'-----------------------------------------------------------------------------
if TEMP >=59 then REL2=off                           'größer 30 Grad, REL2 aus
EXTPORT=STATION_IO
if TEMP <=51 then goto HEIZER 'kleiner 25 Grad,dann Programm Zeitabfrage Heizer
if TEMP >=49 then REL1=off
EXTPORT=STATION_IO
if TEMP <=42 then REL1=on
EXTPORT=STATION_IO

'-----------------------------------------------------------------------------
goto LOOP

'-----------------------------------------------------------------------------
#NASS
REL4 = on              
EXTPORT=STATION_IO
PAUSE 45
REL4 = off
EXTPORT=STATION_IO
PAUSE 100
goto LOOP
'-----------------------------------------------------------------------------
#HEIZER
if Zeit = 1400 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1355 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1350 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1345 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1340 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1335 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1330 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1325 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1320 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1315 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1310 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1305 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1300 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1255 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1250 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1245 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1240 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1235 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1230 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1225 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1220 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1215 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1210 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1205 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1200 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1155 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1150 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1145 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1140 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1135 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1130 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1125 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1120 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1115 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1110 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1105 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1100 then REL2=on
EXTPORT=STATION_IO
if Zeit = 1055 then REL2=on
EXTPORT=STATION_IO

goto LOOP




 Antwort schreiben

Bisherige Antworten:

Re: Schaltzeiten der RELAIS (von Stefan Tappertzhofen - 6.09.2005 18:37)
    Re: Schaltzeiten der RELAIS (von Stefan Tappertzhofen - 6.09.2005 18:54)
        Re: Schaltzeiten der RELAIS (von Andreas - 6.09.2005 19:00)
            Re: Schaltzeiten der RELAIS (von Andreas - 6.09.2005 19:17)
                Re: Schaltzeiten der RELAIS (von Stefan Tappertzhofen - 7.09.2005 0:24)
                    Nein, das kann nicht funktionieren!! (von Dierk - 7.09.2005 11:16)
                       Re: Nein, das kann nicht funktionieren!! (von Andreas - 7.09.2005 17:35)
                          Re: Nein, das kann nicht funktionieren!! (von Dierk - 7.09.2005 18:13)
                             Überschneidung von Word- und Bytevariablen (von Dietmar - 8.09.2005 2:12)