-> Hier kostenlos registrieren
Hallo,
ich arbeite mich gerade für die Programmierung einer S7-1200 in SCL ein, und habe ein Problem mit einer CASE-Anwendung:
In den Einstellungen des Bausteines habe ich "ENO automatisch setzen" angewählt.
Wenn ich diesen Baustein nun im einer anderen Funktion (FUP) aufrufe, und die Schritte mit den Endschaltern hochzählen will, wird der Ausgang "ENO" Null, sobald der Schritt einen geraden Wert annimmt. Beim nächsten Schritt (ungerade) ist ENO wieder Eins, d.h. der Code wurde ohne Fehler durchlaufen.
Was ist jetzt das Problem? Darf ich in einer CASE-Anweisung keine UND-Verknüpfung zusätzlich verwenden, da der Baustein ohne Fehler durchlaufen wird, wenn die UND-Abfrage gelöscht wird.
Oder kann TIA V11 SCL keine UND-Verknüpfung, denn ENO ist immer Null bei dieser einfachen Testfunktion:
Gruß
Koslovski
ich arbeite mich gerade für die Programmierung einer S7-1200 in SCL ein, und habe ein Problem mit einer CASE-Anwendung:
Code:
FUNCTION "Kette1" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
"Start" : Bool; // Starten
"Stop" : Bool; // Stoppen
"DB_oben" : Bool; // Endschalter oben
"DB_unten" : Bool; // Endschalter unten
"N_Ventile" : Int; // Anzahl Ventile
END_VAR
VAR_OUTPUT
"Ende" : Bool; // Kette beendet
END_VAR
VAR_IN_OUT
"Schritt" : Int; // Stand der Schrittkette
END_VAR
BEGIN
IF #Stop THEN
#Schritt :=0;// Schrittkette zurücksetzen
#Ende := false;
END_IF;
CASE #Schritt OF
0: IF #Start THEN #Schritt :=1;
#Ende:=false;
END_IF; // Start Abreinigen
1,3,5 : IF #DB_oben THEN #Schritt := #Schritt+1 ; END_IF; // Oberer Endschalter erreicht
2,4,6 : IF #DB_unten AND (#Schritt < 2*#N_Ventile) THEN #Schritt := #Schritt+1;
ELSE
#Ende := true;
END_IF; // Unterer Endschalter erreicht
END_CASE;
END_FUNCTION
In den Einstellungen des Bausteines habe ich "ENO automatisch setzen" angewählt.
Wenn ich diesen Baustein nun im einer anderen Funktion (FUP) aufrufe, und die Schritte mit den Endschaltern hochzählen will, wird der Ausgang "ENO" Null, sobald der Schritt einen geraden Wert annimmt. Beim nächsten Schritt (ungerade) ist ENO wieder Eins, d.h. der Code wurde ohne Fehler durchlaufen.
Was ist jetzt das Problem? Darf ich in einer CASE-Anweisung keine UND-Verknüpfung zusätzlich verwenden, da der Baustein ohne Fehler durchlaufen wird, wenn die UND-Abfrage gelöscht wird.
Oder kann TIA V11 SCL keine UND-Verknüpfung, denn ENO ist immer Null bei dieser einfachen Testfunktion:
Code:
FUNCTION "UND_Test" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
"W1" : Bool;
"W2" : Bool;
END_VAR
VAR_OUTPUT
"W3" : Bool;
END_VAR
BEGIN
IF #W1 AND #W2 THEN #W3 :=1; END_IF;
END_FUNCTION
Gruß
Koslovski