-> Hier kostenlos registrieren
Hallo an Alle,
ich muss eine Rampenfunktion in awl anpassen. Der neue Sollwert darf max. +/-3 oberhalb oder unterhalb des alten Sollwerts liegen und es soll bei größere Sollwertänderung auf 3 begrenzt werden. ich habe folgendes beschrieben aber es läuft nicht wie ich mir das vorstelle vor allem bei größere Sollwertänderung. was ist hier falsch oder habe ich hier ein Denkfehler. Ich bin neu in awl Programmierung.
L 0.2 // Schritt im Normalbetrieb
T #Schritt
UN #Hilfsbit_Rampe // ie Hilfsbit_Rampe dient zur Freigabe zw. 25.0 und 50.0
SPB m001
L 50.0
T #Schritt
m001: L #SW_Input
L #SW_Output
==R
SPB ende1
//###################neuer Sollwert Bereich##########
U "Merker_Freigabe"
SPB m002
L #SW_Output
T #Temp_SW_Output
m002: NOP 0
U "Merker_Freigabe"
SPB m003
L #Temp_SW_Output
L 3.0
+R
T #SW_Oberhalb
m003: NOP 0
U "Merker_Freigabe"
SPB m004
L #Temp_SW_Output
L 3.0
-R
T #SW_Unterhalb
m004: NOP 0
//#################################################
U(
L #SW_Input
L #SW_Unterhalb
>=R
)
SPB m005
SPA SW_Aenderung
m005: NOP 0
U(
L #SW_Input
L #SW_Oberhalb
<=R
)
SPB m006
SPA SW_Aenderung
m006: NOP 0
L #SW_Input
L #SW_Output
-R
ABS // Absolutwert nehmen
L #Schritt // lade Schritt in Akku 1 und Ergebnis von Subtraktion in Akku 2
>R // Vergleich auf grösser von Inhalt von Akku 2(Ergebnis der Subtraktion) mit Inhalt Akku 1(Schritt)
SPB gross
L #SW_Input //wenn Eingabesollwert kleiner als der Schritt=>keine Rampe
T #SW_Output
SPA ende1
gross: NOP 0
L #SW_Input //wenn Eingabesollwert größer als der Schritt ist, werden
L #SW_Output // zwei Fälle unterschieden
<R
SPB positiv
L #SW_Output // 1.Fall
L #Schritt
+R
T #SW_Output
SPA ende
positiv : NOP 0
L #SW_Output //2.Fall
L #Schritt
-R
T #SW_Output
SPA ende
//##########bei groeßeren Sollwertaenderung########################################################
SW_Aenderung : NOP 0
L #SW_Input
L #SW_Output
-R
T #SW_Aenderung
L #SW_Aenderung
L 3
>R
SPB oui
oui: NOP 0
L #SW_Oberhalb
T #Neuer_Sollwert
L #SW_Aenderung
L -3
<R
SPB non
non: NOP 0
L #SW_Unterhalb
T #Neuer_Sollwert
L #Neuer_Sollwert //Lade den neuen Sollwert
L #SW_Output // zwei Fälle unterschieden
<R
SPB lower
L #SW_Output // 1.Fall
L #Schritt
+R
T #SW_Output
SPA ende
lower: NOP 0
L #SW_Output //2.Fall
L #Schritt
-R
T #SW_Output
SPA ende
ende: NOP 0
BEA
ende1: R #Hilfsbit_Rampe
ich muss eine Rampenfunktion in awl anpassen. Der neue Sollwert darf max. +/-3 oberhalb oder unterhalb des alten Sollwerts liegen und es soll bei größere Sollwertänderung auf 3 begrenzt werden. ich habe folgendes beschrieben aber es läuft nicht wie ich mir das vorstelle vor allem bei größere Sollwertänderung. was ist hier falsch oder habe ich hier ein Denkfehler. Ich bin neu in awl Programmierung.
L 0.2 // Schritt im Normalbetrieb
T #Schritt
UN #Hilfsbit_Rampe // ie Hilfsbit_Rampe dient zur Freigabe zw. 25.0 und 50.0
SPB m001
L 50.0
T #Schritt
m001: L #SW_Input
L #SW_Output
==R
SPB ende1
//###################neuer Sollwert Bereich##########
U "Merker_Freigabe"
SPB m002
L #SW_Output
T #Temp_SW_Output
m002: NOP 0
U "Merker_Freigabe"
SPB m003
L #Temp_SW_Output
L 3.0
+R
T #SW_Oberhalb
m003: NOP 0
U "Merker_Freigabe"
SPB m004
L #Temp_SW_Output
L 3.0
-R
T #SW_Unterhalb
m004: NOP 0
//#################################################
U(
L #SW_Input
L #SW_Unterhalb
>=R
)
SPB m005
SPA SW_Aenderung
m005: NOP 0
U(
L #SW_Input
L #SW_Oberhalb
<=R
)
SPB m006
SPA SW_Aenderung
m006: NOP 0
L #SW_Input
L #SW_Output
-R
ABS // Absolutwert nehmen
L #Schritt // lade Schritt in Akku 1 und Ergebnis von Subtraktion in Akku 2
>R // Vergleich auf grösser von Inhalt von Akku 2(Ergebnis der Subtraktion) mit Inhalt Akku 1(Schritt)
SPB gross
L #SW_Input //wenn Eingabesollwert kleiner als der Schritt=>keine Rampe
T #SW_Output
SPA ende1
gross: NOP 0
L #SW_Input //wenn Eingabesollwert größer als der Schritt ist, werden
L #SW_Output // zwei Fälle unterschieden
<R
SPB positiv
L #SW_Output // 1.Fall
L #Schritt
+R
T #SW_Output
SPA ende
positiv : NOP 0
L #SW_Output //2.Fall
L #Schritt
-R
T #SW_Output
SPA ende
//##########bei groeßeren Sollwertaenderung########################################################
SW_Aenderung : NOP 0
L #SW_Input
L #SW_Output
-R
T #SW_Aenderung
L #SW_Aenderung
L 3
>R
SPB oui
oui: NOP 0
L #SW_Oberhalb
T #Neuer_Sollwert
L #SW_Aenderung
L -3
<R
SPB non
non: NOP 0
L #SW_Unterhalb
T #Neuer_Sollwert
L #Neuer_Sollwert //Lade den neuen Sollwert
L #SW_Output // zwei Fälle unterschieden
<R
SPB lower
L #SW_Output // 1.Fall
L #Schritt
+R
T #SW_Output
SPA ende
lower: NOP 0
L #SW_Output //2.Fall
L #Schritt
-R
T #SW_Output
SPA ende
ende: NOP 0
BEA
ende1: R #Hilfsbit_Rampe