INFO - FAQ - CC2-Forum - CCPro-Forum |
Und hier noch die hoffentlich unvermurkste Version: > Problem1: > Wenn ich an der Station eine der F-Tasten betätige wird ständig an/aus geschaltet... wie kann ich das unterbinden ? Mit entsprechender Programmlogik. Im Moment macht Dein Programm ja auszugsweise das: #loop Wenn F1 gedrückt, dann wechsele Pumpenstatus von an nach aus und umgekehrt goto loop Wenn dann F1, wie zu erwarten, länger als den Bruchteil einer Sekunde gedrückt gehalt wird, klackert's, bis F1 wieder losgelassen wird. Mit Entprellen hat das nichts zu tun. Du musst Dir also merken, dass Du Fx erkannt und das entsprechende veranlasst hast, bis die Taste wieder losgelassen wurde, also skizziert, ungetestet ungefähr so. define F1gedrueckt bit[192] define F2gedrueckt bit[191] define F3gedrueckt bit[190] define F4gedrueckt bit[189] #loop ... if F1 then F1gedrueckt = OFF ' F1 losgelassen merken if F1 or F1gedrueckt then goto NotF1 ' F1 neu gedrueckt? ' ja F1gedrueckt = ON ' F1 gedrueckt merken tog Pumpe ' Zustandswechsel nur einmal, bis F1 wieder losgelassen wait 1 ' Taste entprellen #NotF1 ... goto loop > Problem2: > Wenn ich möchte das sich die Station mit dem DCF-Modul die Zeit selbst holt und ich das nicht immer > im Programm vorgeben muss. Allerdings weiß ich nicht wie ich das im Programm umsetzen muss. Das geht automatisch. Du siehst am DCF-Lämpchen, wann er sychronisiert hat. Ich warte in meinem Progrämmle beim Start so darauf: #dcfloop if (ccstatus and 1) then goto dcfok ... goto dcfloop #dcfok ... mit ccstatus aus der FAQ abgeschrieben. '########################## ' ' Mit dem untenstehenden Programm kann das C-Control-Statusregister ' abgefragt werden. Das Register liegt an Adresse $7b und enthält zwei ' Bits, die zu diesem Zweck von Interesse sind: Bit 0 gibt an, ob in ' diesem Moment ein gültiges Zeitsignal empfangen wird und Bit 4 ist ' gesetzt, wenn die C-Control-Systemzeit wenigstens einmal vom ' DCF77-Signal oder über die RS232-Schnittstelle gestellt wurde. Wenn ' nur Bit 4 gesetzt ist, kann davon ausgegangen werden, daß die ' Systemzeit die richtige Ortszeit enthält (wenn auch eventuell mit ' einigen Sekunden Abweichung). ' ' if (ccstatus and 1) then print "Es wird augenblicklich ein gueltiges DCF77-Signal empfangen ' if (ccstatus and 16) then print "Die Systemzeit wurde mindestens einmal gestellt ' if (ccstatus and 32) then print "Der Slowmodus ist aktiv." #ccstatus table ccstatustab 2938 '11*256+$7b-1 tabend return Damit mir das Warten nicht zu lang wird, gebe ich jede Sekunde an den ggf. angeschlossenen PC eine Meldung aus und lasse LED3 und LED4 im Halbsekunden-Rythmus blinken: #dcfloop if (ccstatus and 1) then goto dcfok if second = oldsecond then goto BlinkLeds oldsecond = second gosub printdate #BlinkLeds 'mal blinkend anzeigen, was abgeht pause 25 ' 0,5 Sekunden tog led3 tog led4 goto dcfloop > Problem3: > Von Zeit zu Zeit fällt die Station einfach "aus" alle gespeicherten Daten sind dann weg... > warum die Station ausfällt weiß ich leider nicht aber wie kann ich die Daten fest speichern auch wenn die SPS mal ausfällt ? (Die Daten werden aööe 4 - 5 tage mit einem Excel-Programm ausgelesen) Stromausfall? Du musst das close# öfter machen und dann "open# for append".Dabei gilt es aber zu beachten, dass die CC nur ca 10^6 close# abkann - also auch nicht zu oft. > ...und hier das Prog was in der CCStation läuft...: noch ein paar Anmerkungen ... > If Pumpe1 = ON then LED1 = ON > If Pumpe1 = OFF then LED1 = OFF Das kann man auch LED1 = Pumpe1 schreiben > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > > #loop12 > get Kommando > if Kommando = 27 then gosub Auslesen > > Gruppe = Kommando / 16 > on Gruppe gosub G0, G1, G2, G3, G4, G5 > goto Loop 'Endlosschleife Wenn Du mit gosub in loop12 reinspringst, musst Du auch mit return wieder raus. Ansonsten geht nach dem 4. Mal keines der anderen gosub/returns mehr gut. > ' Copyright by Björn Riemer 1999 - 2009 Sehr vorrausschauend ... ;-) HTH Bye Achim |
Antwort schreiben |