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: Zählen von Pulsen Kategorie: Programmierung Basic (von ManfredW - 24.05.2007 13:37)
 Als Antwort auf Zählen von Pulsen von Michael - 24.05.2007 11:55
Hallo,
einige Anmerkungen habe ich eingefügt
MfG ManfredW

> Hallo,
>
> ich möchte mit der Micro die Pulse eines Drehgebers zählen und nach einer max.Pulsanzahl von 85000 +- oder früher (bei Abbruchbedingung "Tür auf") einen Motor anhalten und dann wieder die gleiche Pulszahl zurücklaufen lassen.
85000 kann nicht in ein byte oder ein Word gespeichert werden. Behandlung großer Zahlen siehe meine homepage.  

> Die Pulse werden mit einer Frequenz von 3,5kHz geliefert.
>
> Ich habe den Befehl FREQ verwendet. Leider funktioniert es nicht so wie gedacht. Es werden beim Ausfahren immer unterschiedliche Positionen angefahren und beim Einfahren hält der Motor immer zu früh an.
>
> Vielleicht kann mir jemand bei dem Problem helfen. Im Anhang findet Ihr einen Auschnitt von dem Programm. Für jede Art von Verbesserungsvorschlägen bin ich dankbar.
>
> Gruss
> Michael
>
>
> #Schleife1
>           If Tuer = Off Then Goto Einfahren
>           Neu1byte = Alt1byte+FREQ
In ein Byte passt nur 255.
>           If Neu1byte >           Alt1byte = Neu1byte
>           If Neu2byte >           Alt2byte = Neu2byte

>           c = Alt1byte>Max1byte
Das Ergebnis kann Null ergeben.
>           d = Alt2byte>Max2byte
>           e = Neu3byte>Max3byte
>           If c*d*e = 0 Then Goto Schleife1
Ist ein Wert c,d,e gleich Null ist das Ergebnis der Multiplikation Null.

>
> #Einfahren
>           Ausfahren = off
>           If Alt1byte>Max1byte Then Max1byte = Max1byte Else Max1byte = Alt1byte
>           If Alt2byte>Max2byte Then Max2byte = Max2byte Else Max2byte = Alt2byte
>           If Neu3byte>Max3byte Then Max3byte = Max3byte Else Max3byte = Neu3byte
>           Neu1byte = 0
>           Alt1byte = 0
>           Neu2byte = 0
>           Alt2byte = 0
>           Neu3byte = 1
>           'Pause Verweildauer in ausgefahrender Position x sec warten
>           Pause 50
>           Einfahren = on
>
> #Schleife2
>           Neu1byte = Alt1byte+FREQ
>           If Neu1byte >           Alt1byte = Neu1byte
>           If Neu2byte >           Alt2byte = Neu2byte
>           c = Alt1byte>Max1byte
>           d = Alt2byte>Max2byte
>           e = Neu3byte>Max3byte
>           If c*d*e = 0 Then Goto Schleife2

 Antwort schreiben

Bisherige Antworten: