Zur Verfügung gestellter Wert aufspalten und zusammenzählen

Krumnix

Level-3
Beiträge
1.454
Reaktionspunkte
190
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Mahte ist schon bissel länger her bei mir ;)
Ich komme grad nicht darauf, wie man diese Formel nennt oder aufstellt.

Folgendes: Ich bekomme von einem System einen Wert geliefert.
Dieser Wert wird in 5er Schritten in dem Externen System hochgezählt.
Dies geschieht im 60sec-Takt. Jedoch wird das nur gezählt, wenn das
System auch in Automatik läuft.

Nun sollen alle Werte ineinander addiert werden.
Also sowas, als ob ich alle 60sec den alten Werte mit dem neuen Wert addiere.

Das Problem ist, das ich nur alle 24 Stunden einmal den neuen Wert von dem
anderen System bekomme.

D.H.
1. Tag 500
2. Tag 655
etc.

Jetzt war am ersten Tag ja zuerst mal die 0 dann 5, dann 10 ->
5+10+15+20+25+30 etc.
Jedoch die 500 / 5 teilen und dann ne Schleife durchlaufen lassen und
sozusagen mir das intern wieder zusammenbasteln will ich nicht ;)

Ich suche was mathematisches, mit dem ich das lösen kann.

Jemand eine Idee?
 
Zuletzt bearbeitet:
Hallo Krumnix,
ich muss dir gestehen, dass ich aus deiner etwas konfusen Beschreibung nicht so richtig schlau geworden bin.
Was ich verstanden habe ist :
Du erhälst von einem externen System jede Minute einen Zwischenwert. Diesen Zwischenwert willst du aufsummieren. Was jetzt noch ? Das ist ja wohl nicht das Problem ...
Außerdem : bekommst du mit dem Zwischenwert einen Trigger, damit du weißt, dass es ein neuer Wert ist ?

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Krumnix,
ich muss dir gestehen, dass ich aus deiner etwas konfusen Beschreibung nicht so richtig schlau geworden bin.
dito

Ich probiere es mal so:
Du bekommst täglich einen aufsummierten Wert (Gesamtsumme) gesendet und willst wissen wie viele das am Vortag waren?
Code:
     U #Neuer Wert bekommen
     FP #Flanke
     SPBN END
     L #Wert von Externer Steuerung
     L #Altwert gespeichert
     -I
     T #Vortageswert
     L 5 (fünfer Schritt)
     /I
     L 60 (Sekunden)
     /I
     T #Takte pro Tag
 
     L #Wert von Externer Steuerung
     T #Altwert gespeichert
End:NOP 0
 
Nein.

Das externe System addiert in sich selbst alle 60sec einen Wert um 5.
Dies geschieht nur, wenn das System in Automatik ist.
Einmal am Tag bekomme ich den gesamten Wert gesendet.
Also eine Zahl alle 24h. Danach resette das System den Wert wieder.
-> 1. Tag 500, 2. Tag 655, 3. 200 etc....

Nun will der Kunde alle Werte, die das System sich gebildet hat, aufaddiert haben.
Dies soll dann als Gesamtwert angezeigt werden.

D.H. wenn man das Gerät zur Stunde Null in Auto versetzt und 1min ist vorbei
steht in deren internen Variable (hab ich keinen Zugriff drauf) ne 5.
Nach weitern 60sec und Auto ein steht ne 10 drin.
Der Kunde will nun aber, das ich ihm 15 anzeige also 5+10.

Wenn das System mir z.B. 40 sendet, dann muss ich
5+10+15+20+25+30+35+40 berechnen und anzeigen.

Jedoch will ich das nicht als Schleife machen, weil ich mir sicher bin, das es
dafür auch ne mathematische Formel gibt.
 
Zuletzt bearbeitet:
Ich glaube es war der alte Gauß, der hierfür eine Lösung hatte.

n = Endwert / 5
Summe = (n/2) * (n+1) * 5

Achtung: Werte können Nachkommastellen haben.

Beispiel:
Wert = 30
n = 30 / 5 = 6
Summe = (6/2) * (6+1) * 5 = 3 * 7 * 5 = 105

Wert = 35
n = 35 / 5 = 7
Summe = (7/2) * (7+1) * 5 = 3.5 * 8 * 5 = 140

Entfall der Nachkommastellen durch Umformen:

Summe = 5 * (Wert/5 + 1) * (Wert/5/2) = (Wert + 5) * Wert / 10

In diesem Fall den möglichen Überlauf des Wertebereiches beachten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK ... verstanden ...
Die Berechnung, mit der du das verwechselt nennt sich Fakultät. Diese Multipliziert allerdings die Vorgängerwerte und ist m.E. auch keine Funktion von Step 7. Das, was du da hast, ist allerdings genau das, wie du es darstellst - nämlich eine Schleifen-Funktion - auch dann wenn du es vielleicht Integral nennen möchtest. Deine Routine wäre dann also :
Code:
Summe := 0 ;
for i:= 5 to Endwert by 5 do
   summe := summe + i ;
end_for ;
... hier mal als SCL-Script dargestellt.
Was spricht dagegen, das so (oder von mir aus auch in einem AWL-Pendant) auszurechnen ? Hast du Angst, dass dir deine Zykluszeit wegen der Berechnung um 5ms in dem Berechnungs-Zyklus ansteigt ?

Gruß
LL
 
n = Endwert / 5
Summe = (n/2) * (n+1) * 5

Achtung: Werte können Nachkommastellen haben.

Beispiel:
Wert = 30
n = 30 / 5 = 6
Summe = (6/2) * (6+1) * 5 = 3 * 7 * 5 = 105

Wert = 35
n = 35 / 5 = 7
Summe = (7/2) * (7+1) * 5 = 3.5 * 8 * 5 = 140

Wenn man in der Formel die Division mit 2 erst zum Schluss durchführt, bekommt man keine Nachkommastellen:

Code:
n = Wert / 5
 
    n * (n + 1) 
S = ----------- * 5
         2
 
Wert = 30
 
n = 30 / 5 = 6
 
    6 * (6 + 1)
S = ----------- * 5 = 105
         2 
 
Wert = 35
 
n = 35 / 5 = 7
 
    7 * (7 + 1) 
S = ----------- * 5 = 140
         2

Entfall der Nachkommastellen durch Umformen:

Summe = 5 * (Wert/5 + 1) * (Wert/5/2) = (Wert + 5) * Wert / 10

In diesem Fall den möglichen Überlauf des Wertebereiches beachten

Trotzdem kann man natürlich in die Formel den Wert einzufügen und die Formel entsprechend umformen:

Code:
n = Wert / 5
 
    n * (n + 1) 
S = ----------- * 5
         2
 
    Wert    Wert    
    ---- * (---- + 1)
     5       5        
S = ----------------- * 5
            2
 
    Wert    Wert   5 
    ---- * (---- + -)
     5       5     5
S = ----------------- * 5
            2
 
    Wert    Wert + 5 
    ---- * (--------)
     5         5   
S = ----------------- * 5
            2
 
    Wert   
    ---- * (Wert + 5)
     25     
S = ----------------- * 5
            2
 
    Wert * (Wert + 5)     
S = ----------------- * 5
           50
 
    Wert * (Wert + 5)     
S = -----------------
           10

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich glaube es war der alte Gauß, der hierfür eine Lösung hatte.

n = Endwert / 5
Summe = (n/2) * (n+1) * 5

Achtung: Werte können Nachkommastellen haben.

Beispiel:
Wert = 30
n = 30 / 5 = 6
Summe = (6/2) * (6+1) * 5 = 3 * 7 * 5 = 105

Wert = 35
n = 35 / 5 = 7
Summe = (7/2) * (7+1) * 5 = 3.5 * 8 * 5 = 140

Entfall der Nachkommastellen durch Umformen:

Summe = 5 * (Wert/5 + 1) * (Wert/5/2) = (Wert + 5) * Wert / 10

In diesem Fall den möglichen Überlauf des Wertebereiches beachten

Danke, genau den alten Gaus hab ich gesucht.

Ich wusste, das es da mal was gab, aber ist zu lange her ;)

Und die Steuerung, in der ich arbeite ist keine Siemens, sondern kommt
von Phoenix ;)

Frohe Ostern
 
Zurück
Oben