Elemente aus mehreren identischen Structs addieren (SCL)

tyftel

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

in einen FB übergebe ich 3 Structs, die jeweils 32 REAL-Variablen enthalten. (Nutzung von Arrays ist in diesem Fall ausgeschlossen)

Nun möchte ich die 3 Structs Wert für Wert addieren. Also:

StructGesamt.Wert1 := Struct1.Wert1 + Struct2.Wert1 + Struct3.Wert1;
StructGesamt.Wert2 := Struct1.Wert2 + Struct2.Wert2 + Struct3.Wert2;
usw.

Nun möchte ich das nicht 32 mal da hinknippern,...bläht das ganze ja ordentlich auf.

Was gibt es da für elegantere Lösungen? (Step7 v11 sp2)
 
Wenn die Struct ausschließlich die 32 Realwerte oder diese zumindest "am Stück" enthalten könnte man vielleicht mit AT etwas anfangen, also eine andere Sicht auf die Struct festlegen. Schau dir das mal in der Hilfe an und Suche hier im Forum nach "AT", da hatten wir schon einige Beispiele, vielleicht war sogar dein Problem schon dabei. Dann kannst du ja hier weiterfragen. Mit der Sicht könntest du dann über einen Index die Addition in einer Schleife durchführen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
liegen die Sturcts im DB gleich hintereinander, kann man das ganze quasi als Array[1..32]OfStuct interpretieren? dann wäre es simpel...

Code:
Summe := 0;
FOR i := 1 TO 32 DO
    Summe := Summe + Struct[i].Wert;
END_FOR;
 
Wenn die Struct ausschließlich die 32 Realwerte oder diese zumindest "am Stück" enthalten könnte man vielleicht mit AT etwas anfangen, also eine andere Sicht auf die Struct festlegen. Schau dir das mal in der Hilfe an und Suche hier im Forum nach "AT", da hatten wir schon einige Beispiele, vielleicht war sogar dein Problem schon dabei. Dann kannst du ja hier weiterfragen. Mit der Sicht könntest du dann über einen Index die Addition in einer Schleife durchführen.

Ah, danke, auf die Idee mit dem AT bin ich garnicht gekommen. Zumindest bei der Definition meckert er schonmal nicht rum,...werde das ganze mal zu ende führen und dann berichten.


EDIT: OK, funktioniert Astrein!


liegen die Sturcts im DB gleich hintereinander, kann man das ganze quasi als Array[1..32]OfStuct interpretieren? dann wäre es simpel...

Code:
Summe := 0;
FOR i := 1 TO 32 DO
    Summe := Summe + Struct[i].Wert;
END_FOR;

Was außerhalb des FBs passiert sollte wenn möglich irrelevant sein. D.h. es werden nur die Struct-Variablen von außen an den FB gehängt. Wo die dann liegen soll keinen Einfluss auf den Programmablauf haben.
 
Zuletzt bearbeitet:
Was außerhalb des FBs passiert sollte wenn möglich irrelevant sein. D.h. es werden nur die Struct-Variablen von außen an den FB gehängt. Wo die dann liegen soll keinen Einfluss auf den Programmablauf haben.

Soweit bin ich bei dir, hab das ganze nur mal in den Raum geschmissen weil ich die Randbedingungen in deinem Fall nicht kenne und mir dachte dass du evtl. genau das suchst.
 
Zurück
Oben