
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, einige Vorschläge habe ich eingefügt. MfG ManfredW > Moin, moin! > > Ich hab für meine Teichfilteranlag zu Steuerung eine C-Control 1 im Einsatz. > > Ich hab da ein paar kleine Probleme und hoffe es kann mir hier weitergeholfen werden. > > 1. Problem nach dem auslesen der Meßwerte aus dem Speicher werden diese anschließend nicht gelöscht bzw. überschrieben. (Auswerten der Meßwerte mit Excel) Ich nehme an, dass es daran liegt, dass Du zwar den Befehl open# for write gibst, dann aber vor dem Schreiben open# for append befiehlst. > > 2. Die Station kann über den PC-Gesteuert werden d.h. die aktuellen Meßwerte werden angezeigt, welche Pumpe in Betrieb ist und man kann die Pumpen ein- und ausschalten. > Da an der Station keine Funkuhr angeschlossen ist muß ich immer die aktuelle zeit in der basic datei vorgeben. > kann man das auch direkt über meine anwendung(läuft über VB 6.0) vorgeben? Besser wäre, die c-control autark laufen lassen und 10 Euro für die Funkuhr ausgeben. > > Schön wäre auch wenn man die gespeicherten Meßwerte über diese VB-Anwendung auslesen und anzeigen kann. > > Wenn mir da jemand von Euch weiterhelfen kann wäre das Super!!! > > Vielen Dank vorab schon einmal!! > > Viele Grüße > Björn > Weitere Vorschläge sind im Programm eingefügt. > Hier das Prog was in der Station aktuell läuft: > > > '********************************************************************************************* > ' > ' C-Control Station/BASIC > ' Steuerprogramm mit Zeitsteuerung der Pumpen > ' > ' Aufgabe: > ' > ' Steuerung der Filteranlage > ' Ausgabe von Meßweten an den Leitrechner > ' Kommmandos vom Leitrechner empfangen > ' Meßdaten zum Leitrechner senden > ' Meßwerte aufzeichnen und auf Kommando an Leitrechner senden > '********************************************************************************************* > ' --- Definitionen -------------------- > > define Ausgang byteport[1] > define Eingang byteport[2] > > define AD1 AD[1] ' AD 1 --- > define AD2 AD[2] ' AD 2 Batterie - Strom > define AD3 AD[3] ' AD 3 Start Taster > define AD4 AD[4] ' AD 4 Reset Taster > define AD5 AD[5] ' AD 5 Lufttemperatur > define AD6 AD[6] ' AD 6 Wassertemperatur > define AD7 AD[7] ' AD 7 Batteriespannung > define AD8 AD[8] ' AD 8 Netzspannung > > define Kommando byte > define Gruppe Byte > > define UVC port[7] 'Definition Relais UV - Klärer > define Luft port[8] 'Definition Relais Belüftungspumpe > define Pumpe1 port[3] 'Definition Digitalport Pumpe 1 > define Pumpe2 port[4] 'Definition Digitalport Pumpe 2 > > define LED1 port[13] 'Definition Betriebsmodusanzeige LED 1 > define LED2 port[14] 'Definition Betriebsmodusanzeige LED 2 > define LED3 port[15] 'Definition Betriebsmodusanzeige LED 3 > define LED4 port[16] 'Definition Betriebsmodusanzeige LED 4 > > define F1 port[9] 'Definition Folien-Funktionstaster Fl > define F2 port[10] 'Definition Folien-Funktionstaster F2 > define F3 port[11] 'Definition Folien-Funktionstaster F3 > define F4 port[12] 'Definition Folien-Funktionstaster F4 > > define F1gedrueckt bit[189] > define F2gedrueckt bit[190] > define F3gedrueckt bit[191] > define F4gedrueckt bit[192] > > define Wert byte hier könnte Reserve byte eingefügt werden, wegen gerader Byte-Anzahl vor word. > define n Word > define Minuten byte > define Sekunde byte > ' --- Programmoperationen ------------- > > beep 250,15,5 > hour = 15 'einmalige Zeitvorgabe Stunde, da noch kein DCF angeschlossen ist > minute = 30 'einmalige Zeitvorgabe Minute, da noch kein DCF angeschlossen ist > second = 0 'einmalige Zeitvorgabe Sekunde, da noch kein DCF angeschlossen ist > Minuten = 45 'erste Messung bei dieser MinuteX starten (einmalige Vorgabe beim Start) > > Luft = OFF > UVC = OFF > Pumpe1 = OFF 'off > Pumpe2 = OFF 'off > open# for write Warum wird hier Datei eröffnet, obwohl erst in 15 Minuten geschrieben wird? > '-------------------------------------- > #Loop > 'Zeitprogramm für Pumpe 1 und Pumpe 2 AKTUELL !!! 06.05.2007 !!!!! > > Sekundengenau abfragen ist kritisch. Schau auf meine homepage bei Schaltuhr. > if (hour = 9) and (minute = 59) and (second = 30) then Pumpe1 = ON 'Pumpe 1 einschalten > if (hour = 17) and (minute = 50) and (second = 0) then Pumpe1 = OFF 'Pumpe 1 ausschalten > if (hour = 9) and (minute = 59) and (second = 30) then Pumpe2 = ON 'Pumpe 1 einschalten > if (hour = 9) and (minute = 59) and (second = 59) then Pumpe2 = OFF 'Pumpe 1 ausschalten > > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > > if (hour = 17) and (minute = 45) and (second = 0) then Pumpe2 = ON 'Pumpe 2 einschalten > if (hour = 17) and (minute = 49) and (second = 0) then Pumpe2 = OFF 'Pumpe 2 ausschalten > > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen Warum wird hier und anschließend noch mehrmals rxd abgefragt? > > if (hour = 10) and (minute = 0) and (second = 5) then Luft = ON 'Belüftung einschalten > if (hour = 17) and (minute = 50) and (second = 10) then Luft = OFF 'Belüftung ausschalten > > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > > if (hour = 10) and (minute = 50) and (second = 8) then UVC = ON 'UV-Lampe einschalten > if (hour = 17) and (minute = 50) and (second = 5) then UVC = OFF 'UV-Lampe ausschalten > > > '------------------------------------------------------------------------------------------ > ' Abfrage der eingeschalteten Pumpen und Anzeigen an den LED´s > 'If Pumpe1 = ON then LED1 = OFF else LED1 = ON > 'If Pumpe2 = ON then LED2 = OFF else LED2 = ON > LED1 = Pumpe1 > LED2 = Pumpe2 > > LED3 = UVC > LED4 = Luft > > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > ' > '----------------------------------------------------------------------------------------- > ' Tastenabfrage an der C-Control Station > > if F1 then F1gedrueckt = OFF ' F1 losgelassen merken > if F1 or F1gedrueckt then goto NotF1 ' F1 neu gedrueckt? > F1gedrueckt = ON ' F1 gedrueckt merken > tog Pumpe1 ' Zustandswechsel nur einmal, bis F1 wieder losgelassen > wait 1 ' Taste entprellen > #NotF1 > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > > if F2 then F2gedrueckt = OFF ' F2 losgelassen merken > if F2 or F2gedrueckt then goto NotF2 ' F2 neu gedrueckt? > F2gedrueckt = ON ' F2 gedrueckt merken > tog Pumpe2 ' Zustandswechsel nur einmal, bis F1 wieder losgelassen > wait 1 ' Taste entprellen > #NotF2 > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > > if F3 then F3gedrueckt = OFF ' F3 losgelassen merken > if F3 or F3gedrueckt then goto NotF3 ' F3 neu gedrueckt? > F3gedrueckt = ON ' F3 gedrueckt merken > tog UVC ' Zustandswechsel nur einmal, bis F3 wieder losgelassen > wait 1 ' Taste entprellen > #NotF3 > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > > if F4 then F4gedrueckt = OFF ' F4 losgelassen merken > if F4 or F4gedrueckt then goto NotF4 ' F4 neu gedrueckt? > F4gedrueckt = ON ' F4 gedrueckt merken > tog Luft ' Zustandswechsel nur einmal, bis F4 wieder losgelassen > wait 1 ' Taste entprellen > #NotF4 > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > > ' Meßwerte speichern wenn die Minuten übereinstimmen > 'minute = Minuten > if minute = Minuten then goto messen > > > goto loop 'Rücksprung zum Zeitprogramm > > > > '-------------------------------------------------------------------------------------- > ' Meßwerte der Analogen Eingänge und der Frequenzmessung im Epprom speichern > #messen > beep 300,5,0 > open# for append Hier befiehlst Du Anhängen. Entwurf: mit BitAnfang kannst Du festlegen, ob der Speicher überschrieben werden soll. if BitAnfang then goto Anfang if filefree < 6 then goto loop open# for append goto schreiben #Anfang open# for write BitAnfang = OFF #schreiben Print# AD5 : print#.....usw. close# > if (filefree > 1) then print# AD5 > if (filefree > 1) then print# AD6 > if (filefree > 1) then print# AD7 > if (filefree > 1) then print# AD8 > if (filefree > 1) then print# freq > if (filefree > 1) then print# hour > > Minuten = Minuten + 15 'nächste Messung in 15 min. > if Minuten = 60 then Minuten = 0 > close# > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > > goto loop > '---------------------------------------------------------------------------------------- > '---------------------------------------------------------------------------------------- > 'Kommunikation mit Leitrechner > #loop12 > get Kommando > if Kommando = 27 then gosub Auslesen > > Gruppe = Kommando / 16 > on Gruppe gosub G0, G1, G2, G3, G4, G5 > return 'Endlosschleife > > #G0 'keine Aktion > return > > #G1 'digitale Ausgabe > get Ausgang > return > > #G2 'digitale Eingabe > put Eingang > return > > #G3 'analoge Eingaben > if Kommando = 48 then put AD1 > if Kommando = 49 then put AD2 > if Kommando = 50 then put AD3 > if Kommando = 51 then put AD4 > if Kommando = 52 then put AD5 > if Kommando = 53 then put AD6 > if Kommando = 54 then put AD7 > if Kommando = 55 then put AD8 > > return > > #G4 'analoge Ausgaben > if Kommando = 64 then get second > if Kommando = 65 then get day > return > > #G5 'Freuquenz Hi, Lo > put freq / 256 > put freq mod 256 > > return > '---------------------------------------------------- > > #Auslesen > close# Vor read ist close nicht notwendig. > open# for read > > #Next > input# Wert > put Wert > if not EOF then goto Next > close# close nach Schreiben bzw. Anhängen > open# for write > 'open# for append Warum wird hier geöffnet, obwohl nicht write folgt? > > return > > '------------------------------------------------------------------------------------- > Weitere Hinweise und Anregungen findest Du auf meiner homepage. Meine Homepage: http://manfred.wilzeck.de |
| Antwort schreiben |