- Beiträge
- 15.404
- Reaktionspunkte
- 4.039
-> Hier kostenlos registrieren
Es spricht prinzipiell nichts dagegen, sich globale DB zusammenzustellen, die diese Strukturen enthalten. Darauf kann durchaus kreuz und quer zugegriffen werden, diese Struktur ist fest und unveränderlich (außer, der Programmierer, will etwas erweitern). Zugriffe auf die DB können im Programm gefunden werden, solange nicht indirekt adressiert wird. Man muß nicht immer FB nutzen, leider hat Siemens mit den IDB nicht gerade etwas Schönes erschaffen, die hätten sie vor Zugriffen von außen schützen müssen, wie das jede ordentliche Programmiersprache mit lokalen Daten macht.
Tödlich ist vor allem folgende Konstellation:
Umkopieren von IDB-Inhalten, besonders noch per indirekter Adressierung und möglichst noch im FB. Um noch einen draufzusetzen, kopiert man das in einen anderen IDB. In den FB dann natürlich Zugriff über die Symbole aus dem Bausteinkopf (wozu die ja schließlich da sind). Auch im Programm werden munter Daten im IDB geschrieben. Jetzt herauszufinden, wer wann die Daten im IDB geschrieben hat, ist fast nicht mehr möglich, bzw. nur mit einem unvertretbarem Zeitaufwand. Wenn jetzt noch einer in einem FB ein paar Variablen einfügt, ist das Chaos perfekt, denn nun paßt im gesamten Programm nichts mehr. Da hilft auch nicht die Bausteinkonsistenz, welche man ja bei den globalen DB noch ganz gut zum "Einschieben" von Daten nutzen kann.
Tödlich ist vor allem folgende Konstellation:
Umkopieren von IDB-Inhalten, besonders noch per indirekter Adressierung und möglichst noch im FB. Um noch einen draufzusetzen, kopiert man das in einen anderen IDB. In den FB dann natürlich Zugriff über die Symbole aus dem Bausteinkopf (wozu die ja schließlich da sind). Auch im Programm werden munter Daten im IDB geschrieben. Jetzt herauszufinden, wer wann die Daten im IDB geschrieben hat, ist fast nicht mehr möglich, bzw. nur mit einem unvertretbarem Zeitaufwand. Wenn jetzt noch einer in einem FB ein paar Variablen einfügt, ist das Chaos perfekt, denn nun paßt im gesamten Programm nichts mehr. Da hilft auch nicht die Bausteinkonsistenz, welche man ja bei den globalen DB noch ganz gut zum "Einschieben" von Daten nutzen kann.