TIA Benötige Hilfe: Längenmessung - Längen addieren und Wert speichern.

kevx

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

(ich benutze TIA V14 und eine S7 1200 und programmiere in momentan in FUP)
ich habe ein Problem und komme einfach nicht auf die Lösung:
ich habe einen analogen Sensor, welcher eine verstellbare Länge misst. Die Umwandlung des Signals funktioniert einwandfrei. Jetzt soll jedes mal wenn ein bestimmter Eingang kommt, dieser Eingang einen ADD Baustein enablen und die aktuelle Länge (real Datentyp) auf einen anderen real Wert darauf addieren. Den Ausgang des ADD Baustein schreibe ich mit einem MOVE Baustein in eine static Variable eines DB's und diese Variable ist dann der vorher erwähnte zweite real Wert, welcher den Eingang 2 des ADD Baustein belegt. Ich erhoffte mir, dass jedes mal wenn mein Eingang kommt (welcher den ADD Baustein enabled), meine aktuelle Länge (analoger Eingang, real) auf die Variable des DB's drauf addiert wird und ich somit quasi eine Stückzählung verwirkliche, welche meine Längen zählt / addiert. Allerdings setzt sich die Variable des DB's sofort wieder auf 0 sobald der ADD Baustein disabled wird.
Was mache ich falsch? Ich hoffe jemand möchte mir helfen.
 
Kann es sein das irgendwo eine Logik zum Löschen des Wertes programmiert ist die immer erfüllt ist ? Poste mal ein Screenshot von deinem Code
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine Logik zum Löschen des Wertes habe ich nicht programmiert. Einen Screenshot kann ich frühestens morgen posten. Vllt erwähne ich noch Folgendes: Meine Logik befindet sich in einem FB welchen ich im OB1 aufrufe. Den analogen Eingang und die DB Variable zum speichern beschalte ich im FB, also nicht von außen im OB1. Der DB muss kein Instanz DB sein oder? Den DB habe ich extra für die Variable erstellt. An sich ist meine Logik auch funktionstüchtig oder? Einen real Ausgang eines ADD Bausteins per MOVE Baustein in eine DB real Variable zu schreiben und diese dann am Eingang des ADD Bausteins wieder zu verwenden, damit dieser quasi mit dem zweiten Eingang immer wieder bei Aktivierung drauf rechnet auf meinen vorherigen Wert. Ist das so möglich? Danke für deine Hilfe.
 
Den Ausgang des ADD Baustein schreibe ich mit einem MOVE Baustein in eine static Variable eines DB's . . . Allerdings setzt sich die Variable des DB's sofort wieder auf 0 sobald der ADD Baustein disabled wird.
Wird denn nur der ADD-Baustein disabled und der Move-Baustein nicht???
Was passiert denn am Ausgang des ADD-Bausteins, wenn er disabled ist?

Gruss, Heinileini
 
Moin,
vielleicht noch ein weiterer Hinweis zu deinem Trigger-Event. Aus diesem solltest du (wenn noch nicht realisiert) eine Flanke machen, damit wirklich nur einmalig dein Wert aufaddiert wird, und das nicht mehrfach passiert, weil dein Eingang mehrere Zyklen True ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich hab das gerade mal probiert.
Der Einwand von Howard stimmt sollte ne P Flanke sein sonst zählt das ohne Ende hoch. Ansonsten geht das .Ist bei deinen DB der Haken bei REMANENZ gesetzt ?
 
Erstmal vielen Dank für alle die mir ihre Hilfe anbieten hier! Mir ist gestern noch ein Einfall gekommen, welcher das Problem auch gelöst hat. Erstmal habt ihr vollkommen Recht mit dem P trig. Das ist mir auch noch aufgefallen. Und mein eigentliches Problem hat sich dadurch gelöst, dass ich den Move Baustein durch den selben Eingang wie den ADD Baustein enabled / disabled habe. Wie @Heinileini schon nachgefragt hat, gibt der ADD Baustein bei disabled nämlich 0 als Wert aus, welcher dann logischer Weise in meine Variable durch den Move Baustein geschrieben wird. Keine Ahnung wie ich das übersehen konnte. Jetzt wird der ADD und der Move Baustein nur für einen kurzen Moment getriggered und dadurch werden auch nur einmal die Werte addiert und der Move Baustein wird auch direkt wieder disabled und wird somit auch nicht mit 0 wieder überschrieben.
 
Wie @Heinileini schon nachgefragt hat, gibt der ADD Baustein bei disabled nämlich 0 als Wert aus
Ein ADD-Baustein gibt nicht 0 aus wenn er gar nicht ausgeführt wird.
Kann es sein, daß Du zwischen dem Ausgang des ADD und dem Eingang des MOVE eine (temporäre?) Variable hast? Dann wird diese Variable vermutlich auf 0 initialisiert, und weil das ADD nicht ausgeführt wird und der ADD-Ausgangswert nicht in die Variable geschrieben wird, bleibt die 0 in der Variable und diese 0 wird vom MOVE kopiert.

Tipp: Statt 100 Worte Beschreibung Deines ADD + MOVE hätte ein Bild des Programmteiles wohl mehr und schneller geholfen. :cool:

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein ADD-Baustein gibt nicht 0 aus wenn er gar nicht ausgeführt wird.
Normalerweise nicht, Harald, aber was ist schon normal . . . bei der LOGO!?
I was under the influence - sozusagen, meine Denkweise war wohl noch im LOGO-Modus.
Und das hat irgendwie auf die richtige Spur geführt. :ROFLMAO:

Gruss, Heinileini

LOGO_arithmetischeAnweisung.jpg
 
Zurück
Oben