# Berechung der Geschwindigkeit in S7



## Krumnix (20 Januar 2006)

Hallo.

CPU 3152DP, Weggeberkarte SM338 (Version 1.0.1 / S2)

Problem: Ich soll die Geschwindigkeit einer Motors berechnen, der an einem Geber angeschlossen die Daten an die SPS sendet.

Der Geber gibt 178252 Stellwerte pro 1m (1000mm).
Also ein Meter entspricht dann als Wert von der SM338 178252.
Der Wert der Karte kommt als Doppelword an.

Wie kann ich damit jetzt die Geschwindigkeit berechnen?
Ich hab mir da zwar was mit dem OB35 (100ms) ausgedacht, aber irgendwie klappt das nicht. Ich bin einfach hingegangen und hab zuerst den alten Wert umkopiert und die neuen dann aus der Karte gelesen.
Dann subtrahieren und dann das Ergebnis auf 1m umrechnen.
Danach dann den Wert mal 10 (für 1s) und nochmal um 60 mulitpliziert.
Anzeige soll m/min sein.
Aber da kommt immer was anderes raus, obwohl der Motor eigentlich konstant fährt.

von 10m/min - 999m/min (Max-Anzeige).

Jemand eine Idee, wie ich das anders angehen kann?
Danke


----------



## Markus (20 Januar 2006)

//########
Beitrag Editiert Berechnung auf m/min mit einer nachkommastelle...



wie sieht den deine berechnung in zahlen aus?
aus deiner wörtlichen beschreibung geht das nicht so klar hervor...

normalerweise solte das kein problem sein.
mit dem ob35 ist alles richtig? hw-config und so?


ich würde das etwa so machen:

L Inkremente_Aktuell // Inkremete von SM338
L Inkremente_Letzter_Zyklus // Inkremente vom letzten OB35 Aufruf
-D
T Inkremente_100ms

L L#10
*D
T Inkremete_10s

L L#60
*D
T Inkremente_1min

L L#10 // Nach der unteren Division ist dann 1m/min = 10 --> 1,0m=min 
*D

L 178252 // Inkremente pro Meter
/D
T Meter_Minute // 1m/min = 10 --> 1,0m/min


L Inkremente_Aktuell
T Inkremente_Letzter_Zyklus




Wenn man von maximal 999 m/min ausgeht.
Dann wären 999 x 10 x 178252 = 1780737480

DINT geht bis 2147483647, sollte also in dem fall auch kein Überlaufproblem sein...



Was heist "da kommt immer was anderes raus" ?

hat das rechenergebniss nichts mit m/min zu tun, oder schwankt es?

hast du schonmal beobachtet ob und wie stark die 100ms-diferenzmesswerte aus dem ob35 schwanken? bastle doch mal eine kleine schleife im ob35 mit der du für die dauer von zb einer minute die werte nacheinnader in einen db schiebst. dort kannst dir die dann aschauen.

vieleicht ist ja irgendwas doch nicht so gleichmäsig wie es scheint.

schwankungen kannst du zb kompensieren indem du:

- längere torzeiten machst also nicht nur 100ms (anzeige wird entsprechend träge)

- mittelwert bildest


----------



## Krumnix (26 Januar 2006)

Ja, so ähnlich etwa sieht meins auch aus.
Aber ich hab den Fehler gefunden.
Liegt net am Programm. Der Geber wurde mit ungeschirmten Kabel
an 4 Motoren vorbei angeschlossen.
Da hat die SM dann logischer Weise immer Schrott gemessen.
Hab neues Kabel etwas günstiger verlegen lassen. Nun klappt es :wink:


----------

