massenhaft DBs automatisch anlegen

Limette

Level-2
Beiträge
282
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ist es möglich einen DB per Programm tausendfach anzulegen. Hab ein UDT kreiert und würde nun davon ein paar DB-Abklatsche machen. Geht so was oder mich ich das alles per Hand machen ?
 
Hallo,

ist es möglich einen DB per Programm tausendfach anzulegen. Hab ein UDT kreiert und würde nun davon ein paar DB-Abklatsche machen. Geht so was oder mich ich das alles per Hand machen ?
Hallo Limette,
du kannst DB's mit dem Systembaustein "CREAT_DB" (SFC 22) erzeugen, über eine Schleife könnten wahrscheinlich auch auf die schnelle viele DB's erzeugt werden.
Die Structur über einen UDT vorbelegen geht allerdings mit dieser Funktion nicht, ebenso hätte kein DB eine Symbolik.
Deshalb würde ich jetzt behaupten: Wenn du es brauchbar haben möchtest, geht es nur von Hand.
 
Du kannst natürlich auch per libnodave und eine kleinen C-Applikation die DBs generieren ... das ist aber wohl doch schon eher wieder mit Kanonen auf Spatzen geschossen ;)

Per Quellen geht das sicher am einfachsten. Am einfachsten einen DB in eine Quelle importieren, damit siehst du, wie das aussehen sollte. Anschliessend kannst du das beliebig oft einfügen.
 
Hallo Limette,

ein kleines Beispiel für die Erzeugung mehrerer gleicher Global-DB's.

Ablauf:
- erzeugen eines DB's mit Hilfe UDT, dieser DB ist das Vorbild für die zu erzeugenden DB's.
- Symbole anlegen, damit die einzelnen Variablen auch symbolisch angezeigt werden.
- im Anlauf erzeugen der DB's mit SFC22 - diese sind aber alle mit "0" vorbelegt
Im Beispiel werden aus dem DB90 vier weitere DB's erzeugt.

Hinweis:
- im Beispiel FC3 werden die neu zu erzeugenden DB's vorher gelöscht. Das hat bei Änderung der DB-Länge ( UDT90 ) den Vorteil,
dass die DB's mit der neuen Länge neu erzeugt werden; kann von Vorteil sein - muß aber nicht.
Das muß genau überlegt sein, da danach alle Daten rückgesetzt sind.

Gruß
kalle_B





Anhang anzeigen FC3.pdf , Anhang anzeigen Mehrere_gleiche_DBs.pdf
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Es führen viele Wege nach Rom - besonders in unserer Programmiertätigkeit.
Das von mir aufgezeigte Beispiel hat den Vorteil, das eine Änderung nur im UDT durchgeführt werden muß.
Eine Neuübersetzung des Quell-DB ist in jedem Fall angeraten. Nach einem SPS Neustart sind dann alle erzeugten DB's aktualisiert, aber auch auf "0" gesetzt.
Dies ist sicher nicht für jede Aufgabenstellung geeignet.
Bei der Umsetzung der jeweiligen Aufgabenstellung ist sowieso abzuwägen, welche Variante gewählt wird.
Mein Beitrag ist als zusätzlicher Denkanstoss gedacht.

Gruß
kalle B
 
Hallo Kalle,

wie kommt denn die Symbolik in deine online erzeugten DBs? Diese haben doch gar keinen Bezug zum UDT?


Gruß, Onkel
 
Hallo,

die Symbolik ist gegeben durch die Symbole für die zu erzeugenden Datenbausteine in der Symboltabelle,
Symbol: Symbolname DB ; Adresse: DB xx ; Datentyp: UDT yy ; Kommentar bei Bedarf.
Siehe auch "Mehrere_gleiche_DBs.pdf" - dort ist die Reihenfolge dargestellt:
- Ausschnitt aus der Symboltabelle
- Ausschnitt aus dem UDT
- Auszug aus der Variablentabelle mit mehreren DB's
In der Variablentabelle ( online ) sind auch die Aktualwerte dargestellt, die zeigen, dass die Vorgabe in der UDT nur in dem daraus erzeugten
"Quell-DB" enthalten sind. In den erzeugten DB's sind Aktualwerte "0", da kein Zugriff nach der Erzeugung erfolgte.

Der FC3 ist auch nur ein Beispiel; es ist auch der Vorschlag von Paule #2 hier eine Schleife zu bilden u.U. angebracht.
Wie oben genannt - es führen viele Wege nach R....

Gruß
kalle B
 
Zuletzt bearbeitet:
Hallo Limette,

Kalles Erläuterung bezog sich auf meine Frage. Danke Kalle.

1000 DBs ist schon eine Menge Zeug. Kopieren kannst du die DBs übrigens auch direkt im Bausteinordner (Strg-C/Strg-V). Das ist vielleicht einfacher als das Kopieren in einer AWL-Quelle. Ich würde allerdings darüber nachdenken, deine 1000 UDTs in einen oder, je nach Größe, in mehrere DBs zu packen, und dann per Pointer, ANY-Pointer oder STRUCT zu zu greifen.


Gruß, Onkel
 
@Onkel Dagobert
bitte mein Geschriebenens nicht verkürzt zitieren. Ich wollte mich bei Kalle schlicht und einfach für sein Bemühen bedanken.

Nun zur Frage:

habe nun fast alle DBs von Hand angelegt. Es fehlen nur noch die symbolische Namen. NameXY und eine hochzählende Nummer. Gibt es dafür irgendwas ?
 
Zurück
Oben