TIA Vermeidung vom Initialisieren der DBs

Zuviel Werbung?
-> Hier kostenlos registrieren
S7-300 ist ein fast 30 Jahre altes System, S7-400 detto.
S7-300 / 400ér CPU´s kann man noch neu kaufen. Ich wollte damit auch nur sagen, dass es alles schon einmal möglich war. Bei S5 genauso ( ok, anderes Thema ).

Ich hätte wohl "alle modernen Steuerungen am Markt" schreiben sollen.
Genau, hier fragen sich ja auch nur ein paar wenige, warum ist mit einem "modernen" System etwas nicht mehr möglich was mit einem "uralten" Sytem schon einmal möglich war.

Zu sagen, bei anderen ist es ja genauso ist irgendwie auch keine echte Antwort sondern nur ein abtun. War es nicht mal Ziel, sich mit "Features" von Mitbewerbern abzuheben? Heute reicht es zu sagen "bei anderen ist es auch so"?
 
Alle Programmierer die sich hier über das Reinitialisieren von DBs mukieren, sollten mal ihre Hausaufgaben machen und sich ein sauberes Datenmodell überlegen und auch daran denken was Programmänderungen an der laufenden Anlage bedeuten.
OK, mal ein Beispiel aus der täglichen Praxis:
Ich habe einen FB, der u.A. mehrere Pumpen steuert. Die benötigten Variablen befinden sich pro Pumpe in je einer Struktur im Instanz-DB dieses FB.
Jetzt muss für eine Pumpe eine Temperaturüberwachung im laufenden Betrieb nachgerüstet werden. Um ne Hysterese zu haben, brauche ich ein stat Bool, welcher bei über 50° gesetzt wird und unter 45° wieder rückgesetzt wird.
Da dieses Bool zu der einen Pumpe gehört, hätte ich das gern in der Struktur.
Bei S7-300/400 habe ich deshalb von vornherein immer Reserve-Bool in den Strukturen, die bei Bedarf benutzt und umbenannt werden. Bei S7-300/400 geht das stoßfrei im laufenden Betrieb, bei S7-1500 nicht.
So, also muss man das jetzt anders machen. D.h. die Speicherreserve nutzen und das neue Bool irgendwo am Ende des DB dranklatschen, oder nen Merker hernehmen, oder nen neuen DB hernehmen, oder das Reserve-Bool nicht umbenennen, oder sich händisch nen Rettungsmechanismus bauen, der am Ende vom OB1 den DB sichert und am Anfang vom OB1 wieder rücksichert.
Alles keine schönen Lösungen.
Welches andere Datenmodell hab ich da jetzt übersehen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jedes Projekt beginnt seither mit der Datenmodell-Planung.
Das freut mich für dich, dass du so viel Zeit für deine Projekte hast.
Wir sind ein kleines Schrittchen weiter und haben einen gewissen Standard, der unter anderem auch das Datenmodell weitestgehend vorgibt.
Alle Programmierer die sich hier über das Reinitialisieren von DBs mukieren, sollten mal ihre Hausaufgaben machen und sich ein sauberes Datenmodell überlegen und auch daran denken was Programmänderungen an der laufenden Anlage bedeuten.
Danke für den Vorschlag. Ich denke, dass ich in Sachen Software-Design keine Nachhilfe brauche.
Das tollste Design funktioniert aber nicht, wenn einer der Softwerker nur einen Klick (hier zum Beispiel bei der Markierung "Sollwert" innerhalb eines DBs) mal nicht macht. Soll heißen: Nach meiner Erfahrung kannst du nicht per Definition im Bereich Software-Design erreichen, dass später bei der Datensicherung nichts in die Hose geht.
 
Das tollste Design funktioniert aber nicht, wenn einer der Softwerker nur einen Klick (hier zum Beispiel bei der Markierung "Sollwert" innerhalb eines DBs) mal nicht macht. Soll heißen: Nach meiner Erfahrung kannst du nicht per Definition im Bereich Software-Design erreichen, dass später bei der Datensicherung nichts in die Hose geht.
Dazu kommt, dass an manchen Anlagen über 30 Jahre 10 verschiedene Firmen mit 20 verschiedenen Programmierern rumändern... Da kannst vergessen, dass da alle Haken für "Einstellwerte" richtig gesetzt sind. Wenn jetzt niemand mehr Variablennamen umbenennt, weil sonst die Anlage aus geht, dann kannst dir vorstellen, wie sowas nach 30 Jahren aussieht.

Also am besten alle 5 Jahre eh alles neu bauen... wie bei Handys halt auch.
 
... Ich denke, dass ich in Sachen Software-Design keine Nachhilfe brauche...
Das eingangs erwähnte Programm, an dem du Änderungen machen willst, stammt aber aus deiner Feder?

Dazu kommt, dass an manchen Anlagen über 30 Jahre 10 verschiedene Firmen mit 20 verschiedenen Programmierern rumändern...
Was soll man dazu sagen? Da läuft ja grundsätzlich etwas verkehrt.

... Da kannst vergessen, dass da alle Haken für "Einstellwerte" richtig gesetzt sind...
Wenn man ein System hat, dann setzt man den Haken für "Einstellwert" ein einziges Mal im UDT, und dann idealerweise nie wieder! Das geht natürlich nur wenn man ein ausgereiftes "Datenmodell" verwendet, welches nicht mehr geändert werden muss, vielseitig verwendet werden kann, und auch am HMI verwendet wird. Was macht ihr denn eigentlich bei Änderungen solch fundamentalen Strukturen mit den Bildbausteinen, die mit diesen Strukturen beschaltet sind? Oder gibt es so etwas bei euch gar nicht? Die müssten ja auch bei jeder Änderung nachgezogen werden.

OK, mal ein Beispiel aus der täglichen Praxis:
... Die benötigten Variablen befinden sich pro Pumpe in je einer Struktur im Instanz-DB dieses FB...
... Da dieses Bool zu der einen Pumpe gehört, hätte ich das gern in der Struktur...
Die daraus resultierenden Probleme kannst du vermeiden, indem du deine Strukturen in einem globalen DB ablegst. Dort sind alle Betriebsarten, Schaltzustände, Parameter, Flankenmerker etc. gespeichert. Dieser DB ist "heilig", sollte also nicht mehr geändert werden müssen. In diesem DB ist natürlich genügend Reserve vergesehen. Vielleicht kannst du dich auch mit einem ARRAY of UDT anfreunden, und nur im Kommentar die Namen der Pumpen, Regler etc. pflegen. Wenn, um bei deinem Beispiel zu bleiben, ein Zweipunktregler als Automatik-Freigabe bei einer Pumpe hinzu kommt, dann gehört er in die Instanzdaten des FB und keinesfalls in die Struktur der Pumpe. Das macht das Programm auch gleich wieder übersichtlicher.

Natürlich liegt es an jedem selbst, wie er seine Werkzeuge nutzt. Nur muss man bei unsachgemäßer Nutzung auch mit den daraus resultierenden Konsequenzen leben.

Welches andere Datenmodell hab ich da jetzt übersehen?
Du hast doch gar kein "Datenmodell"!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das freut mich für dich, dass du so viel Zeit für deine Projekte hast.
Wir sind ein kleines Schrittchen weiter und haben einen gewissen Standard, der unter anderem auch das Datenmodell weitestgehend vorgibt.
Wenn er euer Standard allerdings solche Probleme verursacht, wäre es doch mal an Zeit an der Version 2.0 des Standards zu arbeiten?!?
 
Dazu kommt, dass an manchen Anlagen über 30 Jahre 10 verschiedene Firmen mit 20 verschiedenen Programmierern rumändern... Da kannst vergessen, dass da alle Haken für "Einstellwerte" richtig gesetzt sind.
In der Tat waren es bei dem "eingangs erwähnten Programm" ca. 10 Jahre, >6 verschiedenen Firmen aus 4 Nationen (UK, Spanien, Indien, D) >20 Programmierer. Das bringt der Sonderanlagenbau in einem Konzern so mit sich.
Das eingangs erwähnte Programm, an dem du Änderungen machen willst, stammt aber aus deiner Feder?
Nein, dort war ich in der Tat das erste Mal mit dem Auftrag "das läuft nicht so richtig, flieg mal rasch hin". Ist ja auch kein Ding. Aber natürlich verlassen ich mich da nicht auf jeden einzelnen Klick.

Wenn er euer Standard allerdings solche Probleme verursacht, wäre es doch mal an Zeit an der Version 2.0 des Standards zu arbeiten?!?
Dann sag mir bitte, wie?
Das ist genau einer der Punkt, die ich noch nicht verstanden habe: Wenn bei einer(!) einzigen Variable, der Startwert zur Laufzeit nicht übernommen werden darf, dort aber der Haken "Sollwerrt" angehakt ist, und ich Dusel möchte es richtig machen und kopieren die Momentanwerte in die Startwerte (Nur Sollwerte), dann kann das in ein paar Wochen böse Folgen haben. Natürlich(!) sind gemäß Standard alle zu sichernden Parameter in einigen wenigen DBs abgelegt, die entsprechende Namen haben, aber woher weiss ich, dass sich alle Programmierer immer daran gehalten haben und nicht vielleicht doch ein Parameter in einem DB befindet, der nicht gesichert wird. Genau: Der/ die Gute hat dann wohl Pech gehabt mit ihrer Variable (dann sichere ich den Wert halt nicht). Aber: deshalb läuft die Anlage dann trotzdem Scheiße, nachdem das nächste mal die Startwerte geladen werden.
Also: Per Definition im Standard kannst du solche Fehler nicht vermeiden.
Wäre schön, wenn die Werkzeuge da nachvollziehbarer funktionieren würden.
Aber geht schon, habe durch die Aktion super dazugelernt.

Was ich aber interessant finde: Dass bei diesem Thema ganz offensichtlich so viel Unsicherheit besteht, dass hier die Diskussionen noch so lange nachkochen. Gleichzeitig ist der Ton auch bisl aggressiv. Warum?
Ich finde es großartig wie jeder durch Informationaustausch hier Hilfe finden kann.
Nu habt euch mal wieder lieb!
 
Also aggressiv empfinde ich den Ton hier gerade nicht....
@maxder2te hat insofern schon recht, dass sich viel zu wenig Gedanken über die Datenstruktur gemacht wird. Bin da letztens auch selbst drüber gestolpert. Udt mit HMI /PLC & gespeichert Sollpositionen, das für mehrere Achsen und alles in eine DB. Jetzt müsste ich da was ändern, reinitialsieren und alle erfassten Achspositionen, die ich bis dato nicht in den Startwerten gespeichert hatte, waren für den Allerwertesten. Zum Glück war es am Anfang der IBN. Hätte ich die Positionen von vornherein ausgelagert, am besten noch je Achse in einen DB, hätte ich das Problem nicht gehabt 😉
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was soll man dazu sagen? Da läuft ja grundsätzlich etwas verkehrt.
ja sicher, da kannst aber nichts dran ändern, Kunde kann halt an seinen Anlagen rumprogrammieren lassen wen er will...
Was macht ihr denn eigentlich bei Änderungen solch fundamentalen Strukturen mit den Bildbausteinen, die mit diesen Strukturen beschaltet sind? Oder gibt es so etwas bei euch gar nicht? Die müssten ja auch bei jeder Änderung nachgezogen werden.
Änderungen an solchen standardisierten Strukturen gibts in der Regel im lauenden Betreib nicht, die sind tatsächlich heilig, darum gehts hier aber in dem Thema garnicht. Das zusätzliche "Automatikfreigabebit" liegt doch nicht in den Strukturen zur Anbindung ans HMI, wie kommst Du auf die Idee?
Die daraus resultierenden Probleme kannst du vermeiden, indem du deine Strukturen in einem globalen DB ablegst. Dort sind alle Betriebsarten, Schaltzustände, Parameter, Flankenmerker etc. gespeichert. Dieser DB ist "heilig", sollte also nicht mehr geändert werden müssen. In diesem DB ist natürlich genügend Reserve vergesehen. Vielleicht kannst du dich auch mit einem ARRAY of UDT anfreunden, und nur im Kommentar die Namen der Pumpen, Regler etc. pflegen.
irgendwie reden hier alle (absichtlich) aneinander vorbei. Für UDTs der einzelnen Pumpen-Elemente mach ich das genauso. Nur geht es mir hier in dem Thema nicht darum, sondern um Variablen die zusätzlich zu diesen Standardstrukturen benötigt werden.
Wenn, um bei deinem Beispiel zu bleiben, ein Zweipunktregler als Automatik-Freigabe bei einer Pumpe hinzu kommt, dann gehört er in die Instanzdaten des FB und keinesfalls in die Struktur der Pumpe. Das macht das Programm auch gleich wieder übersichtlicher.
Hab ich doch geschrieben, die "Automatikfreigabe" liegt doch in den Instanzdaten des FB. Nur werden diese dann halt blöderweise bei Änderungen reinitialisiert. Da ich mehrere Pumpen in diesem FB bearbeite liegen die jeweils benötigten Variablen dort auch noch einmal sortiert in Strukturen und nicht wirr verteilt im IDB. (Das ist nicht die selbe Struktur, welche für z.B. HMI verwendet wird sondern vielleicht sowas wie eine "Strukturierung der jeweils für Automatikfunktionen benötigten Variablen)
Du hast doch gar kein "Datenmodell"!
was versteht ihr denn unter Datenmodell?
 
Zuletzt bearbeitet:
Gleichzeitig ist der Ton auch bisl aggressiv. Warum?
Das ist immer derselbe Forentroll. Immer wenn jemand eines der grundlegenden Probleme vom TIA anspricht ist der jemand für ihn einfach nur nicht schlau genug, TIA zu bedienen.

Ansonsten ist natürlich immer jeder Programmierer schlauer als jeder andere 😂

Und oft wird auch einfach nur aneinander vorbei geredet.

Hier werden ja auch immer zwei Themen vermischt, wie kann ich Einstellwerte sichern, wie kann ich Änderungen stoßfrei im laufenden Betrieb machen.
Hat beides nicht viel miteinander zu tun, ausser dass das ursächliche Problem für beides das Reinitialisieren ist. Wobei man Einstellwerte so oder so regelmäßig mal ins Offline Projekt sichern sollte, falls die SPS mal defekt gehen sollte...

Und spätestens, wenn ich mal Änderungen an einem nicht von mir selbst erstellten Programm oder Programmierstil machen MUSS, hab ich eh keinen Einfluss auf die "Datenstruktur"... ICH WILL EINFACH NUR NE VARIABLE EINFACH UMBENENNEN KÖNNEN (weil es abundzu warum auch immer notwendig ist), OHNE DASS REINITIALISIERT WIRD 😭
 
Zuletzt bearbeitet:
Mal schnell einen „Variablennamen“ ändern ist bei S7-Classic recht einfach.
Bei vielen moderneren Systemen scheinbar nicht mehr. :rolleyes:
2025-06_ChatGPT_SPS-Systeme_01.jpg

Hier noch ein weiterer Vergleich von ChatGPT zu anderen üblichen Änderungen.
B&R fällt hier positiv auf…
2025-06_ChatGPT_SPS-Systeme_02.jpg
 
Zurück
Oben