AWL Code in schaltalgebra

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

wie kann ich einen S7 AWL Code in
den Schaltalgebra Syntax übersetzen

Bsp.:

U E 1.0
O E 2.0
U E 3.0
= A 1.0

(E1.0 oder E 2.0) und E 3.0 = A 1.0

so müsste die gleichung lauten woher weis ich wo ich die Klammern
setzen muß.

Wie macht das die Siemens SPSn die bauen doch bestimmt keine Gleichung und lösen die ??
Was passiert wenn Klammern ins Spiel kommen ??

Dankeschön
 
Student schrieb:
Hallo zusammen,

wie kann ich einen S7 AWL Code in
den Schaltalgebra Syntax übersetzen

Bsp.:

U E 1.0
O E 2.0
U E 3.0
= A 1.0

(E1.0 oder E 2.0) und E 3.0 = A 1.0

so müsste die gleichung lauten woher weis ich wo ich die Klammern
setzen muß.

Wie macht das die Siemens SPSn die bauen doch bestimmt keine Gleichung und lösen die ??
Was passiert wenn Klammern ins Spiel kommen ??

Dankeschön

E1.0 oder (E2.0 und E3.0) = A 1.0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

die Logik dahinter ist ganz einfach:

Es wird immer das VKE mit dem nächstem Befehl verknüpft:

U E1.0 / Wenn 1, dann VKE = 1
U E2.0 / Wenn 1 und VKE= 1, dann VKE wieder 1
O E3.0 / Wenn VKE=1 oder E 3.0 ist 1 dann VKE = 1
= A1.0 / Wenn VKE = 1 dann ist Ausgang 1.0 auch 1.


Bei einigen Steuerungen wie z.B der Mitsubishi ist es dann so das man nach einer Verknüpfung z.B. mit einem weiterem Ladebefehl fortfährt. Dies führt dazu das das Ergebnis der ersten Verknüpfung auf den Stack gepackt wird. Das Ergebnis der zweiten Verknüpfung wird dann durch die Befehle ULD oder OLD wiederum mit dem Stack verknüpft. So spart man sich die Klammern. Das gleiche gilt imo auch für die S7-200.


Die Klammern führen dazu das die Verknüpfung behandelt wird als würde sie allein stehen. Das Ergebnis der Klammerverknüpfung wird dann bei "U(" mit der vorhergehenden UND verknüpft, und bei "O(" ODER verknüpft.

Beispiel:

U E1.0
U E1.1
O(
U E1.2
U E1.3
)

Hier wird erst gekuckt ob die Verknüpfung in den Klammern = 1 ist, und das ganze dann Oder-Verknüpft mit E1.1 UND E1.0.
Genau so würde man das auch im Schaltalgebra beschreiben.
Es ist das gleiche wie die Sache mit Punkt- vor Strichrechnung

Das in Klammern wird zuerst behandelt, und das Ergebnis weiterbehandelt.
E1.0 ^ E1.1 v ( E1.2 ^ E1.3)

In der Mathematik würde stehen 1.0 + 1.1 * ( 1.2 +1.3)

Damit nicht zuerst 1.1 * 1.2 und dann die Addition gerechnet wird, muss man es in Klammern packen...

Besser kann ich es leider nicht in Worte fassen...

Torsten
 
seeba schrieb:
Student schrieb:
Hallo zusammen,

U E 1.0
O E 2.0
U E 3.0
= A 1.0

(E1.0 oder E 2.0) und E 3.0 = A 1.0

E1.0 oder (E2.0 und E3.0) = A 1.0

Ähm , ich bin ja auch noch neu im SPS Bereich, aber Boolsche Algebra ist nicht neu für mich und irgendwie scheint mir Seebas Beitrag nicht korrekt zu sein. Auf der S7-200 (andere SPS sollten aber auch nicht anders funktionieren) verbinden die Befehle U und O den obersten Stackwert mit dem angegebenen Operanden und speichern das Erbenis wieder auf dem Stack. Insofern ist der vorgegebene Ausdruck erst einmal nicht eindeutig, da wir gar nicht wissen was für ein Wert x am Anfang auf dem Stack liegt. Der korrekte boolsche Ausdruck ist also

x und E1.0 oder E2.0 und E3.0 = A1.0 bzw. vollständig geklammert
( ( (x und E1.0) oder E2.0 ) und E3.0 ) = A1.0

Für Seebas Ausdrück

E1.0 oder (E2.0 und E3.0) = A 1.0

würde der AWL-Code so lauten:

LD E1.0
LD E2.0
U E3.0
OLD
= A1.0

LD läd einen Wert in den Stack und OLD verknüpft die obersten beiden Werte des Stacks mittels boolschem "oder" und speichert das Ergebnis wieder auf dem Stack .

Die Klammerung ergibt sich aus der Reihenfolge in der die Elemente auf den Stack geladen werden und wann die Verknüpfungen ausgeführt werden. Stichwort ist UPN (Umgekehrte Polnische Notation) bzw. RPN (Reverse Polish Notation) und 0-Adress-Maschine (Stackmaschine). Sch<u mal in einschlägiger Literatur, da wirst du zu den Begriffen garantiert was finden.
 
Habe unten angegeben Code in mehrere S7-300 eingespielt.
Der Eingang E1.0 bewirkt gar nichts bzw. hat keinen Einfluss auf A1.0.

U E 1.0
O E 2.0
U E 3.0
= A 1.0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anonymous schrieb:
Habe unten angegeben Code in mehrere S7-300 eingespielt.
Der Eingang E1.0 bewirkt gar nichts bzw. hat keinen Einfluss auf A1.0.

U E 1.0
O E 2.0
U E 3.0
= A 1.0

Wenn das Programmstartet ist der Stack leer. Die Und-Verknüpfung von E1.0 mit dem obersten Element ist damit immer 0, ergo hat E1.0 keine Einfluss. Siehe auch mein erstes Posting (Ausdruck unbestimmt, da wir nicht wissen welcher Wert auf dem Stack liegt)

Probiere mal folgendes:

LD E 1.0
O E 2.0
U E 3.0
= A 1.0[
 
Anonymous schrieb:
Wenn das Programmstartet ist der Stack leer. Die Und-Verknüpfung von E1.0 mit dem obersten Element ist damit immer 0, ergo hat E1.0 keine Einfluss. Siehe auch mein erstes Posting (Ausdruck unbestimmt, da wir nicht wissen welcher Wert auf dem Stack liegt)
Bei Siemens gibt es die Besonderheit der Erstabfrage. In diesem Falle wirkt ein U bzw. O wie ein LD.

Probiere mal folgendes:

LD E 1.0
O E 2.0
U E 3.0
= A 1.0
Ein LD gibt es (zumindest bei 300er u 400er) nicht. Dies erfolgt implizit aufgrund des Erstabfragebits. Am besten im Tabellenhandbuch der Befehle nachsehen, welche Befehle das /ERAB beeinflussen bzw. auswerten.
 
Rainer Hönle schrieb:
Ein LD gibt es (zumindest bei 300er u 400er) nicht. ...
Am besten im Tabellenhandbuch der Befehle nachsehen, welche Befehle das /ERAB beeinflussen bzw. auswerten.

*LOL* Wie gesagt bin auch neu in Siemens SPS. Mein Code war, wie im vorhergehenden Postigng beschrieben für eine 200er. Das die einzelnen SPS Serien (200, 300, 400) unterschiedliche Befehlssätze haben ist ja echt ein Knaller. "Reusability" ist bei Siemens wohl ein Fremdwort. Da hilft dann wirklich nur das Handbuch.

Rainer Hönle schrieb:
Dies erfolgt implizit aufgrund des Erstabfragebits.

Hm, wie ist das beschriebene Verhalten
Der Eingang E1.0 bewirkt gar nichts bzw. hat keinen Einfluss auf A1.0.
denn zu erklären wenn mit U E1.0 der Eingang doch geladen wird?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anonymous schrieb:
*LOL* Wie gesagt bin auch neu in Siemens SPS. Mein Code war, wie im vorhergehenden Postigng beschrieben für eine 200er. Das die einzelnen SPS Serien (200, 300, 400) unterschiedliche Befehlssätze haben ist ja echt ein Knaller. "Reusability" ist bei Siemens wohl ein Fremdwort. Da hilft dann wirklich nur das Handbuch.
"Böse" Zungen nehaupten, die 200er käme nicht von Siemens, sondern von ti. Deshalb die Unterschiede. Mit meiner Bemerkung (300er und 400er) wollte ich ausdrücken, dass ich es dort weiss. Mit der 200er habe ich keinerlei Programmiererfahrung.

Hm, wie ist das beschriebene Verhalten
Wenn es sich um eine Erstabfrage handelt (/ERAB==0), dann wird ein Befehl wie U, O, ... als LD ausgeführt. UN, ON, .. dann als LDN.
 
Moin

Gast schrieb:
Hm, wie ist das beschriebene Verhalten

"Der Eingang E1.0 bewirkt gar nichts bzw. hat keinen Einfluss auf A1.0."

denn zu erklären wenn mit U E1.0 der Eingang doch geladen wird?

Wir wissen ja nicht was du auf der S7-300 wirklich angestellt hast, aber in solchen Fällen empfehle ich dann doch im Handbuch von Berger "Automatisieren mit STEP7 und SCL" auf Seite 121 das zu lesen, was dort zur Erstabfrage geschrieben steht, was im übrigen auch in gleicher Weise schon immer für die S5 gegolten hat:
....Die Erstabfrage stellt immer den Beginn einer Verknüpfung dar. Die bei einer Erstabfrage stehende Verknüpfungsvorschrift (UND, ODER, Exklusiv-ODER) spielt dabei keine Rolle.
Ansonsten hält diese Seite und die folgenden Seiten für "student" alle Antworten auf seine Fragen bereit und das nicht nur für ihn sondern besonders auch für "Gast".

student schrieb:
U E 1.0
O E 2.0
U E 3.0
= A 1.0

(E1.0 oder E 2.0) und E 3.0 = A 1.0
Die algebraische Gleichung ist korrekt. Im Hinblick auf die S7-300/400 könnte man sie auch ohne Klammerung als die "tatsächliche" Verknüpfungsabfolge auf der CPU ansehen.

Gruß Barnee
 
Nochmals zur verdeutlichung ...

Hallo,

danke für die große Anteilnahme ...

mein Problem ist wie ich (Bsp. erster Eintrag) die Klammern zu setzen hab.
UND bindet ja stärker als ODER
warum also kommt also (E1 oder E2) und E3 raus und nicht
E1 oder E2 und E3

Mit welcher (immer gültigen) Regel kann ich den SPS AWL Code
in Schaltalgebra verwandeln und hab die Klammern richtig

Reicht es wenn ich immer um die aktuelle und die folgende Zeile eine Klammer setze ??

Dankeschön
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Re: Nochmals zur verdeutlichung ...

Student schrieb:
UND bindet ja stärker als ODER
warum also kommt also (E1 oder E2) und E3 raus und nicht
E1 oder E2 und E3

Das ist nicht richtig, UND bindet bei der SPS nicht stärker als ODER. Die Verknüpfungen werden, solange keine Klammern gesetzt wurden, einfach nacheinander, also von oben nach unten, abgearbeitet.

U E 1.0
O E 2.0
U E 3.0
O E 4.0
U E 5.0
= A 1.0

Daraus wird:

U E 1.0
O E 2.0
= Zwischenergebnis 1

U Zwischenergebnis 1
U E 3.0
= Zwischenergebnis 2

U Zwischenergebnis 2
O E 4.0
= Zwischenergebnis 3

U Zwischenergebnis 3
U E 5.0
= A1.0

Student schrieb:
Reicht es wenn ich immer um die aktuelle und die folgende Zeile eine Klammer setze ??

Ja, das müsste so funktionieren.

U E 1.0
O E 2.0
U E 3.0
O E 4.0
U E 5.0
= A 1.0

Darus wird:

A1.0 = (E1.0 ODER E2.0) UND E3.0) ODER E4.0) UND E5.0

Gruß Kai
 
Hallo,

hört sich nach Denkblockade an, denn so schwer ist es nicht. Manchmal reicht es sich 20 Minuten mit was anderem zu beschäftigen und dann nochmal darüber nachzudenken. Was den Elektrikern auch oft hilft ist etwas in KOP zu programmieren und das dann in AWL übersetzen zu lassen. Man sieht dann schön das ein ODER immer über allen davor liegenden Verknüpfungen liegt, d.h. höherwertig ist.

Ich habe nochmal versucht das in Worte zu fassen, aber ein Bild würde hier mehr als tausend Worte sagen.

Torsten
 
Hallo,

offensichtlich hat hier jeder seine eigene Pilosophie :lol: . Da kann ja meine persönliche nicht mehr viel zur allgemeinen Verunsicherung beitragen.

Folgenden AWL-Code habe ich mal als S7-FUP gleicher Funktionalität und als Bosch-FUP beigefügt. Ich denke, die Bilder sprechen für sich.

Um die Anlage zu sehen, musst du angemeldet und eingeloggt sein!


Code:
U		E0.0
O		E0.1
U		E0.2
O		E0.3
U		E0.4
O		E0.5
U		E0.6
=		A0.0


Gruß, Onkel
 

Anhänge

  • s7-fup.jpg
    s7-fup.jpg
    13,7 KB · Aufrufe: 150
  • bosch-fup.jpg
    bosch-fup.jpg
    16,8 KB · Aufrufe: 149
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Onkel Dagobert,
entweder muß verstehe ich hier was falsch oder der von dir abgebildete
FUP-Code müßte so in AWL stehen.
U e0.0
O e0.1
U(
Ue0.2
Oe0.3
)
U(
Ue0.4
Oe0.5
)
Ue0.6
= a0.0
????
HDD
 
Hallo,

der in Bosch ist definitiv falsch. Der Code so wie beschrieben in AWL kann nicht in FUP übersetzt werden von Step 7. Lächerlich eigentlich. Wenn mir mal einer sagt wie ich KOP einfügen kann könnte ich mal posten was aus dem AWL Code IMO werden müsste.

Torsten
 
Hallo Onkel Dagobert,
Onkel Dagobert schrieb:
Code:
U E0.0
O E0.1
U E0.2
O E0.3
U E0.4
O E0.5
U E0.6
= A0.0
Was erwartest Du in S7-AWL bei so einer sinnfreien Eingabe ?
Die Regelungen zu Und-vor-Oder und Konsorten sind festgeschrieben und in der entsprechenden Programmieranleitung der S7 nachzulesen.

Gruß
Question_mark
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo HDD,

dein Code macht genau das selbe wie mein Code, oder auch der hier:
Code:
      U(    
      O     E      0.0
      O     E      0.1
      )     
      U(    
      O     E      0.2
      O     E      0.3
      )     
      U(    
      O     E      0.4
      O     E      0.5
      )     
      U     E      0.6
      =     A      0.0
Vorausgesetzt, wir bleiben bei Step7.

@Question_mark
Ich wollte eigentlich nur mal den Unterschied zu Bosch deutlich machen, denn der ist erheblich.


Gruß, Onkel
 
Hallo Torsten,

Torsten05 schrieb:
...der in Bosch ist definitiv falsch...
Das hört sich an wie die letzten Worte eines Programmierers :wink: . Kein Quatsch, bei Bosch ist das so, ODER vor UND.

Torsten05 schrieb:
... Der Code so wie beschrieben in AWL kann nicht in FUP übersetzt werden von Step 7...
Und? Das macht doch nichts. Vieles kann in FUP oder KOP nicht dargestellt werden.

KOP siehe Anlage.


Gruß, Onkel
 

Anhänge

  • s7-kop.jpg
    s7-kop.jpg
    7 KB · Aufrufe: 127
Hallo Onkel Dagobert,
Onkel Dagobert schrieb:
@Question_mark
Ich wollte eigentlich nur mal den Unterschied zu Bosch deutlich machen, denn der ist erheblich.
Ja schon klar, aber nicht dabei Äpfel mit Birnen vergleichen. Nur wenn ich bei beiden Systemen eine syntaktisch korrekte Eingabe mache, darf ich auch die Ergebnisse vergleichen.

Gruß
Question_mark
 
Zurück
Oben