Benutzerhandbuch Script "MR3"
Daten einer Datenschnittstelle fortlaufen in einem Ringspeicher speichern.
Dieses Dokument beschreibt das Anwendungsscript "MR3 - Daten in Ringspeicher loggen".
Versionshistorie des Dokuments:
| Datum | Änderungen |
| 08.06.2010 | Inhaltliche Überarbeitung |
| 15.09.2009 | Erstellung / Übersetzung aus dem Englischen |
|
Aktueller Stand.
|
Weiterführende Dokumente sind:
Script: MR3-5.txt (1,3 kB) (right mouse-button and 'save under ..' to download)
Konfigurationsdatei: autorun.txt (right mouse-button and 'save under ..' to download)
Versionshistorie des Scripts:
| Scriptname | mr3-5.txt |
| Datum | 18.06.2009 |
| Firmware |
v4.78 oder höher
|
| Historie |
v5: Erste öffentliche Version
|
Systembeschreibung
Erforderliche Hardware
Es kommt ein Avisaro 2.0 Datenlogger zum Einsatz. Die Avisaro 2.0 Box, Cube und Modul kann verwendet werden. Diese Anwendung ist für Logger mit RS232, I2C (Client) oder SPI (Client) anwendbar.
Eine WLAN oder LAN Schnittstelle ist nicht erforderlich, bringt aber zusätzlichen Nutzen.
Erforderliche Firmware
Ein Firmware Version 4.78 oder höher ist erforderlich.
Siehe
hier für aktuelle Firmware Versionen.
Erforderliche Systemumgebung
Zum Loggen von Daten ist nur eine Speicherkarte notwendig.
Zum Auslesen der Daten an einem PC ist jedes Kartenlesegerät geeignet. Viele Notebooks haben diesen bereits fest eingebaut. Über sogenannten "All-in-One" Reader läßt sich diese leicht an jedem PC oder MAC nachrüsten.
Funktionsbeschreibung
Daten loggen
Ist der Logger in Betrieb und eine Speicherkarte eingelegt, werden alle Daten die über die Schnittstelle (RS232, I2C oder SPI) an den Logger gesendet werden in eine Datei gespeichert.
Die Daten werden in einem "Ringspeicher" abgelegt. So können beliebig lange Daten aufgezeichnet werden - es bleiben immer die neuesten Daten erhalten. Ist der Speicherplatz ausgeschöpft, werden die ältesten Daten gelöscht.
Der Ringspeicher funktioniert über Dateien: Alle Daten werden so lange in eine Datei geschrieben, bis diese eine eingestellte Größe erreicht. Ist diese Grenze erreicht, wird eine neue Datei angelegt - die bisherige Datei bleibt erhalten. Ist der Speicherplatz erschöpft, wird die älteste Datei gelöscht.
Alle Dateien werden durchnummeriert. Die Dateien können über ihr Erstellungsdatum zeitlich zugeordnet werden.
Die Größe der Dateien ist einstellbar.
Lesen der Daten an einem PC oder MAC
Zum Lesen der Daten wird die Speicherkarte entnommen und in den SD Kartenleser des PC gesteckt. Die Datei "logdata.txt" kann dort mit einem geeigneten Programm geöffnet werden. Welches Programm geeignet ist, hängt von der Art der geloggten Daten ab. Sind Text (ASCII) Daten aufgezeichnet worden - z.B. die Ausgaben einer Waage - dann kann die Datei durch doppelklick im "Editor" angesehen werden. Wurden Daten im binärformat gespeichert, so können die Daten mit einem HEX-Editor gesichtet werden.
Start & Betrieb
Script aufspielen
Die Produkte "Box" und "Cube" werden mit einem vorinstalliertem Script ausgeliefert. Entnehmen Sie der Produktbeschreibung ob dieses Script bereits für Sie passend ist. In diesem Fall ist das Produkt sofort startklar.
Zum Aufspielen eines neuen Scripts gehen Sie wie folgt vor:
- Laden Sie Script Datei und die 'autorun.txt' Datei von der Webseite herunter
- Kopieren Sie die Dateien auf eine Speicherkarte
- Legen Sie die Speicherkarte in das Avisaro Produkte und schalten die Versorgungsspannung ein
- Warten Sie kurz (5 Sekunden)
- Schalten Sie die Versorgungsspannung aus und entnehmen die Speicherkarte
- Löschen Sie die beiden Dateien wieder von der Speicherkarte
Alternative kann das Aufspielen eines Scripts über SD Karte (Details), Webseite (Details) oder die Datenschnittstelle (Details) erfolgen.
System in Betrieb nehmen
Die Inbetriebnahme des Produktes ist in der jeweiligen Produkt - Dokumentation beschrieben. In der Regel muss lediglich das Datenkabel und Stromkabel eingesteckt werden. Ggf. die Schnittstelle (Baudrate, ...) und wenn vorhanden, das WLAN/LAN Interface konfigurieren. Das Script startet nach dem Einschalten automatisch.
Betrieb
Das System arbeitet komplett selbständig. Es ist keine fortlaufende Bedienung durch den Benutzer notwendig.
Benutzerschnittstelle
Bedienelemente
Die Logger Box und Cube haben eine rote und eine grüne Leuchtdiode (LED) zur Anzeige von Betriebszuständen, sowie einen Taster zur Benutzereingabe.
Grüne LED:
Dauerlicht: Logger hat Betriebsspannung
Rote LED:
Logger ist bereit zum Aufzeichnen von Daten. Eintreffende Daten werden durch ein Blinken angezeigt.
Taster:
Die Aufzeichnung wird gestoppt (rote LED aus) bzw wieder gestartet (rote LED an)
Speicherkarten
Es können Speicherkarten vom Typ "SD" und "SDHC" verwendet werden. Die Logger sind für Karten bis 16 GByte getestet. Es können Karten von beliebigen Herstellern verwendet werden. Beachten Sie jedoch, dass die Qualität von 'Billigkarten' für industriellen Einsatz häufig nicht ausreicht. Besondere "High-Speed" oder "Extreme" Karten haben bei den Avisaro Produkten keinen Vorteil.
Die Karten werden eingesteckt bis ein Einrasten zu spüren ist. Zum Herausnehmen werden die Karten leicht hereingedrückt und werden dann durch eine Feder herausgedrückt. In den meisten Anwendungen können die Karten ohne Schaden einfach entnommen werden. Manche Anwendungen verlangen jedoch, dass zuvor der Taster gedrückt wird.
Optionen und Anpassungen
WLAN / LAN Option
Verfügt das Avisaro Produkt über einen WLAN oder LAN Anschluss, dann können die geloggten Daten per FTP angerufen werden. Dazu kann der normale 'Explorer' verwendet werden oder auch ein spezieller FTP Client (
Details).
Mögliche Anpassungen
Das Verhalten des Scripts kann leicht verändert werden. Möglich Anpassungen sind z.B.:
- Aufspalten der Logdatei: Statt einer Datei wird täglich mit einer neuen Datei begonnen (beim MR3 (Ringspeicher) wird dies bereits gemacht)
- Aktives Abfragen eines Sensors: der Avisaro Logger kann Befehlssequenzen aussenden um eine angeschlossene Anlage abzufragen
- Daten quittieren: Empfangene Daten können dem System durch eine Kennung quittiert werden
- Keine Startmeldung: Die Startmeldung (Versionsnummer) des Avisaro Loggers kann abgeschaltet werden. Manche Anlagen 'verwirt' ein solche Meldung, für den Benutzer ist diese jedoch eine gute Kontrollnachricht.
Dokumentiertes Script
Der dokumentierte Source Code soll einen grundsätzlichen Einblick in die Programmierung von Scripten geben. Das aktuelle Script kann ggf. von dieser Doku etwas abweichen.
Script "MR3" mit Kommentaren
Das Script-Beispiel führt Befehle für eine RS232-Schnittstelle aus. Dei anderen Box-Typen verfahren Sie den Schnittstellen entsprechend.
Kommentare werden mit ' oder mit REM markiert:
' ' Datenlogger Rev 1.8 (c) Avisaro AG, 14.1.2009 '
Mit DIM wird eine Array definiert, dass später verwendet wird, um Daten zu halten. Für Dateioperationen ist eine Größe von 512 geeignet.
DIM A(512)
Falls die interne Uhr beim Avisaro Modul nicht batteriegepuffert ist, wird sie im Folgenden auf einen Default-Wert gesetzt. Bei der Avisaro Box und Cube ist dieser Schritt nicht notwendig. Zusätzlich werden ein paar weitere Konfigurations-Einstellungen gemacht - diese könnten genau so gut außerhalb des Scripts mit einer 'autorun.txt' Datei gemacht werden.
'if no battery if time < 10000 then exec "time 2009 01 01 00 00 01" end if
exec "fsync 1000" exec "sched 0 fix"
Das Scriptbeispiel benutzt eine RS232 Schnittstellen. Die erste wird über die "Data Interface" Einstellung festgelegt. Mit dem 'inmode' und 'outmode' Befehl wird festgelegt, dass die Daten vom Data Interface zum Script verarbeitet werden (und somit nicht als Kommandos interpretiert werden).
Für die einfache Ausgabe von z.B. Startmeldungen kann 'print' verwendet werden.
print "Avisaro Logger Rev 1.8 (c) 2009 Avisaro AG"
Sprungmarke (Anker) um an den Anfang des Programms zu springen (für die spätere Verwendung des Befehls 'goto')
BEGIN:
Typischerweise ist am IO-Pin 3 eine grüne LED angeschlossen. Diese wird nun eingeschaltet.
put -203, #1
Wenn die Taste (typischerweise an I/O-Pin 4) gedrückt ist, wird wieder zum Anfang gesprungen. Später im Programm wird eine gedrückte Taste zum Stop der Aufzeichnung verwendet - hiermit wird nun sichergestellt, dass die Taste auch wieder losgelassen wird.
if (KEYS & 1) = 1 then
goto BEGIN
end if
Nun wird überprüft, ob ein Datenträger eingelegt worden ist. So lange die Speicherkapazität ("lof") den Wert 0 hat, ist dies nicht der Fall und es wird nach einer kurzen Pause ("sleep") zum Anfang zurückgesprungen.
if lof(0) = 0 then
sleep 100
goto BEGIN
end if
Ist ein Datenträger eingelegt, wird versucht die Datei "log-1.txt" in dem Modus "Daten Anhängen" zu öffnen. Falls also die Datei schon vorhanden ist, werden Daten angehängt. Schlägt dies fehl ("LASTERR") ist die Datei nicht auffindbar und wird dann neu erzeugt. Schlägt auch das fehl, ist etwas nicht in Ordnung (z.B. Speicherkarten wurde wieder herausgenommen) und es wird zum Anfang gesprungen.
open "AB", 1, "log-1.txt"
if LASTERR <> 0 then
open "WB", 1, "log-1.txt"
if LASTERR <> 0 then
close 1
goto BEGIN
end if
end if
Bei erfolgreichem Abschluß soll nun die rote LED (meistens I/O-Pin 2) anschalten um zu zeigen, dass nun aufgezeichnet wird. Die aktuelle Zeit in Sekunden wird gespeichert - so kann später die LED im Takt blinken, wenn Daten eintreffen. Mit der 'DO - LOOP' Schleife beginnt nun die Hauptschleife.
put -202, #1 let t = time
do
Mit dem Input Befehl werden nun die Daten von der ersten RS232 abgeholt. Es werde so viele Daten wie verfügbar in das Array A gepackt. Mit der Systemvariablen BYTESREAD kann abgefragt werden, wie viele Daten gelesen wurden. Wurden Daten gelesen (">0"), dann wird die rote LED ausgeschaltet und die Daten werden in die Datei mit dem Handle 1 geschrieben.
INPUT A
if BYTESREAD > 0 then
put -202, #0
put 1, A, BYTESREAD
end if
Im Folgenden wird laufend überprüft, ob die Speicherkarte weiterhin eingelegt ist (mit "lof"). Kommt es zu einem Schreibfehler - z.B. der Datenträger ist voll, dann wird die Datei automatisch geschlossen - somit ändert sich auch der Status des Dateihandles. Ist dies der Fall, werden vorsorglich beide Dateien geschlossen, die LED ausgeschaltet und zum Anfang gesprungen.
if lof(0) = 0 or status(1) <> 2 then
close 1
close 2
put -202, #0
goto BEGIN
end if
Wurde die Taste gedrückt, werden die Dateien geschlossen und die Aufzeichnung beendet. Es wird dann zur späteren Marke "FIN_KEY" gesprungen.
if (KEYS & 1) = 1 then
close 1
close 2
goto FIN_KEY
end if
Aus rein optischen Gründen lassen wir die rote LED mit etwas Verzögerung wieder leuchten, wenn sie nach dem Eintreffen von Daten ausgeschaltet wurde.
if t < time then
let t = time
put -202, #1
end if
loop
Bei "FIN_KEY" wird nur noch gewartet, bis die Taste wieder losgelassen wurde. Bei "FINISH" wird nun auf eine weitere Benutzeraktion gewartet. Damit die Aufzeichnung wieder startet, muss entweder erneut die Taste gedrückt werden oder die Speicherkarte entnommen werden.
FIN_KEY:
if (KEYS & 1) = 1 then
goto FIN_KEY
end if
FINISH:
put -202, #0
let x = lof(0)
if (x = 0) or ((KEYS & 1) = 1) then
goto BEGIN
else
goto FINISH
end if
Zum Schluss nur noch ein Goto zum Anfang - eigentlich nicht nötig, aber zur Sicherheit. Das "' +++" dient lediglich dazu, dass wenn die Datei über die Datenschnittstelle hochgeladen wird, wird damit das Ende angezeigt. "+++" ist dabei die - veränderbare - Stopsequenz.
goto BEGIN ' +++