Hat jemand einen Überblick, wie andere Steuerungshersteller mit dem Thema Aktual-Daten umgehen?
Die Probleme sind doch relativ gleich.
Dann sollte es doch auch möglich sein, gleiche Lösungen zu finden!
Dazu muss man etwas ausholen. Im Prinzip hat jeder Steuerungshersteller die folgenden Ansätze:
- Globale Variablen
- Namespaces
- Strukturen
- Datentypen
Klar ist eins: ändert man den Datentypen einer Variable muss diese neu initialisiert werden.
Datenbausteine bei Siemens sind im Prinzip globale Variablen, welche von einem anonymen strukturierten Datentyp abgeleitet sind. Ändert man im DB etwas, wird somit der anonyme Datentyp geändert und alles ist zu reinitialisieren.
Dieses Verhalten ist bei allen Steuerungsherstellern gleich.
Einen vernünftigen anderen Ansatz für globale Variablen bietet Siemens nicht abgesehen von Merker-Variablen und globalen Instanzen. Namespaces gibts nur mit Software-Units, allerdings gibts in Software-Units keine globalen Variablen abgesehen von DBs.
Bei Rockwell Studio 5000 Steuerungen ist der Ansatz so: Es gibt globale Variablen (Controller Tags) und der Namespace-Ansatz ist über die 'Programs' gelöst. Möchte man in Strukturen etwas ändern muss man das ganze Programm laden, inkl. aller Aktualwerte. Man lädt alle Aktualwerte mit einem Mausklick hoch, ändert die Strukturen (aktualwerte von Elementen die nicht verändert werden bleiben erhalten - das ist auch bei Siemens so) - und lädt dann alles auf die Steuerung (in STOP) Man ist das dort gewohnt, also sind alle Programme so konzipiert dass man mit wenig Strukturen arbeitet und viel mit Program-Variablen.
Bei B&R (zugegeben: der Wissensstand ist > 10 Jahre alt) ist der Ansatz so: alles was grobe Programmänderungen überleben muss platziert man in den Permanent-Bereich, das sind globale Variablen. Der Permantbereich tickt in etwa so wie ein nicht-optimierter DB bei Siemens. Man muss das Thema Datenhaltung planen. Ansonsten arbeitet man mit globalen und lokalen (statischen) Variablen, das Thema "stoßfreies Laden" ist über die Jahre immer wieder verbessert worden, aber wenn man in Strukturen dahinändert ist ein Reinitialisieren unvermeidlich.
Was meines Erachtens nach viele S7-Programmierer nie gelernt haben ist, sich über eine saubere Trennung von Einstelldaten, Aktualdaten, Statistikdaten usw. Gedanken zu machen. Die feste Speicherarchitektur der S7-300/400 hat die viel verziehen und der Simatic Manager hat da auch viel zugelassen, und daher hat man alles wie Kraut und Rüben gemischt.
B&R hat dem 1996 mit PG2000 einen Riegel vorgeschoben, Rockwell mit der Einführung von RSLogix 5000. Ich hab 2004 zum ersten mal mit B&R gearbeitet und musste meine Denkweise was Variablen, Einstelldaten, Strukturen usw betrifft völlig umdrehen. Jedes Projekt beginnt seither mit der Datenmodell-Planung. Der Umstieg von S7-classic auf TIA war so gesehen dann ein Kinderspiel, jener auf Studio 5000 auch. Ich denke dass Systeme wie PLCNext, TwinCAT und
CoDeSys sich hier ähnlich Studio 5000 verhalten.
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.