-> Hier kostenlos registrieren
Hallo Allerseits,
ich bin dabei meinen Melde-FC mit Hilfe von Array
[*] etwas dynamisch zu gestalten, was die Array Grenzen angeht.
CPU1214C, TIA Portal V15
Hier der übergebene DB:
Hier der FC:
Ich habe den FC von unnötigem Code befreit.
CPU bringt folgende Fehlermeldung:
Hab ich was vergessen???
ich bin dabei meinen Melde-FC mit Hilfe von Array
[*] etwas dynamisch zu gestalten, was die Array Grenzen angeht.
CPU1214C, TIA Portal V15
Hier der übergebene DB:
Code:
STRUCT AlarmIn : Array[0..99] of Bool;
END_STRUCT;
Hier der FC:
Code:
FUNCTION "202 AlarmHandling" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
AlarmIn : Array
[*] of Bool;
AlarmRelease : Array
[*] of Bool;
AlarmQuit : Array
[*] of Bool;
resetDelayed : Bool;
END_VAR
VAR_OUTPUT
blinkAlarm : Bool;
collAlarm : Bool;
newAlarm : Bool;
END_VAR
VAR_IN_OUT
AlarmOut : Array
[*] of Bool;
AlarmOutOld : Array
[*] of Bool;
END_VAR
VAR_TEMP
i : Int;
tempUpperBound : DInt;
tempLowerBound : DInt;
tempUpperBound1 : DInt;
tempLowerBound1 : DInt;
END_VAR
BEGIN
// Meldungs Init
#blinkAlarm := FALSE;
#collAlarm := FALSE;
#tempUpperBound := UPPER_BOUND(ARR := #AlarmIn, DIM := 1);
#tempLowerBound := LOWER_BOUND(ARR := #AlarmIn, DIM := 1);
FOR #i := #tempLowerBound TO #tempUpperBound DO
// Alarme, Störungen
// wenn einkommende Meldung mit Freigabe, dann Meldung ausgeben
IF #AlarmIn[#i] THEN
#collAlarm := FALSE;
END_IF;
END_FOR;
END_FUNCTION
Ich habe den FC von unnötigem Code befreit.
CPU bringt folgende Fehlermeldung:
Temporärer CPU-Fehler: Bereichslängenfehler in FC 202 betrifft OB 123-Ausführung
Lesezugriff Typsicherer V-Bereich
fehlerhafte Adresse, Operand ersetzt
Bearbeitung wird fortgesetzt (keine OB-Bearbeitung)
PLC_1 / PLC_1
interne Adressierungsdetails: Caddr=16#00000050, Bereich: Typsicherer V-Bereich, Adr: 4294409296
Der durch die Zugriffsadresse adressierte Wert liegt außerhalb oder nicht vollständig innerhalb des zulässigen Operandenbereiches (CPU-spezifische Größe oder Größe des Datenbausteins).
Behebung:
Wählen Sie die Zugriffsadresse so, dass der adressierte Wert vollständig im jeweils zulässigen Operandenbereich liegt. Überprüfen Sie auch die Adressierungsart und den adressierten Operandentyp.
Öffnen Sie den Baustein, um den Fehler im Kontext des Baustein-Programmcodes anzuzeigen.
Hab ich was vergessen???