TIA Status Baustein EN / ENO unterbrochen

Nicht dass ich wüsste. Man müsste mal deinen speziellen Baustein genau analysieren, wo und warum das BIE-Bit gelöscht wird.
Vielleicht ist es auch ein Fehler in einer Firmware-Version? Oder fügt TIA das unerwartet irgendwie ein? Passiert das in einer realen CPU oder in PLCSIM?
Passiert in einer realen CPU.
Es ist ein Step7 classic Projekt, hochkonvertiert zu TIA V19. Dann habe ich einige FBs (FUP) hinzugefügt, eigentlich wird nichts Besonderes oder Außergewöhnliches in den Bausteinen gemacht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oder eine Besonderheit der Kombination => 400ér CPU / TIA Portal / Bausteine in FUP am ENO hintereinander verschaltet.

Vermutlich wurde das nie getestet.
wäre ja einfach für die 400er auszutesten, da man sich ja online den stand auf der CPU mit Step7 Classik als AWL anschauen könnte... Glaub jetzt nicht wirklich, dass der "TIA-FUP-Compiler" da was anderes macht als Step7-Classic, aber wer weiss...
 
wäre ja einfach für die 400er auszutesten, da man sich ja online den stand auf der CPU mit Step7 Classik als AWL anschauen könnte... Glaub jetzt nicht wirklich, dass der "TIA-FUP-Compiler" da was anderes macht als Step7-Classic, aber wer weiss...
Die Möglichkeit habe ich leider nicht, werde aber mal den RET-Befehl probieren, wenn ich nächste Woche wieder an der Anlage sein sollte
 
Die Möglichkeit habe ich leider nicht, werde aber mal den RET-Befehl probieren, wenn ich nächste Woche wieder an der Anlage sein sollte
wie groß sind denn die Bausteine, kannst Du mal einen der "funktioniert" und einen der "nicht funktioniert" hier reinstellen? Oder kannst Dus runterbrechen, was bei den zwein unterschiedlich ist?

Grundsätzlich würd ich ne 400er aber auch nie nicht mit TIA programmieren und schon garnicht hochkonvertieren...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Passiert in einer realen CPU.
Es ist ein Step7 classic Projekt, hochkonvertiert zu TIA V19. Dann habe ich einige FBs (FUP) hinzugefügt, eigentlich wird nichts Besonderes oder Außergewöhnliches in den Bausteinen gemacht.
Sind da vielleicht auch AWL-Netzwerke drin? Vielleicht wird da das BIE-Bit beschrieben/gelöscht, z.B. durch Sprünge SPBB SPBNB oder SAVE
Oder mal das FUP-Programm explizit in AWL anschauen, vielleicht werden bestimmte FUP-Konstrukte mit SPBB, SPBNB oder ähnliches realisiert?

Aber egal woran es liegt, wenn man ganz sicher gehen will, dass der ENO beim Verlassen des Bausteins TRUE ist, dann kann man den ENO auch vor dem Verlassen explizit auf TRUE setzen.
Code:
ENO auf TRUE setzen
-------------------
FUP:
    +-----+
#x--| >=1 |      RLO
    |     |    +-----+
#x-o|     |----| RET |
    +-----+    +-----+

oder in AWL:

O  #x
ON #x
SAVE    // VKE in BIE-Bit speichern
BEB     // (oder BE) Return

oder:

SET     // VKE auf 1 setzen
SAVE    // VKE in BIE-Bit speichern
BE      // Return
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sind da vielleicht auch AWL-Netzwerke drin?
Keine AWL Netzwerke.
In dem FB, wo es nicht geht, werden nur Berechnungen gemacht. Also keine Bit-Operationen, in dem Baustein wo es geht werden auch Bitoperationen ausgeführt. Das ist momentan der einzige grundlegende Unterschied den ich erkennen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Reihenschaltung ist auch aus anderen Gründen problematisch, z.B. wenn Parameter übergeben werden:
Anhang anzeigen 82366
Huch! Solche Konstrukte finde ich recht häufig in Altanlagen, insbesondere wenn irgendwelche Werte berechnet werden. Unter welchen Umständen kann es dazu kommen, dass das Verhalten wie oben gezeigt auftritt?

Oder ist inFlag in Wahrheit eine InOut-Variable? :D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Huch! (...)Unter welchen Umständen kann es dazu kommen, dass das Verhalten wie oben gezeigt auftritt?
Wenn der Weitergabe-Parameter vom Typ Bool ist.
Der FUP/KOP-Compiler ermittelt die Werte von Bool-IN-Parametern aller FC-Aufrufe im Netzwerk schon am Anfang des Netzwerks und weist temporären Zwischenspeicher-Variablen zu. Beim Aufruf des FC werden die am Anfang des Netzwerkes gespeicherten Werte aus TEMP den Übergabeparametern der FC zugewiesen und nicht nochmal die aktuellen Werte neu ermittelt. Sieht man deutlich in der AWL-Übersetzung. Dieses Verhalten ist "schon immer" so und wird von Siemens auch nicht geändert werden. Wer kommt schon auf die Idee, in FUP/KOP Bausteine im Netzwerk über ENO hintereinander zu schalten ... ;)
Details siehe hier

Von Siemens gibt es einen Hinweis zu dem Verhalten:
In der Liesmich.rtf steht zu diesem Thema:
Bausteinparameter

  • Wenn Sie boolsche Ausgangsparametern einer Call Box als Eingangsparameter einer zweiten Call Box verwenden, müssen die Call Boxen in unterschiedlichen Netzwerken platziert sein, da sonst unter Umständen die Ausgangsparameter der ersten Call Box keine Wirkung als Eingangsparameter der folgenden Call Box haben.
 
Okay, hier mal die Bausteine.
Beim Baustein aus ENO_False.awl wird nach jeder Berechnung der negierte Zustand des OV-Flags (Überlauf) in das BIE-Bit (ENO) kopiert.
In beiden Bausteinen werden Sprünge JNB (SPBNB) verwendet.
Das scheint Standard beim FUP/KOP-Compiler für S7-300/400 zu sein. Die nicht vorhandene Einstellung "ENO automatisch setzen" ist also immer aktiv.
Also beide Bausteine verändern das BIE/ENO-Bit. Es ist wohl mehr oder weniger Glück, ob am Ende das BIE/ENO-Bit TRUE oder FALSE ist.
Daher:
Oder mal das FUP-Programm explizit in AWL anschauen, vielleicht werden bestimmte FUP-Konstrukte mit SPBB, SPBNB oder ähnliches realisiert?

(...) egal woran es liegt, wenn man ganz sicher gehen will, dass der ENO beim Verlassen des Bausteins TRUE ist, dann kann man den ENO auch vor dem Verlassen explizit auf TRUE setzen.
 
wenn ich raten müsste, würde ich vermuten, dass hier abundzu ne Division durch 0 vorkommt?
Code:
      L #statStreckeGrafikFrmKr;
      L #statStreckeFrmKr;
      /R;
      T #tmpStreckePixel;
      AN OV;
      SAVE;

oder hier irgendwann das REAL nicht in den DINT passt:
Code:
      L #tmpPosGrafikreal;
      RND;
      T #tmpPosGrafikDINT;
      AN OV;
      SAVE;

aber ja, nur mein erster Gedanke...
 
Zuletzt bearbeitet:
Zurück
Oben