# Datenbaustein erzeugen



## jamalau (20 Februar 2007)

Hallo, ist vielleicht eine blöde Frage aber ich stelle sie einfach mal.

Ich möchte mir in S7 einen DB erzeugen mit 102 Bytes.
Wie kann ich das am einfachsten machen, ich meine ohne eine SFC zu benutzen?

Ich hab  mal irgendwo mitbekommen, das man in dem Datenbaustein, mit irgendeiner Befehlsfolge, die Länge und den Typ bestimmen kann.
Hab ich mich da vielleich verguckt, oder gibt es da einen Weg ?


----------



## plc_tippser (20 Februar 2007)

Ähhm  

möchtest du den mit dem Simatic Manager erzeugen oder während der Laufzeit in der S7?

1. Fall: Im Simaticmanager rechte Maus in den Bausteinordner, neues Objekt einfügen, Datenbaustein, Typ global.

Diesen kannst du dann öffnen und mit einem Array oder sonstiger Aufteilung auf deine Größe bringen.

2. Fall: Du benötigst die Funktionen DB_Create und evt. DB_Delete

pt


----------



## jamalau (20 Februar 2007)

Hallo,
wie ich einen DB erstelle weiss ich, aber wie geht das mit den Array?


----------



## jabba (20 Februar 2007)

Wieder die Frage ?
Automatisch oder mit Step7-Manager

Beim anlegen vom DB, den öffnen
Variable z.B. Text 
Struct =ARRAY[0..102] 
Anfangswert setzten zb 0
Dann Enter drücken, es wird eine zweite Zeile eingefügt , da bei Struct den Typ eintragen, z.B INT


----------



## plc_tippser (20 Februar 2007)

jamalau schrieb:


> Hallo,
> wie ich einen DB erstelle weiss ich, aber wie geht das mit den Array?


 
Du schreibst nur Schrott. Schreib mal genau was du möchtest, oder bemüh die Hilfe.

pt


----------



## jamalau (21 Februar 2007)

Also das ich den Baustein mit dem S7 Manager erzeugen will, geht meiner Meinung nach aus dem ersten Posting hervor. 
"Ich möchte keinen SFC zum erzeugen nutzen"
Also meinte ich das Erzeugen mit dem S7-Manager.


Das mit dem Array hab ich so in der Hilfe nicht gefunden. Wenn man nicht weis wonach man suchen soll, kann man es auch schlecht finden.

Ich hatte gedacht, man könne einen Datenbaustein verschiedentlich vorbesetzen, ohne einen großen Aufwand zu betreiben. Aber das schein ja dann doch nicht so einfach möglich zu sein.


----------



## MSB (21 Februar 2007)

Bilder sprechen mehr als 1000 Worte:



Das wäre die Variante mit dem Array,
da es dir ja scheinbar nicht auf Symbolik oder so ankommt, eine einfache Variante.

Wenn deine 102Bytes immer eine wie auch immer geartete (gleiche) Strucktur besitzen,
kannst du das evtl. auch relativ elegant mit UDT's lösen.
Dann ist der Datentyp nicht mehr ein ARRAY oder ähnliches, sondern
halt der entsprechende von dir angelegte UDT.

Wenn dein UDT so passt, kannst du auch den DB direkt mit diesem UDT von Step7 erstellen lassen.

Mfg
Manuel


----------



## TobiasA (21 Februar 2007)

DB's kann man mit Anfangswerten besetzen. Wenn man den DB im Simatic Manager editiert, kann man dort in einer Spalte die Initialwerte verändern, mit denen der DB geladen wird, wenn man ihn in das AG lädt.

Man kann natürlich auch eine AWL- Quelle schreiben und die dann einlesen. Geht auch. Oder eine AWL- Quelle mit den besagten 102 Byte als Vorlage nutzen und dann für die jeweiligen Zwecke umändern. Viele Wege führen nach Rom.

Was genau hast du denn eigentlich vor?

Gruß, Tobias


----------



## volker (21 Februar 2007)

array ist natürlich am schnellsten. der nachteil ist aber, das ich keine anfangswerte eintragen kann.

wenn du einen db haben willst der eine bestimmte länge hat und alle variablen vom gleichen typ sein sollen hätte ich da ein script für welches eine awl-quelle erzeugt.


----------



## jamalau (21 Februar 2007)

Ich habe eigendlich nichts besonders vor, ich möchte einfach nur einen DB erzeugen.
Da ich aber noch ziemlich neu in der Materie bin, wollte ich nur eine Aussage über einen einfacheren Weg. Das mit den Arrays ist für mich nicht akzeptabel, da ich ja keinen Kommentar für jede Variable antragen kann.
Also bleibt mir nur die Möglichkeit mir eine Variable zu erzeugen und es so oft wie ich es brauche durch die Kopier bzw. Einfügefunktion zu erstellen.
Und da mir das für 100 oder mehr Variablen zu umständlich schien, hatte ich vermutet es gibt einen anderen Weg.
@MSB schönen Dank für den Anhang, habe es auch gleich getestet, aber ist für mich nicht so die beste Lösung.

Sorry wenn ich mich vielleicht nicht so Ausdrücken kann, bin wie gesagt noch nicht so lange mit einer S7 verheiratet. Muss mich nach und nach in die Materie einarbeiten. Seminare werden bei uns nicht so oft angeboten.
Deswegen versuche ich es auf diesen Weg. Auch wenn da nach Ansicht einiger User nur "Schrott" geschrieben wird.

@Volker
Liegt das Script auf deinen Hompage ?

Werde mich da mal umschauen.
Schönen Dank.


----------



## volker (21 Februar 2007)

> Liegt das Script auf deinen Hompage ?


noch nicht. leg ich nacher noch rein. ich schreib dann hier wenns drin ist.


----------



## Zefix (21 Februar 2007)

volker schrieb:


> array ist natürlich am schnellsten. der nachteil ist aber, das ich keine anfangswerte eintragen kann.


 
Hi,
geht soviel ich weiss schon,kann aber bei langen arrays lästig werden.
Man kann am Anfangswert mehrere stellen durch ein komma getrennt eingeben.

Wie schon mal,Bilder sagen mehr als ...  

Gruss Andy


----------



## volker (21 Februar 2007)

@zefix
stimmt. aber das finde ich extrem unkonfortabel.

so. *das script liegt jetzt auf meiner hp unter ../sps/tools/make_db.rar* bereit.
habe das noch ein wenig aufgepeppt (sonst meckern hier wieder diverse leute mit 'was soll man denn damit', 'kinderkram' etc.
aber egal. ich kanns gut brauchen.

man kann jetzt einen db erzeugen wie man das will. auch verschiedene typen.
einfach mal testen. kost ja nix.


----------



## vollmi (22 Februar 2007)

plc_tippser schrieb:


> Ähhm
> 2. Fall: Du benötigst die Funktionen DB_Create und evt. DB_Delete
> pt



Was sind denn das für Funktionen? Davon hab ich noch nie was gehört.

Wo finde ich diese?

mfG René


----------



## JörgK (22 Februar 2007)

vollmi schrieb:


> Was sind denn das für Funktionen? Davon hab ich noch nie was gehört.
> 
> Wo finde ich diese?


Das sind Standard-FCs in der CPU:

DB_Create -> SFC22 - CREAT_DB
DB_Delete -> SFC23 - DEL_DB
Zu finden in der Bibliothek stdlibs -> builtin.


----------



## Rudi (22 Februar 2007)

*DB erzeugen mit script*

Danke Volker, sowas hab ich schon lange gesucht.
Gefällt mir sehr gut !!


----------



## volker (22 Februar 2007)

fragen zu meiner hp, die von ug angestossen wurde, habe ich wegen ot hierhin verschoben.

http://www.sps-forum.de/showthread.php?t=12250


----------

