Step 7 S7-SCL (v5.6) Gültigkeit von Variablen

MisterCP

Level-2
Beiträge
25
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
An einer Kundenanlage erfolgte ein Update des Step 7 von v5.3 auf v5.6.
Im Zuge des Updates anderer Bausteine wurde ich aufgefordert, auch zwei unveränderte Bausteine in SCL neu zu kompilieren.
Bei einem Baustein gelang das problemlos, beim zweiten gibt er zwei Fehlermeldungen, deren Ursache sich mir nicht erschließt.

Die im zweiten Baustein (FB300) angemeckerte Konstante MAX := 45; wurde im zuvor kompilierten Baustein FB301 exakt genau so verwendet und dort anstandslos kompiliert.

FUNCTION_BLOCK FB300

TITLE = 'Datenhandling Typ 1'

VERSION : '1.0'
AUTHOR : PSG_HU
NAME : Typ1
FAMILY : Umfahrg

CONST
MAX := 45; // max. TOW-Anzahl im internen Gleisabbild
END_CONST

...

VAR
Daten : ARRAY[1..MAX] OF TOW_Data; // internes Datenabbild
Loop_Daten : INT; // Schleifenzähler für Datenübernahme/-übergabe
Suchen : INT; // Schleifenzähler für Datensuche
FP_Import_Pos_1 : BOOL; // Flankenmerker Import_Pos_1
FP_Export_Pos_1 : BOOL; // Flankenmerker Export_Pos_1
FP_Import_Pos_n : BOOL; // Flankenmerker Import_Pos_n
FP_Export_Pos_n : BOOL; // Flankenmerker Export_Pos_n
END_VAR



Die Fehlermeldungen lauten
E: L 00020 C 00005: Identifier already exists.
E: L 00064 C 00022: Invalid Constant.

Bei Doppelklick wird einmal auf die Zeile mit MAX := 45; bzw. auf die Verwendung von MAX in der Deklaration des Array gesprungen.

Hat die Konstante auf einemal Gültigkeit über den Baustein FB301 hinaus, dann aber wieder nicht mehr???
Deklaration der Konstante und Verwendung im Array sind in FB300 und FB301 identisch.

Vielen Dank für eure Tips
 
Kann das nicht erklären.
Dein Vorschlag die Konstante umbenenen ist interessant.
Was passiert wenn es eine andere Name ist, aber die gleiche in beide Bausteine ?
Und wenn unterschiedliche ?
 
Umbenennen war tatsächlich die Lösung.
Sind jetzt wieder in beiden gleich benannt, aber es funktioniert trotzdem.
Lag wohl tatsächlich an "MAX", was wohl früher möglich war, jetzt aber eine andere Funktion innehat.
Ich vermute mal, dass das Schlüsselwort "MAX" ab V5.3 SP1 nicht mehr nutzbar ist aufgrund folgender Änderung:
1644325532788.png
 
Zurück
Oben