TIA Rampenfunktion anpassen in awl

Grüß euch,

meine erste Frage: Warum AWL, oder handelt es sich um die 300er/400er Welt?

Anyhow,
sowohl in der TIA-Welt als auch in der Simatic-Managerwelt gäbe es die Funktion "LIMIT" (FC22) die auch über AWL aufgerufen werden kann.

Kurz mein Pseudocode dazu:
Code:
L output
L 3.0
-R
T minimum

L output
L 3.0
+R
T maximum

CALL LIMIT
MN:= minimum
IN:= input
MX:= maximum
OUT:= output //RET_VAL := output für Simatic Manager

würde das weiterhelfen?

Also wurden inzwischen die Bedeutungen bzw. Wirkungsweisen der Schrittweite und der Begrenzung auf ±3 gegenüber der anfänglichen Definition getauscht!?
Das wird ja immer verwirrender ... :unsure:
es sind zwei verschiedene Sachen. Die Schrittweite oder hier gennant der Schritt ist eine Konstante damit wird für die Stufe oder Treppe der Rampenfunktion genutzt. Aber die Begrenzung hat mit dem Sollwerteingabe zu tun der muss in einem definierten Bereich vorliegen wenn nicht soll er begrenzt werden das ist was ich als größere SW_änderung bezeichne
 
Grüß euch,

meine erste Frage: Warum AWL, oder handelt es sich um die 300er/400er Welt?

Anyhow,
sowohl in der TIA-Welt als auch in der Simatic-Managerwelt gäbe es die Funktion "LIMIT" (FC22) die auch über AWL aufgerufen werden kann.

Kurz mein Pseudocode dazu:
Code:
L output
L 3.0
-R
T minimum

L output
L 3.0
+R
T maximum

CALL LIMIT
MN:= minimum
IN:= input
MX:= maximum
OUT:= output //RET_VAL := output für Simatic Manager

würde das weiterhelfen?
Das muss ich in awl programmieren. Es ist Vorgabe
 
Ist so besser?
Code:
L 0.2 // Schritt
T #Schritt
UN #Hilfsbit_Rampe // ie Hilfsbit_Rampe dient zur Freigabe zw.0.2 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

//#############prüfe hier ob der der eingegebene Sollwert im Bereich liegt####################################

L #SW_Unterhalb
L #SW_Input
<=R
SPB m005
TAK                        // rette den SW_Unterhalb
T Neuer_Sollwert
SPA SW_Aenderung
m005: NOP 0
UN bMerker
SPB b001
BEA
b001: L #SW_Oberhalb 
L #SW_Input
>=R
SPB m006
TAK                           //  rette den SW_Oberhalb
T Neuer_Sollwert      // bei größere SW_Änderung arbeite ich mit dem Wert weiter unten
SPA SW_Aenderung

m006: NOP 0
L #SW_Input
L #SW_Output
-R
ABS
L #Schritt
>R
SPB gross
L #SW_Input //wenn Eingabesollwert kleiner als der Schritt=>keine Rampe
T #SW_Output
SPA ende1
gross: NOP 0
L #SW_Input
L #SW_Output
<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 #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
SET
S bMerker
BEA
ende1: R #Hilfsbit_Rampe
 
Wenn Dein Programm jetzt wunschgemäss funktioniert: ja, definitiv.

Wenn Du nur die "Optik" meinst: ein Anfang ist schon mal gemacht.
Jetzt noch in Spalten anordnen:
1. Spalte: SprungZiele (alias Lables),
2. Spalte: OP-Codes (alias Operatoren),
3. Spalte: Operand und zu guter letzt
4. Spalte: Kommentare.
Code:
LBL           OPC OP                Comment

              L   0.2               // Schritt
              T   #Schritt       
              UN  #Hilfsbit_Rampe   // ie Hilfsbit_Rampe dient zur Freigabe zw.0.2 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               
                                  
//#############prüfe hier ob der der eingegebene Sollwert im Bereich liegt####################################
                                  
              L   #SW_Unterhalb   
              L   #SW_Input       
              <=R                 
              SPB m005           
              TAK                   // rette den SW_Unterhalb
              T   Neuer_Sollwert 
              SPA SW_Aenderung   
m005:         NOP 0               
              UN  bMerker         
              SPB b001           
              BEA                 
b001:         L   #SW_Oberhalb   
              L   #SW_Input       
              >=R                 
              SPB m006           
              TAK                   // rette den SW_Oberhalb
              T   Neuer_Sollwert    // bei größere SW_Änderung arbeite ich mit dem Wert weiter unten
              SPA SW_Aenderung   
                                  
m006:         NOP 0               
              L   #SW_Input       
              L   #SW_Output     
              -R                 
              ABS                 
              L   #Schritt       
              >R                 
              SPB gross           
              L   #SW_Input         //wenn Eingabesollwert kleiner als der Schritt=>keine Rampe
              T   #SW_Output     
              SPA ende1           
gross:        NOP 0               
              L   #SW_Input       
              L   #SW_Output     
              <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   #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               
              SET                 
              S   bMerker         
              BEA                 
ende1:        R   #Hilfsbit_Rampe
Habe mein Excel überredet, die Leerzeichen einzufügen. Und in den Zeilen, die nur aus einem Kommentar bestehen, habe ich die Kommentare noch manuell ganz nach links gerückt.
Das ist doch "augenfreundlicher".

Übrigens: wie lang dürfen die SprungZielNamen eigentlich sein?
 
4 Zeichen. Sprungmarken müssen mit Buchstabe oder Unterstrich beginnen.
Danke Harald,
so bin ich's noch von S5 gewohnt. Ob da allerdings der Unterstrich als 1. Zeichen zulässig war ... mag sein und ist jetzt auch egal.
Insofern braucht man also bei S7 bzw. TIA nicht umzudenken!
Mir kamen die längeren SprungMarken merkwürdig vor, deshalb dachte ich, ich frage mal nach.
Aber in PseudoCode (also einer "AbsichtsErklärung") kann man die "eloquentere" Schreibweise sicherlich tolerieren.
Wegen der Semikolons, die ich vermisse (obwohl es die in S5 nicht gab), habe ich mir verkniffen, zu fragen. ;)
 
Zurück
Oben