Step 7 S7 UND Baustein Bedingungen erfüllt, schaltet im FB nicht weiter

VerLKerL

Level-1
Beiträge
31
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Programmierfreunde,

aktuell bin ich in Japan für ein Projekt und es gibt ein echtes Phänomen an dieser Anlage.

Infos:
Siemens CPU: 414-2DP
Ladespeicher: 56%
Arbeitsspeicher Code: 90%
Arbeitsspeicher Daten: 26%

Netzwerk in einem FB mit I-DB:
Bisher schaltet ein UND-Baustein nach dem SR-Baustein nicht weiter,
wenn man weitere UND-Bausteine am SR-Baustein anfügt, wandert der Fehler zum nächsten UND-Baustein.
Anlage läuft ansonsten mit komplizierten Berechnungen einwandfrei.

STOP/RUN, Komprimieren des Speichers, Generieren und austauschen des Instanz DB´s, usw, usw brachte keine Abhilfe

Gibt es Ideen um dieses zu beseitigen?

Viele Grüße aus Obihiro, Japan!
Joe
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    66,3 KB · Aufrufe: 153
Zuletzt bearbeitet:
Hallo und Grüße nach Japan.

Welche Firmwareversion ist denn drauf? Kannst du einmal die komplette Bestellnummer senden ( 6ES7414..... )
 
Ich habe sowas schonmal gesehen wenn der IDB nicht passt. Versuche mal den IDB neu generieren und in die CPU laden.
PS: Achso, hast Du schon versucht...
PPS: ist das Netzwerk davor korrekt VKE-begrenzt abgeschlossen?
PPPS: Baustein-Konsistenz ist OK?

Harald
 
Zuletzt bearbeitet:
Werden von dem FB mehrere Instanzen aufgerufen? Vielleicht ist es nur ein Beobachtungs-Problem, versuche mal Beobachten "mit Aufrufpfad".

Harald
 
Leider nein, nur ein Instanz DB, Ein Beobachtungsfehler schließe ich somit aus.
(Ansonsten wäre es mit der Aufrufumgebung genau anzuschauen)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe sowas schonmal gesehen wenn der IDB nicht passt. Versuche mal den IDB neu generieren und in die CPU laden.
PS: Achso, hast Du schon versucht...
PPS: ist das Netzwerk davor korrekt VKE-begrenzt abgeschlossen?
PPPS: Baustein-Konsistenz ist OK?

Harald

Sorry, bin noch neu hier im Forum, hab jetzt erst die Zitieren Funktion gesehen...

Also ich habe schon alles ausprobiert,
- neuen IDB erstellen
- in ein anderes Netzwerk kopieren
- CPU Urlöschen und wieder bespielen
- Quelle aus FB erzeugt und danach FB aus Quelle erzeugt
- ...
- alle Anlagenteile laufen, nur dieses eine Netzwerk nicht.

Wenn man den ersten Strang mit dem Timer in ein neues Netzwerk darüber kopiert, wandert der Fehler in das Netzwerk darüber.
Löscht man den Inhalt von NW40, so ist der Fehler in NW41 zu finden, somit hat die CPU irgendein Problem mit dieser gesamten Anweisung.


0009.jpg1. Problem
0010.png2. Darüberliegende Netzwerke getauscht, da Transferbefehl eventuell die Ursache ist!?

Problem gelöst:
Hier wurde was falsch programmiert,
dies hat die CPU mist machen lassen.
Eine U-Anweisung vor einem Ladebefehl.

Vielen Dank Harald, deine Idee mit dem VKE war ausschlaggebend!!!!
 
Zuletzt bearbeitet:
Der Fehler steckt im Netzwerk 38: da werden mit "U M111.0" Verknüpfungen angefangen, aber nicht abgeschlossen! Höchstwahrscheinlich fehlen da SPB-Anweisungen zum Überspringen der L/T-Anweisungen.

Um garantiert das VKE "abzugrenzen" (jegliche Verknüpfungen abzuschließen) kann man am End des Netzwerkes eine SET- oder CLR-Anweisung hinschreiben.

Harald
 
Der Fehler steckt im Netzwerk 38: da werden mit "U M111.0" Verknüpfungen angefangen, aber nicht abgeschlossen! Höchstwahrscheinlich fehlen da SPB-Anweisungen zum Überspringen der L/T-Anweisungen.

Um garantiert das VKE "abzugrenzen" (jegliche Verknüpfungen abzuschließen) kann man am End des Netzwerkes eine SET- oder CLR-Anweisung hinschreiben.

Hallo Harald, danke für deine Erklärung.

Ja, die UND Verknüpfungen im NW38 haben so ja keine Funktion. Es fehlt wie von dir schon bemerkt der SPB oder SPBN Befehl.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, die UND Verknüpfungen im NW38 haben so ja keine Funktion.
Das fiese ist, daß sie in dem Netzwerk keine Funktion haben, aber die nächste boolsche Verknüpfung beeinflussen - die kann im nächsten oder übernächsten oder ... Netzwerk sein. Sowas passiert auch schnell mal beim (testweisen) Auskommentieren von boolschen Zuweisungen (= S R) oder VKE-abhängigen Sprüngen (SPB/SPBN/SPBB/SPBNB)

Harald
 
das fiese ist, daß sie in dem netzwerk keine funktion haben, aber die nächste boolsche verknüpfung beeinflussen - die kann im nächsten oder übernächsten oder ... Netzwerk sein. Sowas passiert auch schnell mal beim (testweisen) auskommentieren von boolschen zuweisungen (= s r)


  • *ack*


#################
 
.. Um garantiert das VKE "abzugrenzen" (jegliche Verknüpfungen abzuschließen) kann man am End des Netzwerkes eine SET- oder CLR-Anweisung hinschreiben..
Harald, du meinst natürlich das richtige, aber SET oder CLR am Netzwerkende wäre genau das verkehrte. SET und CLR setzen das VKE auf TRUE bzw. FALSE wie bei einer Erstabfrage. Man könnte das Netzwerk mit einer Dummy-Zuweisung ("= TEMP") gefahrlos abschließen.

Es ist allerdings ziemlich dämlich, Anweisungen zu verwenden, um selbst gemachte Programmfehler zu verschleiern ;) .
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte das Netzwerk mit einer Dummy-Zuweisung ("= TEMP") gefahrlos abschließen.
Onkel, Du hast recht, eine Zuweisung kann man auch verwenden - dafür braucht man allerdings eine (Dummy-)Variable.

SET oder CLR am Netzwerkende wäre genau das verkehrte. SET und CLR setzen das VKE auf TRUE bzw. FALSE wie bei einer Erstabfrage.
"wie bei einer Erstabfrage" ist nicht richtig. SET und CLR kann man gefahrlos verwenden - die setzen zwar das VKE, das ist aber nicht der Beginn einer neuen Verknüpfung. Erst das nächste U/O/X... ist die Erstabfrage. (probiere mal: CLR und danach U ... :cool:)
Für die VKE-Abgrenzung kann man auch noch andere Anweisungen verwenden - es ist lediglich wichtig, daß die verwendete Anweisung das /ER-Statusbit auf 0 schreibt (die VKE-Abgrenzung), z.B. CLR ist am schnellsten getippt und klingt auch irgendwie passend ;)
(btw. ich verwende SET/CLR auch gerne an Sprungmarken - das ist einfach schneller getippselt als NOP 0 und gibt noch zusätzlich die Sicherheit der garantierten VKE-Abgrenzung, falls die Sprungmarke mit das VKE nicht beeinflussenden Sprüngen angesprungen wird)

Es ist allerdings ziemlich dämlich, Anweisungen zu verwenden, um selbst gemachte Programmfehler zu verschleiern ;) .
Hmm, das würde ich nicht unbedingt als dämlich bezeichnen. Ein temporäres Auskommentieren von Anweisungen für Testzwecke würde ich auch nicht als Programmfehler bezeichnen. Da füge ich gerne vorsichtshalber noch ein SET/CLR dahinter ein. Und manchmal braucht man SET/CLR oder andere eigentlich unnötige Anweisungen um Firmwarefehler der CPUs oder Eigenheiten von PLCSIM zu umgehen.

Harald
 
Zurück
Oben