# Programm für Datenbaustein-Export nach Excel



## Thomas_v2.1 (8 August 2007)

Hallo,
ich musste letztens mal aus mehreren Datenbausteinen eine Schnittstellenliste zum PLS in Excel zusammenstellen.
Da man per Copy&Paste die Adressangaben nicht mitbekommt, habe ich mir mal ein kleines (Konsolen-)Programm geschrieben (in C++), welches die Adressdaten generiert.

Dazu muss man vorher aus dem Datenbaustein eine Quelle generieren. Entweder man exportiert diese Quelle dann in eine AWL-Datei, oder kopiert den Text in Notepad und speichert es dann dort.

Das Programm ruft man dann z.B. mit:

 S7DBExport.exe DB2.AWL.txt DB2.csv

auf.

Im Anhang das übersetzte Testprogramm sowie der Quellcode.

Die Adresse kann einmal im Format +1.0 (wie in Step7) oder DB50.DBX1.0 exportiert werden.
Version 1 ist jetzt fest einkompiliert.

Unterstützt werden alle elementaren Datentypen bis auf CHAR!.
Hier wird nämlich schon im Deklarationsteil initialisiert, also
 char_56 : CHAR  := 'a';"
Warum das nur hier so ist weiß nur Siemens. Ich hatte jedoch keine Lust hierfür eine Ausnahme zu Programmieren.

Eigene Datentypen (UDTs) können in der Struktur im Quellcode eingetragen werden. Hierbei ist zu beachten, dass die Namen der UDTs keine
Leerzeichen enthalten dürfen.

Vielleicht kann ja jemand anderes noch was damit anfangen, oder strickt sogar noch eine kleine GUI drumrum ;-)

PS:
Ich hoffe mal nicht ich habe eine einfache Möglichkeit übersehen, wie man die Adressen sonst aus Step7 rausbekommt.
Den Umweg über ein pdf finde ich doch ziemlich umständlich.

Erst wollte ich es ja in Perl schreiben, was wegen der Zeichenkettenverarbeitung sicher kürzer gewesen wäre.
Aber es will sich nicht jeder Kollege den Perl-Interpreter installieren...

Gruß
Thomas


----------



## Isha (28 November 2007)

*Wer macht das Tool fertig?*

Hallo

Der Ansatz ist gut, leider aber funktioniert das Tool noch nicht richtig.
Sobald Strukturen im DB sind funktioniert der Export nicht.
Schön wäre auch wenn bei der Adresse nicht nur 2 oder 4.1 steht sondern der ganze Text wie DB1.DBW2 oder DB1.DBW4.1.

Wäre toll wenn jemand das Programm erweitern und korrigieren könnte.

Liebe Grüsse
Isha


----------



## Thomas_v2.1 (28 November 2007)

Hi
für die einfachere Verwendung habe ich Programm auch in Excel mit VBA geschrieben:

http://www.sps-forum.de/showpost.php?p=107678&postcount=6

(oder auch im Anhang).

Strukturen oder UDTs habe ich dort aber auch noch nicht eingebaut da ich das bisher noch nicht benötigt habe. Für ein UDT könnte man die Bezeichnung als Datentyp eintragen (mit der entsprechenden Länge an Datenworten) um wenigstens die Anfangsadresse zu erhalten.

Bei einer Struktur stellt sich die Frage, welche Adressangaben dann letzendlich sinnvoll sind.
Die Offsetangabe zur Startadresse der Struktur wie Step7 das macht halte ich nicht für besonders nützlich. Man könnte aber Angaben im Feld "Datentyp" wie STRUCT und END_STRUCT einfach ignorieren, dann werden die Adressen fortlaufend weiter vergeben. 
Oder wie hast du dir das vorgestellt?

Gruß
Thomas

P.S.
In dem C-Programm lässt sich auch das Exportformat einstellen. Er ist in dem Beispielprogramm lediglich fest einkompiliert (steht in der main.cpp).


----------



## Isha (10 Dezember 2007)

Vielen Dank für das Excel File.
Im Moment habe ich leider keine Zeit, aber wenn ich dazukomme werde ich das Programm erweitern und Dir eine Kopie senden.

Gruss
Isha


----------



## volker (11 Dezember 2007)

ich verweise diesbezüglich auch noch mal hierauf


----------



## Thomas_v2.1 (11 Dezember 2007)

volker schrieb:


> ich verweise diesbezüglich auch noch mal hierauf



Mit der Druckerlösung habe ich auch schon rumprobiert, auch über ein PDF. Leider kann man die gedruckten Daten nicht so in Excel reinkopieren, sodass diese auch in einzelne Spalten übernommen werden.
Hast du da einen Tip wie das auch geht?


----------



## volker (11 Dezember 2007)

kann das problem nicht wirklich nachvollziehen.
der mit dem generic gedruckte db liegt doch als stinknormale textdatei vor.
den kannst du doch ohne probleme mit excel öffnen.
beim öffnen natürlich 'feste breite' wählen und die trenner an die richtige stelle schieben. den db-kopf musst du dort ignorieren.

im anhang mal ein gedruckter db und das zugehörige excel-dokument


----------



## Thomas_v2.1 (11 Dezember 2007)

volker schrieb:


> kann das problem nicht wirklich nachvollziehen.
> der mit dem generic gedruckte db liegt doch als stinknormale textdatei vor.
> den kannst du doch ohne probleme mit excel öffnen.
> beim öffnen natürlich 'feste breite' wählen und die trenner an die richtige stelle schieben. den db-kopf musst du dort ignorieren.



Aso, noch nie genutzt ;-)
Aber warum einfach wenns auch schwer geht...

Gruß


----------



## Thomas_v2.1 (3 Oktober 2008)

:TOOL:
Überarbeitet sodass auch Arrays und (verschachtelte) Strukturen verarbeitet werden können.


----------



## hois1 (5 November 2010)

*Adresse generieren*

Hallo Leute

Ich hab da meinen ganz eigenen Trick, um Adressen zu generieren:

1.) markiere die betreffenden Zeilen deines Dbs und kopiere in Excel
2.) Schreibe in einer Spalte den Namen deines DBs in Anführungszeichen mit Punkt am Schluss Bsp: "SendeDB".
3.) Verkette die DB-Namens Zelle und die Symbolik Zelle mit 
Bsp: =verketten(A1;F1)

4.) öffne in Simatic Manager -> Zielsytem -> "Variable beobachten/steuern"
5.) kopiere diesen gebildeten String in die Steuertabelle --> Die Adressen werden automatisch erzeugt!

Geht relativ schnell und für alle gängigen Datentypen!

mfg
Daniel


----------



## logo78 (14 Februar 2016)

Auch wenn uralt-Thread; darf ich in diesem Zusammenhang auf:
https://sourceforge.net/projects/step7dbtoexcel/
aufmerksam machen?

Hatte gerade mal wieder viel mit DBs zu tun und per Google-Suche gefunden.
Ein paar In-und Exports gemacht - funktioniert einwandfrei.


----------

