Jetzt ist mir noch was eingefallen,
da ich in meinem Prg ziemlich viele Aufrufe von Fb's habe kommen da einige Instanz DB's zusammen.
Ich hab jetzt mal was über UDT's gelsesen aber leider nicht ganz vertanden.Kann man damit nich eine einmalige Definition des DB's erreichen und es kommt trotz öfteren Aufrufs von verschieden Stellen aus zu keinem Konflikt?
Hallo Phil,
ein UDT ist nichts anderes als ein selbstdefinierter Typ, in C sowas wie typedef und struct, in Pascal record.
Damit kann man zusammenfassen was Zusammen gehört und den Daten eine Baumstruktur verpassen, was die Sache in aller Regel übersichtlicher macht.
Z.B. Struktur Tank enthält dann: Füllmenge, Temperatur, Leitwert (alle Real), Leer, voll, Rührwerk (bool) oder was halt alles sinnvoll ist.
Man kann auch Strukturen verschachteln.
Die Datenstruktur legt man einmal an, hat man nun mehrere Tanks in einer Anlage, so lassen sich die Daten immer auf die gleiche Struktur abbilden.
Dazu legt man ein oder mehrer DB's aus diesem UDT an, alternativ kann man auch einen globalen DB anlegen, der in sich mehrere Daten dieses Typs beinhaltet.
Einziger Nachteil, Kommentar und Anfangswerte werden schon beim Typ festgelegt und können anschließend nicht mehr verändert werden.
( in C++ löst man dies teilweise mit übergabeparametern an den Konstruktor)
Bei der Abänderung von UDTs muss man vorsichtig sein, da Siemens die davon abgeleiteten Daten nicht automatisch aktualisiert. Wird dies vergessen, so erlebt man beim öffnen der entsprechenden Bausteine böse Überraschungen. Ich persönlich fasse den UDT am Anfang lieber etwas weiter und greife dann auf bestimmte Daten, die vielleicht grad nicht verfügbar sind weil (noch) kein Sensor vorhanden ist, einfach nicht zu (z.B. Leitwert).
Mit UDTs kann man natürlich auch die Ein/Ausgänge von Bausteinen aufbauen, lokale und Temporäre Variablen deklarieren, wie mit "normalen" Variablen auch
Gruss
Kiestumpe