Beispiel Datenlogger von Paul KnodelEASY800 und MFD haben den sehr mächtigen Befehl Blocktransfer (BT). Je nach Anwendung kann dieser Baustein direkt, aber auch indirekt adressiert werden. Dies erlaubt die Nutzung des kompletten Merkerbereichs um z.B. eine Rezeptverwaltung zu realisieren, aber auch um einen Datenlogger zu realisieren. Dies kann in vielfältiger Weise erfolgen, demnach ist die angehängte Datei nur als Beispiel von vielen möglichen Varianten zu sehen
Beschreibung Beispiel Datenlogger:Der Analogeingang IA1 wird mit dem Baustein LS01 auf einen beliebigen Wert (z.B. 100 %) skaliert und im MW6 abgelegt.
Jetzt sollen bei einem Triggersignal (z.B. I01) in den nachfolgenden MW7-MW96 die letzen 90 Messwerte am IA01 abgelegt werden. Da im MW7 immer der neueste und im MW96 immer der älteste Messwert gespeichert sein soll muss der komplette Speicher verschoben werden. Dies wird mit zwei Countern und einem Blocktransfer BT01 realisiert. Ist die Verschiebung erfolgt wird der aktuelle Wert vom MW6 zum MW7 kopiert (BT02). Über die Vielfältigen Kommunikations-möglichkeiten (offenes Protokoll, Windows DLL oder OPC) können diese Daten dann ausgelesen und ausgewertet werden.
EinschränkungenDas Umkopieren der Daten benötigt 360 Zyklen (2 Zyklen * 90 * 2 Byte). Aus diesem Grunde ist das Beispiel nur für zeitunkritische Aufzeichnungen geeignet. Zwischen zwei Speicherungen sollten min. 5 Sekunden liegen. Aus dem gleichen Grund ist das Programm auch nur begingt für eine Simulation (langsamer Zyklus) geeignet.
Zusätzliche MöglichkeitenDa der komplette Merkerbereich letztlich aus 384 Byte (96 MD) besteht kann dieser auch komplett verwendet werden. Demnach
können wesentlich größere Datenmengen geloggt werden.
Wird auf das Schieben der Daten verzichtet und über Zeiger (In- / Out) gearbeitet kann ein wesentlich schnelleres Datenlogging erreicht werden.