'********************************************************** ' C-Control Station ' ' '********************************************************** ' die Digitalports define Regensensor port[1] define HandEin port[2] ' die Relais define EinfahrRelais port[7] define AusfahrRelais port[8] ' Folientaste und LED ' F1 port[9] define AutomatikTaste port[9] define F2 port[10] define F3 port[11] define F4 port[12] define AutomatikLED port[13] define AusgefahrenLED port[14] define SturmLED port[15] define HandLED port[16] ' Variablen define MotorAusSekunde byte define MotorAusMinute byte define WindAusSekunde byte define WindAusMinute byte define WindAus byte define SonneEinSekunde byte define SonneEinMinute byte define SonneAusSekunde byte define SonneAusMinute byte define WindBlaest byte define SonneEin byte define SonneScheint byte define SonneAus byte define ZeitOK byte define MaxWind byte ' der Temperatursensor-Port define T1 ad[5] define T2 ad[6] ' der Windsensor define Wind1 ad[7] ' der Sonnensensor define Sonne1 ad[1] ' eine Variable zur Speicherung der Temperatur define regen word define temp word define licht word define wind word define frage byte[2] ' Initialisierung WindBlaest=0 SonneScheint=0 SonneEin=0 SonneAus=0 ZeitOK=0 EinfahrRelais = OFF AusfahrRelais = OFF regen=0 MaxWind=0 AutomatikLED = OFF AusgefahrenLED = OFF SturmLED = OFF HandLED = OFF gosub Einfahren #loop 'if HandLED=OFF and HandEin then gosub HandEinKontr 'if HandLED=ON and not HandEin then gosub HandAusKontr gosub MessenWind if Regensensor then gosub Regenwart if HandLED=OFF and HandEin=OFF then gosub HandEinKontr if Regensensor then gosub Regenwart if HandLED=ON and HandEin=ON then gosub HandAusKontr if Regensensor then gosub Regenwart if (minute = MotorAusMinute) and (second = MotorAusSekunde) and EinfahrRelais=ON then EinfahrRelais = OFF if Regensensor then gosub Regenwart if (minute = MotorAusMinute) and (second = MotorAusSekunde) and AusfahrRelais=ON then AusfahrRelais = OFF if Regensensor then gosub Regenwart if not AutomatikTaste then gosub AutomatikEinAus if Regensensor then gosub Regenwart if RXD then gosub Abfrage if Regensensor then gosub Regenwart if AutomatikLED=OFF and HandLED=OFF and AusgefahrenLED=ON then gosub Einfahren if Regensensor then gosub Regenwart if AutomatikLED=OFF then goto loop gosub MessenSonne if Regensensor then gosub Regenwart if AutomatikLED=ON and SonneScheint=1 and WindBlaest=0 and AusgefahrenLED=OFF then gosub Ausfahren if Regensensor then gosub Regenwart if AutomatikLED=ON and SonneScheint=0 and HandLED=OFF then gosub Einfahren if Regensensor then gosub Regenwart goto loop #MessenWind wind=FREQ2 if (wind>MaxWind) then MaxWind=wind if (wind>27) then gosub WindIstDa else gosub KeinWind return #KeinWind if (windBlaest=1) and (WindAus=0) then gosub StartWindAus if (minute = WindAusMinute) and (second = WindAusSekunde) and (WindAus=1) then gosub WindIstVorbei return #WindIstVorbei SturmLED = OFF WindBlaest=0 return #WindIstDa gosub Einfahren SturmLED = ON WindBlaest=1 WindAus=0 return #StartWindAus WindAus=1 WindAusMinute = minute+20 WindAusMinute = (WindAusMinute + 1) mod 60 WindAusSekunde = second return #MessenSonne if (Sonne1>=48) then gosub SonneIstDa if (minute = SonneEinMinute) and (second = SonneEinSekunde) and (SonneEin=1) then SonneScheint=1 if (Sonne1<47) then gosub SonneIstWeg if (minute = SonneAusMinute) and (second = SonneAusSekunde) and (SonneAus=1) then SonneScheint=0 return #SonneIstDa SonneAus=0 if (SonneEin=1) then return SonneEin=1 SonneEinMinute = minute+5 SonneEinMinute = (SonneEinMinute + 1) mod 60 SonneEinSekunde = second return #SonneIstWeg SonneEin=0 if (SonneAus=1) then return SonneAus=1 SonneAusMinute = minute+5 SonneAusMinute = (SonneAusMinute + 1) mod 60 SonneAusSekunde = second return #HandEinKontr gosub Ausfahren HandLED = ON pause 5 return #Ausfahren if AusgefahrenLED=ON then return if WindBlaest=1 then return if EinfahrRelais=ON then EinfahrRelais=OFF AusfahrRelais = ON MotorAusMinute = minute MotorAusMinute = (MotorAusMinute + 1) mod 60 MotorAusSekunde = second return #HandAusKontr gosub Einfahren HandLED = OFF pause 5 return #Einfahren ' if AusgefahrenLED=OFF then return if AusfahrRelais=ON then AusfahrRelais=OFF EinfahrRelais = ON MotorAusMinute = minute MotorAusMinute = (MotorAusMinute + 1) mod 60 MotorAusSekunde = second return #Abfrage input frage 'AutomatikLED=ON 'GET frage 'if ZeitOK=0 then print "Z"; if Regensensor then gosub Regenwart print frage; if frage=2 then print "R"; print ","; print year; print "-"; print month; print "-"; if Regensensor then gosub Regenwart print day; print ","; print hour; print ":"; print minute; if Regensensor then gosub Regenwart print ":"; print second; temp = 5 * T1 - 250 print ","; print temp; if Regensensor then gosub Regenwart temp = 5 * T2 - 250 print ","; print temp; print ","; print regen; if Regensensor then gosub Regenwart licht=Sonne1 print ","; print licht; print ","; wind=FREQ2 print MaxWind if Regensensor then gosub Regenwart MaxWind=0 if frage=2 then regen=0 'if ZeitOK=1 then return ' input YEAR ' input MONTH ' input DAY ' input HOUR ' input MINUTE ' input SECOND ' ZeitOK=1 return #AutomatikEinAus 'gosub Abfrage tog AutomatikLED pause 5 wait AutomatikTaste return #Regenwart regen=regen+1 wait Regensensor=OFF return