TIA Geschwindigkeit ermitteln mit Seilzuggeber

thomas_95

Level-1
Beiträge
27
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Leute, habe folgendes Problem:
Ich möchte mit meiner SPS 1214C (DC/DC/DC) ein Geschwindigkeitsprofil einer Linear Achse aufzeichnen, über die Auswertung eines Seilzuggebers und stehe vor folgendem Problem:

Ich zähle über einen CTU Baustein meine Signale und setze diesen nach jeweils einer Sekunde zurück.
Diesen zuletzt ermittelten Wert würde ich Gerne geteilt durch 20 rechnen lassen damit ich meine Geschwindigkeit pro Sekunde erhalte, da mein Seilzuggeber mir 20 Inkremente pro mm liefert.
Diesen Wert würde ich aber gerne jeweils DAUERHAFT speichern in einem Datenbaustein damit ich später die ermittelten Geschwindigkeiten über ein Siemens Display als Kurve mir anzeigen lassen kann.
Falls es andere Möglichkeiten gäbe bin ich offen für weitere Ratschläge!

Vielleicht kann mir hier ja jemand nettes Helfen!
Dankeschön im Vorraus!

Thomas
 
Zuletzt bearbeitet:
Moin ,mit deiner Fragestellung hast du dir doch eigentlich schon alles beantwortet.
CTU Wert speichern und DIV oder gleich DIV
DIV Wert mit MOVE in einen DB speichern Zeitgleich mit dem Rücksetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie kann ich denn den letzten CTU Wert vor dem Rücksetzen speichern? Momentan wird der Wert im DB immer wieder überschrieben und nicht dauerhaft gespeichert und anschliesend neu angelegt wie funktioniert denn das ? Habe mal mein Netzwerk dazugehängt.. damit man es vllt. besser versteht was ich gemacht habe...
 

Anhänge

  • NW.JPG
    NW.JPG
    32,6 KB · Aufrufe: 43
  • NW2.JPG
    NW2.JPG
    44 KB · Aufrufe: 35
Zuletzt bearbeitet:
Gleichzeitig mit dem Rücksetzen den Wert vom CTU durch MOVE in den DB schieben ..Kann dein Netzwerk leider nicht ganz sehen .
 
Noch was. Falls der M0.0 der Sekundenmerker aus dem Taktmerkerbyte der CPU ist, ist der jeweils eine Sekunde True und eine Sekunde False. Soll heissen durch die Negation am R des CTU zählt der jede zweite Sekunde nicht.
 
Gleichzeitig mit dem Rücksetzen den Wert vom CTU durch MOVE in den DB schieben ..Kann dein Netzwerk leider nicht ganz sehen .
Eventuell erst speichern und im nächsten Netzwerk rücksetzen?
----
Mit der 1ms am ersten Taktgeber, bringt das überhaupt was den so niedig einzustellen wenn die Zykluszeit größer ist?
Wenn der Zyklus jetzt 5 ms dauert hat man aber keinen korrekten Sekundentakt mehr oder? Ist es dann nicht 1,05 s? Bei der Auflösung mit 20 Incrementen je mm und je höher die Gesamtgeschwindigkeit kann es dort dann nicht schon zu zu großen Messfehlern kommen?
Vielleicht sehe ich das auch falsch, dann bitte ich reumütig um Vergebung ;) und um Berichtigung.
 
Zum Kurvendiagramm: ich denke, du musst die Werte nicht dauerhaft einspeichern, du kannst dir auch einfach das Divisionsergebnis in deinen DB speichern und dann im HMI diese darstellen lassen. Die Aktualisierungsrate dieser HMI-Variable sollte dementsprechend natürlich schnell eingestellt werden.

Wenn du dir wirklich Parameter mit ein wenig Historie abspeichern lassen möchtest, solltest du dir als allererstes diese Frage stellen: "Wie viele Messwerte möchte ich aufzeichnen?", denn das muss man mWn im Voraus festlegen, denn ich würde mir im DB_Messwerte ein Array mit genau so vielen aufzuzeichnenden Messwerten anlegen, wie gewünscht. Anschließend würde ich mir dann noch einen zusätzlichen Zähler CTU einbauen, der jedes Mal einen hochzählt, wenn die andere Rechenoperation der Division abgeschlossen ist, bzw der andere Zähler zurückgesetzt wird.

Der Befehl ins Array zu schreiben wäre dann: MOVE = "DB_Messwerte".Messwert[CTU_Messwertposition]

Irgendwann fängst du dann an den ersten Wert wieder zu überschreiben. Das wäre nun für mich vorerst die naheliegendste Möglichkeit.

Weiterführende Informationen zum Array:
Datentyp ARRAY und STRUCT

Ich würde an deiner Stelle in der CPU das Merkerbyte aktivieren und dort dann das Bit 5 verwenden, was einer Taktung von 1Hz entspricht, ist gleich viel übersichtlicher als deine Timer-Kombination - zumindest in meinen Augen.
 
Zurück
Oben