TIA Initialisierung von FBs und DBs bei "Komplettes Programm übersetzen"

meikelneit

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

ich habe eine Frage zur Initialisierung von Funktionsbausteinen (FBs) und Datenbausteinen (DBs), insbesondere im Zusammenhang mit instanziierten FFBs und FDBs.

Wenn ich im TIA Portal bei einer Änderung im F-Programm die Download-Variante "Komplettes Programm übersetzen" wähle, werden dann alle FBs und DBs neu initialisiert, sicherer und nicht sicherer Bereich? Oder bleiben bestehende Werte in FDBs erhalten, sofern sich deren Struktur nicht ändert?

Vielen Dank im Voraus für eure Antworten!

Viele Grüße
Meikelneit
 
Funktional stimmen die Menüeinträge "Software (komplett übersetzen)" und "Software (Bausteine komplett übersetzen)" überein. Es gibt keinen Unterschied.

Ich würde mal behaupten, dass beim kompletten Übersetzen, jeder Baustein einmal geöffnet wird und mindestens der Hashwert abgeglichen wird und ein Flag gesetzt wird, was einen Unterschied erzeugen kann.

Speicher dir dein Projekt doch mal weg und probier das gesondert aus.. dann siehst es ja
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich im TIA Portal bei einer Änderung im F-Programm die Download-Variante "Komplettes Programm übersetzen" wähle, werden dann alle FBs und DBs neu initialisiert, sicherer und nicht sicherer Bereich? Oder bleiben bestehende Werte in FDBs erhalten, sofern sich deren Struktur nicht ändert?
Geht denn die CPU eigentlich in STOP wenn ein komplett übersetztes Programm geladen wird? Wenn ja, ist es nicht irrelevant ob die FDB´s initialisiert werden? Remanent sind diese sowieso nicht.
 
Zuletzt bearbeitet:
Speicher dir dein Projekt doch mal weg und probier das gesondert aus.. dann siehst es ja
Ja das werde ich grade mal tun.

ja, die CPU geht beim Laden eines komplett übersetzten Programms in STOP.
Ich bin aktuell in der Inbetriebnahme, daher ist das grundsätzlich kein großes Problem.

Mir ist allerdings aufgefallen, dass hin und wieder die Achspositionen verloren gehen, während vorne jemand einrichtet.
Die Achspositionen befinden sich in einem normalen DB, nicht in einem FDB.

Das tritt scheinbar immer dann auf, wenn ich HW- und/oder Software-Änderungen mache und die Software komplett lade.

Wenn ich jedoch nur die Änderungen lade, konnte ich das Fehlerbild bisher nicht nachstellen.

Kann es sein, dass der DB in diesem Fall tatsächlich neu initialisiert wird?
Remanent ist er, aber mich interessiert, ob das Verhalten von der Art des Downloads abhängt.
 
Gehts da um verlorene Aktualposition, oder Verfahrsätze?

Die gehören in die Remanenz und idealerweise noch als Startwert eingetragen.

Komplettes laden/übersetzen mache ich so selten.. in V13 und V14 gabs da mal diverse Probleme mit dem einfachen übersetzen beim Hochladen.. aber mittlerweile reicht es komplett aus einfach hochzuladen und den Compiler entscheiden zu lassen was er übersetzen möchte und was nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das tritt scheinbar immer dann auf, wenn ich HW- und/oder Software-Änderungen mache und die Software komplett lade.

Wenn ich jedoch nur die Änderungen lade, konnte ich das Fehlerbild bisher nicht nachstellen.
Das ist doch normal, dass im Offline-Projekt keine aktuellen Aktualwerte vorhanden sind (egal ob remanent oder nicht). Da ist es unerheblich, ob DBs beim Übersetzen initialisiert wurden oder nicht - wenn man DB von offline nach online lädt, dann sind danach die online-Aktualdaten weg bzw. durch die von offline geladenen Werte ersetzt.
Will man das vermeiden, dann muss man die online-Aktualdaten ins offline-Projekt in die DB zurückholen (da gibt es verschiedene Wege) und in der Zwischenzeit dürfen sich die Werte online nicht ändern.
 
Normalerweise betrifft die Reinitialisierung nur die Datenbausteine (DBs), an denen strukturelle Änderungen vorgenommen wurden. In diesem Fall spreche ich jedoch davon, dass jeder Datenbaustein reinitialisiert wird.

Grundsätzlich ist es normal, dass ein Offline-Projekt keine aktuellen Aktualwerte enthält unabhängig davon, ob sie remanent sind oder nicht. Dabei spielt es keine Rolle, ob die DBs beim übersetzen initialisiert wurden. Sobald ein Datenbaustein von offline nach online geladen wird, gehen die online gespeicherten Aktualwerte verloren. Genau dafür gibt es beispielsweise die Momentaufnahme.

Beim Laden wurden alle Bausteine aufgeführt, allerdings nicht mit dem Hinweis, dass sie initialisiert werden, sondern mit der Meldung das sie überschrieben werden. Es waren ausnahmslos alle Elemente enthalten, selbst die UDTs. Daher stellt sich für mich die Frage: Wird beim vollständigen übersetzen eines Projekts zur Konsistenzerhaltung der gesamte Programmcode neu kompiliert? Und führt dies dann dazu, dass beim Laden alle Bausteine überschrieben werden und trotz Remanenz die Aktualwerte verloren gehen?

Das könnte nachvollziehen, da Remanenz in solchen Fällen auch nicht schützen soll. Aber ohne das nicht sichere Programm zu ändern, alle Aktualwerte zu verlieren kann ich nicht recht verstehen. Safe und Nonesafe programmbereiche sind per DBs getrennt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn Du mit dem Verlust von Aktualdaten ein Problem hast, würd ich erstens nicht Gesamtübersetzen und zweitens nicht Gesamtladen!

Was TIA da wirklich immer treibt wissen vermutlich nicht mal die Entwickler. Und vermutlich ists im Detail auch noch unterschiedlich je nach TIA Version und FW-Stand.

Wichtig, auf der Speicherkarte sollte deutlich mehr als 50% frei sein, sonst krigt TIA u.U. nen Problem mit Änderungsladen...
 
Normalerweise betrifft die Reinitialisierung nur die Datenbausteine (DBs), an denen strukturelle Änderungen vorgenommen wurden.
Naja, nicht nur strukturelle Änderungen sondern auch geänderte Variablennamen, geänderte UDTs usw...
Beim Laden wurden alle Bausteine aufgeführt, allerdings nicht mit dem Hinweis, dass sie initialisiert werden,
Das ist komisch. Aber vielleicht meckert der das beim Gesamtladen auch nicht an? Ich mach eigentlich nie Gesamtladen.

Hast Du Speicherreserve aktiv? Optimierte DBs?
 
Beim Laden wurden alle Bausteine aufgeführt, allerdings nicht mit dem Hinweis, dass sie initialisiert werden, sondern mit der Meldung das sie überschrieben werden.
Das ist ja auch kein initialisieren sondern überschreiben.
Wie kann man auf die Idee kommen, dass beim Laden eines DB von offline nach online die online-Aktualdaten erhalten bleiben? (Insbesondere wenn man explizit auf das überschreiben hingewiesen wird.)
Warum lädt man überhaupt DB, die gar nicht geändert sind? Mit der Erwartung, dass sich dadurch online nichts ändert?
🤷‍♂️
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum lädt man überhaupt DB, die gar nicht geändert sind? Mit der Erwartung, dass sich dadurch online nichts ändert?
🤷‍♂️
Naja, wenn ich in nem DB nen Kommentar ändere, kann ich den schon laden ohne das reinitialisiert wird. Oder wenn ich am Ende Variablen hinzufüge und die Speicherreserve aktiv ist.
 
Ich glaube ich drücke mich unverständlich aus. Mich wundert das nicht:
Wie kann man auf die Idee kommen, dass beim Laden eines DB von offline nach online die online-Aktualdaten erhalten bleiben? (Insbesondere wenn man explizit auf das überschreiben hingewiesen wird.)
Warum lädt man überhaupt DB, die gar nicht geändert sind? Mit der Erwartung, dass sich dadurch online nichts ändert?
🤷‍♂️
Die Idee habe ich auch nicht, ich habe eingangs gefragt, warum nicht geänderte DB etc. Überhaupt mit geladen werden, ob das an dem gesamtes Projekt übersetzten und laden liegt.
 
Die Idee habe ich auch nicht, ich habe eingangs gefragt, warum nicht geänderte DB etc. Überhaupt mit geladen werden, ob das an dem gesamtes Projekt übersetzten und laden liegt.
Naja, wenn Du Gesamtladen machst wird per se alles geladen.
Wenn Du Gesamtübersetzen aber Änderungsladen machen würdest, naja, wer weiss schon, was dann passiert.

In Bezug auf Safety ist das vielleicht nochmal anders. Da hat Siemens immer mal was geändert. Welche TIA Version und welche SPS und FW hast Du denn, normalerweise sollte es möglich sein, bei Änderungen am Safetyteil den normalen Programmteil unangetastet zu lassen... Früher (vor TIA17) war das aber nicht so.
 
Zuletzt bearbeitet:
Zurück
Oben