Absolutwertgeber - Rohwert verarbeiten

Pico1184

Level-2
Beiträge
332
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich werde demnächst ein Rundläufersystem programmieren, welches 320 Stk / min liefern muss.
Bisher hatten wir die FM352 CAM im Einsatz.

Nun habe ich einige Tests mit der SM338 POS gemacht und möchte aus Kostengründen diese verwenden.

Zuerst mal lese ich den Geberrohwert ein und berechne dann aus diesem die Positionen (0 - 360°).

Nehmen wir mal an der Geber hat eine Auflösung von 2^12 (4096). Ich habe dann folgende Formel aufgestellt:

(aktueller Rohwert x * 360°) / 4096 = aktuelle Position

ist diese Rechnung eurer Meinung nach so möglich (genau genug), oder denke ich da zu einfach?

Was wäre wenn die Drehrichtung des Rundläufers "invers" ist? Wie kann ich dann die Positionen umrechnen (rückwärts)?

Da 320 Stk / Min gefordert sind ca. 5,3 Stk / pro sekunde bzw. 0,0053 stk / msec => 1 Stk benötigt ungefähr 188,67msec.

Ich müsste nun alle 188,67msec ein Trigger Signal z.B. bei Geberpos 18° usw. über "normale" Ausgänge an eine Kamera geben.

Seht ihr da zeitkritische Probleme??

Zykluszeit + einlesen und umrechnen der Geberwerte + Nockenbearbeitung + eventl. Ausgänge an oder über Profinet.

Hoffe mir kann jemand mit ein wenig Erfahrung in diesem Bereich helfen. Möchte später keine bösen Überraschungen erleben! :cool:

Danke!

Grüße Pico
 
Zuletzt bearbeitet:
So hast du auch bei "inverser" Drehrichtung den Drehwinkel des Rundläufers (ausgehend vom Nullpunkt in positiver Richtung gesehen):

360° - [360° x aktueller Rohwert/4096] = aktuelle Position (bei negativen Rundlauf 360° --> 0°)

Damit erhältst du auch bei negativer Drehrichtung deinen Drehwinkel von 18° (auf die Nullstellung bezogen).


Bei einer Erfassungsrate des Positionswertes über die SM338 von unter 1ms (Telegrammlaufzeit, Monoflop,
Jitter, freilaufend oder taktsynchron) und einer (angenommenen) Zykluszeit von 20-30ms für die CPU
liegst du mit 188ms zwischen den Auslösesignalen zur Kamera wohl noch im "grünen" Bereich.

Allerdings solltest du beachten, das der Kameraauschnitt gross genug eingestellt ist, da das Triggersignal bei verschiedenen Geschwindigkeiten des Rundläufers zu unterschiedlichen Positionen der Teile vor der Kamera ausgelöst wird.
Auch kann dein Rundläufer nicht nur mit einem, sondern mit mehreren Teilen bestückt sein, darüber hast du aber nichts gesagt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bezüglich der Ausgänge würde ich mal in das Datenblatt der Baugruppe schauen, da steht dann auch etwas zu den möglichen Schaltgeschwindigkeiten. Etwas über 5 Hz sollten die aber schon schaffen, denke ich mal, ist ja auch keine induktive Last.
 
Allerdings solltest du beachten, das der Kameraauschnitt gross genug eingestellt ist, da das Triggersignal bei verschiedenen Geschwindigkeiten des Rundläufers zu unterschiedlichen Positionen der Teile vor der Kamera ausgelöst wird.

Hm das versteh ich aber nicht ganz. Wieso soll der Trigger zu unterschiedlichen Positionen kommen. Wenn ich sage bei 18° dann möchte ich auch (mal abgesehen, dass der Rundläufer schon ein Stück weiter gedreht hat bis alles verarbeitet ist), dass das Bild bei ~18° getriggert wird.

Auch kann dein Rundläufer nicht nur mit einem, sondern mit mehreren Teilen bestückt sein, darüber hast du aber nichts gesagt.

Der Rundläufer ist mit 16 Teilen bestückt. D.h. eine Teilung von 360/16 von 22,5°.

Grüße Pico
 
Wenn du immer bei 18° ein Bild haben möchtest musst du bei hohen Geschwindigkeiten den Trigger früher Starten.
Wird ja sicherlich zwischen Trigger Ausgabe und Bildaufnahme eine kurze Verzögerung sein!
Somit hättest du zwischen Trigger und tatsächlicher Aufnahme schon wieder sagen wir 2° gedreht und das Bild wäre nicht genau bei 18° aufgenommen!
Kannst dir ja dann errechnen wieviel weg du in dieser Zeit mit der aktuellen Geschwindigkeit zurücklegst und den Trigger beispielsweiße bei 16° starten.
Sowas nennt man Vorhalteweg bzw. Antizipation.

Gruß Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sowas nennt man Vorhalteweg bzw. Antizipation.

Dies sind halt Programmieraufwände die hätte man sich sparen können wenn eine FM352 eingesetzt wird.

Aber es ist ja auch eine tolle Herausforderung sowas selbst zu erstellen.

Nur wie berechnet man den Vorhalteweg? Es muss sich ja irgendwie aus aktueller Geschwindigkeit, Steuerungszyklus und IO Zeiten zusammensetzen.

Kann ich diese Daten so genau ermitteln um den genauen Weg zu errechnen?

Grüße Pico
 
Wenn du die zeitliche Verzögerung vom Trigger zur Bildaufnahme ermittelt hast kannst du ja bei bekannter Winkelgeschwindigkeit den Winkel berechnen den du vorher Triggern musst.
Die Zeit wirst du wahrscheinlich durch Tests ermitteln.
 
Würde ich auch sagen die Zeiten werden durch test ermittelt und dann z.B.: mit 5 Stützpunkten hinterlegt! Dazwischen wird Interpoliert!

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn man diese Formel anwendet

Vorhalteweg = Vorhaltezeit * aktuelle Geschwindigkeit

in welcher Einheit bekommt man dann den Vorhalteweg?

z.B. Vorhaltezeit = 5ms
aktuelle Geschwindigkeit = 1500 1/min

Vorhalteweg = 5ms * 0,025 1/ms = 0,125 (Einheit dann Grad??? aber woher???)

Grüße Pico
 
Also ich würde das eher anhand der Istgeschwindigkeit und den Werten die ermittelt werden Interpolieren!

Z.B.: 1000U/Min = 18°,2000U/min = 15° Zwischen diesen Werten kannst du ja dann Interpolieren!

Kannst es auch erweitern und einfach bei 5 Verschiedenen Geschwindigkeitn die Grad ermitteln. Da wirst du ja schon relativ viel Abdeken!

Geht aber auch mit folgender Formel:

Konstanten:
Minimale Geschwindigkeit (U/min)
Maximale Geschwindigkeit (U/min)
Maximaler Vorhalteweg (°)

Aktueller Vorhalteweg °= Aktuelle Geschw. - Minimale Geschw. / (Maximale Geschw. - Minimale Geschw.) * Maximaler Vorhalteweg

Gruß
 
Zurück
Oben