NBerger
Level-3
- Beiträge
- 1.684
- Reaktionspunkte
- 513
-> Hier kostenlos registrieren
Habe da mal wieder ein merkwürdiges/falsches Verhalten der FW3.1.4 feststellen müssen. (TIA 20 Upd1)
In nun mehreren Anlagen kommt es an einzelnen, nicht allen betreffenden Stellen zu falschen Ergebnissen in Switch-Case Blöcken in denen eine For-Schleife integriert ist.
In einem Fall liefert eine IF-Aabfrage der Laufvariablen (#i) innerhalb der For-Schleife einen falschen Wert. Ja der Wert ist wirklich falsch und wird nicht nur online falsch angezeigt. (Habe leider derzeit keine Online-Verbindung zur Anlage uo das ich hier erstmal den Onlinestatus schuldig bleiben muss).
Auch wurde der Code bereits geändert, die Anlage muss schließlich funktionieren.
MyStatVar liefert hier den Wert 2 !!! (Etwas vereinfacht dargestellt... Die Zuweisung erfolgt übert eine Arrayvariable. Es wird die falsche Variable Adressiert)
In einem anderen Programm bastel ich Daten zusammen für eine Ethernet-Übertragung mittels serialize.
In einer For-Schleife (1-4) mit Arrayvariablen wird zumindest ein Wert innerhalb der Schleife mit einem falschen Wert gelesen/geschrieben.
Mache ich dies "ausgeschrieben" ohne For-Schleife mit Zahlen anstatt "#i", ist das Ergebnis korrekt.
Ist jemandem auch schon ein solches Fehlverhalten in änlichen Konstellationen aufgefallen?
Werde in den nächsten Tagen ein paar Versuche machen die For-Schleifen durch While-Do zu ersetzen bzw. parallel laufen zu lassen und die Ergebnisse zu vergleichen.
In nun mehreren Anlagen kommt es an einzelnen, nicht allen betreffenden Stellen zu falschen Ergebnissen in Switch-Case Blöcken in denen eine For-Schleife integriert ist.
In einem Fall liefert eine IF-Aabfrage der Laufvariablen (#i) innerhalb der For-Schleife einen falschen Wert. Ja der Wert ist wirklich falsch und wird nicht nur online falsch angezeigt. (Habe leider derzeit keine Online-Verbindung zur Anlage uo das ich hier erstmal den Onlinestatus schuldig bleiben muss).
Auch wurde der Code bereits geändert, die Anlage muss schließlich funktionieren.
Code:
2: // ...
For #i := 1 to 99 Do
If #i = 1 then
MyStatVar := #i;
End_If;
End_For;
MyStatVar liefert hier den Wert 2 !!! (Etwas vereinfacht dargestellt... Die Zuweisung erfolgt übert eine Arrayvariable. Es wird die falsche Variable Adressiert)
In einem anderen Programm bastel ich Daten zusammen für eine Ethernet-Übertragung mittels serialize.
In einer For-Schleife (1-4) mit Arrayvariablen wird zumindest ein Wert innerhalb der Schleife mit einem falschen Wert gelesen/geschrieben.
Mache ich dies "ausgeschrieben" ohne For-Schleife mit Zahlen anstatt "#i", ist das Ergebnis korrekt.
Code:
2: // Senden
#cnt := 0;
FOR #i := 1 TO 4 DO
// ...
#Menge := #Out[#i, 1]."mg/m" + #Out[#i, 2]."mg/m";
#ReturnValue := Serialize(SRC_VARIABLE := #Menge, DEST_ARRAY => #Senden, POS := #cnt);
// ...
#ReturnValue := Serialize(SRC_VARIABLE := #Out[#i, 3]."mg/m", DEST_ARRAY => #Senden, POS := #cnt);
//...
#ReturnValue := Serialize(SRC_VARIABLE := #Out[#i, 4]."mg/m", DEST_ARRAY => #Senden, POS := #cnt);
// ...
#Menge := #Out[#i, 5]."mg/m" + #Out[#i, 6]."mg/m";
#ReturnValue := Serialize(SRC_VARIABLE := #Menge, DEST_ARRAY => #Senden, POS := #cnt);
//...
#ReturnValue := Serialize(SRC_VARIABLE := #Out[#i, 7]."mg/m", DEST_ARRAY => #Senden, POS := #cnt);
// ...
#ReturnValue := Serialize(SRC_VARIABLE := #Out[#i, 8]."mg/m", DEST_ARRAY => #Senden, POS := #cnt);
// ...
#Menge := #Out[#i, 9]."mg/m" + #Out[#i, 10]."mg/m";
#ReturnValue := Serialize(SRC_VARIABLE := #Menge, DEST_ARRAY => #Senden, POS := #cnt);
END_FOR;
...
#Step := 3;
Ist jemandem auch schon ein solches Fehlverhalten in änlichen Konstellationen aufgefallen?
Werde in den nächsten Tagen ein paar Versuche machen die For-Schleifen durch While-Do zu ersetzen bzw. parallel laufen zu lassen und die Ergebnisse zu vergleichen.
Zuletzt bearbeitet: