AWL Verständnisproblem

invoices

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich sammle gerade die ersten Erfahrung mit SPS (Simatic 300 S7). Im Studium haben wir bisher nur Sprachen wie C oder Java behandelt.
ich habe eine Verständnisfrage zur AWL Logik:
Angenommen E1...E4 sind meine Eingänge und A1..A4 die Ausgänge

U E1
U E3
S A4
U E2
O E4
O E1
U E3
S A1

Was passiert denn, wenn die Abfrage U E1 nicht 1 ergibt. Wohin springe ich dann im Programm? Fange ich die zyklische Verarbeitung komplett von vorne an, so dass ich wieder bei Zeile 1 lande oder springe ich dann zur Zeile 4 oder wird weiter jede boolsche Funktion abgefragt, sodass ich mit Schritt 2 fortführe ?
Was ich mir beim obigen Code gedacht habe, war folgendes:

if(E1 == 1 && E3 ==1) A4 = 1;
if(E2==1 && (E4==1|| E1==1) &&E3==1)A1=1;
Also quasi zwei IF-Blöcke die unabhängig voneinander arbeiten.
 
Dieses Programm wird immer Zeile für Zeile abgearbeitet. Sprung ist da keiner drin.
Für die gewünschte Logik müsste das Programm allerdings etwas geändert werden:
Code:
U E1
U E3
S A4
U E2
U(
O E4
O E1
)
U E3
S A1
Wer kümmert sich eigentlich um das Rücksetzen von A4 und A1? Oder sollen die Ausgänge direkt den Zustand der Verknüpfung annehmen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was passiert denn, wenn die Abfrage U E1 nicht 1 ergibt. Wohin springe ich dann im Programm? Fange ich die zyklische Verarbeitung komplett von vorne an, so dass ich wieder bei Zeile 1 lande
Nein, wenn kein Sprungbefehl eingegeben wurde, wird auch nicht gesprungen.
Es wird weiter jede Anweisung abgearbeitet und entsprechend des Operanden und des aktuellen Zustandes verknüpft.

Wenn etwas "gesetzt" wird muss es auch wieder "zurückgesetzt" werden.
In Deinem Beispiel wäre eine einfache = Zuweisung wohl sinnvoller.
Und auf die Klammer achten.
Code:
   U E1
   U E3
   = A4
 
   U E2
   U(
   O E4
   O E1
   )
   U E3
   = A1
 
// oder
   U E2
   U E3
   U(
   O E4
   O E1
   )
   = A1

Oh, Rainer war schneller
 
Zuletzt bearbeitet:
@Paule:
Wenn er wirklich rücksetzen wollte, hätte er in seiner Logik einen else-Zweig reinschreiben müssen. Die gibt es ja sowohl in C als auch in Java.
Aber ich bin auch darüber gestolpert.

Zu deiner Edit: Ach ja, diese mal ausnahmsweise ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
vielen dank für die antwort.
ja das mitm zurücksetzen...hat mir das beispiel nur gerade ausm kopf gedacht.

bei dieser schreibweise hier:
Code:
U E1
U E3
S A4
U E2
U(
O E4
O E1
)
U E3
S A1
wie lange werden denn die ergebnisse bei AWL zu einem ergebnis zusammengefasst? Für den Befehl "S A1" ist ja nur dieser block interessant:
U E2
U(
O E4
O E1
)
U E3
werden also die Ergebnisse der Verknüpfungen nur solange zusammengefasst, bis das erste mal keine boolsche funktion vorkommt und dann werden wieder die ergebnisse aufs neue verknüpft?
 
Es gibt VKE-begrenzende Anweisungen, da gehören u.a. S und = dazu. Danach beginnt wieder eine Erstabfrage.
Ich empfehle die F1-Taste auf dem Befehl in Step7 zu drücken. Dort wird dann all dies angezeit. Auch ist das Studium der Befehlstabellen zu den jeweiligen CPUs sehr hilfreich.
 
ok vielen dank für den hinweis. leider liegt mir das programm S7 momentan net vor (ist nur auf den unirechnern installiert).
was ist denn genau der unterschied zwischen

U E2
U E3
U(
O E4
O E1
)

und einfach nur

U E2
U E3
O E4
O E1

Bei dem oberen beispiel hat man ja eine Alternativverzweigung oder? Also nachdem E3 1 ergibt, kann entweder E4 oder E1 ne 1 ergeben?
Was macht der denn beim unteren Beispiel dann?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist der Unterschied zwischen
if( E2==1 && E3==1 && (E4==1 || E1==1) )
und
if( E2==1 && E3==1 && E4==1 || E1==1 ) ?
Was hat Vorrang, und oder oder? Wie sieht das Ergebnis aus?
 
ok ich denke dann gilt hier die Regel und vor oder?
Bei: if( E2==1 && E3==1 && (E4==1 || E1==1) )
wird zuerst der klammerterm ausgewertet und dann mitm rest "verUNDet"

Das hier
( E2==1 && E3==1 && E4==1 || E1==1 ) ist gleichbedeutend dem hier oder:
( E2==1 && E3==1 && E4==1 )|| E1==1
weil die Undverknüpfungen vorang haben?
 
Klammern können Klarheit schaffen ! Müssen sie aber nicht.
Eine AWL Liste mit ca 12 Klammern ist nicht immer übersichtlich.

Habe eh die Anweisung alles in FUP zu schreiben. (Auch nicht gerade die Lösung)
 
Zurück
Oben