Step 7 AWL SET seltsamer Ablauf

Feng

Level-1
Beiträge
116
Reaktionspunkte
21
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Gemeinde.
Ich bin zufällig gerade auf ein „lächerliches Phänomen“ (AWL) gestoßen.
Hier zwei Miniprogramme:

SET
= DB1.Ergebnis ->Ergebnis (BOOL) wie zu erwarten =1


SET
O DB1.Wert_Bool (0)
= DB1.Ergebnis ->Ergebnis unerwartet =0 ???

Wieso funktioniert die ODER-Verknüpfung nicht?
Schon mal danke im Voraus!
Gruß Feng
 
SET löscht das Erstabfrage-Bit /ER im CPU-Status. Danach wird eine neue Verknüpfung begonnen - egal, ob die mit U, O oder X beginnt, der Status wird direkt ins VKE übernommen ohne mit dem vorhandenen VKE verknüpft zu werden.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Harald.
Danke für die schnelle Antwort.

  1. Ich bin ja schon beruhigt, dass die CPU keinen Fehler hat – (ähnliche Bedenken hatte ich vor längerer Zeit, als die CPU seltsame Zeitfehler aufwies – der „böse Vogel“ war dann nach langem Suchen die fehlerhaft arbeitende MMC-Karte in der CPU).
    Aber es ist wohl Programmierschicksal, dass man denkt „So! Jetzt habe ich aber endlich einen Hardware-Konstruktions-Fehler erwischt!“ – und dann hat nach einiger Zeit doch immer Siemens gewonnen…
  2. Ich will SET in das Programm einbauen, wenn ich zum Test eine „1“ auslösen will – im Normalzustand ist SET durch // deaktiviert.
  3. Aber ich verstehe den Sinn nicht, warum SET das Erstabfrage-Bit löscht.
  4. Um obiges Beispiel wieder aufzugreifen. Müsste ich
    SET
    = DB1.Hilfs_Bool

    O DB1.Hilfs_Bool
    O DB1.Wert_Bool (0)
    = DB1.Ergebnis
schreiben? Wäre ja furchtbar!
Hast Du ne bessere Idee?

Gruß Feng
 
Zuletzt bearbeitet:
im Normalzustand ist SET durch // deaktiviert.
...

  1. Um obiges Beispiel wieder aufzugreifen. Müsste ich
    SET
    = DB1.Hilfs_Bool

    O DB1.Hilfs_Bool
    O DB1.Wert_Bool (0)
    = DB1.Ergebnis
schreiben? Wäre ja furchtbar!

Hast Du ne bessere Idee?
Setz' doch das sonst deaktivierte Set hinter das ODER (und nicht davor), wenn dass Ergebnis sowieso unabhängig vom ODER auf HIGH sein soll.

PS: Davor macht doch nur bei einem UND Sinn, wenn das Ergebnis nur noch von dem einem UND abhängen soll.
 
SET ist nunmal als Verknüpfungsabgrenzung definiert.

Um den Ziel zu erreichen könntest du auch "O TestBit_TRUE" schreiben wobei dieses halt z.B. ein Merker ist der immer 1 ist.
Das hat auch den Vorteil dass du diesen über die Querverweise wiederfinden kannst. Ein SET/CLR hast du schnell irgendwo im Code liegen gelassen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Ronin - das war bei mir der "Knackpunkt"!

Es wäre ja von Vorteil, wenn man mal eine
Liste der Befehle mit Verknüpfungsabgrenzung hätte.
Habe ich noch nicht gefunden – auch nicht im von mir sehr geschätzten Buch von Hans Berger „Automatisieren mit STEP 7 in AWL und SCL“
Gruß Feng
 
Danke Ronin - das war bei mir der "Knackpunkt"!

Es wäre ja von Vorteil, wenn man mal eine
Liste der Befehle mit Verknüpfungsabgrenzung hätte.
Habe ich noch nicht gefunden – auch nicht im von mir sehr geschätzten Buch von Hans Berger „Automatisieren mit STEP 7 in AWL und SCL“
Gruß Feng

Google mal "S7 AWL", dort kommt man dann relativ schnell (drittes Ergebnis oder so) zu einem PDF das alle AWL Anweisungen enthält, dieses PDF kannst du dann nach "/ER" durchsuchen und du siehst sofort wie welche Operation das Erstabfragebit beeinflusst.
 
Naja oder eben so, wie man das halt vor 20 Jahren gemacht hat.

Ich nehme an, Du hast eine Konstruktion ala:
Code:
O M1
O M2
O M3
O M4
=M5

nun willst Du (anscheinend) schreiben:

Code:
O M1
O M2
O M3
SET
O M4
=M5

und das funzt aus o.a. Gründen nicht.

Schreibt halt stattdessen:

Code:
O M1
O M2
O M3
O M0.1 //M0.1= immer true
O M4
=M5

dann hast Du dieses Problem gelöst UND, Du kannst Deine ganzen "Brücken" in der Referenz finden und wieder ausbauen.
 
Zurück
Oben