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 

 Programm optimieren Kategorie: Programmierung Basic (von Björn - 4.08.2007 15:03)
Björn nutzt:  CC1-Station V1.1
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)

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?

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

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
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
'--------------------------------------
#Loop
'Zeitprogramm für Pumpe 1 und Pumpe 2              AKTUELL !!! 06.05.2007 !!!!!


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

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
 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#
  open# for read

#Next
 input# Wert
 put Wert
 if not EOF then goto Next
 close#
 open# for write
 'open# for append

 return

'-------------------------------------------------------------------------------------
' SPS Teichfilter Steuerungsprogramm
' Geschrieben in der Basic-Entwicklungssoftware 1.33
' Abgespeichert unter Steuerprogramm für die SPS-Teich.bas


Hier ein Screenshot der PC-Software:

 

 Antwort schreiben

Bisherige Antworten:

Re: Programm optimieren (von ManfredW - 4.08.2007 22:05)