Logo

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

Script: MR3-5.txt (1,3 kB) (right mouse-button and 'save under ..' to download)

autorun

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 Mehr 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:

  1. Laden Sie Script Datei und die 'autorun.txt' Datei von der Webseite herunter
  2. Kopieren Sie die Dateien auf eine Speicherkarte
  3. Legen Sie die Speicherkarte in das Avisaro Produkte und schalten die Versorgungsspannung ein
  4. Warten Sie kurz (5 Sekunden)
  5. Schalten Sie die Versorgungsspannung aus und entnehmen die Speicherkarte
  6. 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

LED und Taster

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)

SD Karte

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 (Mehr 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

' +++