# Drehzahl messen und ausgeben



## STMA83 (21 April 2019)

Hallo Leute. 

Ich bin neu hier und mach gerade eine Ausbildung zum Automatisierungstechniker. Ich bitte um kurze Hilfe.

Folgendes soll ich programmieren und folgendes habe ich gemacht:

Simatic Manager

CPU = 314C-2

Ich muss eine Drehzahl mit einem Initiator messen, der pro Umdrehung ein Signal von einer Schraube bekommt. 

Zum Testen habe ich einen Taktmerker (soll dann später mein Ini werden) auf eine Ausschaltverzögerung gehängt. TW habe ich mit 10s vorgegeben. Somit weiß ich jetzt die Zeit von einer Umdrehung. 

Wenn ich jetzt die Umdrehung (1) durch die Zeit (0,4sek) rechne und dann mal 60 = U/min. 

Meine Frage: wie mach ich das im Simatic Manager mit der ganzen Rechnerei bzw. Datentypen? 

Kann mir da bitte jemand helfen? Ich komm einfach nicht drauf. 

Danke!


----------



## peter(R) (22 April 2019)

D.h. du bekommst alle 10 Sekunden einen Zykluswisch ??

peter(R)


----------



## Onkel Dagobert (22 April 2019)

Für die Berechnung (Multiplikaton, Division) bietet sich das Real-Format an. Die ermittelte Zeit liegt dir wahrscheinlich im Format "Time" vor. Diesen Wert müsstest du ins Format "Real" transferieren. Als Zwischenschritt verschiebst du den TIME-Wert in ein DINT. Dieses DINT wandelst du dann zu einer Realzahl. In FUP geht das z.Bsp. mit "MOVE" und "DI_R". Das Ergebnis ist die Zeit für eine Umdrehung​ im Realformat und in Millisekunden. Die "60" ist eine Konstante, die gibst du einfach als "60.0" vor. Den Rest solltest du hin bekommen.


----------



## Plan_B (22 April 2019)

Verständnisfrage:
Warum benutzt Du nicht einen integrierten Zähler der 314C im Modus Periodendauermessung?
Vorteil ist, dass Du bei der Drehzahlmessung unabhängig von der Zykluszeit wirst und zudem noch genauer.

Zum testen dann den Taktmerker über einen Digout mittels Drahtbrücke auf den Zählereingang.

Für die Berechnungen: 
Real ist nicht zwingend erforderlich. Wenn Du die Periodendauer zum Beispiel in Millisekunden bekommst kann die Berechnung auch in Ganzahlformaten durchgeführt werden. 
1/Periodendauer*Umrechnungsfaktor beinhaltet zwei Konstante, welche ich gleich ausmultiplizieren würde. Das reduziert die Berechnung auf Umrechnungsfaktor/Periodendauer. Liegt die Periodendauer als Millissekunde vor ist der Umrechnungsfaktor 60000.

Im oben genannten Beispiel also 60000/400=150. Das ist auch in FUP ohne Verrenkungen mit dem DIV-Baustein schnell fertig.


----------



## STMA83 (23 April 2019)

Herzlichen Dank euch allen! Von dem integrierten Zähler wusste ich nicht. Muss ich mir mal genauer anschauen was und wo das ist. Ich habe 2 verschiedene Varianten versucht. Einmal mit S5 Timer, da habe ich aber bemerkt, dass er nie richtig zählt. wie es aussieht verschluckt er immer einen Impuls, da er immer um 100MS zu wenig zählt. wahrscheinlich wegen der Zykluszeit (10ms) und der Timer aber nur in 100ms zählt und dann die 90ms abschneidet... 

Variante 2: zwei Impulse hintereinander bei jeden Impuls die Systemzeit abgefragt und gespeichert. Daraus ergibt sich eine Diff. Zeit. Ausgerechnet wie viel Impulse dann bei 60.000ms kommen und diese dann dividiert. somit bekomme ich haarscharf die Drehzahl raus die ich am Papier ausgerechnet habe. getestet mit Taktmerker. Hat einige Stunden gekostet, aber es funktioniert


----------



## Plan_B (23 April 2019)

Variante 2 ist das, was auch der HSC macht. Nur eben ohne den Zyklusjitter (Genauigkeit nur +/- Zykluszeit).
Kommst Du mit dem HSC nicht klar kannst Du IMHO genau Dein Konstrukt auch in einen Alarm-OB packen und den INI-Eingang als Trigger definieren.


----------

