Step 7 AWL IF Bedingungen

BenBVBler

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey ich habe ein kleines Logik Problem.

Folgendes möchte ich realisieren:

Wenn Variable1 gleich der Variablen2, dann soll Variable3 auf den Wert 1 gesetzt werden.
Wenn Variable1 gleich Variable4, dann soll Variable3 auf den Wert 2 gesetzt werden.
Wenn Variable1 gleich 0, dann soll Variable 3 auf den Wert 0 gesetzt werden.

so habe ich das versucht:

Netzwerk1
U(
L Variable1
L Variable2
==D
)
SPB E5

E5: L 1
T Variable3



Netzwerk2
U(
L Variable1
L Variable4
==D
)
SPB E6

E6: L 2
T Variable3



Netzwerk3
U(
L Variable1
L 0
==D
)
SPB E7

E7: L 0
T Variable3


Wo liegt mein Denkfehler ?

Es wird immer nur der Wert aus Sprung E7 übernommen...

Kann mir da jmd weiterhelfen, stehe auf dem Schlauch :(

Danke im Voraus,
Ben
 
Zuletzt bearbeitet:
Du müsstest SPB statt SPA nehmen ( springe bedingt, also wenn Verknüpfungsergebniss =1 )
Bei SPA ( springe absolut, wird immer gesprungen, also unabhängig vom vorherigem Ergebniss ).

Schau mal hier:
https://www.sps-lehrgang.de/spruenge-in-awl/
unter SPA und SPB

Und ich habe übersehen, du springst immer nur eine Zeile weiter, der Sprungbefehl hat somit keine Auswirkung.


Mit Grüßen
 
Zuletzt bearbeitet:
Kleiner Denkanstoss.
Was passiert in deinem Programm wenn die Sprunganweisung nicht erfüllt ist ?

Bsp.:
ich würde hier nen "Doppelsprung" nehmen.


U xxxx
U xxxx
SPB E5 // Bedingung erfüllt
SPA xx /Bedingung nicht erfüllt
 
Das Problem ist die Postion deiner Sprungziele, wenn du z.B. im ersten Netzwerk auf E5 springst überspringst du keine einzige Zeile, der Sprung ist nutzlos.
Code:
L     Variable1
      L     Variable2
      ==D   
[COLOR=#ff0000][B]      SPB E5[/B][/COLOR]

[COLOR=#ff0000][B]E5: [/B][/COLOR]  L     1
      T     Variable3

      L     Variable1
      L Variable4
      ==D   
[COLOR=#ff0000][B]      SPB E6[/B][/COLOR]

[COLOR=#ff0000][B]E6:[/B][/COLOR]   L 2
      T     Variable3

      L     Variable1
      L 0
      ==D 
[COLOR=#ff0000][B]      SPB   E7[/B][/COLOR]

[COLOR=#ff0000][B]E7:  [/B][/COLOR] L 0
      T     Variable3
Das würde folgendem entsprechen...
Code:
IF Variable1 = Variable2    THEN
END IF
Variable3 = 1
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo noch einmal,

so wäre es z.B. möglich.


Code:
      U(
      L     Variable1
      L     Variable2
      ==D   
[COLOR=#ff0000][B]      )
      SPB MM01[/B][/COLOR]

      U(
      L     Variable1
      L     Variable4
      ==D   
[COLOR=#ff0000][B]      )
      SPB MM02[/B][/COLOR]

      
      U(
      L     Variable1
      L     0
      ==D   
[COLOR=#ff0000][B]      )
      SPB MM03[/B][/COLOR]   

     
MM01 : L  1
SPA ENDE
MM02 : L  2
SPA ENDE
MM03 : L  0

ENDE:  T     Variable3
Mit Grüßen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ansonsten so:
Code:
      U(
      L     Variable1
      L     Variable2
      ==D   
[COLOR=#ff0000][B]      )
      SPB MM01[/B][/COLOR]

      U(
      L     Variable1
      L     Variable4
      ==D   
[COLOR=#ff0000][B]      )
      SPB MM02[/B][/COLOR]

      
      U(
      L     Variable1
      L     0
      ==D   
[COLOR=#ff0000][B]      )
      SPB MM03[/B][/COLOR]   

      // Keine Bedingung erfüllt, lade 99
      L 99
      SPA ENDE
     
MM01 : L  1
SPA ENDE
MM02 : L  2
SPA ENDE
MM03 : L  0

ENDE:  T     Variable3


Mit Grüßen
 
... und wo steht, daß bei einer erfüllten Bedingung alle weiteren Bedingungen nicht beachtet werden sollen? - auch nirgends :cool:


WENN..DANN..(SONST..) kann man so in AWL übersetzen:
Code:
[COLOR="#0000FF"]//WENN..DANN..SONST..[/COLOR]
[COLOR="#008000"]//*** WENN ***[/COLOR]
IF1:  U     Bedingung1
      SPBN ELS1          [COLOR="#008000"]//wenn nicht erfüllt, dann springe zu SONST-Zweig[/COLOR]

[COLOR="#008000"]//*** DANN ***[/COLOR]
      <tue_was>          [COLOR="#008000"]//Anweisungen wenn Bedingung erfüllt ist[/COLOR]
      SPA   EIF1         [COLOR="#008000"]//überspringe SONST-Zweig[/COLOR]

[COLOR="#008000"]//*** SONST ***[/COLOR]
ELS1: <tue_was>          [COLOR="#008000"]//Anweisungen wenn Bedingung nicht erfüllt ist[/COLOR]

[COLOR="#008000"]//*** ENDE_WENN ***[/COLOR]
EIF1:                    [COLOR="#008000"]//Ende der Bedingungs-Zweige (Sprungmarke kann auch an nächste Anweisung)[/COLOR]


[COLOR="#0000FF"]//WENN..DANN.. ohne SONST[/COLOR]
[COLOR="#008000"]//*** WENN ***[/COLOR]
IF2:  U     Bedingung2
      SPBN IF3           [COLOR="#008000"]//wenn nicht erfüllt, dann springe zu Anweisung hinter ENDE_WENN[/COLOR]

[COLOR="#008000"]//*** DANN ***[/COLOR]
      <tue_was>

[COLOR="#008000"]//*** ENDE_WENN ***[/COLOR]


IF3:  <weiter>

Für die Aufgabenformulierung des TE ergibt das:
Code:
      L     Variable1
      L     Variable2
      ==D
      SPBN  IF2

      L     1
      T     Variable3

IF2:  L     Variable1
      L     Variable4
      ==D
      SPBN  IF3

      L     2
      T     Variable3

IF3:  L     Variable1
      L     0
      ==D
      SPBN  Mxxx

      L     0
      T     Variable3

Mxxx: ...

Harald
 
Zurück
Oben