DotNetSimaticDatabaseProtokoller

Jochen Kühner

Level-3
Beiträge
4.291
Reaktionspunkte
527
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein Tool um Daten aus einer SPS in datenbanken zu speichern (oder CSV)

Mit diesem ist es über eine GUI möglich sich seine Datensätze zusammen zu stellen.

Es kann auch über einen Trigger Daten von verschiedenen SPSen auf einmal gelesenen werden.

Wer sich eine Vorabversion schon mal ansehen möchte, gibts hier als Anhang!

Features der Vorabversion:
- Datenbanktreiber (CSV, SQLlite, Excel, Postgres, MySQL, MsSQL)
- LibNoDave Verbindungen
- 3 Triggertypen (über Bits und Zeitgesteuert, Cron Tabelle, TCP/IP )

Das Programm besteht aus 2 exe files, ConfigurationTool mit dem ihr die Config erstellt und Service, ein Windows Dienst welcher die Daten holt.

Einfach eine Config erstellen, im ConfigurationTool unter Protocolling auf Save klicken, und dann den Dienst starten.
Der Dienst kann ganz einfach über die Service exe installiert werden.

Achso, .Net Framework 4.0 wird benötigt!

Geplante Features (sind schon in Arbeit)
- Firebird
- Multiple Inserts bei MySQL, Postgres, ... (damit's schneller geht!)
- weitere Datenbanken (mal schaun)

Lizenz: GPL

Achso, wer mir was Gutes tun will:

Hier kann gerne was gespendet werden: http://siemensplctoolboxlib.codeplex.com/



Acho sp, noch was: Diese Version hier ist nicht immer ganz aktuell! Die neuste gibts immer hier: http://siemensplctoolboxlib.codeplex.com/
 

Anhänge

  • Protokoller.zip
    2,2 MB · Aufrufe: 815
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch ein paar Features...

- 2 neue Datenbanktreiber (Excel(xls) und Postgres)
- Datenbankbrowser (mit dem können die Datensätze betrachtet werden)
- Fenster zu Dienstverwaltung (Starten, Stoppen, Installieren, Deinstallieren und Ereignislog)
- SQLlite-Storage-Treiber: mehrere Inserts in eine Transaktion gepackt falls die Daten schneller kommen als auf die Disk geschrieben werden kann! (Dies wirkt sich wahrscheinlich erst wieder aus, wenn der direkte TCP/IP Kanal wieder implementiert ist, über den mehrere Telegramme auf einmal übertragen wurden)
- Bugfixes...
 
Wollte Dir nur schnell mal vielen Dank für dieses schöne Stück Software sagen. Funktioniert klasse.

Ein kleiner Bug:

Existiert der DB nicht, aus dem Daten gelesen werden sollen, stürzt das Programm ab, wenn das Logging im "Testen"-Unterpunkt gestartet wird.

Gruß

Jochen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wollte Dir nur schnell mal vielen Dank für dieses schöne Stück Software sagen. Funktioniert klasse.

Ein kleiner Bug:

Existiert der DB nicht, aus dem Daten gelesen werden sollen, stürzt das Programm ab, wenn das Logging im "Testen"-Unterpunkt gestartet wird.

Gruß

Jochen

Sollte behoben sein...
 
Hi, hast Du vielleicht noch ne Idee für mich?

Ich habe jetzt ein Excel-Storage gemacht, in dem ein Feld die Uhrzeit (DateTime) ist. Leider wird der Wert als Zahl in die Spalte geschrieben und ich muss nach dem Öffnen des Excel-Files die Spalte noch von Hand als Zeit Formatieren, damit dann die richtige Zeit angezeigt wird. Kann man das irgendwie Protokollerseitig beheben? Wohl eher nicht, oder, da das ja ein Excel (OpenOffice)-Problem ist.

Gruß

Jochen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Edit: Noch ein Problem.

Ich will 4 Realwerte Auslesen. Wenn ich die nun im Storage als Feld "Float" festlege und den Service mit "Test as a Service" testen will, poppt das Fenster auf "ConfigurationTool hat ein Problem festgestellt und muss beendet werden" Im Hintergrund läuft NetToPlcSim in dessen Fenster ich aber nun immer noch lese, dass regelmäßig Daten abgeholt werden. Da ich das Programm trotz des "Beenden"-Popups noch bedienen kann, sehe ich im Ereignisprotokoll als letzte verwertbare Fehlermeldung:

Error - Exception occurred - There is an error in XML document (150,30)

Die Exceltabelle wird noch angelegt, enthält aber nur die Überschriften.
Wenn ich statt "Float" den Wert als "DWord" auslesen lasse, wird ein Wert geschrieben, natürlich in falschem Format.

Wenn ich den Service "normal" starte, werden überhapt keine Werte ausgelesen und auch keine xls erstellt, sofern ich "Float" gewählt hatte.

Ich hoffe, Du kannst mit meiner Fehlerbeschreibung was anfangen.



Edit: Mit den gleichen Einstellungen funktioniert "Float" mit einem csv-File perfekt. Dort stimmt sogar direkt die Datums- und Zeitangabe
Gruß

Jochen
 
Zuletzt bearbeitet:
Edit: Noch ein Problem.

Ich will 4 Realwerte Auslesen. Wenn ich die nun im Storage als Feld "Float" festlege und den Service mit "Test as a Service" testen will, poppt das Fenster auf "ConfigurationTool hat ein Problem festgestellt und muss beendet werden" Im Hintergrund läuft NetToPlcSim in dessen Fenster ich aber nun immer noch lese, dass regelmäßig Daten abgeholt werden. Da ich das Programm trotz des "Beenden"-Popups noch bedienen kann, sehe ich im Ereignisprotokoll als letzte verwertbare Fehlermeldung:

Error - Exception occurred - There is an error in XML document (150,30)

Die Exceltabelle wird noch angelegt, enthält aber nur die Überschriften.
Wenn ich statt "Float" den Wert als "DWord" auslesen lasse, wird ein Wert geschrieben, natürlich in falschem Format.

Wenn ich den Service "normal" starte, werden überhapt keine Werte ausgelesen und auch keine xls erstellt, sofern ich "Float" gewählt hatte.

Ich hoffe, Du kannst mit meiner Fehlerbeschreibung was anfangen.



Edit: Mit den gleichen Einstellungen funktioniert "Float" mit einem csv-File perfekt. Dort stimmt sogar direkt die Datums- und Zeitangabe
Gruß

Jochen

Die Abstürze sind nun behoben, auch DataTime wird nun automatsich als Feldtyp übernommen.

Mit Floats gibts aber ein problem, die bekomme Ich nur als Text nach Excel, da die von mir genutzte Excel Bibliothek irgendwelche Probleme damit hat!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin zwar jetzt ganz auf csv umgestiegen, aber noch zur Information etwas zum Excel-Storage:

Excel 2010 bringt bei jedem Versuch, die Datei zu öffnen "Von Excel wurde unlesbarer Inhalt in der Datei "xyz.xls" gefunden, möchten Sie den Inhalt wiederherstellen?"

Wenn ich auf "Ja" klicke, stellt Excel garnix wieder her. Mit OpenOffice kann ich die Dateien allerdings öffnen.

Noch etwas, was mir bei Excel aufgefallen ist: Der Protokoller-Service benötigt anscheinend Exklusivzugriff auf die Datei, denn wenn ich sie in Excel öffne oder sie zu öffnen versuche, stoppt der Service.

Ich nehm jetzt CSV, das scheint unverwüstlich zu sein. Ich kann während des Protokollierens die Netzwerkverbindung trennen, die Dateien löschen und ansehen, trotzdem arbeitet der Service einfach im Hintergrund perfekt weiter. Ist die CPU wieder erreichbar, wird wieder geloggt. Echt ein tolles Ding.

P.S.:

Ich habe mal versucht, auf ein Netzlaufwerk protokollieren zu lassen, zum Testen ob das geht. Es kommt leider nur der Fehler "Ein Teil des Pfades 'Y:\xxxx\xyz.csv' konnte nicht gefunden werden.

Kann man das trotzdem irgendwie machen?

Gruß

Jochen
 
Ich bin zwar jetzt ganz auf csv umgestiegen, aber noch zur Information etwas zum Excel-Storage:

Excel 2010 bringt bei jedem Versuch, die Datei zu öffnen "Von Excel wurde unlesbarer Inhalt in der Datei "xyz.xls" gefunden, möchten Sie den Inhalt wiederherstellen?"

Wenn ich auf "Ja" klicke, stellt Excel garnix wieder her. Mit OpenOffice kann ich die Dateien allerdings öffnen.

Noch etwas, was mir bei Excel aufgefallen ist: Der Protokoller-Service benötigt anscheinend Exklusivzugriff auf die Datei, denn wenn ich sie in Excel öffne oder sie zu öffnen versuche, stoppt der Service.

Ich nehm jetzt CSV, das scheint unverwüstlich zu sein. Ich kann während des Protokollierens die Netzwerkverbindung trennen, die Dateien löschen und ansehen, trotzdem arbeitet der Service einfach im Hintergrund perfekt weiter. Ist die CPU wieder erreichbar, wird wieder geloggt. Echt ein tolles Ding.

P.S.:

Ich habe mal versucht, auf ein Netzlaufwerk protokollieren zu lassen, zum Testen ob das geht. Es kommt leider nur der Fehler "Ein Teil des Pfades 'Y:\xxxx\xyz.csv' konnte nicht gefunden werden.

Kann man das trotzdem irgendwie machen?

Gruß

Jochen

Mit Excel 2010, das ist ein bekannter Bug. Wenn die Datei größer wird (so ab ca 10kb) kann Sie mit Excel auch geöffnet werden. Das liegt aber nicht an meinem Protokoller sondern an der Dll welche Ich für das Excel Format verwende! Hab da mittlerweile aber noch ein paar weitere Dlls gefunden um Excel Files zu schreiben, und muss mal sehen ob Ich Zeit finde diese einzubauen.

Das mit den CSV Files aufs Netzwerk sollte eigentlich gehen (habs aber nie getestet!) Muss Ich morgen mal testen, wens da noch einen Bug gibt, fixe Ich den natürlich!

Ich nutze selbst hauptsächlich SQLite, daher ist das am meisten getestet!
 
Ich habe mal versucht, auf ein Netzlaufwerk protokollieren zu lassen, zum Testen ob das geht. Es kommt leider nur der Fehler "Ein Teil des Pfades 'Y:\xxxx\xyz.csv' konnte nicht gefunden werden.

Kann man das trotzdem irgendwie machen?

Gruß

Jochen

Das geht schon, kommt halt auf deine Zugriffsberechtigen an! Der User unter dem du meine Programm startes muss Zugriff auf das Netzlaufwerk haben. Achtung, wenn du als Administrator ausführen machst, gelten nicht deine Zugriffsberechtigungen, sondern die des Administrator Accounts!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Jochen:

Ich habe für den CSV Writer mal noch die möglichkeit vorgesehen, das er sich an einem Network Share anmelden kann. Kannst du es nun nochmals versuchen. Du musst aber dann statts dem Laufwerknamen den kompletten UNC Pfad benutzen (so: \\RechnerName\Freigabename\xxx.csv).
Wenn's funktioniert bau Ich das auch noch in den Excel und SQLLite Writer ein!
 
Danke, war zwar heute den ganzen Tag an der Anlage, aber hatte noch nicht ins Forum geschaut. Ich werde das morgen testen. Noch eine Frage, ist es eventuell möglich, Floats statt mit Komma mit Punkt in die CSV rein zu schreiben? Unsere Rechner sind alle im "FuE-Modus" mit den internationalen Dezimaltrennzeichen und Tausendergruppierungszeichen eingerichtet. Die Biologen hier meckern den ganzen Tag rum, dass ihr Excel die gemessenen Realwerte dann mit lauter Kommata darstellt und sie in ihrem Windows immer erst in den Regionaleinstellungen den Punkt und Komma wieder tauschen müssen.

Ich berichte Dir morgen von dem Versuch mit dem Netzlaufwerk.

Edit.: Hatte heute leider keine Zeit, das mit dem Netzwerkpfad zu testen, hoffentlich morgen.

Gruß

Jochen
 
Zuletzt bearbeitet:
Danke, war zwar heute den ganzen Tag an der Anlage, aber hatte noch nicht ins Forum geschaut. Ich werde das morgen testen. Noch eine Frage, ist es eventuell möglich, Floats statt mit Komma mit Punkt in die CSV rein zu schreiben? Unsere Rechner sind alle im "FuE-Modus" mit den internationalen Dezimaltrennzeichen und Tausendergruppierungszeichen eingerichtet. Die Biologen hier meckern den ganzen Tag rum, dass ihr Excel die gemessenen Realwerte dann mit lauter Kommata darstellt und sie in ihrem Windows immer erst in den Regionaleinstellungen den Punkt und Komma wieder tauschen müssen.

Ich berichte Dir morgen von dem Versuch mit dem Netzlaufwerk.

Edit.: Hatte heute leider keine Zeit, das mit dem Netzwerkpfad zu testen, hoffentlich morgen.

Gruß

Jochen
Jo, das könnte Ich schon einbauen, mal sehn ob Ich diese Woche noch dazu komme?
Hats mit dem Netzlaufwerk funktioniert?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jo, das könnte Ich schon einbauen, mal sehn ob Ich diese Woche noch dazu komme?
Hats mit dem Netzlaufwerk funktioniert?

Lass Dir ruhig Zeit, die Daten werden geloggt, das ist die Hauptsache. Der Dezimalpunkt hat für mich jetzt nicht oberste Priorität, weil das ja auch per Importsyntax in Excel reguliert werden kann. Vielleicht wäre später halt ein Schalter nicht schlecht, mit dem man das umschalten kann.

Zu Deiner zweiten Frage, siehe in meinem letzten Beitrag:

Jochen schrieb:
Edit.: Hatte heute leider keine Zeit, das mit dem Netzwerkpfad zu testen, hoffentlich morgen.

Gruß

Jochen

Ich muss morgen noch zu nem Termin und weiß nicht, wielange ich an der Anlage bin, aber sobald ich es spätestens nächste Woche probiert habe, berichte ich Dir.

Gruß

Jochen

P.S.: Ein Donate-Button auf Deiner Homepage würde mir gefallen.
 
Der Dezimalpunkt hat für mich jetzt nicht oberste Priorität, weil das ja auch per Importsyntax in Excel reguliert werden kann. Vielleicht wäre später halt ein Schalter nicht schlecht, mit dem man das umschalten kann.
Ist nun drin! Eingeschaften des CsvStorrage!

P.S.: Ein Donate-Button auf Deiner Homepage würde mir gefallen.
Der ist nun auch wieder da!
 
Sooooo,

ich darf berichten:

1. Dezimalpunkt klappt.
2. Speichern auf Netzwerkfreigabe direkt funktioniert super.

Danke

Gruß

Jochen
 
Zurück
Oben