![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, Anmerkungen habe ich eingefügt. MfG ManfredW > Hallo es gibt bereit eine erste Version. > > Die CC-Schaltet Zeitgesteuert die Pumpen und die Meßwerte werden auf gezeichnet. > > Es ist möglich die Pumpen vom PC zu schalten und die gespeicherten Messwerte mit Excel auszulesen. > > Das VB-Programm ist eigenständig un mit VB 6.0 realisiert. > > Nur wie kann ich von dem VB Programm die Schaltzeiten der Pumpen ändern und diese wiederrum in meinem VB-Programm anzeigen lassen ? > siehe meine homepage Kapitel Softwarebausteine Schaltuhren > > Hier das Programm was bislang in der Station läuft: > > '********************************************************************************************* > ' > ' C-Control Station/BASIC > ' Steuerprogramm mit Zeitsteuerung der Pumpen > ' > ' Aufgabe: > ' > ' Steuerung der Filteranlage > ' Ausgabe von Meßwerten an den PC > ' Kommmandos vom Leitrechner empfangen > ' 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[8] 'Definition Relais UV - Klärer > define Luft port[7] 'Definition Relais Belüftungspumpe > define Pumpe1 port[3] 'Definition Digitalport Pumpe 1 > define Pumpe2 port[4] 'Definition Digitalport Pumpe 2 > define Überlauf port[5] 'Definition Digitalport Schwimmschalter Überlauf > > 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 StörungAktiv bit[180] > > define BitAnfang bit[180] Bit wird zwar nicht benutzt, aber 180 ist doppelt belegt. Außerdem ein neues Byte. Warum nicht bit 188 ? > define Wert byte > define n Word Obige define ... byte 3 Stück und dann word bedeutet 1 Byte verschenkt. Besser mit define .. word beginnen. > define Minuten byte > define Sekunde byte Mit bits Zeittakt spart man bytes > > ' --- Programmoperationen ------------- > > beep 250,30,5 > > Minuten = 0 'erste Messung bei dieser MinuteX starten (einmalige Vorgabe beim Start) > > Luft = OFF > UVC = OFF > Pumpe1 = OFF > Pumpe2 = OFF Die Relais sind bei Start immer aus. > > '################################################################################################## > 'Programm: > #Loop > '-------------------------------------------------------------------------------------------------- > 'Zeitprogramm für Pumpe 1 und Pumpe 2 AKTUELL !!! 26.09.2008 !!!!! > > if (hour = 10) and (minute = 0) then Pumpe1 = ON 'Pumpe 1 einschalten > if (hour = 10) and (minute = 0) then Luft = ON > if (hour = 10) and (minute = 0) then UVC = ON > if (hour = 18) and (minute = 0) then Pumpe1 = OFF 'Pumpe 1 ausschalten > if (hour = 18) and (minute = 0) then Luft = OFF > if (hour = 18) and (minute = 0) then UVC = OFF > if SchaltzeitStdEin = hour and SchaltzeitMinuteEin = minute then goto Ein > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > '-------------------------------------------------------------------------------------------------- > ' Abfrage der eingeschalteten Pumpen und Anzeigen an den LED´s > LED1 = Pumpe1 > LED2 = Pumpe2 > LED3 = Luft > LED4 = UVC > '-------------------------------------------------------------------------------------------------- > ' 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 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 F3 then F3gedrueckt = OFF ' F3 losgelassen merken > if F3 or F3gedrueckt then goto NotF3 ' F3 neu gedrueckt? > F3gedrueckt = ON ' F3 gedrueckt merken > tog Luft ' Zustandswechsel nur einmal, bis F3 wieder losgelassen > wait 1 ' Taste entprellen > #NotF3 > > if F4 then F4gedrueckt = OFF ' F4 losgelassen merken > if F4 or F4gedrueckt then goto NotF4 ' F4 neu gedrueckt? > F4gedrueckt = ON ' F4 gedrueckt merken > tog UVC ' Zustandswechsel nur einmal, bis F4 wieder losgelassen > wait 1 ' Taste entprellen > #NotF4 > > IF Überlauf=ON then Pumpe1=OFF Eventuell schaltet die Schaltuhr wieder ein. Das muss vor der Schaltuhr programmiert sein z.B. if Überlauf then goto PumpeAus überspringt Schaltuhr. > if überlauf=on and second mod 2=1 then led1=on else led1=off > > if rxd then gosub loop12 'Kommandosignal vom Leitrechner abfragen > '-------------------------------------------------------------------------------------------------- > '-------------------------------------------------------------------------------------------------- > ' Meßwerte der Analogen Eingänge und der Frequenzmessung im Epprom speichern > 'minute = Minuten > if minute = Minuten then goto messen > goto Loop ' Anfang einfacher wäre if not MinutenImpuls then goto Loop jetzt wird hier einmal je Minute gemessen > > #messen > open# for append > if filefree then print# AD5 'Lufttemperatur > if filefree then print# AD6 'Wassertemperatur > if filefree then print# AD7 'Akkuspannung > if filefree then print# AD8 'Netzspannung > if filefree then print# freq 'Durchfluß > if filefree then print# minute 'Zeit bei Messung > > close# > > Minuten = Minuten + 15 > if Minuten = 60 then Minuten = 0 entfällt bei Anwendung Minuten-Impuls > goto Loop > '---------------------------------------------------------------------------------------- > 'Kommunikation mit Leitrechner > #loop12 > get Kommando > if Kommando = 27 then gosub Auslesen 27/16 ist 1. Soll wirklich G1 zusätzlich ausgeführt werden? Statt gosub strukturiere mit goto 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 > > if Kommando = 56 then put hour > if Kommando = 57 then put minute > if Kommando = 58 then put second > if Kommando = 59 then put freq2 > > 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# > open# for read > #Next > input# Wert > put Wert > if not EOF then goto Next > close# > return Befehl close# ist nur nach print# notwendig. > '------------------------------------------------------------------------------------- Meine Homepage: http://manfred.wilzeck.de |
Antwort schreiben |