Step 7 Lokaldaten ohne Deklaration?

UDP

Level-2
Beiträge
423
Reaktionspunkte
121
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine Anlage die in S7 Classic programmiert wurde und folgenden Code enthält:

Code:
U M0.1
= L 27.0
U L27.0
SPBNB _001_

M0.1 wird im Programm auf 1 gesetzt. Der Aufruf erfolgt genau so im OB1 (bzw. mit weiteren Lokaldaten-Bits aber der gleichen Logik) mehrfach im OB1.

In der Deklaration vom OB1 ist aber gar kein Lokalbereich dafür deklariert:

1656399151366.png
Die erste Frage die sich mir stellt: Warum macht man das? Gibt es dafür irgend einen sinnvollen Grund? Ich kann doch an der Stelle den Code auch einfach weglassen und komme zum gleichen Ergebnis. Die nächste Frage ist, wie kann es sein, dass ich auf Lokaldatenbereiche zugreifen kann, die gar nicht deklariert sind.

Hat jemand schonmal etwas ähnliches gesehen? Ich werde nicht so richtig schlau daraus.
 
Die erste Frage die sich mir stellt: Warum macht man das? Gibt es dafür irgend einen sinnvollen Grund?
Ich vermute mal, da wurde was in KOP/FUP programmiert und du hast es jetzt in der AWL Ansicht.

Die nächste Frage ist, wie kann es sein, dass ich auf Lokaldatenbereiche zugreifen kann, die gar nicht deklariert sind.
Das geht natürlich. Lokaldatenbereiche müssen nicht deklariert sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok dass man Lokaldatenbereiche nicht deklarieren muss, war mir gar nicht bekannt. Ich hoffe ich sehe es auch nicht nochmal...

Aber der Code hat doch keine Funktion? Ich setze dort ein Lokalbit auf 1 und danach kommt SPBN, sodass ich nie springe. Oder wie meinst du das mit dem umschalten von KOP/FUP auf AWL?
 
Aber der Code hat doch keine Funktion?
Funktion hat der Code schon, wenn der M0.1 TRUE ist, wird nicht gesprungen, ist er FALSE, dann wird gesprungen.

Oder wie meinst du das mit dem umschalten von KOP/FUP auf AWL?
So ein Code mit Lokaldaten kann entstehen, wenn man CODE in KOP/FUP erstellt und dann auf die AWL Ansicht umschaltet.
 
Naja M0.1 wird im Netzwerk darüber immer auf 1 gesetzt (ist der "Eins"-Merker).

Wenn der Code automatisch entsteht beim umschalten der Ansicht, dann wird das wohl die Ursache sein. Ich nutze die Funktion eigentlich nicht, daher war mir das nicht bewusst.

Vielen Dank fürs aufschlauen :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn der Code automatisch entsteht beim umschalten der Ansicht, dann wird das wohl die Ursache sein.
Beim umschalten werden diese Zugriffe auf Lokaldaten (teilweise) generiert. Die Funktion an sich muss ein Programmierer
so umgesetzt haben. Ich vermute mal bei einer Inbetriebnahme, so dass er über ein schnelles Umtippen von M0.1 auf M0.0
die Bearbeitung des Codes in der Sprungmarke abschalten konnte.
 
Da wird ein Programmierer in FUP oder KOP den EN eines Baustein-Aufrufs mit M0.1 beschaltet haben, und Du siehst Dir die AWL-Darstellung des Codes an. Daß der M0.1 irgendwo anders auf immer 1 gesetzt wird, interessiert den FUP/KOP-Editor nicht.
Eigentlich ist die Beschaltung des EN mit "immer 1" unnötig. Vielleicht macht der Programmierer das immer so (und weiß vielleicht gar nicht warum?) oder er war so ein Typ, der mit diesem Trick mit dem "immer 1" am Netzwerk-Anfang unbedingt gaaanz viel Code in ein KOP-Netzwerk quetschen will, mehr als eigentlich in KOP möglich ist?
Zeige uns doch mal das gesamte Netzwerk.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, man sieht, da waren zwei Bausteinaufrufe "DPRD_DAT" in KOP (oder FUP) in einem Netzwerk, was in KOP/FUP nur durch hintereinanderschalten (ENO zu EN) oder durch den Trick mit einer "Immer1"-Variable geht.

Dann hat da wohl ein zweiter Programmierer die Bausteinaufrufe entfernen/deaktivieren, aber nicht löschen wollen und kannte vielleicht nur die naheliegende Lösung, den Code auszukommentieren. Daß er dafür einfach nur aus dem U "TRUE" ein UN "TRUE" machen braucht, da ist er wohl nicht drauf gekommen, oder wollte absichtlich den Call-Code aus dem Baustein und den Referenzdaten entfernen. Die ganze Logik mit dem L 27.0 wollte er wohl nicht entfernen, vielleicht hatte er da zu wenig Zeit zum Nachdenken zum Verstehen?

Harald
 
Zurück
Oben