Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Timer und Zähler Kategorie: Programmierung (von Jörg - 29.12.2007 20:27)
Als Antwort auf Re: Timer und Zähler von Markus - 25.12.2007 13:41
Ich nutze:
C-Control II Unit, CC2-ReglerBoard, OSOPT_V2, OSOPT V3.0
> > > > > Hallo Gemeinde,
> > > > >
> > > > > ich stehe vor einem Problem, ich möchte die C-Control II Station zur Steuerung eines BHKWs nutzen.
> > > > > Gleich mal vorn weg, ich hab nicht viel Ahnung vom Programmieren... bin Maschinenbauer...
> > > > >
> > > > > Zu meinem Problem:
> > > > >
> > > > > Ich möchte den Motor des BHKWs temperaturgeführt starten, dass hei�t, wenn die Temperatur
> > > > > des Pufferspeichers unter einen bestimten Wert abfällt sollte der Motor gestartet werden.
> > > > > Der Starter des Motors sollte max. 5 Sekunden anziehen, wird eine bestimmte Drehzahl schon vorher
> > > > > erreicht, sollte der Startvorgan abgebrochen werden.
> > > > > Startet der Motor nach den 5 Sekunden nicht, sollte der Startvorgan nach einer Weile erneut
> > > > > durchgeführt werden.
> > > > > Nach drei erfolglosen Startversuchen sollte eine Fehlermeldung ein Display erscheinen...
> > > > >
> > > > > Würde mich freuen, wenn mir jemand weiterhelfen könnte.
> > > > > Oder hat jemand einen guten Buchtip, oder ein weiteres Forum für Microcontroller Programmierung!
> > > > > Das Buch MSR von Andre habe ich bereits!
> > > > >
> > > > > GruÃ?,
> > > > > Markus
> > > > >
> > > >
> > > > Sind so kurze Betriebszeiten nicht schlecht für den Motor ?
> > > >
> > > > Dein Problem müsste sich Softwareseitig lösen lassen.
> > > >
> > > > Du brauchst eine Drehzahlmessung und und machst es mit einem Timer.
> > > >
> > > > Du machst ne Loop schleife mit 3 break Bedingungen. Und schon schaltet er sich aus wenn die
> > > > Drehzahl erreicht ist oder 5 sec rum sind. Sollte der Timer mehr als 5 sec Laufen wird die Anzahl der
> > > > Versuche um eins erhöht und dann lässt du die Loopschleife für die Zeit warten.Sollte der Motor 3 mal
> > > > nicht anlaufen dann stoppst du die Loop Schleife mit dem 3. break und schreibst die Nachricht auf
> > > > das Display.
> > > >
> > > > Gruss JackFrost
> > >
> > > Hallo,
> > >
> > > also erstmal groÃ?er Dank an JackFrost!
> > > Der Motor hat ja keine kurzen Betriebszeiten! Das ist ja nur der Teil des Programms um den
> > > Motor zu Starten. Wenn er gestartet hat, läuft der Motor so lange, bis der Pufferspeicher
> > > aufgeheizt ist.
> > >
> > > So, jetzt muss ich mich outen, ich hab keine Ahnung vom Quelltext! Das ist mein Problem...
> > > Der "Sleep" Befehl hält mir das ganze Programm an, das sollte nicht sein, und eine andere
> > > Idee hatte ich noch nicht!
> > > Vielleicht kann mir hier jemand ein paar Brocken herwerfen, ich will kein fetriges Programm,
> > > da würde ich ja wieder nichts lernen!
> > >
> > > Vielen Dank,
> > >
> > > Markus
> >
> > Hiermit könnte es gehen.
> >
> >
> > long solldrehzahl,timer;
> > byte versuche,minimaledrehzahl;
> > thread Motorstarten
> > {
> > wait global.startmotor;
> > global.startmotor = 0;
> > global.startok = 0;
> > ports.set(1,1); // Port an dem der Starter des Motors hängt
> > versuch = 1;
> > timer = system.timer();
> > sleep 100;
> > loop
> >     {
> >      if ports.getfreq(2) >= solldrehzahl // Port an dem der Drehzahlmesser hängt
> >       {
> >       global.startok = 1;
> >
> >       break;
> >       }
> >      if system.timer()-timer>=5000
> >         {
> >          if ports.getfreq(2) >= solldrehzahl // Port an dem der Drehzahlmesser hängt
> >             {
> >             global.startok = 1;
> >             break;
> >             }
> >             else
> >             {
> >             if versuche >= 3
> >              {
> >               global.startok = 2;
> >               break;
> >               }
> >             sleep 10000;
> >             ports.set(1,1); // Port an dem der Starter des Motors hängt
> >             versuch = versuch + 1;
> >              timer = system.timer();
> >             }
> >         }
> >
> >     }
> >    
> >
> > }
> >
> >
> >
> > thread main
> > {
> > run Motorenstart;
> > }
> >
> >
> > Es muss aber die Solldrehzahl definiert werden. Ich habe mal angenommen das sie als Frequenz anliegt.
> > Man braucht auch ein Modul Global wo die Variablen startmotor und startkok enthalten sind.
> > Wenn die Variable global,startmotor ungleich 0 wird dann wird der motor gestartet.
> > Die Fehlermeldung wird über global.startok übertragen. Wenn das Ergebnis 1 ist dann ist alles ok,
> > bei 2 ist der Motor nach 3 Versuchen nicht angelaufen.
> > Als Pause zwischen den Anläufen wurden 10 sec gewählt.
> >
> > Gruss JackFrost
>
> Hallo Gemeinde,
>
> vielen Dank JackFrost für Deine Hilfe! Sorry, dass es so lange gedauert hat... aber ich hatte einfach
> keine Muse...
> Was bitte sind Module, bzw. wie programmiere ich diese, was sind inline functions and so on...
> Ã?bergebe ich den Wert eins an das Modul Global.start?
> Und dann mit
> if start=1 ...
> else ...
> Gibt es kein Buch das hier weiterhilft??? Ich bin blutiger Anfänger!!!
> Hab keine E-Technische Ausbildung! Nur das, was im Rahmen des Maschinenbaustudiums angeboten
> wurde! Und das ist eingentlich in dieser Hinsicht nichts!
>
> Danke,
>
> Markus
>


Hallo Markus,

vielleicht ist Dein Problem ja schon gelöst.
Für Dein Problem gibt es eine Lösung und zwar gibt es genau deswegen Elektriker.

Wie es mir scheint, benutzt Du einen normalen Asynchronmotor ohne Drehzahlregelung.
Dort wäre es sicher praktischer mit einem Stromrelais den Nennstrom zu kontrollieren. Obwohl ich
noch nicht ganz verstehe, warum dem Motor nicht traust. In den meisten Anwendungsfällen wird
sogar nur der Hauptschütz als Rückmeldung abgefragt.

Alternativ könntest Du mit einem Temperatursensor im Umwälzkreis hinter der Pumpe den Temperatur-
anstieg überprüfen. Das erscheint mir zudem auch preiswerter und Du überprüfst damit schon einen Teil
des ganzen Systems.
Dafür scheint mir die CII schon fast zu überdimensioniert. Das schafft auch eine C-Control-Station.
Die reicht dafür allemal. Dort kannst Du zwei Sensoren ranhängen (Puffer, Umwälzkreis) und ein
paar Ein- und Ausgänge sind auch dran. Programmiert wird in Basic, für Anfänger wahrscheinlich einfacher.
Ansonsten wurde zum Programmieren ja schon genug gesagt.

Gru� Jörg


    Antwort schreiben


Antworten:

Re: Timer und Zähler (von Markus - 1.01.2008 22:56)