# Geschwindigkeitsmessung



## mark_ (27 Juni 2006)

ich möchte mit einer s5/s7 eine Geschwindigkeit in m/s bzw km/h messen.
Die Zeit soll über zwei Lichtschranken (Abstand) gemessen werden.
Ich habe mir schon verschiedene Gedanken gemacht, aber komme zu keinem einfachen Ergebnis.
Gebe mir doch mal bitte jemand einen guten Tipp, an dem ich mich langhangeln kann ?!?


----------



## kpeter (27 Juni 2006)

Mal ganz einfach

die zeit zwischen denn Lichtschranken messen
die entfernung von denn Lichtschranken messen

und dann die entfernung durch die zeit und du hast deine m/s


----------



## mark_ (27 Juni 2006)

*schon klar ...*

Das ist soweit schon klar, aber nicht ich will rechnen, sondern die SPS solles für mich tun.
Also, die Entfernung weiss ich.
Wie bekomme ich die Zeit zwischen den Messpunkten in die Steuerung ?


----------



## Rainer Hönle (27 Juni 2006)

Je nach benötigter Genauigkeit könnte folgendes ein Ansatz sein:
Beim Durchgang durch ersten Punkt Bit setzen und ein Merkerwort (oder Doppelwort je nach Dauer) auf Null setzen.
Solange Bit gesetzt ist im OB35 das Merkerwort inkrementieren
Beim Durchgang durch den zweiten Punkt Bit rücksetzen. 
Jetzt kann aus der gemessenen Zeit und dem bekannten Weg die Geschwindigkeit berechnet werden.


----------



## mark_ (27 Juni 2006)

*weiter so*

@ kpeter --- Interessante Homepage, sehr aufschlussreich ???

@ Rainer - ääähh, hilf mir kurz auf die Sprünge... OB35... was macht der, habe mein PG mit der Hilfe gerade nicht zur Hand.


----------



## Rainer Hönle (27 Juni 2006)

OB35 ist einer der Zeit-OBs. Wird (je nach Parametrierung) alle 100 ms aufgerufen. Was für Zeiten sollen den gemessen werden (Min und Max)?


----------



## mark_ (27 Juni 2006)

*wg. Hobby*

Der Abstand soll nicht grösser als 1 Meter. Die zuerwartende Geschwindigkeit ca. 60km/h.
Für den Hobby-Bereich: RC-Modellbau - Rundenzeiten, Geschwindigkeit, Durchschnittsgeschwindigkeit, usw.


----------



## Rainer Hönle (27 Juni 2006)

60 km/h entspricht fast 17 m/s. Ein Meter wird dann in ca. 60 ms zurückgelegt. Um einigermaßer vernüftige Werte zu bekommen muss die Strecke deutlich erhöht und/oder die Geschwindigkeit deutlich verringert oder eine spezielle Baugruppe eingesetzt werden, die die Torzeiten mißt. Aber mit normaler Umgebung sehe ich hier Schwierigkeiten.


----------



## Maxl (27 Juni 2006)

Ich will ja nicht unhöflich sein........

aber:
v = s/t
s ist bekannt, t kann gemessen werden!

Ein fertiges Programm werde ich hier sicher nicht abliefern.


----------



## Rainer Hönle (27 Juni 2006)

Maxl schrieb:
			
		

> Ich will ja nicht unhöflich sein........
> 
> aber:
> v = s/t
> ...


Aber wie kann mit der SPS die Torzeit von ca. 60 ms möglichst exakt gemessen werden? Jede Millisekunde Abweichung sind dabei ja fast 2% Fehler.


----------



## Markus (27 Juni 2006)

nur mit der sps bzw. normaler perepherie sicher nicht.
selbst bei einem zyklus von 10ms wäre das noch viel zu ungenau, und 10ms muss man erst mal ereichen.

ich denke das wird bereits an der schaltverzögerung der lichtschranken scheitern. die werden das signal mit sicherheit auch noch etwas entprellen. wobei der "fehler" je bei beiden gleich sein sollte und somit vernachlässigt werden kann. oder denke ich da falsch?

die geschwindigkeit veringern wird wohl nicht drin sein, schliesslich wollen die mit ihrem spiekzeug ja nicht langsamer fahren nur das sie messen können.

der abstand vergrößern, und zwar so groß wie möglich wäre eine lösung.
aber bei einem rennen wird alles über einem meter ebefalls problematisch wenn zwei fahrzeuge kanpp hintereinander durch die erste ls fahren und sich in der zeit zur zweiten noch was ändert...


kann die fm3xx zaählerkarte die zeit zwischen zwei flanken messen?
theoretisch müsste sie das können.

was ist mit den onboard zählern von der 95er?
er schreibt ja s5 oder s7 und für so ein spielzeug wäre eine 95er von ebay günstiger als ne s7 mit fm3xx...

abgesehen davon glaube ich auch das es da andere lösungen (ohne sps) gibt die das besser können.
aus aktuellem anlass (habe ich grad im projekt) fällt mir da ein f/u-wandler ein, er wandelt frequenzen in ein proportionales strom oder spannungssignal um mit dem man eine anzeige ansteuern könnte.
bestimmt gibt es die dinger auch mit einer speicherfunktion für den spitzenwert...


----------



## volker (27 Juni 2006)

grundsätzlich gebe ich reiner recht. viel zu kurze strecke für die geschwindigkeit.

1 möglichkeit sehe ich da evtl aber.
wenn die e-baugruppe ein mit alarm ist bzw die cpu-internen eingänge alarmfähig sind, lässt sich durch die steigende/fallende flanke ein prozessalarm auslösen.
die zeit dazwischen kann man messen. wie genau das am ende ist kann ich aber auch nicht sagen.


----------



## Maxl (27 Juni 2006)

Also mit einer S7 sehe ich da keine Chance. Hauptsächlich aus dem Grund, weil auf einer S7 die kleinste meßbare Größe 1ms ist (S7-400 - SFC64).

Eine Alternative wäre eventuell eine Baugruppe mit Oszi-Funktion oder eine Baugruppe, welche eine Torzeit im µs-Bereich erkennen kann.

Soweit mir bekannt ist, bietet B&R solche Module fürs X20-System an. Die Meßwerte können minimal alle 400µs ausgelesen werden - dies sollte ausreichen, damit keine 2 Fahrzeuge überschneidend gemessen werden.

X20 lässt sich grundsätzlich über Profibus anbinden, um die Funktionalität ordentlich nutzen zu können, ist jedoch eine B&R-Steuerung notwendig. B&R X20-CPUs soll es aber lt. dem letzten User-Meeting bereits ab 250-300 EUR geben.


mfg
Maxl


----------



## Maxl (27 Juni 2006)

volker schrieb:
			
		

> wenn die e-baugruppe ein mit alarm ist bzw die cpu-internen eingänge alarmfähig sind, lässt sich durch die steigende/fallende flanke ein prozessalarm auslösen.
> die zeit dazwischen kann man messen. wie genau das am ende ist kann ich aber auch nicht sagen.



Das mit dem Prozessalarm kann ich mir auch gut vorstellen - ich habe mal vor langer Zeit (mit einer alten 315-2DP) messungen mit einer Alarmbaugruppe und einem Drehgeber gemacht. Dabei hab ich festgestellt, dass Alarm-Abstände im Bereich kleiner 1 ms durchaus möglich sind. Bei einer 313C, wo die Alarm-Eingänge direkt in der CPU sind, sollte dies auch schnell gehen.
(Die Werte < 1 ms sind aus der Zählfrequenz zurückgerechnet worden)

Das Problem wird aber trotzdem das Messen der Zeit sein, da mir auf S7-Steuerungen kein Weg bekannt ist, Zeiten < 1 ms zu messen.

mfg
Maxl


----------



## mark_ (27 Juni 2006)

*sehr schön ...*

Ich habe mir gedacht, das es nicht so einfach ist. Über die physikalischen Eigenschaften meines Vorhabens bin ich mir schon im Klaren. Hier eben nur die Frage an die, von denen ich denke, sie hätten eine einfache Lösung.
Sicherlich kann sich jeder vorstellen, das der Verein keine Unsummen ausgeben möchte, daher die angestrebte S5 Lösung aus Ersatzteilen. Mir drängt sich allerdings nach euren Ausführungen der Gedanke auf, das es nicht funktionieren wird.
Trotzdem....einfach mal laufen lassen, Interessante Beiträge.


----------



## kpeter (27 Juni 2006)

hallöchen

und was sollen die ???


----------



## argv_user (27 Juni 2006)

Wie ists mit 'nem Mikrocontroller, zB Atmel AVR ?


----------



## Boxy (28 Juni 2006)

Also mir einem billigen Microkontroller währe das gut möglich.
Da sind ja kürzere Zeiten drinnen. Da stimme ich meinem Vorschreiber zu.

Bei der S7 sehe ich auch Probleme ...


----------



## Onkel Dagobert (28 Juni 2006)

Mit einer S7200 wäre das kein Problem. Über die vorhanden Interrupteingänge kann man Zeiten im ms-Raster ermitteln.

Gruß, Onkel


----------



## Boxy (28 Juni 2006)

Onkel Dagobert schrieb:
			
		

> Mit einer S7200 wäre das kein Problem. Über die vorhanden Interrupteingänge kann man Zeiten im ms-Raster ermitteln.
> 
> Gruß, Onkel


 
Mit dem SFC64 (Time-Tick) bei einer S7-300 auch. Aber kleinste Zeit ist halt 1ms und nicht 0.1ms, was bei der genannten Anwendung halt mehr Sinn machen würde und somit die Messung genauer ist. 

Jede ms macht ja ca. 2% Ungenauigkeit aus ....


----------



## Onkel Dagobert (28 Juni 2006)

Hallo Boxy,



			
				Boxy schrieb:
			
		

> Mit dem SFC64 (Time-Tick) bei einer S7-300 auch.





			
				S7-Onlinehilfe schrieb:
			
		

> Das Zeitraster und die Genauigkeit der Systemzeit betragen bei S7-400 und bei der CPU 318 1 ms, bei allen anderen CPUs der S7-300 10 ms.


 


			
				Boxy schrieb:
			
		

> Jede ms macht ja ca. 2% Ungenauigkeit aus ....


Habe es jetzt nicht nachgerechnet. Wenn dieser Wert für die Maximalgeschwindigkeit gilt, könnte man damit zufrieden sein.


Gruß, Onkel


----------



## marlob (2 Juli 2006)

Hallo,

auf der Website von Klaus Leidinger gibt es eine Bauanleitung für einen Geschwindigkeitsmesser mit Mikrocontroller und Lichtschranken.

Hier der Link
http://www.klaus-leidinger.de/mp/RC-Elektronik/Tester/Tacho/Tacho.html

mfg
marlob


----------



## nur'n blöder Gast (2 Juli 2006)

Hi

Und wenn's kein AVR, sondern ein PIC sein darf, schaut mal auf SPRUT.DE.
Das ist DIE Seite, wenn es um PIC's geht (deutsch *anmerk*).
Selbst ein kleiner 08M'er (PICAXE) sollte brauchbare Ergebisse liefern können, einziger Problem bei diesem Chip: Er hat nur 4 I/O Pins, wodurch etwas Hirn und externe Beschaltung von Nöten ist.
Größere Chips kosten größeres Geld, haben dafür aber (neben höherem Takt) auch mehr I/O Pin's.
Zu guter Letzt ist ein PICAXE (Sonderform des PIC) in BASIC oder als Flußdiagramm programmierbar.
Für PICAXE-Info's schaut mal da:ROBOTER-TEILE.DE (der Shop)
Hab dort selber nen paar Steinchen gekauft, recht robust aber 12V mögen se auch nicht :-/

In diesem Sinne, Häppy Racing (oda so)


----------



## drfunfrock (11 Juli 2006)

Ich würde dann mit einem Atmel-Microcontroller eine kleine Schaltung aufbauen mit einem Quartz, 2 Eingängen und RS232-Ausgang. Das Ding wird mit 8Mhz getaktet und schon kann man die Zeit hinreichend genau messen. Wer es eilig hat, der nimmt das Eval-Toolkit STK500 und programmiert den  Atmel in C mit dem GCC (kostet nix). Gibt es alles auf 

www.avrfreaks.bet


Der interne Zähler des Amels zählt die Impulse und sendet die Zahl der Impuls an die SPS per RS232. Das scheint mir das einfachste zu sein.


----------



## edison (16 Juli 2006)

Möchte das Thema nochmals aufgreifen,
nur bei mir geht es um 200m und richtige Autos (Beschleunigungsrennen).
Auch der finanzielle Rahmen würde eine FM Baugruppe zulassen.

Gestartet wird die Zeit über eine Ampel, gestoppt von Lichtschranke oder Induktionsschleife (wird aber wohl zu langsam sein).

Bisher habe ich nur eine FM35x für Impulsgeber eingesetzt - gibts da auch was um Zeiten zu erfassen?

Visualisiert werden sollen Geschwindigkeit + Zeit - und das möglichst groß.
Da fällt mir zuerst WinCC RT ein, mit nem großen TFT (geht da auch Zweischirmbetrieb?) ein. Oder gibts große LED Anzeigen, die ich via BCD ansteuern könnte unter dem Preis für Netlink, WinCC RT, Rechner,TFT(s) ?

Habe mich einfach mal an den Thread rangehangen, da das Thema ja doch recht ähnlich ist.


----------



## Unregistrierter gast (16 Juli 2006)

edison schrieb:
			
		

> Möchte das Thema nochmals aufgreifen,
> nur bei mir geht es um 200m und richtige Autos (Beschleunigungsrennen).
> Auch der finanzielle Rahmen würde eine FM Baugruppe zulassen.
> Gestartet wird die Zeit über eine Ampel, gestoppt von Lichtschranke oder Induktionsschleife (wird aber wohl zu langsam sein).



Du hast recht, Induschleife ist sicherlich zu langsam, nimm 2 Lichtschranken.




			
				edison schrieb:
			
		

> Bisher habe ich nur eine FM35x für Impulsgeber eingesetzt - gibts da auch was um Zeiten zu erfassen?



Du sprachst von 200m.
Da würde ich gar keine FM oder so einsetzen, sondern einfach die Lichtschranken auf einen Eingang (evt. auch Interruppteingang) legen und die Zeit zwischen beiden mittels Timeclick - SFC in 10ms Auflösung stoppen.

Bei 200 m wird die Zeit zwischen den beiden Lichtschranken ja mindestens 2-3 Sekunden lang sein  , also lang genug für genaue Messung.



			
				edison schrieb:
			
		

> Visualisiert werden sollen Geschwindigkeit + Zeit - und das möglichst groß.
> Da fällt mir zuerst WinCC RT ein, mit nem großen TFT (geht da auch Zweischirmbetrieb?) ein. Oder gibts große LED Anzeigen, die ich via BCD ansteuern könnte unter dem Preis für Netlink, WinCC RT, Rechner,TFT(s) ?



Ein PC hätte den Vorteil, dass du die Messergebnisse auch direkt Protokollieren könntes. Großanzeigen LED kosten schon ne Menge Geld (allerdings ist flexibleRT auch nicht gerade billig)

Gruß,

Ug.


----------



## edison (17 Juli 2006)

Bin jetzt auf der Siemens Webseite auf ein Beispielprojekt für eine 200er gestoßen:

Dort wird ein 20kHz Impuls erzeugt und gleich wieder gezählt - die kleinste meßbare Zeit wird dort mit 50us angegeben (durch die 20kHz).
Gefällt mit soweit recht gut - nur wie genau ist denn die ganze Sache?
In der Doku wird nur auf die Technischen Daten der CPU verwiesen, dort finde ich aber leider keine Toleranzangaben für die Frequenzausgabe (CA01 / Systemhandbuch).


----------



## wbe (25 August 2006)

@ edison

könntest du mir mal den link zu dem beispielprojekt zukommen lassen?
danke im voraus

WBE


----------



## hugo (29 August 2006)

schau dir mal die sachen von oscat (open source community for automation technology) an 
dort gibts eine freie bibliothek mit vielem in st und alles mit source code
einen function block zur direkten zeitmessung findest du unter engineering


----------



## wbe (29 August 2006)

danke, schaue ich mir mal an.

WBE


----------



## hugo (30 August 2006)

sorry hab den kink vergessen
http://www.oscat.de
aber die genauigkeit wird sicher nicht besser als einige ms je nach sps ca 1ms

eine möglichkeit dies zu umgehen ist die sps freilaufend zu betrieben und in einer schleife zu messen damit wird die task nicht verlassen und auch auf einer langsamen sps eine grnauigkeit von deutlich besser als 1 ms erreicht.

das hat aber den nachteil das die sps während der messung nichts anderes mehr tun kann.

servus und viel spass


----------



## RMA (6 September 2006)

> Bisher habe ich nur eine FM35x für Impulsgeber eingesetzt - gibts da auch was um Zeiten zu erfassen?


 
Der FM352-5 basiert auf einem Xilinx FPGA parallel processor mit 1 µs Zyklus Zeit. Kleinste Zeiteinheit (Ein- oder Ausgang) ist 10µs und ich habe ihn benutzt um Zeitverzögerung in 1-ms Raster über ein Bereich von 0 - 2000 ms zu kriegen. Im unteren ms Bereich waren die Zeiten +- 2 µs über 2 s war die Abweichung <200 µs, aber ich glaube dies ist kleiner als die Genauigkeit des Oszis bei 1 cm/s!

Leider kann mann die Berechnung nicht im FM machen (wenn ich mich richtig daran erinnere) weil der kann auch "stand-alone", also ohne CPU, eingesetzt werden. Kostet ca. 800 €


----------



## Borsti (20 September 2006)

Wusa... hui...
Also, ich hab mal was ähnliches in ner 95U gemacht, allerdings nicht mit 60ms, sondern ehr mit 6 Sekunden.

Vielleicht als Ansatz:

1. Erstelle einen Zyklusmerker. (1. Zyklus =1, 2. Zyklus =0, 3. Zyklus =1, etc...)
2. Erstelle einen Blinktakt mit X Sekunden (100ms als Beispiel)
3. Wenn der Blinktakt in einem Zyklus auf 1 wechselt, startest du einen Zähler, der mit dem Zyklustakt hoch gezählt wird (Mit FP und FN).
4. Wenn der Blinktakt in einem Zyklus auf 0 wechselt, lädst du den Wert von dem Zähler und transferierst ihn in eine Variable (MW, DW, etc.)
5. Somit kannst du dir errechnen, wie lange ein SPS Zyklus in etwa ist. Sprich wenn du nach 100ms den Wert ausliest und der Wert 50 ist, hat die SPS etwa einen Zyklus von 2ms.
6. Dann startest du einen Zähler wenn ein Objekt durch die 1. Lichtschranke kommt und liest ihn aus, wenn es durch die 2. LS fährt.
7. Somit kannst du mit der errechneten Zykluszeit und dem gemessenen Wert einen "etwa" Wert errechnen, aber so genau ist das nicht.

Das ganze funktioniert noch besser, wenn du ne 314 CPU hast und dann ne Frequenz an den HS_Count Eingang legst...

Vielleicht kann dir das helfen...


[edit]
Hups, da waren ja noch 3 Seiten dahinter... 
Naja, ignoriert den Text einfach...
[/edit]


----------

