Ohne deinen Rechengang genau nachzuvollziehen: So wie ich es gemacht habe, hatte ich die geringste CPU-Belastung durch die fortlaufende Berechnung (nur eine Addition und ein Vergleich). Gleichzeitig konnte ich alles in Integer durchführen (S5) und, indem ich für Vergleich und Abziehen nicht den Wert für eine sondern für 1/10 Ah genommen habe (also 90736 im Beispiel), ereeichen, daß ich im Ah-Zähler Zehntel Amperestunden hatte. Diese werden als Ganzzahl an ein OP5 übergeben, daß dann per Konfiguration den Dezimalpunkt einfügt.
Generell sind Integer-Operationen auch auf der S7 schneller als Gleitkomma-Operationen.
Mit Gleitkomma kannst du natürlich im OB35 rechnen:
Summe:=Summe+20A*0.1Sekunden. Dann hast du die Summe in As immer korrekt. Wenn du die Anzeige aber in Amperestunden willst, teilst du im Hauptprogramm immer noch durch 3600.
Das kannst du theoretisch vermeiden indem du vorher aus den Faktoren 0.1 und 1/3600 einen Faktor errechnest: 0.1/3600=2.77e-5.
Im OB35 rechnest du dann:
Summe:=Summe+20A*2.77e-5.Stunden
Deine Gleitkomma-Zahlen haben 23 Mantissen-Bits. Das entspricht etwa 7 Zehnerpotenzen. So ab 100 oder 1000 Ah wird dann der Zählerstand nicht mehr höher, weil die zu addierende Zahl unterhalb der Rechengenauigkeit für die Summe liegt.
Da kannst du dir wieder helfen, indem du die A nicht 10 mal pro Sekunde sondern nur noch alle 10 Sekunden summierst. Aber damit erfaßt du Schwankungen im Strom weit weniger genau...