Step 7 Eingangsbit von FB auf FALSE, obwohl beim Aufruf TRUE dran steht.

L4s3r73k

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

ich komme gerade von einer Baustelle und hab sprichwörtlich Geister gesehen oder Jesus übers Wasser laufen sehen.

Und zwar in Step7 Classic 5.6 mit 317 PN/DP CPU war eine Programmänderung bzw. Ergänzung notwendig.
Wegen Funktionserweiterung hab ich einen FC durch einen FB getauscht, der einmal instanziert/aufgerufen wird mit seinem entsprechenden IDB.
Nun hat dieser Baustein ein Boolsches Eingangsbit, welches zur Funktionsumschaltung dient plus einem Einganswort INT und einem Eingangs REAL.
Die Umschaltung der Funktionalität via Bit hat die ganze Woche funktioniert. Zuletzt sah ich das funktionieren Freitag Vormittag.
Am Nachmittag kamen einige Anfragen auf mich zu á la "Kannst du mal gucken warum dies und jenes nicht funktioniert?" dem ich natürlich nachgegangen bin, welche jedoch mit meinem FB nicht im entferntesten etwas zu tun haben.

Nun muss ich am Samstagmorgen mit Entsetzen feststellen, dass die Funktionsumschaltung nicht mehr wie am Vortag funktioniert. Bei näherer Betrachtung fällt auf, dass das Bit, das ich im Baustein als TRUE erwarte, außen auch als TRUE am Baustein dran steht, drinnen aber nicht ankommt. Irgendwo geht das Signal auf seltsame Weise verloren. Online sehe ich mir den IDB an und auch hier steht kein TRUE drin, obwohl außen am Bausteinaufruf die grüne Linie rein geht. "Gehe zur Verwendungstellle" hilft nicht. "Suchen und Ersetzen" im FB funktioniert, zumindest in meiner STEP7 Installation nicht. Ich habe die Reihenfolge der Eingangsdaten im Baustein ausgetauscht, neu übersetzt, IDB neu erzeugt, rein gespielt. Baustein verhält sich unverhändert unfunktional und das besagte geschaltete Eingangsbit geht verloren.

Die SPS hängt in einem ganzen Analgeverbund drin, hat eine InTouch HMI, in der ich keine Aktien habe, besitzt einen Kommunikationsprozessor, wo man nicht weiß, wo und was andere SPSsen in meiner SPS herumfummeln. Ich denke nur, dass wenn irgendwer von woanders aus einen DB in meiner SPS beschreibt, so zielgerichtet, dass dieses eine Bit auf 0 geschrieben wird, müsste das nach ändern der Eingangsdaten des FBs doch wieder funktionieren, was es nicht tut.

Ich brauche einen Gedankenanstoß, für wenn ich da nochmal hinfahren muss.
Und habe leider keine 300er CPU mit PN hier zum testen.

Vielen Dank.
 
Naja, in den CPU Firmware Changes Logs stehen ja immer behobene ("hoch sporadische") Fehler. Sowas mit falschem VKE nach Bausteinaufruf hat man da schon gelesen. (Auch bei classic 300/400)
Also mal aktuelle Firmware besorgen und wenn es geht testen.

....aber meistens sind es doch eigene Fehler oder dumme Zufälle...
Mal jemand anders drüber gucken lassen? Programm hier zeigen?
Status online in TEST-Betreib gemacht? Bausteinumgebung sinnvoll eingestellt ?
Vergleich gemacht + Referenz aktuell ?
Zeitpunkt der Status-Ausgabe mal geändert?
Variablen in Hilfsvariablen vorher/im FB/nachher wegspeichern?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Liegts vielleicht an der Firmware der CPU? Welche CPU genau, welche FW-Version genau ist drauf?
Wird der FB in FUP oder KOP oder AWL aufgerufen?
Ist das Netzwerk vor dem FB-Aufruf VKE-technisch korrekt "abgeschlossen"? --> testweise vor dem Netzwerk ein Netzwerk mit nur CLR oder SET oder Dummy-Zuweisung einfügen.
Ich würde vermutlich kurzerhand erstmal zwischen VKE und FB-Eingang einen Konnektor ---(#)--- setzen.

PS: Status-Verfälschung durch externe Schreibzugriffe würde ich an der Stelle ausschließen
vielleicht hilft es, wenn du uns den Programmcode des Aufruf-Netzwerkes zeigst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde auch auf ein nicht abgeschlossenes VKE tippen. Ein paar Screenshots würden helfen.
+1
Gibt es AWL Code bevor die FB Bausteinaufruf ?

Ich nenne dies, wenn keine andere Erklärung gefunden werden kann.
Wegen Funktionserweiterung hab ich einen FC durch einen FB getauscht, der einmal instanziert/aufgerufen wird mit seinem entsprechenden IDB.
Bist du ganz sicher es gibt nur 1 Instanz ?
Hast du vielleicht für Test-Zwecke einen weiteren Instanz eingerichtet ? (Und vergessen, sowas passiert).
Um einen einzelne FB Instanz online zu beobachten gibt es eine genaue Verfahren.
  • Die CPU muss den 'Test' Modus aktiviert haben.
  • Den relevante FB-Instanz Aufruf muss man in STEP7 finden, markieren und mit "Monitor with call-up path' öffnen. (Deutsch "Beobachten mit Aufruf-Pfad" ?).
 
Kann es sein dass in dem FC, den du in einen FB ungewandelt hast, im inneren AWL-Code ist, der eines der folgenden Konstrukte enthält?
Code:
LAR2

+ AR2

AUF DI [xxx]
 
Naja, in den CPU Firmware Changes Logs stehen ja immer behobene ("hoch sporadische") Fehler. Sowas mit falschem VKE nach Bausteinaufruf hat man da schon gelesen. (Auch bei classic 300/400)
Also mal aktuelle Firmware besorgen und wenn es geht testen.

....aber meistens sind es doch eigene Fehler oder dumme Zufälle...
Mal jemand anders drüber gucken lassen? Programm hier zeigen?
Status online in TEST-Betreib gemacht? Bausteinumgebung sinnvoll eingestellt ?
Vergleich gemacht + Referenz aktuell ?
Zeitpunkt der Status-Ausgabe mal geändert?
Variablen in Hilfsvariablen vorher/im FB/nachher wegspeichern?

Also Problem ist, ich hab keine CPU hier, Fernwartung gibts auch nicht und dafür wollte ich jetzt nichtmehr dahin fahren, da zum Glück, Stand jetzt, die Anlage auch ohne das Gimmick funktioniert.
Beim Laden war zuletzt was zu sehen von wegen "In der CPU sind noch Testfunktionen aktiv...." Es war aber nichts geforced oder so.
Vergleich war gemacht, alles aktuell. Wie ändere ich den Zeitpunkt der Status-Ausgabe?
Ich habe vor dem Baustein versucht die Variable explizit auf TRUE zu prügeln - hat nicht funktioniert.

Liegts vielleicht an der Firmware der CPU? Welche CPU genau, welche FW-Version genau ist drauf?
Wird der FB in FUP oder KOP oder AWL aufgerufen?
Ist das Netzwerk vor dem FB-Aufruf VKE-technisch korrekt "abgeschlossen"? --> testweise vor dem Netzwerk ein Netzwerk mit nur CLR oder SET oder Dummy-Zuweisung einfügen.
Ich würde vermutlich kurzerhand erstmal zwischen VKE und FB-Eingang einen Konnektor ---(#)--- setzen.

PS: Status-Verfälschung durch externe Schreibzugriffe würde ich an der Stelle ausschließen
vielleicht hilft es, wenn du uns den Programmcode des Aufruf-Netzwerkes zeigst.

6ES7 317-2EK14-0AB0 / V3.2
Der FB wird in einem FC aufgerufen, der vom OB1 aufgerufen wird.
Der FC ist in KOP geschrieben, der FB in FUP. Der FC Baustein hat einige AWL Netzwerke, davon auch welche vor dem FB Aufruf.
Siehe Anhang. Ich habe mehrfach Konnektoren am FB Eingang gesetzt. Es geht hier, siehe Bild um den Booleschen (der obere) Eingang am FB.

Bist du ganz sicher es gibt nur 1 Instanz ?
Um einen einzelne FB Instanz online zu beobachten gibt es eine genaue Verfahren.
  • Die CPU muss den 'Test' Modus aktiviert haben.
  • Den relevante FB-Instanz Aufruf muss man in STEP7 finden, markieren und mit "Monitor with call-up path' öffnen. (Deutsch "Beobachten mit Aufruf-Pfad" ?).

Ich gehe auf den IDB, öffne Ihn. Eine Maske sagt mir, da es eine Instanz ist, kann das nicht in dem normalen Programm geöffnet werden.
Ich drücke auf die Brille und sehe reale Werte angezeigt.
 

Anhänge

  • Screenshot 2026-05-11 153412.png
    Screenshot 2026-05-11 153412.png
    83,4 KB · Aufrufe: 35
Zuviel Werbung?
-> Hier kostenlos registrieren
VKE Zerschossen, ganz klar.
Ich gehe auf den IDB, öffne Ihn. Eine Maske sagt mir, da es eine Instanz ist, kann das nicht in dem normalen Programm geöffnet werden.
Ich drücke auf die Brille und sehe reale Werte angezeigt.
VKE zerschossen. Die beiden obigen
UN xxx
UN yyy
ohne ein anschließendes
= oder S/R öffnen eine logische Verknüpfung, die sich dann im nächsten Netzwerk fortsetzt

1778506983798.png

Die Verknüpfung vor "Optimierung ein" verarbeitet der Compiler so1778507176963.png
 
Die letzten 4 AWL-Zeilen machen auch nicht wirklich Sinn, Lade und Transferiere passiert dort immer.
Da kann man die beiden UN UN auch weglassen. Oder man muß einen Sprung einbauen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muss mich absolut outen als AWL Banause:
Was muss ich tun, damit der Wert 100.0 bei Nicht das erste und Nicht das zweite in den Real "Leistungsbegrenzung" hineingeschrieben wird?
 
6ES7 317-2EK14-0AB0 / V3.2
Es kommt nicht drauf an, als welche FW die CPU projektiert ist, sondern welche Firmwareversion tatsächlich auf der CPU drauf ist. Deshalb hatte ich gefragte "welche FW-Version genau ist drauf?"
Die aktuelle Firmwareversion ist 3.2.19
Firmware-Updates für CPU 317-2 PN/DP (6ES7317-2EK14-0AB0)

Wie vermutet: Dein Bild vom Netzwerk vor dem FB-Aufruf zeigt, dass das VKE nicht abgeschlossen ist. Schnelle Lösung: schreibe als letzte Zeile noch ein CLR oder SET hinzu (falls die Zeilen nur zum Beobachten gedacht sind)
PS: oder ändere die letzten 4 Zeilen so, dass sie das tun was du tun wolltest. siehe nächsten Post von @Ralle
 
Zuletzt bearbeitet:
Ich muss mich absolut outen als AWL Banause:
Was muss ich tun, damit der Wert 100.0 bei Nicht das erste und Nicht das zweite in den Real "Leistungsbegrenzung" hineingeschrieben wird?
Geht sowas einfaches auch ohne Sprungmarke?
Du musst die 4 Zeilen nicht als AWL in das Netzwerk quetschen. Du kannst auch einfach ein eigenes KOP-Netzwerk mit Verknüpfung und MOVE einfügen. Mit KOP kennst du dich ja anscheinend aus.
 
Zurück
Oben