-> Hier kostenlos registrieren
Moin!
Ich bin gerade dabei, einen Drehgeber auszuwerten, der an ein Zählermodul angeschlossen ist. Erfasst wird immer eine Umdrehung immer in die gleiche Richtung, d.h. der Zähler zählt von etwa 4.000.000 nach Anlage EIN immer eine bestimmte Anzahl Schritte herunter.
Ganz grob habe ich es wie folgt realisiert: "aktueller Zählerstand" MOD "Schritte pro Umdrehung"
Das Ganze dann auf 0-360° skaliert und dadurch habe ich den Winkel.
Jetzt soll aber ein Offset dazu. Beispiel:
Offset: -14°
Roh-Winkel ist 200° -> Winkel = 200° - 14° = 186° -> Passt alles.
Roh-Winkel ist 5,5° -> Winkel = 5,5° - 14° = -8,5° -> Passt nicht, richtig wäre 351,5°
Klar, ich muss bei unter 0 von 360 abziehen und bei über 360 bei 0 beginnen. Aber wie geht das programmtechnisch am elegantesten? Gibt es da eine "Rechenoperation", oder nur per if/switch?
Habe etwas mit WolframAlpha rumgespielt, der kann MOD auch mit REAL: https://www.wolframalpha.com/input?i=(5.5+-+14)+mod+360
(5.5 - 14) mod 360 ergibt 351,5, also genau so, wie es sein soll.
TwinCAT kann MOD mit REAL aber nicht.
Wie würde man das programmtechnisch richtig lösen? Muss man da dann wirklich per if-Abfragen unterscheiden, "in welche Richtung" man rechnet?
VG,
clumsi
Ich bin gerade dabei, einen Drehgeber auszuwerten, der an ein Zählermodul angeschlossen ist. Erfasst wird immer eine Umdrehung immer in die gleiche Richtung, d.h. der Zähler zählt von etwa 4.000.000 nach Anlage EIN immer eine bestimmte Anzahl Schritte herunter.
Ganz grob habe ich es wie folgt realisiert: "aktueller Zählerstand" MOD "Schritte pro Umdrehung"
Das Ganze dann auf 0-360° skaliert und dadurch habe ich den Winkel.
Jetzt soll aber ein Offset dazu. Beispiel:
Offset: -14°
Roh-Winkel ist 200° -> Winkel = 200° - 14° = 186° -> Passt alles.
Roh-Winkel ist 5,5° -> Winkel = 5,5° - 14° = -8,5° -> Passt nicht, richtig wäre 351,5°
Klar, ich muss bei unter 0 von 360 abziehen und bei über 360 bei 0 beginnen. Aber wie geht das programmtechnisch am elegantesten? Gibt es da eine "Rechenoperation", oder nur per if/switch?
Habe etwas mit WolframAlpha rumgespielt, der kann MOD auch mit REAL: https://www.wolframalpha.com/input?i=(5.5+-+14)+mod+360
(5.5 - 14) mod 360 ergibt 351,5, also genau so, wie es sein soll.
TwinCAT kann MOD mit REAL aber nicht.
Wie würde man das programmtechnisch richtig lösen? Muss man da dann wirklich per if-Abfragen unterscheiden, "in welche Richtung" man rechnet?
VG,
clumsi