Also ich komm da nicht weiter, weist nicht wo der Fehler drin ist.
das beim neustart bekomme ich nicht weg und ich habe das erst heut morgen gemerkt das die Zeit (
tonSpeed ( in := bUP OR bDwn , pt := SpeedHighTime ); (* t#2000ms - wie Lange wurde die Taste betaetigt *)) geht auch irgendwie nicht. der macht sofort die hoch zählung und wenn ich nur mal kurz die taste betätige überspringt er dann gleich 2-3 ausser ich stelle es auf 1s

Ich schmeiss mal mein code plus den alten mal rein hoff das ich nichts vergessen hab.
Sorry wusste nicht wie man so ein extra fenster erstellt.
Global Variables
(*Drehmoment in % für 4 verschiedene anzeigen*)
g_nTorqueLimit_1 : INT := 1000 ;
g_nTorqueLimit_2 : INT := 1000 ;
g_nTorqueLimit_3 : INT := 800 ;
g_nTorqueLimit_4 : INT := 800 ;
(*Max & Min. Wert in % & Schrittweite 1% & 5%*)
g_nTorqueMax :INT := 1000;
g_nTorqueMin : INT := 10;
g_nTorqueStep : INT := 10;
g_nTorqueStep50 : INT := 50;
(*Taster (X für alte version mit 5 Schrittweite*)
g_b1Plus : BOOL ; g_b2Plus : BOOL ;
g_b1Minus : BOOL ; g_b2Minus : BOOL ;
g_b1PlusX : BOOL ; g_b2PlusX : BOOL ;
g_b1MinusX : BOOL; g_b2MinusX : BOOL ;
g_b3Plus : BOOL ; g_b4Plus : BOOL ;
g_b3Minus : BOOL ; g_b4Minus : BOOL ;
g_b3PlusX : BOOL ; g_b4PlusX : BOOL ;
g_b3MinusX : BOOL ; g_b4MinusX : BOOL ;
Program Variables
PROGRAM PRG_Set_5
(*VAR_IN_OUT
Summ : INT;
END_VAR*)
VAR
Summ : INT ;
tpTakt: TP:
tTakt: TIME;
tonSpeed: TON;
bUPs: BOOL;
bDwns: BOOL;
bV_tpTakt: BOOL;
SpeedHighTime: TIME := t#5000ms;
SpeedHigh: TIME := t#1000ms;
SpeedLow: TIME := t#1000ms;
END_VAR
VAR_INPUT
bExecute :BOOL;
END_VAR Summ : INT ;
Program Neu
IF bExecute AND g_bActiveSettings = 5 THEN
IF Summ < g_nTorqueMin THEN
Summ := g_nTorqueMin;
ELSIF
Summ > g_nTorqueMax THEN
Summ := g_nTorqueMax;
END_IF;
tonSpeed ( IN := g_b1Plus OR g_b1Minus , PT := SpeedHighTime);
IF tonSpeed.Q THEN
tTakt := SpeedHigh ;
ELSE
tTakt := SpeedLow;
END_IF;
IF (g_b1Plus OR g_b1Minus) AND NOT tpTakt.Q THEN
bV_tpTakt := TRUE;
ELSE
bV_tpTakt := FALSE;
END_IF;
tpTakt ( IN := bV_tpTakt , PT := tTakt);
IF g_b1Plus THEN
bUPs := TRUE;
END_IF;
IF g_b1Minus THEN
bDwns := TRUE;
END_IF;
IF bUps AND NOT tptakt.Q AND ((Summ + g_nTorqueStep) <= g_nTorqueMax ) THEN
Summ := Summ + g_nTorqueStep;
g_nTorqueLimit_1 := Summ;
bUps := FALSE ;
ELSIF
bDwns AND NOT tpTakt.Q AND (( Summ - g_nTorqueStep) >= g_nTorqueMin ) THEN
Summ := Summ - g_nTorqueStep;
g_nTorqueLimit_1 := Summ;
bDwns := FALSE ;
ELSIF NOT tpTakt.Q THEN
bDwns := FALSE;
bUps := FALSE;
END_IF;
END_IF
Programm alt
(*Torque 1 A >B*)
IF g_b1Plus THEN
g_b1Plus := FALSE;
Summ := g_nTorqueLimit_1 + g_nTorqueStep ;
IF Summ <= g_nTorqueMax THEN
g_nTorqueLimit_1 := Summ ;
ELSE
g_nTorqueLimit_1 := g_nTorqueMax;
END_IF
END_IF
IF g_b1PlusX THEN
g_b1PlusX := FALSE;
Summ := g_nTorqueLimit_1 + g_nTorqueStep5 ;
IF Summ <= g_nTorqueMax THEN
g_nTorqueLimit_1 := Summ ;
ELSE
g_nTorqueLimit_1 := g_nTorqueMax;
END_IF
END_IF
Usw. für Minus und die anderen 3 Anzeigen