Programm für Datenbaustein-Export nach Excel

Beiträge
9.189
Reaktionspunkte
2.936
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 

Anhänge

  • S7DBExport.zip
    133,6 KB · Aufrufe: 625
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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).
 

Anhänge

  • S7_Adressgenerator.zip
    22,5 KB · Aufrufe: 266
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
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
 

Anhänge

  • db-export.zip
    5,1 KB · Aufrufe: 290
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ß
 
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
 
Zurück
Oben