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 JackFrost - 5.12.2007 22:04)
Als Antwort auf Re: Timer und Zähler von Markus - 4.12.2007 10:17

> > > 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


    Antwort schreiben


Antworten:

Re: Timer und Zähler (von Markus - 25.12.2007 13:41)
    Re: Timer und Zähler (von Jörg - 29.12.2007 20:27)
        Re: Timer und Zähler (von Markus - 1.01.2008 22:56)