-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Programmieren einer C-Control I

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.08.2006
    Beiträge
    57

    Programmieren einer C-Control I

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo leutz!
    Zuerst mal: ich habe noch kein plan von C-Control!

    Ich hab mal eben ein bischen Code geschrieben und wollte mal fragen ob diese gültig ist. Hab eben noch kein C-Control um es zu prüfen. Will zuerst sicher sein dass ich es kappiere bevor ich kaufe.


    Code:
    '**********************************************************
    ' C-Control Station
    '
    ' Springbrunnen Regelung
    '
    ' Die Haupt-Pumpe (Hp) läuft grunsätzlich immer, ausser wenn
    ' es nicht genug Wasser im Brunnen hat.
    '
    ' Der Wasserspiegel wird konstant via Drucksensor (Ds) gemes-
    ' sen und bei bedarf nach gefüllt via Magnetventil (Mv) oder
    ' abgepumpt via kleine Pumpe (Kp).
    ' 
    ' Der Wasserstrahl ist über den Wasserspiegel kontrolliert.
    ' Je höher der Wasserspiegel, desto tiefer der Stahl. Je
    ' tiefer der Wasserspiegel desto höher der Strahl.
    '
    ' Der Anenometer [Windmesser] (Am) bewirkt eine Reduzierung
    ' des Wasserstrahls bei Wind. Eine Durchschnittsmessung  
    ' (Schwellwert) von 1 Minute ist für ein ruhiges verhalten.
    ' 
    ' Es sind 3 Betriebsarten einstellbar.
    '
    ' Automatisch (F1):
    ' Hiermit wird der Stahl immer auf das Maximum gebracht.
    '
    ' Halbautomatisch (F2):
    ' Hiermit kann man eine selbst definierte Höhe des Wasser-
    ' stahls festlegen der aber bei Wind via Windmessung reduziert
    ' wird.
    '
    ' Manuel (F3):
    ' Hiermit kann man eine selbst definierte Höhe des Wasser-
    ' stahls festlegen der ohne Windmessung immer gleich bleibt.
    ' 
    ' Die Betriebsart wird via F1, F2 und F3 bestimmt.
    '
    ' Auf dem Display ist immer die Aktuelle Wasserstrahlhöhe
    ' zu sehen.
    '**********************************************************
    
    ' --- Definitionen ---
    
    ' die Relais
    define Hp port[7]
    define Mv port[8]
    define Kp port[9]
    
    ' der Drucksensor
    define Ds port[1]
    
    ' der Anenometer
    define Am ad[5]
    
    ' die Folien-Funktionstasten
    define F1 port[9]
    define F2 port[10]
    define F3 port[11]
    define FTaste byte
    
    ' eine Variable zur Speicherung der Windgeschwindigkeit
    define Wgs word
    ' Variablen zur Speicherung der Wasserstrahlhöhe
    define Strahlhöhe byte
    define StrahlhöheAktuell byte
    
    ' Konstanten
    define C10 10  ' = 10
    
    ' --- das Programm ---
    
    ' Initialisierung
    Hp = OFF
    Mv = OFF
    Kp = OFF
    
    ' Endlosschleife
    #loop
    
    ' Tastenabfrage
      if not (FTaste = 1 or FTaste = 2 or FTaste = 3) then goto Auswahl
      if FTaste = 1 then gosub Automatisch
      if FTaste = 2 then gosub Halbautomatisch
      if FTaste = 3 then gosub Manuel
    
    goto loop
    
    ' Betriebsarte auswählen
    #Auswahl
         Hp = OFF
         Print "Bitte eine Betriebsart auswählen"
         wait F1 or F2 or F3
         if F1 then FTaste = 1
         if F2 then FTaste = 2
         if F3 then FTaste = 3
    Return
    
    ' Schleifen der einzelnen Betriebsarten
    
    
    ' Endlosschleife für Automatisch
    #Automatisch
    #Loop1
    'Das Programm:
    
    
    goto loop1
    
    ' Endlosschleife für Halbautomatisch
    #Halbautomatisch
    #Loop2
    'Das Programm:
    
    
    goto loop2
    
    ' Endlosschleife für Manuel
    #Manuel
    #Loop3
    'Das Programm:
    
    
    goto loop3
    
    #Loop4
    'Windmessung
    
    
    goto Loop4
    Gruss
    Ron

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    Hi!
    während du zb. im automatikbetrieb bist würde ich eine abfrage zur betriebsmodeumschaltung einbauen(define bm port[12])

    die gosub Befehl wird bei basic++ nicht mehr unterstützt!

    und wenn es geht vermeide goto befehle(bessere übersichtlichkeit)
    also:


    Code:
    ' --- Definitionen ---
    
    ' die Relais
    define Hp port[7]
    define Mv port[8]
    define Kp port[9]
    
    ' der Drucksensor
    define Ds port[1]
    
    ' der Anenometer
    define Am ad[5]
    
    ' die Folien-Funktionstasten
    define F1 port[9]
    define F2 port[10]
    define F3 port[11]
    define FTaste byte 
    define bm port[12] 'Taster für betriebsmoduswechsel
    
    FUNCTION Automatisch()
    PRINT "Automatikbetrieb"
    'Deine Programmzeilen für die automatische Regelung
    loop until bm = 1 'Solange durchlaufen bis der betriebsmode taster gedrückt wird
    END FUNCTION
    
    FUNCTION Halbautomatisch()
    PRINT "Halbautomatikbetrieb"
    'Deine Programmzeilen für die halbautomatische Regelung
    loop until bm = 1 'Solange durchlaufen bis der betriebsmode taster gedrückt wird
    END FUNCTION
    
    FUNCTION Manuel()
    do
    PRINT "Manuel"
    'Deine Programmzeilen für die Manuele Regelung
    loop until bm = 1 'Solange durchlaufen bis der betriebsmode taster gedrückt wird
    END FUNCTION
    
    if FTaste = 1 then Automatisch()
    if FTaste = 2 then Halbautomatisch()
    if FTaste = 3 then Manuel ()
    aber sonst schauts nicht schlecht aus denke ich

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    17.08.2006
    Beiträge
    57
    Hallo!
    Besten Dank für deine Hilfe.

    Kann man es eventuel auch so machen mit den Tasten:

    Code:
    '**********************************************************
    ' C-Control Station
    '
    ' Springbrunnen Regelung
    '
    ' Die Haupt-Pumpe (Hp) läuft grunsätzlich immer, ausser wenn
    ' es nicht genug Wasser im Brunnen hat.
    '
    ' Der Wasserspiegel wird konstant via Drucksensor (Ds) gemes-
    ' sen und bei bedarf nach gefüllt via Magnetventil (Mv) oder
    ' abgepumpt via kleine Pumpe (Kp).
    ' 
    ' Der Wasserstrahl ist über den Wasserspiegel kontrolliert.
    ' Je höher der Wasserspiegel, desto tiefer der Stahl. Je
    ' tiefer der Wasserspiegel desto höher der Strahl.
    '
    ' Der Anenometer [Windmesser] (Am) bewirkt eine Reduzierung
    ' des Wasserstrahls bei Wind. Eine Durchschnittsmessung  
    ' (Schwellwert) von 1 Minute ist für ein ruhiges verhalten.
    ' 
    ' Es sind 3 Betriebsarten einstellbar.
    '
    ' Automatisch (F1):
    ' Hiermit wird der Stahl immer auf das Maximum gebracht.
    '
    ' Halbautomatisch (F2):
    ' Hiermit kann man eine selbst definierte Höhe des Wasser-
    ' stahls festlegen der aber bei Wind via Windmessung reduziert
    ' wird.
    '
    ' Manuel (F3):
    ' Hiermit kann man eine selbst definierte Höhe des Wasser-
    ' stahls festlegen der ohne Windmessung immer gleich bleibt.
    ' 
    ' Die Betriebsart wird via F1, F2 und F3 bestimmt.
    '
    ' Auf dem Display ist immer die Aktuelle Wasserstrahlhöhe
    ' zu sehen.
    '**********************************************************
    
    ' --- Definitionen ---
    
    ' die Relais
    define Hp port[7]
    define Mv port[8]
    define Kp port[9]
    
    ' der Drucksensor
    define Ds port[1]
    
    ' der Anenometer
    define Am ad[5]
    
    ' die Folien-Funktionstasten
    define F1 port[9]
    define F2 port[10]
    define F3 port[11]
    
    ' eine Variable zur Speicherung der Windgeschwindigkeit
    define Wgs word
    ' Variablen zur Speicherung der Wasserstrahlhöhe
    define Strahlhöhe byte
    define StrahlhöheAktuell byte
    
    ' Konstanten
    define C10 10  ' = 10
    
    ' --- das Programm ---
    
    ' Initialisierung
    Hp = OFF
    Mv = OFF
    Kp = OFF
    
    ' Endlosschleife
    #loop
    
    ' Tastenabfrage
      if not F1 = 1 or F2 = 1 or F3 = 1 then Asuwahl
    
    goto loop
    
    ' Betriebsarte auswählen
    Function Auswahl()
        Hp = OFF
        Print "Springbrunnen - "
        Print "Betriebsart Wahl"
        wait F1 or F2 or F3
    	if F1 = 1 then Automatisch
    	if F2 = 1 then Halbautomatisch
    	if F3 = 1 then Manuel
    
    Return
    
    ' Schleifen der einzelnen Betriebsarten
    
    
    ' Endlosschleife für Automatisch
    Function Automatisch()
    PRINT "Automatikbetrieb"
    pause 25
    #Loop1 until F1 not = 1
    'Das Programm:
    
    
    goto loop1
    
    ' Endlosschleife für Halbautomatisch
    Function Halbautomatisch()
    Print "Halbautomatik-"
    Print "betrieb"
    pause 25
    #Loop2 until F2 not = 1
    'Das Programm:
    
    
    goto loop2
    
    ' Endlosschleife für Manuel
    Function Manuel()
    Print "Manuelbetrieb"
    pause 25
    #Loop3 until F3 not = 1
    'Das Programm:
    
    
    goto loop3
    
    #Loop4
    'Windmessung
    
    
    goto Loop4
    Gruss
    Ron

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    33
    Beiträge
    158
    Zitat Zitat von matlxxx
    die gosub Befehl wird bei basic++ nicht mehr unterstützt!
    Nur zur Info: Der GOSUB Befehl wird in BASIC++ unterstützt (akt. Version 2.1.0.250). Aber wer nutzt denn schon unübersichtliche Befehle, wie GOSUB, die auf ein Label springen? Da kann man auch gleich mit Assembler arbeiten.

    Ich habe den Code mal umgeändert, so dass er von BASIC++ kompiliert werden kann:

    Code:
    '********************************************************** 
    ' C-Control Station 
    ' 
    ' Springbrunnen Regelung 
    ' 
    ' Die Haupt-Pumpe (Hp) läuft grunsätzlich immer, ausser wenn 
    ' es nicht genug Wasser im Brunnen hat. 
    ' 
    ' Der Wasserspiegel wird konstant via Drucksensor (Ds) gemes- 
    ' sen und bei bedarf nach gefüllt via Magnetventil (Mv) oder 
    ' abgepumpt via kleine Pumpe (Kp). 
    ' 
    ' Der Wasserstrahl ist über den Wasserspiegel kontrolliert. 
    ' Je höher der Wasserspiegel, desto tiefer der Stahl. Je 
    ' tiefer der Wasserspiegel desto höher der Strahl. 
    ' 
    ' Der Anenometer [Windmesser] (Am) bewirkt eine Reduzierung 
    ' des Wasserstrahls bei Wind. Eine Durchschnittsmessung  
    ' (Schwellwert) von 1 Minute ist für ein ruhiges verhalten. 
    ' 
    ' Es sind 3 Betriebsarten einstellbar. 
    ' 
    ' Automatisch (F1): 
    ' Hiermit wird der Stahl immer auf das Maximum gebracht. 
    ' 
    ' Halbautomatisch (F2): 
    ' Hiermit kann man eine selbst definierte Höhe des Wasser- 
    ' stahls festlegen der aber bei Wind via Windmessung reduziert 
    ' wird. 
    ' 
    ' Manuel (F3): 
    ' Hiermit kann man eine selbst definierte Höhe des Wasser- 
    ' stahls festlegen der ohne Windmessung immer gleich bleibt. 
    ' 
    ' Die Betriebsart wird via F1, F2 und F3 bestimmt. 
    ' 
    ' Auf dem Display ist immer die Aktuelle Wasserstrahlhöhe 
    ' zu sehen. 
    '********************************************************** 
    
    ' --- Definitionen --- 
    
    ' die Relais 
    define Hp port[7] 
    define Mv port[8] 
    define Kp port[9] 
    
    ' der Drucksensor 
    define Ds port[1] 
    
    ' der Anenometer 
    define Am ad[5] 
    
    ' die Folien-Funktionstasten 
    define F1 port[9] 
    define F2 port[10] 
    define F3 port[11] 
    
    ' eine Variable zur Speicherung der Windgeschwindigkeit 
    define Wgs word 
    ' Variablen zur Speicherung der Wasserstrahlhöhe 
    define Strahlhöhe byte 
    define StrahlhöheAktuell byte 
    
    ' Konstanten 
    const C10 = 10  ' = 10 
    
    ' --- das Programm --- 
    
    ' Initialisierung 
    Hp = OFF 
    Mv = OFF 
    Kp = OFF 
    
    ' Endlosschleife 
    do
        ' Tastenabfrage 
        if ((not F1) = 1) or (F2 = 1) or (F3 = 1) then Auswahl()
    loop 
    
    ' Betriebsarte auswählen 
    Function Auswahl() 
        Hp = OFF 
        Print "Springbrunnen - " 
        Print "Betriebsart Wahl" 
        wait F1 or F2 or F3 
        if F1 = 1 then Automatisch() 
        if F2 = 1 then Halbautomatisch() 
        if F3 = 1 then Manuel() 
    end function
    
    ' Schleifen der einzelnen Betriebsarten 
    
    ' Endlosschleife für Automatisch 
    Function Automatisch() 
        PRINT "Automatikbetrieb" 
        pause 25
        do
        loop until ((not f1) = 1)
    end function
    
    
    ' Endlosschleife für Halbautomatisch 
    Function Halbautomatisch() 
        Print "Halbautomatik-" 
        Print "betrieb" 
        pause 25
        do 
        Loop until ((not F2) = 1) 
    end function 
    
    ' Endlosschleife für Manuel 
    Function Manuel() 
        Print "Manuelbetrieb" 
        pause 25 
        do 
        loop until ((not f3) = 1)
    end function
    Übrigens: DEFINE zur Deklaration einer Konstanten wird in so gut wie keiner Programmiersprache verwendet (halt nur in CCBasic). Aus diesem Grund wurde es sinnvollerweise in BASIC++ auch analog zu anderen Programmiersprachen CONST genannt.

    Die zusätzlichen Klammern dienen der Übersicht. Du hast vergessen die Funktionen mit END FUNCTION abzuschließen. Ein RETURN springt nur aus einer Funktion raus.

    Bitte keine Labels "LOOP" nennen (auch wenn BASIC++ das zulässt). Sowas ist schlechter Stil. Bei größeren Programmen wirst Du selbst merken, dass das unübersichtlich wird. Man sollte ohnehin auf Labels verzichten.

    Außerdem solltest Du anstatt "F1 = 1" besser "F1 = ON" schreiben. 1 und ON ist nicht das gleiche!
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    17.08.2006
    Beiträge
    57
    Besten Dank..
    Habs kappiert bis auf: "DO" ?

    Was macht dieser Parameter?

    Gruss
    Ron

    PS: Code: (Mein Compiler [WorkBench++] sagt dass dieser code gültig ist.
    Code:
    '//////////////////////////////////////
    '//
    '//  Basic++ 
    '//  Destination C-Control I M2.0
    '//  Beschreibung:
    '//
    '//////////////////////////////////////
     
    OPTION CC2.0  'Zielplattform
    '**********************************************************
    ' C-Control Station
    '
    ' Springbrunnen Regelung
    '
    ' Di Haupt-Pumpe (Hp) läuft grunsätzlich immer, ausser wenn
    ' es nicht genug Wasser im Brunnen hat.
    '
    ' Der Wasserspiegel wird konstant via Drucksensor (Ds) gemes-
    ' sen und bei bedarf nach gefüllt via Magnetventil (Mv) oder
    ' abgepumpt via kleine Pumpe (Kp).
    ' 
    ' Der Wasserstrahl ist über den Wasserspiegel kontrolliert.
    ' Je höher der Wasserspiegel, desto tiefer der Stahl. Je
    ' tiefer der Wasserspiegel desto höher der Strahl.
    '
    ' Der Anenometer [Windmesser] (Am) bewirkt eine Reduzierung
    ' des Wasserstrahls bei Wind. Eine Durchschnittsmessung  
    ' (Schwellwert) von 1 Minute ist für ein ruhiges verhalten.
    ' 
    ' Es sind 3 Betriebsarten einstellbar.
    '
    ' Automatisch (F1):
    ' Hiermit wird der Stahl immer auf das Maximum gebracht.
    '
    ' Halbautomatisch (F2):
    ' Hiermit kann man eine selbst definierte Höhe des Wasser-
    ' stahls festlegen der aber bei Wind via Windmessung reduziert
    ' wird.
    '
    ' Manuel (F3):
    ' Hiermit kann man eine selbst definierte Höhe des Wasser-
    ' stahls festlegen der ohne Windmessung immer gleich bleibt.
    ' 
    ' Die Betriebsart wird via F1, F2 und F3 bestimmt.
    '
    ' Auf dem Display ist immer die Aktuelle Wasserstrahlhöhe
    ' zu sehen.
    '**********************************************************
    
    ' --- Definitionen ---
    
    ' die Relais
    define Hp port[7]
    define Mv port[8]
    define Kp port[9]
    
    ' der Drucksensor
    define Ds port[1]
    
    ' der Anenometer
    define Am ad[5]
    
    ' die Folien-Funktionstasten
    define F1 port[9]
    define F2 port[10]
    define F3 port[11]
    define FTaste byte
    
    ' eine Variable zur Speicherung der Windgeschwindigkeit
    define Wgs byte
    define WgsT byte
    define WgsZyk byte
    
    ' Variablen zur Speicherung der Wasserstrahlhöhe
    define Strahlhöhe byte
    define StrahlhöheAktuell byte
    
    ' Konstanten
    
    '----------------------------------------------------------
    ' --- Das Programm ---
    '----------------------------------------------------------
    
    ' Initialisierung
    Hp = OFF
    Mv = OFF
    Kp = OFF
    
    ' Endlosschleife
    #Tastenabfrage
    
    ' Tastenabfrage
      if not (FTaste = 1 or FTaste = 2 or FTaste = 3) then Auswahl
      if FTaste = 1 then Automatisch
      if FTaste = 2 then Halbautomatisch
      if FTaste = 3 then Manuel
    
    goto Tastenabfrage
    
    ' Betriebsarte auswählen
    Function Auswahl()
    Hp = OFF
         Lcd.Print"Springbrunnen - "
         Lcd.Print "Betriebsart Wahl"
         wait F1 or F2 or F3
         if F1 then FTaste = 1
         if F2 then FTaste = 2
         if F3 then FTaste = 3
    Return
    end function
    
    ' Event Zähler Setupfür Windmessung
    Function Setevent()
      CONFIG.INIT
      CONFIG.PUT 00000110b
      CONFIG.OFF
    End Function
    
    '----------------------------------------------------------
    ' --- Schleifen der einzelnen Betriebsarten ---
    '----------------------------------------------------------
    
    ' Endlosschleife für Automatisch
    Function Automatisch()
    Lcd.Print "Automatikbetrieb"
    pause 25
    #LoopA until FTaste not = 1
    ' Das Programm:
    
    goto loopA
    end function
    
    
    ' Endlosschleife für Halbautomatisch
    Function Halbautomatisch()
    Lcd.Print "Halbautomatik-"
    Lcd.Print "betrieb"
    pause 25
    #LoopH until FTaste not = 2
    ' Das Programm:
    
    goto loopH
    end function
    
    
    ' Endlosschleife für Manuel
    Function Manuel()
    Lcd.Print "Manuelbetrieb"
    pause 25
    #LoopM until FTaste not = 3
    ' Das Programm:
    
    goto loopM
    end function
    
    
    ' Windmessung (Durchschnitt von eine Minute)
    Function Windmessung()
    
    ' Initialisierung
    WgsT = ""
    Setevent()
    
    #LoopWgs
    
    If TIMER>=500 Then  'alle 10s gemessen
    WgsT = Am + WgsT 
    WgsZyk = WgsZyk + 1 ' Zykeln Zählen
    TIMER=0 ' Timer reset
    End If
    
    ' Zykel reseten wenn nötig (6 Zykeln pro minute)
    If WgsZyk = 6 then
    Wgs = WgsT / 6
    WgsT =0
    
    End If 
    
    goto LoopWgs
    end function
    
    
    ' Strahlhöhe

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    33
    Beiträge
    158
    DO

    LOOP

    ist eine Schleife.
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    17.08.2006
    Beiträge
    57
    Danke!

    Wie kann ich zwei Funktionen gleichzeitig Loopen? Ich will ja dass die aktuelle Windgeschwindigkeit angezeigt wird.

    So etwa?
    Code:
    ' eine Variable zur Speicherung der Windgeschwindigkeit
    define Wgs byte
    define WgsT byte
    define WgsZyk byte
    
    '----------------------------------------------------------
    ' --- Schleifen der einzelnen Betriebsarten ---
    '----------------------------------------------------------
    
    ' Endlosschleife für Automatisch
    Function Automatisch()
    Lcd.Print "Automatikbetrieb"
    pause 25
    Do 
    ' Das Programm:
    
    ' Windmessungsfunktion
    Windmessung
    Lcd.Print Wgs
    
    
    Loop until (FTaste not = 1)
    end function
    
    
    ' Windmessung (Durchschnitt von eine Minute)
    Function Windmessung()
    
    ' Initialisierung
    WgsT = ""
    Setevent()
    
    Do
    
    If TIMER>=500 Then  'alle 10s gemessen
    WgsT = Am + WgsT 
    WgsZyk = WgsZyk + 1 ' Zykeln Zählen
    TIMER=0 ' Timer reset
    End If
    
    ' Zykel reseten wenn nötig (6 Zykeln pro minute)
    If WgsZyk = 6 then
    Wgs = WgsT / 6
    WgsT =0
    
    End If 
    
    Loop
    end function
    Noch was: Ist meine Windmessungsmetode so ok?

    Gruss
    Ron

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    33
    Beiträge
    158
    Hallo,

    der Syntax einer DO ... LOOP Schleife sieht so aus:

    Code:
    DO
    ' Hier der Programmcode, der immer wieder ausgeführt werden soll
    LOOP [UNTIL expression]
    Ohne die optionale eckige Klammer wird aus der DO ... LOOP Schleife eine Endlosschleife. Mit UNTIL expression legt man eine Bedigung fest, bis zu der die Schleife durchlaufen werden soll. Ist die Bedigung erfüllt, wird die Schleife verlassen. Dabei steht die Bedigung in expression.

    Schau einfach mal auf die BASIC++ 2006 Seite, inbs. in die Referenz. Außerdem solltest Du Dir vielleicht Standard BASIC mal anschauen (also einfach nach einen guten Tutorial in Internet suchen und ein paar Trockenübungen am PC machen).
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    17.08.2006
    Beiträge
    57
    Besten Dank!

    Habs glaub kappiert. Bitte beachte die Windmessungsmetode.
    Also so:
    Code:
    '//////////////////////////////////////
    '//
    '//  Basic++ 
    '//  Destination C-Control I M2.0
    '//  Beschreibung:
    '//
    '//////////////////////////////////////
     
    OPTION CC2.0  'Zielplattform
    '**********************************************************
    ' C-Control Station
    '
    ' Springbrunnen Regelung
    '
    ' Di Haupt-Pumpe (Hp) läuft grunsätzlich immer, ausser wenn
    ' es nicht genug Wasser im Brunnen hat.
    '
    ' Der Wasserspiegel wird konstant via Drucksensor (Ds) gemes-
    ' sen und bei bedarf nach gefüllt via Magnetventil (Mv) oder
    ' abgepumpt via kleine Pumpe (Kp).
    ' 
    ' Der Wasserstrahl ist über den Wasserspiegel kontrolliert.
    ' Je höher der Wasserspiegel, desto tiefer der Stahl. Je
    ' tiefer der Wasserspiegel desto höher der Strahl.
    '
    ' Der Anenometer [Windmesser] (Am) bewirkt eine Reduzierung
    ' des Wasserstrahls bei Wind. Eine Durchschnittsmessung  
    ' (Schwellwert) von 1 Minute ist für ein ruhiges verhalten.
    ' 
    ' Es sind 3 Betriebsarten einstellbar.
    '
    ' Automatisch (F1):
    ' Hiermit wird der Stahl immer auf das Maximum gebracht.
    '
    ' Halbautomatisch (F2):
    ' Hiermit kann man eine selbst definierte Höhe des Wasser-
    ' stahls festlegen der aber bei Wind via Windmessung reduziert
    ' wird.
    '
    ' Manuel (F3):
    ' Hiermit kann man eine selbst definierte Höhe des Wasser-
    ' stahls festlegen der ohne Windmessung immer gleich bleibt.
    ' 
    ' Die Betriebsart wird via F1, F2 und F3 bestimmt.
    '
    ' Auf dem Display ist immer die Aktuelle Wasserstrahlhöhe
    ' zu sehen.
    '**********************************************************
    
    '----------------------------------------------------------
    ' --- Definitionen ---
    '----------------------------------------------------------
    
    ' die Relais
    define Hp port[7]
    define Mv port[8]
    define Kp port[9]
    
    ' der Drucksensor
    define Ds port[1]
    
    ' der Anenometer
    define Am ad[5]
    
    ' die Folien-Funktionstasten
    define F1 port[9]
    define F2 port[10]
    define F3 port[11]
    define FTaste byte
    
    ' eine Variable zur Speicherung der Windgeschwindigkeit
    define Wgs byte
    define WgsT byte
    define WgsZyk byte
    
    ' Variablen zur Speicherung der Wasserstrahlhöhe
    define Strahlhöhe byte
    define StrahlhöheAktuell byte
    
    ' Konstanten
    
    '----------------------------------------------------------
    ' --- Setup ---
    '----------------------------------------------------------
    
    ' Initialisierung
    Hp = OFF
    Mv = OFF
    Kp = OFF
    
    do
    ' Tastenabfrage
        if F1 = OFF or F2 = OFF or F3 = OFF then Auswahl()
    loop
    
    ' Betriebsarte auswählen
    Function Auswahl()
        Hp = OFF
        Print "Springbrunnen - "
        Print "Betriebsart Wahl"
        wait F1 or F2 or F3
        if F1 = ON then Automatisch()
        if F2 = ON then Halbautomatisch()
        if F3 = ON then Manuel()
    end function 
    
    ' Event Zähler Setup für Windmessung
    Function Setevent()
      CONFIG.INIT
      CONFIG.PUT 00000110b
      CONFIG.OFF
    End Function
    
    '----------------------------------------------------------
    ' --- Schleifen der einzelnen Betriebsarten ---
    '----------------------------------------------------------
    
    ' Endlosschleife für Automatisch
    Function Automatisch()
    Lcd.Print "Automatikbetrieb"
    pause 25
    Lcd.Clear
    Do 
    ' Das Programm:
    
    
    Loop until F1 = OFF 
    end function
    
    
    ' Endlosschleife für Halbautomatisch
    Function Halbautomatisch()
    Lcd.Print "Halbautomatik-"
    Lcd.Print "betrieb"
    pause 25
    Lcd.Clear
    Do
    ' Das Programm:
    
    loop until F2 = OFF
    end function
    
    
    ' Endlosschleife für Manuel
    Function Manuel()
    Lcd.Print "Manuelbetrieb"
    pause 25
    Lcd.Clear
    Do
    ' Das Programm:
    
    Loop until F3 = OFF
    end function
    
    
    ' Windmessung (Durchschnitt von eine Minute)
    Function Windmessung()
    
    ' Initialisierung
    WgsT = ""
    Setevent()
    
    Do
    
    If TIMER>=500 Then  'alle 10s gemessen
    WgsT = Am + WgsT 
    WgsZyk = WgsZyk + 1 ' Zykeln Zählen
    TIMER=0 ' Timer reset
    End If
    
    ' Zykel reseten wenn nötig (6 Zykeln pro minute)
    If WgsZyk = 6 then
    Wgs = WgsT / 6
    WgsT =0
    
    End If 
    
    Loop
    end function
    MFG
    Ron

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    17.08.2006
    Beiträge
    57
    Hallo.
    Kann ich mit dem C-Contol Unit 2.0, drei Tasks (Funktionen) gleichzeitig laufen lassen? Da ich die Aktuelle Wind sowie Wasserdruck Schwellwert brauche.

    Gruss
    Ron

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •