Wert Summierung!

PhSch105

Level-1
Beiträge
44
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen

Ich habe einen wert (z.b.4) aus einer rechnung den ich speichern möchte und immer wen dieser Wert (z.b. 5) wieder kommt in dazuaddiere

z.b.=
1x (DB122.DBD80 real) 4 > wird gespeichert und angezeigt (DB122.DBD84 real) 4 >
2x (DB122.DBD80 real) 5 > wird mit wert (DB122.DBD84 real) 4 Addiert (+) > 9 >
3x .....
und das so lang und oft es will
wie kann ich das umsetzen?

gibt bestimmt ne ganz einfache lösung, nur ich kenn sie noch nicht...
hoff ihr könnt mir weiterhelfen.
 
:)

ich weis ist kompliziert beschrieben...
und 4 und 5 wahr nur alls beispiel gedacht..


ich hab einen Tank aus dem wasser ennommen wird
diesen wert des ennommenen wassers möchte ich am display anzeigen lassen
und in aber bei jeder weiteren wasserentnahme dazuzählen.

das heist ich entnehme 4.0 l am display wird 4.0 l angezeigt beim nächsten mal entnehme ich 6.0 l und am display steht dann 10.0 l ....usw.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich hab einen Sensor mit 0-20ma der wird scalliert auf 0-100
dann rechne ich mit einigen gliedern die entnommene menge aus
(Startwert 80 - Endwert 10 = 70
70 * (insgesammte füllung) 7 = 490/100 = 4,9 l (entnommene menge))
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo PhSch105,
ich glaub ich verstehe was du machen willst, finde deinen Ansatz aber irgendwie unglücklich da du für deine Berechnung ein Triggersignal brauchst für Anfang und Ende der Wasserentnahme. Ohne dieses wirst du kein Korrektes Volumen berechnen können. Außerdem würde der neue Wert erst am Ende der Wasserentnahme dazugezählt werden. Hast du so ein Signal für Anfang und Ende oder wie stellst du dir das vor?

Die Lösung von Verpolt ist unter gegebenen Fakten meiner Ansicht die einfachere und bessere, oder soll der Tank während der Produktion auch gleichzeitig befüllt werden?

Gruß
 
...
1x (DB122.DBD80 real) 4 > wird gespeichert und angezeigt (DB122.DBD84 real) 4 >
2x (DB122.DBD80 real) 5 > wird mit wert (DB122.DBD84 real) 4 Addiert (+) > 9 >
3x .....
Zeitpunkt festlegen, wann summiert werden soll und dann einfach +R. Dabei die neue Summe an der gleichen Stelle wie die bisherige Summe speichern:
Code:
[FONT=courier new]      L     DB122.DBD   80              //neuer Wert
      L     DB122.DBD   84              //bisherige Summe
      +R                                //addieren
      T     DB122.DBD   84              //neue Summe[/FONT]
Wichtig - vorher eine Bedingung für die neue Addition festlegen, damit nicht in jedem Zyklus addiert wird.
Z.B. immer wenn ein neuer Wert kommt, der sich vom letzten unterscheidet:
Code:
[FONT=courier new]      L     DB122.DBD   88              //letzter Wert
[/FONT][FONT=courier new]      L     DB122.DBD   80              //neuer Wert[/FONT]
[FONT=courier new]      <>D                               //verschieden?[/FONT]
[FONT=courier new]      FP    M      0.1                  //erstmalig?[/FONT]
[FONT=courier new]      SPBNB _001                        //wenn nicht, Addition überspringen[/FONT]
[FONT=courier new]      T     DB122.DBD   88              //neuen Wert als letzten speichern und mit[/FONT]
[FONT=courier new]      L     DB122.DBD   84              //der bisherigen Summe[/FONT]
[FONT=courier new]      +R                                //addieren[/FONT]
[FONT=courier new]      T     DB122.DBD   84              //und als neue bisherige Summe speichern[/FONT]
[FONT=courier new]_001: NOP   0[/FONT]
 
Zuletzt bearbeitet:
Zeitpunkt festlegen, wann summiert werden soll und dann einfach +R. Dabei die neue Summe an der gleichen Stelle wie die bisherige Summe speichern:
Code:
[FONT=courier new]      L     DB122.DBD   80              //neuer Wert
      L     DB122.DBD   84              //bisherige Summe
      +R                                //addieren
      T     DB122.DBD   84              //neue Summe[/FONT]
Wichtig - vorher eine Bedingung für die neue Addition festlegen, damit nicht in jedem Zyklus addiert wird.
Z.B. immer wenn ein neuer Wert kommt, der sich vom letzten unterscheidet:
Code:
[FONT=courier new]      L     DB122.DBD   88              //letzter Wert
[/FONT][FONT=courier new]      L     DB122.DBD   80              //neuer Wert[/FONT]
[FONT=courier new]      <>D                               //verschieden?[/FONT]
[FONT=courier new]      FP    M      0.1                  //erstmalig?[/FONT]
[FONT=courier new]      SPBNB _001                        //wenn nicht, Addition überspringen[/FONT]
[FONT=courier new]      T     DB122.DBD   88              //neuen Wert als letzten speichern und mit[/FONT]
[FONT=courier new]      L     DB122.DBD   84              //der bisherigen Summe[/FONT]
[FONT=courier new]      +R                                //addieren[/FONT]
[FONT=courier new]      T     DB122.DBD   84              //und als neue bisherige Summe speichern[/FONT]
[FONT=courier new]_001: NOP   0[/FONT]

Danke Hucki endlich mal einer der mich versteht ;)
so könnte ich mir das vorstellen.

Die normale addietion (+R) hate ich schon probiert und versucht nur kurtz ein signal drauf zugeben
aber dann hat es sich trotzdem ins 1000 fache addiert.

Werds morgen gleich mal ausprobieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Die normale addietion (+R) hate ich schon probiert und versucht nur kurtz ein signal drauf zugeben
aber dann hat es sich trotzdem ins 1000 fache addiert.
...
Dann war sicher was mit Deinem "kurzen" Signal nicht richtig, so dass in jedem Zyklus addiert wurde.
Der Vergleich der Realzahlen, wie in meinem Beispiel ist oft problematisch und daher nicht ideal. Besser wär z.B. ein Signal, wenn ein neuer Wert zum DBD80 transferiert wird.
Wie so oft - poste doch einfach mal Deinen Ansatz.
 
Ich bin erst morgen wieder am programm

aber ich hab die addietion freigegeben und gleich danach mit dem selben befehl wieder ausgeschaltet
und trotz dem kamm stat eigendlich 4+5=9 irgendwas mit 249 oder so raus!

werdes morgen erst mal mit dem vergleicher von dir probieren.
 
...
aber ich hab die addietion freigegeben und gleich danach mit dem selben befehl wieder ausgeschaltet
und trotz dem kamm stat eigendlich 4+5=9 irgendwas mit 249 oder so raus!
...
Wie sah' denn die Freigabe aus, und was heißt dabei gleich?
Für sowas sind fast immer Flanken nützlich. Da kann man sicher sein, dass sie erstmal nur einen Zyklus auf HIGH sind.
Und wie gesagt, der Vergleich bei Realzahlen ist nicht unbedingt der Beste. Es kommt darauf an, wie die Übertragung der berechneten Menge zum DB erfolgt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habs leider noch in fup aufgebaut aber bin erst grad drann awl zu lernen

das addietions glied hat ein freigabekontakt und ein ausgabekonntakt den ausgabekontakt hab ich nigiert mit einem "und" zwischen den freigabekontakt gehängt!
keine anung ob das sin macht aber so war der wert bis jetzt am kleinsten!!

Meld mich morgen nochmal muss erst ausprobieren ;)
 
...
das addietions glied hat ein freigabekontakt und ein ausgabekonntakt den ausgabekontakt hab ich nigiert mit einem "und" zwischen den freigabekontakt gehängt! ...
Klingt nach einem Takt, so dass die Addition (bitte tue mir einen Gefallen und merk' die richtige Schreibweise, das Andere verursacht ja Augenkrebs ;)) nur in jedem 2. Zyklus ausgeführt wird.

Ansonsten schalt' morgen einfach Deinen FUP-Code auf AWL-Ansicht um und poste das Ergebnis. Dann kann man Dir sicher besser helfen.
 
Ja ich weis bin zwar durch und durch Deutscher aber ich glaub jeder ausländer hat ne bessere rechtschreibung als ich ;)

so ihr ist jetzt mal mein Additions Glied:

Code:
U "Tag_30" (Freigabe für berechnung)
UN "Tag_78" (Freigabe Sperren)
SPBNB Label_5
L "Parameter Flags"."LM29227 Wasser Endergebnis verbrauchtes wasser"
L "Parameter Flags"."LM29227 Wasser zusammengerechneter endwert"
+R
T "Parameter Flags"."LM29227 Wasser zusammengerechneter endwert"
UN OV
SAVE
CLR
Label_5 : U BR
= "Tag_78" (Freigabe Sperren)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
      L     "Parameter Flags"."LM29227 Wasser zusammengerechneter endwert"          Wert=0.001265717
      L     "Parameter Flags"."LM29227 Wasser Endergebnis verbrauchtes wasser"       Wert=4.387659
      <>D                                                                                                         Wert=1
      FP    "Tag_79"                                                                                            Wert=1
      JNB   Label_5                                                                                             Wert=1
      T     "Parameter Flags"."LM29227 Wasser zusammengerechneter endwert"
      L     "Parameter Flags"."LM29227 Wasser End Summe"
      +R
      T     "Parameter Flags"."LM29227 Wasser End Summe"                                     Wert=0.04053497
Label_5 : NOP 0                                                                                                Wert=1

Und bei jeder weitern aktion mit einem anderem eingangswet bleibt wasser summe gleich
 
Kein Wunder:


L "Parameter Flags"."LM29227 Wasser zusammengerechneter endwert" Wert=0.001265717 L "Parameter Flags"."LM29227 Wasser Endergebnis verbrauchtes wasser" Wert=4.387659 <>D

Solange du dort unterschiedliche Werte hast bekommst du keine neue Flanke zum berechnen.... Du brauchst da schon einen Trigger der dir das Ende des "Abzapfens" anzeigt, wie auch immer geartet.
 
Gibt es keine möglichkeit den ergebnis wert in einen summen wert zu kopieren oder zu schieben und dieser adiert sich dann selber mit sich?

oman wens nur für alles ne einfache lösung gäbe.... :)
 
Zurück
Oben