TIA Drehzahlmessung S7 1200

salami

Level-1
Beiträge
8
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo beschäftige mich seit kurzen mit der 1200er.
Und komm bei der Drehzahlmessung nicht weiter.
Will an einer Welle zwischen ca. 100 bis 500min^-1(upm) messen.
Bei einer Genauigkeit kleiner 5 und Verzögerung am Besten nicht mehr als 2sekunden.
Habe zurzeit eine Schaltnocke an der zu messenden Welle.

Ich hab bisher den HSC der 1200er SPS getestet mit der Zählart Frequenz und 1s Periodendauer.
Der scheint mir aber unbrauchbar.
Bei ca 500upm schreibt der in den ID1000 eine 8
Multiplizier ich das mit 60 lieg ich gute 20upm neben der tatsächlichen Drehzahl,
was mir zu Ungenau ist.
Am Einfachsten wäre wohl mehr Schaltpunkte zu verbauen...
Was aber erst einmal ausfällt.

Gibts es vielleicht für die 1200 schon ein fertigen Baustein
vergleichbar mit den Frequenzmessbaustein SFB48 von der 300er SPS oder ähnliches?

Gruß
Martin
 
Zuletzt bearbeitet:
Hallo
Zeitmessen zwischen 2 Impulsen
60/(Zeit-Zeitalt)

500upm sollte sogar ein normaler Eingang schaffen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kannst Du doch ausrechnen. 500/60 = 8,33333 also 8 erhaltene Impulse.
In 2 Sekunden macht das 16,6666, sind immer noch nur 8 erhaltene Impulse je Sekunde. Du brauchst wenigstens 3 Sekunden, um den Rundungsfehler bei der Impulsaufnahme zu unterdrücken.
 
Moin

@hucki
Okay sorry, das waren dann zu wenig Infos.
Für eine bestimmte Drehzahl bekomm ich das hin.
(Bei 450Umdrehungen z.b. funktionieren die 3sekunden aber schon nicht mehr. Dann kommt man auf 22.5 Impulse)
Ich möchte gern die aktuelle Drehzahl der Welle zwischen 100 und 500upm wissen.

Zeitmessen zwischen 2 Impulsen
60/(Zeit-Zeitalt)
Mit den Zeit-Zeitalt komm ich nicht zurecht:rolleyes:
Wenn ich 60 durch Zeit zw. Impuls teile komm ich doch schon auf die Umdrehungen.
Denke so könnte es gehen.
 
Moin
Mit den Zeit-Zeitalt komm ich nicht zurecht:rolleyes:
Wenn ich 60 durch Zeit zw. Impuls teile komm ich doch schon auf die Umdrehungen.
Denke so könnte es gehen.

was denn nun??
Code:
fp eingang Impuls
spbn end

l systemzeit
l systemzeit alt
-
l 60
tak
/
t deinedrehzahl
l systemzeit 
t systemzeit alt
end: nix

nicht getestet! aber so grob über den Daumen sollte dies hinkommen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin liebe Leute,

ich bin neu hier, auch neu in der SPS Programmierung, und versuche mich grade ebenfalls an einer Drehzahlmessung. Habe hier auch die S7-1200 (CPU 1215C) zur Verfügung, bisher aber noch keine weiteren Steckkarten.

Eigentlich habe ich meine Drehzahlmessung so wie hier von euch bereits vorgeschlagen realisiert. Ich will Drehzahlen von 0-200 U/min erfassen. An meiner Welle habe ich einen Impulsgeber, der halt einmal pro Umdrehung einen Impuls auf einen Digitaleingang %I0.0 der CPU gibt.

In meinem Programm wird im Main-OB durch diesen Impuls ein Funktionsbaustein ("Drehzahlmessung") aktiviert. aIn diesem wird der Digitale Eingang %I0.0 auf positive Signalflanke abgefragt. Bei positiver Flanke wird die Systemzeit eingelesen (RD_SYS_T) und als "neue Zeit" abgespeichert (mit Datentyp DTL, das geht irgendwie bei der 1200 nur als DTL?). Die vorherige "neue Zeit" wurde davor aber noch als "alte Zeit" abgespeichert (MOVE) (eventuell sollte ich die alte Zeit erst ganz am Ende mit der neuen überschreiben, bisher mache ich das halt bevor ich die neue Zeit einlese am Anfang des FCs.)

Danach wird eine Zeitdifferenz = neue Zeit - alte Zeit (T_DIFF) gebildet und als Datentyp Time abgespeichert. Diese Zeitdifferenz wird dann in den Int-Datentyp konvertiert (T_CONV). Am Schluss teile ich dann noch 60 / Zeitdifferenz (DIV) und speichere das Ergebnis "Drehzahl" dann im Datentyp real ab.

Leider funktioniert das nicht so, wie ich es mir vorgestellt habe. Ich validiere das ganze im Moment so, dass ich per Hand Impulse auf meinen Digitaleingang gebe. Der FC wird dadurch auch aktiviert, die Zeiten werden ausgelesen, Differenz berechnet und so weiter. Nur passen die Werte zum einen nicht (Zeitdifferenz wäre irgendwas mit 14 Tagen usw,obwohl ich etwa einmal pro Sekunde einen Impuls gebe) und außerdem habe ich das Gefühl, nicht jeder Impuls wird erkannt (aber das ist erstmal zweitrangig).

Wenn ich meine Zeitdifferenz von Time in Int konvertiere, muss ich den Int-wert danach noch skalieren? Bzw ist mein Programm so vom Prinzip her dnen überhaupt richtig, also lese ich die Systemzeit richtig aus und ist es richtig die so voneinander abzuziehen etc?

Für ein paar Tipps wäre ich sehr dankbar!

Anbei noch Screenshots vom Programm (Netwerk 1-5), damit ihr wisst wovon ich rede =D

Anhang anzeigen 23767
Anhang anzeigen 23768
Anhang anzeigen 23769
Anhang anzeigen 23770
Anhang anzeigen 23771
 
Zurück
Oben