
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
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 > If 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 > If Neu2byte > c = Alt1byte>Max1byte > d = Alt2byte>Max2byte > e = Neu3byte>Max3byte > If c*d*e = 0 Then Goto Schleife2 |
| Antwort schreiben |