Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 40

Thema: AWL Code in schaltalgebra

  1. #1
    Anonymous Gast

    Standard


    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
    Zitieren Zitieren Gelöst: AWL Code in schaltalgebra  

  2. "
    Zitat Zitat von Anonymous
    *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."


  3. #2
    Registriert seit
    25.07.2005
    Ort
    Vogelsbergkreis
    Beiträge
    1.717
    Danke
    48
    Erhielt 68 Danke für 60 Beiträge

    Standard

    Zitat Zitat von Student
    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
    Zitieren Zitieren Re: AWL Code in schaltalgebra  

  4. #3
    Registriert seit
    14.10.2005
    Beiträge
    137
    Danke
    3
    Erhielt 5 Danke für 5 Beiträge

    Standard

    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

  5. #4
    Anonymous Gast

    Standard

    Zitat Zitat von seeba
    Zitat Zitat von Student
    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.
    Zitieren Zitieren Re: AWL Code in schaltalgebra  

  6. #5
    Anonymous Gast

    Standard

    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

  7. #6
    Anonymous Gast

    Standard

    Zitat Zitat von Anonymous
    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[

  8. #7
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von Anonymous
    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
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  9. #8
    Anonymous Gast

    Standard

    Zitat Zitat von Rainer Hönle
    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.

    Zitat Zitat von Rainer Hönle
    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?

  10. #9
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von Anonymous
    *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.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  11. #10
    Registriert seit
    18.12.2005
    Beiträge
    71
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin

    Zitat Zitat von Gast
    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".

    Zitat Zitat von student
    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

Ähnliche Themen

  1. C++ Code
    Von rabit im Forum Hochsprachen - OPC
    Antworten: 9
    Letzter Beitrag: 03.01.2010, 10:42
  2. AWL-Code Interpretaion
    Von gravieren im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 08.05.2008, 12:34
  3. SCL code
    Von awl-scl im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 14.01.2008, 17:02
  4. AWL-code
    Von Anonymous im Forum Simatic
    Antworten: 29
    Letzter Beitrag: 09.11.2005, 16:48
  5. schaltalgebra
    Von Anonymous im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 03.11.2005, 13:09

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •