# Daten auslesen - Hilfe gesucht?



## squarefan (8 Mai 2010)

Hi@all,

Ich wuerde ein wenig Hilfe von einem der Experten brauchen. Habe immer noch das gleiche Problem Daten aus der S7-300 rauszuziehen.

Im prinzip wuerde ich gerne die Messwerte einfach in ein Textfile schreiben (bevorzugt mit einem sehr sehr einfachen libnodave script). Die weitere Verarbeitung ist dann fuer mich kein Problem, es geht in diesem Fall 'nur' um das Auslesen der S7 Werte.

Ich habe leider noch nie mit dem gearbeitet und habe auch ein wenig Respekt davor, da ich es auch sicher nicht mehr benutzen werde (ist fuer meinen Vater). 

Da dies wahrscheinlich ein ziemliches Standardproblem ist, wollte ich mal anfragen ob mir jemand hier helfen kann oder vielleicht sogar ein einfaches script hat das er mit mir sharen wuerde. Ich waere euch wirklich sehr dankbar und kann auch gerne dann mit anderen Sachen in return helfen (Webfrontends, DBs Hilfe etc.).

*Zusammenfassung*:
Derzeit laueft auf dem KontrollPC WinCC Flexible mit der Steuerung selber... die Source habe ich allerdings keine Moeglichkeit bei mir irgendwas zu editieren oder auszulesen. Ich will dann im Prinzip einfach alle relevanten werte (ca. 10-20) in ein CSV file schreiben, das ich dann zur weiteren Verarbeitung heranziehe (das alles kann ich selber machen).

Kann mir hier vielleicht jemand helfen?

danke und lg,
Alex


----------



## rostiger Nagel (8 Mai 2010)

Hallo Alex,
wenn es nur um ein paar Werte geht und du die nicht Zyklisch brauchst,
würde ich versuchen das aus Flexibel heraus zu machen. 

Einfach und schnell gemacht ist es wenn du deine Variabeln die du exportieren
möchtest in ein Rezept ziehst, hier heraus kannst du die dann Ereignisgesteuert
in eine CSV-Datei exportieren.

Dann gibt es noch das Stichwort Archiv-Funktion, nutze dazu mal die "F1" Taste
in Flexibel und gib mal das Stichwort "Variablenarchivierung in WinCC flexible"
ein. Da gibt es die möglichkeit ein Variablen oder Kurven in CSV Format zu Archivieren.

Eine andere möglichkeit wäre es mit Scripte zu lösen da gibt es diesn Beitrag.
http://www.sps-forum.de/showthread.php?t=15348

gruß helmut


----------



## ronnie.b (8 Mai 2010)

*Re*

Hallo,
vielleicht hilft dir auch der "Libnodave Protokoller" weiter. Schau´s dir einfach mal an.
http://www.sps-foren.de/showthread.php?t=29131&highlight=libnodave+protokoller


----------



## squarefan (9 Mai 2010)

Hi, danke fuer die schnellen Antworten.

Sieht beides sehr gut aus, speziell der Protokoller duerfte eine gute Loesung sein (direkt export in sqllite).

Wie kann ich allerdings herausfinden welche Datenblocke ich auslesen muss. Wir haben nur das WinCC Flexible Runtime... damit kann ich im prinzip nichts machen ausser das Projekt auszufuehren mit dem die Anlage gesteuert wird. Ich wuerde am liebsten alle Werte rausziehen und diese mir dann einfach selber aus der DB herausholen.

danke,
Alex


----------



## rostiger Nagel (9 Mai 2010)

also wenn du keine Projektierungssoftware hast und es für deinen Papa ist,
denke ich das es ein privatprojekt ist. Dann könnte Libnodave die richtige 
wahl für dich sein, dazu würde ich mal die suchfunktion hier im forum
nutzen, da kannst du schon einiges finden.


----------



## squarefan (9 Mai 2010)

aber da habe ich denke ich das gleiche problem herausfinden welche datenbloecke ich auslesen muss?


----------



## rostiger Nagel (9 Mai 2010)

das step 7 projekt hast du schon ?
Wenn nicht, wird es schwer, etwas auszulesen zu wollen, ohne zu wissen wo es steht.


----------



## squarefan (9 Mai 2010)

Ja das Step7 Programm hab ich. Kann ich das irgendwie in Klartext mit einem Texteditor rausziehen oder brauch ich dafuer die Entwicklungsumgebung (WinCC Flexible).


----------



## rostiger Nagel (9 Mai 2010)

Nein, einen einfachen zugriff auf die Steuerung mit einen Texteditor gibt
es da nicht. Auch hier brauchst du ein Projektierungswerkzeug, den 
Simatic Manager.
Wenn du diesen Simatic Manager hast, brauchst du das Projekt vom 
deiner Steuerung.


----------



## squarefan (9 Mai 2010)

OK, hab mir mal ein WinCC flexible Advanced installiert um die Tags zu bekommen (die hab ich jetzt in dem ich einfach auf die Felder klicke und mir die Eigenschaften anschaue). Wo finde ich allerdings die ProtokollDaten Datablock etc. (muss ich beim Protokoller einstellen).. oder gibt es da bei der SPS einen Standardwert wo ich auf alle Werte zugereifen kann?

Danke fuer eure schnelle hilfe!! echt super!

lg,
Alex


----------



## rostiger Nagel (9 Mai 2010)

ich wiederhole meine frage noch mal, hast du das Projekt von deiner
anlage Step 7 Projekt wie auch das WinCCflexibel Projekt?

Oder schreibst du deine Software für deine Steuerung neu?


----------



## Jochen Kühner (9 Mai 2010)

*Protokoller*



squarefan schrieb:


> OK, hab mir mal ein WinCC flexible Advanced installiert um die Tags zu bekommen (die hab ich jetzt in dem ich einfach auf die Felder klicke und mir die Eigenschaften anschaue). Wo finde ich allerdings die ProtokollDaten Datablock etc. (muss ich beim Protokoller einstellen).. oder gibt es da bei der SPS einen Standardwert wo ich auf alle Werte zugereifen kann?
> 
> Danke fuer eure schnelle hilfe!! echt super!
> 
> ...



Also mein Protokoller braucht auch einen FC auf der des, oder zumindest ein Bit welches sagt das er die Datenübernhemen kann!


----------



## squarefan (9 Mai 2010)

Hi,

nein ich habe meine Projektdatei. Ich will lediglich zusaetzlich zur bestehenden Steuerung (WinCC Flex Runtime) ein kleines script/programm benutzen das zB alle 15 Minten via Task Manager gesatartet wird und die 10/20 relevanten Werte in ein Textfile (CSV bevorzugt) schreibt. Damit kann ich dann die Daten selber weiterverarbeiten.

Ich denke das sollte nicht zu schwer sein, da ich allerdings nie mit S7 gearbeitet habe (und auch in Zukunft nicht wirklich damit arbeiten werde) tue ich mir da mit dem intialen Connectionaufbau und auslesen ein weng schwer.

Hat vielleicht jemand schon ein simples VB/C# programm ready das ich nur modifizieren muesste um die Daten auszuslesen? Ich koennte auch die Projektdtei an jemanden schicken.

Geht wirklich nur um ein simples auslesen (keine Steuerung, kein Daten schreiben)... reines auslesen der Werte zum Zeitpunkt der Programm/Scriptausfuehrung.

danke,
Alex


----------



## ronnie.b (9 Mai 2010)

Hallo,
wenn du dir im WinCC flexible mal die Variablen anschaust siehst du in welchem Datenbaustein sie liegen.
Das Bit zum übernehmen musst du dir dann noch reinbasteln. Falls möglich könntest du auch das Projekt hier anhängen. Dann kann man dir vielleicht besser helfen. Ohne etwas mehr Details kann man da so schlecht was sagen.

Gruß
Ronnie


----------



## Jochen Kühner (9 Mai 2010)

squarefan schrieb:


> Hi,
> 
> nein ich habe meine Projektdatei. Ich will lediglich zusaetzlich zur bestehenden Steuerung (WinCC Flex Runtime) ein kleines script/programm benutzen das zB alle 15 Minten via Task Manager gesatartet wird und die 10/20 relevanten Werte in ein Textfile (CSV bevorzugt) schreibt. Damit kann ich dann die Daten selber weiterverarbeiten.
> 
> ...



Man könnte meinen Protokoller auch einfach modifizieren das er nicht auf ein Bit wartet, sondern nach einer Zeit die Daten liest. Wenn den Rest am laufen hast, könnt Ich das morgen geschwind reinbauen!


----------



## rostiger Nagel (9 Mai 2010)

wenn du flex schon an laufen hast und hast das projekt, dann mach es 
bitte mit flex da kannst du es mit ganz easy mit bordmitteln. Im FAQ gibt
es doch einen schönen beitrag dazu.


----------



## squarefan (9 Mai 2010)

Ja, das Flex ist allerdings eine "hust" geborgte "hust" version... schnell nur zum auslesen... und die will ich nicht unbedingt in Produktion verwenden. Deswegen ware mir der Protokoller oder ein simples script lieber. Ausser es geht auch mit der Flex Runtime und man kann dieses export einfach einbauen (da muesste ich mich allerdings an euch Gurus wenden.. denn mit Flex hab ich auch noch nie gearbeitet - meine Staerke sind eher komplette Websysteme und Datenbankdesigns/andwendungen)

lg,
Alex


----------



## rostiger Nagel (9 Mai 2010)

das geht aus Flex heraus, da kann man mit oder sogar ohne scripte das 
machen was du möchtest. Dein Werkzeug brauchst du nur während der
projektierung und kannst es dann wieder zurückgeben.

Hast du dir den mal den link in Beitrag #2 angeschaut?


----------



## squarefan (9 Mai 2010)

@Helmut

ja hab ich mir angeschaut. Mir ist allerdings die Loesung mit libnodiv bzw. dem Protokoller einfacher vorgekommen speziell da wir kein Windows CE im Einsatz haben sondern WinXP + Serielles Kabel zur SPS.

Weiters muesste ich ja das Script ins WinCC projekt schreiben.. und ich will die Projektdatei selber lieber nicht angreifen, da dies von der Installationsfirma maintained wird (und diese auch Grantie auf ihre Arbeit geben).

lg,
Alex


----------



## Jochen Kühner (9 Mai 2010)

*mhh..*



squarefan schrieb:


> @Helmut
> 
> ja hab ich mir angeschaut. Mir ist allerdings die Loesung mit libnodiv bzw. dem Protokoller einfacher vorgekommen speziell da wir kein Windows CE im Einsatz haben sondern WinXP + Serielles Kabel zur SPS.
> 
> ...



kann dir ja gerne helfen, wennd fragen zum protokoller hast!


----------



## squarefan (9 Mai 2010)

@Jochen

ja das ware super. Du hast nicht zufaellig Skype oder MSN?? Das wuerde die Sache um einiges vereinfachen 

lg,
Alex


----------



## Jochen Kühner (10 Mai 2010)

squarefan schrieb:


> @Jochen
> 
> ja das ware super. Du hast nicht zufaellig Skype oder MSN?? Das wuerde die Sache um einiges vereinfachen
> 
> ...



Ähhm... Nein!! Beides nicht!


----------



## squarefan (10 Mai 2010)

Ah OK IC 

Also wie gesagt was ich gerne mit deinem Tool machen wuerde ist in einem bestimmten zeitintevall ca. alle 30 minuten einen snapshot von den Messwerten der SPS in eine SQLLite DB zu schreiben -> im prinzip genausogut wie ein textfile (geht da nur um die Weiterverarbeitung).

Das system ist via einem RS232 Kabel verbunden ueber COM1. Ich habe den Protokoller einmal gestartet, den Dienst installiert und einmal geschafft eine Verbindung aufzubauen (konnte allerdings keine Daten loggen) - jetzt allerdings springt er immer automatisch in den Stop modus zurueck.

Setup:
Simatic S7-300 CPU313C incl. Touchpanel
Windows XP mit WINCC flexible Runtime 2007 fuer Visualisierung
MPI Kabel RS232 <-> RS232-USB (Verbindungsaufbau und WinCC  funktionieren einwandfrei)

Ich hatte auch Probleme die letzte version von deiner Homepage zu kompilieren (einige Folder haben gefehlt im Source?) und habe die version aus dem debug folder genommen.

Gibt es vielleicht eine Konfigurationsanleitung bzw. koenntest du ein paar pointer geben wie man im Normalfall eine Standardkonfig funktioniert und welcher COM modus (0,1,2) am besten funktioniert.

Tausend mal danke schon im vorraus fuer deine Hilfe.

lg,
Alex

BTW: kann seit gestern deine Seite nicht mehr laden?


----------



## Larry Laffer (10 Mai 2010)

@SquareFan:
Du weißt schon, dass du mit Flex in der Runtime die Variablen auch direkt in einem Script wegschreiben kannst und den Umweg über Libnodave etc. nicht gehen mußt ? Speziell der Export nach CSV sollte gar kein Thema sein und wenn du die Variablen, die du brauchst auch schon namentlich kennst ...

Gruß
LL


----------



## Jochen Kühner (10 Mai 2010)

squarefan schrieb:


> Ah OK IC
> 
> Also wie gesagt was ich gerne mit deinem Tool machen wuerde ist in einem bestimmten zeitintevall ca. alle 30 minuten einen snapshot von den Messwerten der SPS in eine SQLLite DB zu schreiben -> im prinzip genausogut wie ein textfile (geht da nur um die Weiterverarbeitung).
> 
> ...



Ich kann meine Seite im Moment auch nicht laden, wird heute abend wieder gehen!

Hab mal ne neue Version vom Protokoller gemacht:
(die nun das lesen Zeitgetriggert unterstützt!)

http://ziehen.net/?f=arX34VJL378EKTaSDVqL


----------



## squarefan (10 Mai 2010)

Hi,

danke fuer die schnelle addition des Intervalls zum Programm. Ich habe allerdings das Problem das anscheinend die Verbindung nicht korrekt aufgebaut wird (springt von Start Pending immer auf Stop zurrueck). Es hat allerdings einmal funktioniert. Hast du vielleicht tipps wie man es richtig konfiguriert oder debuggen kann (verbunden via RS232)?

Ich habe leider auch das Problem, dass ich das Programm mit C# express 2008 nicht erfolgreich builden kann und nehme deswegen den BIN/DEBUG. 

danke,
Alex


----------



## Jochen Kühner (10 Mai 2010)

*So...*

Mal in der Config DetailedLogging aktivieren (sollte schon true sein!).

Dann über Test die Verbindung aufbauen.

Nun sollte in der Ereignisanzeige unter Systemsteuerung/Verwaltung detailiertere Fehlertexte stehen!


----------



## squarefan (10 Mai 2010)

ich bekomme eine unhandled exception ueber den testaufbau. Wenn du willst kann ich dir VNC zugriff auf den Rechner geben, dann siehst du es auch?

lg,
Alex


----------



## Jochen Kühner (10 Mai 2010)

*teamviewer...*

geht auch teamviewer??? wenn ja schreib mir ne pn.

und öffne mir mal dann das Projekt in c# express das ichs beobachten kann!


----------



## squarefan (11 Mai 2010)

Hi,

tausend mal danke fuer die Hilfe! Haette das selber nie hinbekommen. Hab jetzt angefangen andere Werte auch hinzuzufuegen (und offset angepasst)... wollte nur fragen wie ich die spaces berechne das es auch wieder korrekt angezeigt wird:

e.g.

DateTime      datetime      DB 10 DBB 0
Leistung       Real            DB 10 DBD 42

--> space ist wie hoch zwischen den beiden?

lg,
Alex


----------



## Jochen Kühner (11 Mai 2010)

*So...*

Also erst mal zur Info:

Du kannst nur werte mit einer Protokolldatenstruktur protokollieren die auch in einem DB liegen (machen bei dir ja im moment alle, dann gehts!)

Die Spaces musst du anhand von den Bytes dazwischen, abzüglich der Länge des Datentyps berechnen:

int = 2
real = 2
dint = 2
dateandtime = 8

d.h. bsp:

dateteime bei 0
+ 8
=8

bis zu leistung bei 42 fehlen 34!


----------



## Jochen Kühner (11 Mai 2010)

*Noch was...*

Das ganze mit den Spaces usw. wird nur so kompliziert da meine SOftware für sowas eigendlich nicht gedacht war, sondern für zusammenhängende Datenbereiche die mit Hilfes eines FC's auf der SPS in einen Ringpuffer kommen. 
Das mit den Spaces habe Ich heute halt für dich reingeschustert!

Wenn Ich mit meiner LibNodave Connection Library fertig bin, dann gibts wahrscheinlich einen neuen protokoller mit frei Konfigurierbaren Datenwörtern (wobei zusammenliegende immer noch als ein Block gelesen werden (aber automatisch))


----------



## squarefan (13 Mai 2010)

Hi,

nochmal danke! Hat alles wunderbar funktioniert. Auch das mit den Spaces war dann im Endeffekt eh nicht zu schwierig. War echt super von dir mir so zu helfen - konnte es definitiv nicht selber machen.

Habe jetzt in den letzten zwei tagen ein schnelles Portal zusammengebaut, das meinem Vater jetzt als zentrale Ueberwachung und Zugangspunkt dient (anbei ein paar bilder).

Jetzt kommt noch eine Email benachrichtungsjob rein in Perl rein und fertig ist die Geschichte. Sollte jemand interessiert an so einem Perl job sein (extraktion der Daten von Sqlite und benachrichtung nach bestimmten checks, sagt mir bescheid und ich werde es dann hochladen).

nochmals danke,
Alex


----------



## Jochen Kühner (13 Mai 2010)

squarefan schrieb:


> Hi,
> 
> nochmal danke! Hat alles wunderbar funktioniert. Auch das mit den Spaces war dann im Endeffekt eh nicht zu schwierig. War echt super von dir mir so zu helfen - konnte es definitiv nicht selber machen.
> 
> ...



Wie gesagt, das mit den Spaces und der Zeit habe Ich für dich mal kurz Reinimplementiert (Gepfuscht), also keine Garantie das das Bugfrei ist!

Aber wenn mal meine Connection Lib fertig ist gibts auch n neuen Protokoller, der alte stammt noch aus meinen .Net anfängen und war mal in VB.NET also nicht der beste Quelltext!


----------



## squarefan (13 Mai 2010)

yup kein stress.. der pfusch laueft soweit mal OK . Wenn der neue Protokoller am enstehen ist sag bescheid... bin dann gerne Testkandidat!

lg,
Alex


----------



## squarefan (5 März 2012)

So wollte mich nach langer Zeit mal wieder melden. Bin gerade im Prozess die Installation ein wenig upzudaten und wollte Fragen ob sich in der Zwischenzeit was getan hat beim Protokoller? Wollte gerade auf die Webpage schauen aber leider duerfte die gerade down sein. Wuerde gerne alle Daten aus dem Block rausschreiben.

Ist es mit dem vielleicht neuen Protokoller es moeglich einfach die bestehende DB zu erweitern oder muesste eine neue angelegt werden?

danke,
Alex


----------



## Jochen Kühner (5 März 2012)

squarefan schrieb:


> So wollte mich nach langer Zeit mal wieder melden. Bin gerade im Prozess die Installation ein wenig upzudaten und wollte Fragen ob sich in der Zwischenzeit was getan hat beim Protokoller? Wollte gerade auf die Webpage schauen aber leider duerfte die gerade down sein. Wuerde gerne alle Daten aus dem Block rausschreiben.
> 
> Ist es mit dem vielleicht neuen Protokoller es moeglich einfach die bestehende DB zu erweitern oder muesste eine neue angelegt werden?
> 
> ...



Den gibts hier : http://www.sps-forum.de/showthread.php/46470-DotNetSimaticDatabaseProtokoller

Du kannst eine vorhandene Datenbank benutzen...


----------

