Programmbeispiel für grafische Datenanzeige mit EXCEL + LIBNODAVE
ich suche nach einem Programm/Software für Windows, die mir Daten aus der CPU grafisch anzeigen kann.
Klingt relativ aufwendig. Gibt es dazu Beispiele zum downloaden oder schon etwas fertiges?
OK, anbei ein komplettes Excel-Beispiel für zwei Tankstandanzeigen mit dem Auslesen der Daten per Ethernet aus drei verschiedenen SPS
- CPU 315-2DP + CP 343-1
- CPU 314C + S7LAN Ethernet/MPI-Adapter
- CPU 316 + IBH NetLink Lite Ethernet Gateway
Für die vielfältigen und speziellen Wünsche von Produktionsleitung, Abteilungsleitern, Schichtleitern, ... verwende ich oft Excel und LIBNODAVE (0.8.4.5)
(siehe z.B. den Ausdruck einer etwas aufwendiger formatierten Tankanzeige GAP-Tanks.JPG - ist nicht im Beispiel enthalten
)
Meine Anwendungen sind meistens nach dem gleichen Schema aufgebaut:
- ein Excel-Blatt mit einer Tabelle und/oder grafisches Diagramm und ein Button "Werte aus PLC lesen"
- der Button ruft eine für dieses Blatt programmierte VBA-Routine readFrom...() auf, um die Daten einmalig aus der SPS zu lesen
- readFrom...()
- baut die Verbindung zu einer CPU auf: res = connect...(ph, di, dc)
- liest Werte aus der CPU: res2 = daveReadBytes(dc, ...) und kopiert diese dann in das Tabellenblatt
- schreibt bei Erfolg einen Lese-Zeitstempel in das Tabellenblatt
- schließt die Verbindung wieder und gibt die verwendeten Ports frei: cleanUp(ph, di, dc)
Für eigene Anwendungen sind in den
connect...() die Verbindungsparameter anzupassen, z.B. die IP-Adresse der SPS.
Meine ausführlichen Kommentare im VBA-Code sollten zum Verstehen und Anpassen des Beispiels ausreichen.
Wie man Excel bedient und wie man in Excel mit VBA programmiert sollte man schon wissen oder in der Excel/VBA-Hilfe nachlesen.
Ich verwende Excel 2002 als Entwicklungsplattform. Die xls-Dateien funktionieren auch unter neueren Excel-Versionen.
Das Ausführen von Makros muß in Excel erlaubt sein.
Um die Excel-Anwendungen vor "versehentlichen" Änderungen durch Anwender zu schützen haben die Blätter einen Blattschutz (ohne Passwort) und das VBA-Modul ist passwortgeschützt - Passwort ist: 100
Im VBA-Modul sind nur die "ungefährlichen" Funktionen der libnodave.dll deklariert - die Deklarationen der in-die-SPS-schreibenden Funktionen habe ich absichtlich weggelassen.
Ich lese immer nur einmalig "auf Knopfdruck" die Daten aus den SPS. Zyklisches lesen ist mit Excel zwar möglich, ich verwende es aber nicht - meine Anwender schafften es immer wieder, Excel dabei zu crashen. :roll:
In den beteiligten SPS stelle ich die Daten meistens extra in einem zusammenhängenden DB-Bereich zusammen. Dann reicht meist ein einziges Lese-Kommando und ein versehentliches Schreiben auf diese Datenkopien hat keinen Einfluß auf das SPS-Programm.
Anbei die Excel-Datei Tankanzeigen_mit_Libnodave.xls
Zum Lesen des VBA-Programmcodes ohne Excel die Tankanzeigen_mit_Libnodave.xls.vba.txt, welche nur den projektspezifisch programmierten VBA-Teil aus der xls-Datei enthält.
Die lizenzkostenfreie Library LIBNODAVE gibt es hier:
http://libnodave.sourceforge.net/
unter Windows XP kopiere die libnodave.dll nach C:\WINDOWS\system
Zum Thema "Excel-Funktionen periodisch aufrufen":
http://www.cpearson.com/excel/OnTime.aspx
Harald