Es kommt ja doch noch eine fruchtbare Diskussion zustande ..
.. das Thema "Suche Zukunft als...?" muss ja auch Einiges abkönnen.
Vollmi, man kann solche Situationen natürlich nicht verhindern. Das konnte man in Step7 aber auch nicht immer. Irgendwann kam auch hier der Punkt, wo ein Instanz-DB neu initialisiert werden musste. Und dann musste man auch in Step7 einen Weg finden. Und dieser Punkt kam auch stets zu einem ungünstigen Zeitpunkt. Und dann stand man da, und wusste nicht wie, weil man es viel zu selten gemacht hatte. Auch ich habe die FUs von Kühlwasserpumpen oft genug vorort auf Hand geschaltet (Step7), um die Kühlung eines ganzen Werkes nicht zu unterbrechen (S7-400, 12MW Kühlleistung). Vielleicht kann das mal einer in Toaster-Einheiten umrechnen

.
Man kann jedoch in Step7 wie auch in
TIA die Auswirkungen einer Initialisierung minimieren. Ein wesentlicher Schritt ist eine gut durchdachte Datenablage in einem oder auch in mehreren
Global-DBs für die "Kerndaten". Egal was man schaltet, es gibt doch immer die selben benötigten Variablen. Diese sind die Betriebsart, Betriebszustände, Parameter, Schaltzeiten, Stellgrade, Statusanzeigen oder was auch immer. Hinzu kommen noch eine Hand voll frei verwendbarer Realwerte die man eventuell für Sollwertberechnungen o.a. benötigt, ein paar Variablen für Regler, und vielleicht ein paar boolsche Werte. Man kann daraus ein Standard-Variablenpaket kreieren. Meines genügt mir seit ca. 15 Jahren unverändert, egal ob Step7 oder
TIA. Ebenso ist es egal, für was für eine Anlage es sich handelt.
In Step7 habe ich mir einen oder bei größeren Anlagen mehrere DBs mit UDTs angelegt. Die Symbolik der STRUCTs in diesen DBs konnte man ändern, ohne neu zu initialisieren und ohne neu zu laden. Diese Strukturen konnte man als UTD oder ANY an Bausteine übergeben und damit arbeiten. In den FBs musste "nur" das individuelle "Beiwerk" (incl. Instanzen) programmiert werden. Bis auf wenige Ausnahmefälle konnte man diese Bausteine samt Instanzen in Run neu laden. Manchmal war es sinnvoll, während des Ladens den Bausteinaufruf aus zu kommentieren.
In TIA ist es nicht viel anders. Einziger und wesentlicher Unterschied ist die Datenablage in den Global-DBs. Die oben erläuterten Strukturen sind jetzt in einem ARRAY of STRUCT abgelegt. Auf die Gründe dieser Notwendigkeit muss ich wohl nicht näher eingehen. Auch in diesem ARRAY ist genügend Reserve vorgesehen, so dass der DB in der Regel nie geändert bzw. initialisiert werden muss. Alle Schaltzustände, Parameter u.s.w. bleiben gespeichert. Das klingt eigentlich ganz einfach, oder? Ist es auch!
Aber es geht noch weiter. Mit den ARRAY-Nummern kann man ja nicht so schön arbeiten. Auch hierfür gibt es eine ganz einfache Lösung. Man übergibt die ARRAY-Strukturen als IN/OUT an den entsprechenden ANLAGEN-FB. Außen steht also z.Bsp. ARRAY[32] und im FB "ZYLINDER_007" oder "REGLER_0815". Man kann zig solcher Strukturen an eine FB übergeben, ohne merklichen Performance-Verlust. Der ARRAY-Index dient sogleich als ID und als Textlisten-ID am HMI. Eine einfache und übersichtliche und flexible Zuordnung ist somit möglich. Eigentlich geht es kaum einfacher.
Dann wäre da noch das Thema optimiert/nichtoptimiert. Ich kann gar nicht einschätzen, was es ausmacht. Es ist mir eigentlich auch egal. Für mich kam eine optimierte Programmierung von Anfang an nicht in Frage. Die o.g. Strukturen bearbeite ich u.a. auch sequenziell in Bausteinen, z.Bsp. zum Multiplexen für die HMI-Bedienung. Hierfür habe ich für die Adressierung auf der SPS-Seite noch keine Alternative gefunden. Was man nach Hörensagen tunlichst vermeiden sollte, ist ein gemischter Betrieb.
CPU-Stopp beim Laden? Ich kann mich kaum daran erinnern, das mal gehabt zu haben. Bei Änderungen an der Konfiguration ja, aber sonst? Zumindest nicht in einem Moment, wo es mich großartig störte. Änderungen an einer laufenden Anlage mache ich aber auch in der Regel live, also in kleinen Schritten. Generationswechsel lasse ich bei meiner Betrachtung mal außen vor. Auf Instanz-DBs wird von außen generell nicht zugegriffen, und von einem HMI schon gar nicht. Das sind so meine Grundprinzipien aus Step7-Zeiten.
Zum Schluss noch ein paar Gedanken von der S5 bis zum TIA-Portal. Im Gegensatz zu heute war man damals beim Programmieren sehr stark eingeschränkt. Man konnte gar nicht anders, als äußerst diszipliniert zu programmieren. Der kleinste Fehler, und die CPU stand still. Selbst das Kopieren von Code-Passagen war unter Step5 schon ein kleines Kunststück. Mit Windows und Step7 hatte man schon sehr viel mehr Freiheiten, um "fahrlässig" zu programmieren. Im TIA-Portal hat man das ganze noch einmal potenziert

. Man hat immer mehr Freiheiten und man kann somit immer mehr falsch machen. Nicht umsonst wird man beim Safety-Zeugs wieder eingeschränkt. Was ich sagen will ist, man sollte nicht alles ausreizen was geboten und versprochen wird. Viele programmieren wild drauf los und verlassen sich auf den Versprechungen des Herstellers. Vorsicht ist die Mutter der Porzellankiste! Nutzt besser die soliden Grundfunktionen, diese aber richtig und effektiv!
TIA ist großartig

!
Gruß, Onkel