Nockensteuerwerk Rundachse im Nulldurchgang

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Zuviel Werbung?
->Hier kostenlos registrieren
Guten Morgen zusammen,

ich habe ein Nockensteuerwerk in SCL entwickelt welches Drehgeberdaten über eine SM338 verarbeitet.

Es funktioniert auch alles soweit super. Das einzige Problem das ich habe ist, falls ein Nocken über den Nulldurchgang parametriert wird (z.B. 355° - 15°)
passt meine Formel nicht mehr.

Momentan prüfe ich so:

//Aktuelle Position ist im Nockenbereich
IF CAM_CH.ACTUAL_POS >= T_RE_CAM_Begin AND
CAM_CH.ACTUAL_POS <= T_RE_CAM_End THEN
//Nocken aktiv
;
END_IF;

Nocken im Bereich von 0 - 360 passen soweit:

z.b.
T_RE_CAM_Begin = 220°
T_RE_CAM_End = 300°
CAM_CH.ACTUAL_POS = 280°
==> Nocken ist aktiv da 280° größer 220° und kleiner 300°

Nocken im Bereich des Nulldurchgangs z.B. 355° - 15° passen nicht:

z.b.
T_RE_CAM_Begin = 355°
T_RE_CAM_End = 15°
CAM_CH.ACTUAL_POS = 3°
==> Nocken ist nicht aktiv da 3° nicht größer als 355°

Natürlich könnte ich das über ein weiters if oder else_if lösen z.B.

IF T_RE_CAM_Begin > T_RE_CAM_End THEN
;//To Do: Nullübergng fehlt
END_IF;

Ich möchte das aber nicht doppelt im Code haben.

Weiß jemand eine mathematische Formel mit welcher folgendes auch im Nulldurchgang gültig ist:
Komm einfach nicht dahinter :confused:
IF CAM_CH.ACTUAL_POS >= T_RE_CAM_Begin AND
CAM_CH.ACTUAL_POS <= T_RE_CAM_End THEN

Grüße Pico
 

peter(R)

Well-known member
Beiträge
1.061
Punkte Reaktionen
132
Hilft nix. Du musst einfach erfassen, wenn Begin > End und dann genau andersrum arbeiten ( Ein mit großer Zahl, Aus mit kleiner Zahl ).

peter(R)
 

rostiger Nagel

Forums-Knochenbrecher
Teammitglied
Beiträge
15.045
Punkte Reaktionen
4.721
Zuviel Werbung?
->Hier kostenlos registrieren
addiere doch auf den Nocken der über den Nulldurchgang liegt 360° drauf, also nicht nach 15° vergleichen, sondern nach 375°.
Das lässt sich doch einfach in deiner Formel einbauen wenn End kleiner als der Begin ist.
 
OP
P

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Okay ich möchte schon im Bereich von 0°- 360° bleiben daher wird mir nichts anderes übrig bleiben....

Hilft nix. Du musst einfach erfassen, wenn Begin > End und dann genau andersrum arbeiten ( Ein mit großer Zahl, Aus mit kleiner Zahl ).

Mal noch was anderes...ich brauch noch eine Auswertung ob die Achse in positive oder in negative Richtung dreht.
Einfach ein Bit Pos und ein Bit Neg setzen je nach aktueller Richtung.

Wie kann man das Auswerten?! .........ich sag nur Mathematik :confused: :cool:

Grüße Pico
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,
wenn dir dein System das nicht von selbst ausgibt so kannst du das nur über zyklisches Vergleichen deiner Istposition mit der letzten Istposition. Werden sie Werte immer kleiner oder ist der Sprung von Last nach Akt zu groß positiv (Null-Durchgang) dann fährst du rückwärts. Werden die Werte immer größer oder ist der Sprung Last nach Akt zu groß negativ (Nulldurchgang) dann fährst du vorwärts.

Gruß
Larry
 
Oben