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 

 Re: Taster entprellen und kleinigkeiten... Kategorie: C-Control I V1.1 (von ManfredW, Homepage - 10.04.2005 18:55)
 Als Antwort auf Taster entprellen und kleinigkeiten... von Björn - 10.04.2005 17:05
Hallo,
einige Anmerkungen habe ich eingefügt.
Ohne Anspruch auf Vollständigkeit.
MfG ManfredW

> Moin, moin !
>
> Ich hab für meine Teichfilteranlag zu Steuerung eine C-Control 1 im Einsatz.
>
> Ich hab da ein paar kleine Problemme und hoffe es kann mir hier weitergeholfen werden.
>
> Problem1:
> Wenn ich an der Station eine der F-Tasten betätige wird ständig an/aus geschaltet... wie kann ich das unterbinden ?

siehe meine homepage
>
> 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.
>
Datum und Uhrzeit stehen immer zur Verfügung mit Abfrage z.B. If minute = 30 then .. usw.
 
> 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)
siehe im Programm.
>
>
> Für Hilfen und Tipps bin ich sehr dankbar!!!
> MFG
> Björn
>
>
> ...und hier das Prog was in der CCStation 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[1] 'Definition Digitalport Pumpe 1
> define Pumpe2  port[2] '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 Wert byte
> define n Word
vorhergehende Anzahl byte ist ungerade, d.h. ein Byte verschenkt.
Byte und word zusammen aufführen wegen Übersicht.
> define Minuten byte
> define Sekunde byte
> ' --- Programmoperationen -------------
>
> beep 250,15,5
> hour  = 12            'manuelle Zeiteinstellung
Das ist nicht manuelle Einstellung sondern Vorbesetzung.
> minute = 22        
> second = 0
> Minuten = 30      
>
> Luft = ON
> Pumpe1 = ON
> Pumpe2 = OFF
> open# for write
> '--------------------------------------
> #Loop
> 'Zeitprogramm für Pumpe 1 und Pumpe 2              AKTUELL !!! 07.04.2005 !!!!!
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
Hier springst Du mit gosub und musst mit RETURN aus loop12 zurück!
>
> if (hour = 6)  and (minute =   0) and (second =   0) then Pumpe1 = ON  'Pumpe1 einschalten
> if (hour = 22) and (minute =   0) and (second =   0) then Pumpe1 = OFF 'Pumpe 1 ausschalten
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
> if (hour = 22) and (minute =   0) and (second =   0) then Pumpe2 = ON  'Pumpe 2 einschalten
> if (hour = 22) and (minute =  15) and (second =   0) then Pumpe2 = OFF 'Pumpe 2 ausschalten
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
> '----------------------------------------------------------------------------------------
> ' Meßwerte der Analogen Eingänge und der Frequenzmessung im Epprom speichern
> if  minute = Minuten then goto messen
> 'minute = Minuten
Bei Ungleich setzt Du die DCF-Uhr,
aber auch anders wäre es sinnlos, weil die Bedingung anschließend immer stimmt.
> goto Abfrage
Wie soll das Programm an diese Stelle kommen hinter goto.
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
>  #messen
>   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
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
>   Minuten = Minuten + 15
>   if Minuten = 60 then Minuten = 0
>   if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
>   return
> '----------------------------------------------------------------------------------------
> ' Abfrage der eingeschalteten Pumpen
> #Abfrage
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
> If Pumpe1  = ON  then LED1 = ON
> If Pumpe1  = OFF then LED1 = OFF
Möglich ist auch einfach LED1 = Pumpe1
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
> If Pumpe2  = ON  then LED2 = ON
> IF Pumpe2  = OFF then LED2 = OFF
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
> If UVC = ON  then LED3 = ON
> If UVC = OFF then LED3 = OFF
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
> If Luft    = ON  then LED4 = ON
> If Luft    = OFF then LED4 = OFF
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
> '----------------------------------------------------------------------------------------
> ' Tastenabfrage an der C-Control Station
>
> if not F1 and Pumpe1 =  ON then Pumpe1 = OFF ELSE if not F1 and Pumpe1 = OFF then Pumpe1 = ON
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
> if not F2 and Pumpe2 =  ON then Pumpe2 = OFF ELSE if not F2 and Pumpe2 = OFF then Pumpe2 = ON
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
> if not F3 and UVC =  ON then UVC = OFF ELSE if not F3 and UVC = OFF then UVC = ON
>
> if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
> if not F4 and Luft   =  ON then Luft = OFF ELSE if not F4 and Luft = OFF then Luft = ON
>
> goto loop                       'Rücksprung zum Zeitprogramm
> '-------------------------------------
> 'Kommunikation mit Leitrechner
> #loop12
> get Kommando
> if Kommando = 27 then gosub Auslesen
>
> Gruppe = Kommando / 16
> on Gruppe gosub G0, G1, G2, G3, G4, G5

Achtung. Hier wird Unterprogramm loop12 ohne RETURN verlassen.

> goto Loop           '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#
>   open# for read
>   if rxd then gosub loop12        'Kommandosignal vom Leitrechner abfragen
>
> #Next
>  input# Wert
>  put Wert
>  if not EOF then goto Next
>  close#
>  open# for write
>
>  return
>
> '-------------------------------------------------------------------------------------
> ' SPS Teichfilter Steuerungsprogramm
> ' Geschrieben in der Basic-Entwicklungssoftware 1.33
> '
> '
> ' Copyright by Björn Riemer 1999 - 2009
> '
> '-------------------------------------------------------------------------------------


Meine Homepage: http://manfred.wilzeck.de

 Antwort schreiben

Bisherige Antworten:

Re: Zusatz (von ManfredW - 10.04.2005 19:32)