Awl

Waldi_März

Level-1
Beiträge
38
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

kann mir jemand helfen, ich verstehe nicht so ganz diesen Abschnitt:

A817: L #WINCC.Sollwert_Wartung
L 0.000000e+000
>R
L #Istwert_Restzeit_Wartung
L L#0
= L 38.2
==D
U L 38.2
SPBN A819
SET
= #Wartung_aktiv

So verstehe ich es:
Punkt1: Sollwert wird auf 0 verglichen (>R)
Punkt2: Restzeit wird auf 0 gesetzt und L 38.2 gesetzt
Punkt3: Punkt1 und 2 werden miteinander verglichen (==)
Punkt4: Falls es 1 ist und L38.2(ist sowieso immer auf 1) auch auf 1 ist,
wird wartung_aktiv gesetzt.

ich glaube es passt aber nicht so ganz hin.

Kann jemand was dazu sagen.
danke
waldi
 
Moin,

Hallo

So verstehe ich es:
Punkt1: Sollwert wird auf 0 verglichen (>R)
Punkt2: Restzeit wird auf 0 gesetzt und L 38.2 gesetzt
Punkt3: Punkt1 und 2 werden miteinander verglichen (==)
Punkt4: Falls es 1 ist und L38.2(ist sowieso immer auf 1) auch auf 1 ist,
wird wartung_aktiv gesetzt.

ich glaube es passt aber nicht so ganz hin.

Kann jemand was dazu sagen.
danke
waldi

Punkt 1: korrekt
Punkt 2: falsch, L38.2 wird auf 1 gesetzt, wenn Sollwert >0
Punkt 3: falsch, Restzeit wird mit 0 verglichen
Punkt 4: wenn die Restzeit =0 und Sollwert >0 sind wird "Wartung aktiv" gesetzt !? - Blick den Sinn net wirklich...

Gruß Micha
 
Hallo Waldi,

der Code ist ein wenig unübersichtlich. Ich sehe das so:
Code:
[SIZE=3][FONT=Times New Roman]// Sollwert parametriert?
[/FONT][/SIZE][SIZE=3][FONT=Times New Roman]A817: L     #WINCC.Sollwert_Wartung[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]L     0.000000e+000[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      >R    
[/FONT][/SIZE][SIZE=3][FONT=Times New Roman]      =     L     38.2

// Restzeit bis zur Wartung abgelaufen und Sollwert vorhanden?
// Dann Wartung aktiv setzen.
[/FONT][/SIZE] [SIZE=3][FONT=Times New Roman]      L     #Istwert_Restzeit_Wartung[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      L     L#0[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      ==D   [/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      U     L     38.2[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      SPBN  A819[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      SET   [/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]      =     #Wartung_aktiv[/FONT][/SIZE]

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
meine vermutung ist richtig, habe es gerade probiert,

aus:

Code:
*
IF (Sollwert_Wartung > 0 AND Istwert_Restzeit_Wartung = 0)
   THEN Wartung_aktiv := TRUE;
END_IF;

wird:

Code:
*
      L     #Sollwert_Wartung
      L     0.000000e+000
      >R    
      L     #Istwert_Restzeit_Wartung
      L     L#0
      =     L      8.3
      ==D   
      U     L      8.3
      SPBN  A7d0
      SET   
      =     #Wartung_aktiv
 
Code:
[FONT=Times New Roman][SIZE=3]A817: L #WINCC.Sollwert_Wartung[/SIZE][/FONT]
[SIZE=3][FONT=Times New Roman]L 0.000000e+000[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]>R [/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]L #Istwert_Restzeit_Wartung[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]L L#0[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]= L 38.2[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]==D [/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]U L 38.2[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]SPBN A819[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]SET [/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]= #Wartung_aktiv[/FONT][/SIZE]
ist ein wenig unkonventionell geschrieben. Ich hab mal die Befehle in eine Sinnvollere Reihenfolge gebracht und kommentiert:
Code:
[FONT=Times New Roman][SIZE=3]A817: L #WINCC.Sollwert_Wartung[/SIZE][/FONT]
[SIZE=3][FONT=Times New Roman]L 0.000000e+000[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]>R [/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]= L 38.2 // wenn Sollwert größer Null, wird Lokaldatenbit gesetzt[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]L #Istwert_Restzeit_Wartung[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]L L#0[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]==D // wenn Restzeit gleich null[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]U L 38.2 // und Sollwert größer Null[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]SPBN A819 // dann überspringe nicht[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]SET // VKE setzen (redundanter Befehl, da nach SPBN sowieso 1)[/FONT][/SIZE]
[SIZE=3][FONT=Times New Roman]= #Wartung_aktiv // und zuweisen (bewirkt ein setzen in Verbundung mit dem SPBN)[/FONT][/SIZE]
@4L ja, das ist irgend ein kompiliertes Zeug ...


(und ich schreib deutlich zu langsam)
 
wenn die Restzeit die Zeit bis zur Wartung ist, so wie Gebs geschrieben hat, macht das Sinn...
Habe das irgendwie als abgelaufene Zeit der Wartung gesehen.
Die Symbolik ist Schrott.
 
@Vielagig
Falsch, ich sehe hier kein ==D ... , jedenfalls nicht an der Stelle wo es in deinem Code sein sollte.

:confused:
... im ausgangscode ist ein ==D ... vielleicht solltest du beim test den richtigen variablentyp benutzen: DINT nicht INT oder REAL

Code:
*
FUNCTION FC126 : void
VAR_TEMP
    Sollwert_Wartung:REAL;// temporäre Variablen
    Istwert_Restzeit_Wartung:DINT;
    Wartung_aktiv:BOOL;
END_VAR

    IF (Sollwert_Wartung > 0 AND Istwert_Restzeit_Wartung = 0)
        THEN Wartung_aktiv := TRUE;
    END_IF;
    
END_FUNCTION

wird zu:

Code:
*
      SET   
      SAVE  
      =     L      8.2
      L     #Sollwert_Wartung
      L     0.000000e+000
      >R    
      L     #Istwert_Restzeit_Wartung
      L     L#0
      =     L      8.3
      ==D   
      U     L      8.3
      SPBN  A7d0
      SET   
      =     #Wartung_aktiv
A7d0: CLR   
      U     L      8.2
      SAVE  
      BE
 
Zuletzt bearbeitet:
:confused:
... im ausgangscode ist ein ==D ... vielleicht solltest du beim test den richtigen variablentyp benutzen: DINT nicht INT oder REAL

Code:
*
FUNCTION FC126 : void
VAR_TEMP
    Sollwert_Wartung:REAL;// temporäre Variablen
    Istwert_Restzeit_Wartung:DINT;
    Wartung_aktiv:BOOL;
END_VAR

    IF (Sollwert_Wartung > 0 AND Istwert_Restzeit_Wartung = 0)
        THEN Wartung_aktiv := TRUE;
    END_IF;
    
END_FUNCTION
wird zu:

Code:
*
      SET   
      SAVE  
      =     L      8.2
      L     #Sollwert_Wartung
      L     0.000000e+000
      >R    
      L     #Istwert_Restzeit_Wartung
      L     L#0
      =     L      8.3
      ==D   
      U     L      8.3
      SPBN  A7d0
      SET   
      =     #Wartung_aktiv
A7d0: CLR   
      U     L      8.2
      SAVE  
      BE

Ich teste doch nicht, aber man wird sich ja wohl mal verlesen dürfen ... :sm8:

P.S. Was sind Datentypen, muss man das wissen? *ROFL*

Mfg
Manuel
 
Zurück
Oben