DB-struktur

Pimsti

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich implementiere gerade meine ersten S7-300 Projekte und stoße dabei immer wieder auf das selbe problem:
Ich erstelle für einen Anlagenteil einen FB mit dazugehören InstanzDBs.
Alle Anlagenparameter werden in einen GlobalenDB (z.B. DB10) abgelegt. Diese Parameter werden dann an die einzelnen FBs der Anlagenteile weitergegeben welche eben gebraucht werden.
Ich habe nun z.B.: 100 Paramter im DB10 und komme gegen Ende des Projektes drauf das einige Parameter nicht sinnvoll sind und nicht gebraucht werden. Ich kann diese jetzt aber nicht ohne weiteres herauslöschen, da ja die nachfolgenden Parameter dann eine andere Adresse haben und im OB1 wo diese an den einzelnen FBs angehängt sind, sind dann falsche Zuweisungen:
Bsp.
An einem Eingang des FB13 hängt eine Varibale DB10.DBW15
Lösche ich nun eine DWORD-Variable im DB10 vor dieserdann würde die verwendete Variable nun DB10.DBW13 heißen.
Im OB1 ist am FB13 aber immer nochDB1.DBW15 angehägt.
Gibt es denn keine Möglichkeit die Variablen mit einen Symbolnamen anzuhängen damit bei einer Änderung des DB10 die Entwicklungsumgebung checkt das alle nachfolgenden aktualisiert werden müssen?!?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist ein gefährliches Feld, da man schnell Alles durcheinander bringt.
Suche mal im Forum unter "Bausteinkonsistenz". Es gibt in Step7 einen Mechanismus für dein Problem. Alle DB-Daten müssen dazu symbolisch angesprochen werden. Mittels der Objekteingenschaften (rechte Maustaste click auf Ordner Bausteine) kann man die Eigenschaften der Konsistenz bestimmen. "Symbolisch Vorrang" heißt, daß bei Änderungen an den Bausteinen, bei den Daten die Symbolik verglichen wird und dann auf das symbolisch richtige Datenwort geändert wird. Das passiert dann bei der Konsistenzprüfung. Man sollte Änderungen an Datenbausteinen in kleinen Schritten vornehmen und dann regelmäßig die Konsienzprüfung durchführen. Vorher immer eine Sicherung anlegen! Es gibt eine ganze Menge Fallstricke, die dann zu Datensalat führen können. Besonders die Arbeit mit Instanz-DB, Udt und deren Deklaration und Nutzung in FB machen häufig Schwierigkeiten und erfordern dann Nacharbeiten per Hand.

PS: Im Zweifelsfalle ist es oft besser, nicht genutzte Variablen als ReserveXX umzubenennen. Kann viel Ärger ersparen :cool: .
 
Ich habe mich gerade mit der rein symbolischen Adressierung wie du es beschreiben hast, gespielt und dies sieht mich ganz gut an. Nur ist jetzt wichtig dass man ein System in der Namensgebung hat (wie z.B. ungarische Notation beim Java bzw C++ programmieren). Eins ist aber immer noch unkomfortabel:
Wenn ich im DB meinen Variablennamen ändere dann muss man das auch per Hand überall dort machen wo man diese Variable verwendet hat. Wenn ich in Java z.B. den Variablenname ändere dann wird das auch in allen Methoden durchgezogen.
Gibts hier auch etwas bei Siemens?
 
Wenn du nur Variablennamen ändern willst, mußt du für Bausteinkonsistenzprüfung den Operandenvorrang auf Absolut stellen.
Aber Vorsicht, immer nur eines ändern, Variablennahmen, oder die "Zusammenstellung" von Datenbausteinen.
 
Zurück
Oben