Messwert Erfassung und Visualisierung im Internet

 

Inhalt – was wird behandelt:

 

Diese Projekte sind meistens nicht einfach realisierbar, weil einige Fachgebiete tangiert werden. Wenn allerdings etwas Einsatz vorhanden ist, können mit sehr einfachen Mitteln, online Daten verarbeitet werden. In den folgenden Fachbereichen werden Grundkenntnisse benötigt:

Steuer & Regeltechnik, Elektronik, Micro Controller, C++/Pascal, Internet Protokolle, Serverside Programing z.B. PHP, Datenbank Technik, WWW HTML.

 

An einem Beispiel sollen alle obigen Bereiche und deren Funktion vorgezeigt und erläutert werden.

 

- Fühler / Sensoren

Messwertaufnehmer

- Messwert Empfangssystem

Hardware mC

- Messwert Empfangssystem

Software C++/Pascal

- Daten übertragungs- Protokoll

Modem/Internet z.B. FTP

- Datenbank auslesen

Darstellung in Text Form

- Datenbank auslesen

Darstellung in Text Grafik

- Datenbank auslesen

Darstellung in Klotz Grafik

- Illustriert an einem laufenden Beispiel

Leistungserfassung lokales
Elektrizitätswerk (Verteiler)

 

 

Quelle dieses Dokumentes:  http://www.clinch.ch/pls_messwerte/pls_messwerte.htm

 

 

Auftrag (Ziel):

 

Abschätzen und zusammen­stellen der Infrastruktur so wie der zu erwartenden Arbeits­auf­wendungen. Erstellen und Breitstellen von Hardware und Software für eine online Mess­wert Grafik auf dem Internet.

 

 

Gegeben:

 

Infrastruktur des EW Netzes

-         Mittelspannungsnetz 16kVolt mit verschiedenen Zugängen.

-         Aufbau als Ring, teils mehrfach vermascht.

-         Trafo Stationen (ca. 16) in der Gemeinde verteilt.

-         Zentrale Steuerung im Gebäude des Werkbetriebs

-         Steuerung liefert Relais Ausgang, potentialfrei

-         Jeder Puls 1kWh

 

 

Fühler / Sensor

 

Da die meisten PCs oder Micro Controller eine serielle RS232C Schnittstelle standard­mässig eingebaut haben, empfiehlt es sich diese gleich als Eingang für die Pulszählung zu verwenden. Damit keine zusätzliche Stromversorgung für das Eingangssignal an der RS232 benötigt wird, wurden zwei Steuerleitung entsprechend  gesetzt. Der Dateneingang an der RS232 RxD muss +12 für ein logisches “1“ oder –12 für ein logisches “0“ haben. Um diese Spannungen bereit zu stellen wurden die Ausgänge (Steuerleitungen) wie folgt gesetzt: DTR (Data Terminal Ready) auf +12V, RTS (Request To Send)

 

RS232 Pin Belegung DB9-male (am PC)         

D

Beschrieb

Name

Pin

 

Pin

Name

Beschrieb

D

I

Data Carrier Detect

DCD

1

 

6

DSR

Data Set Ready

I

I

Receive Data

RxD

2

 

7

RTS

Request To Send

O

O

Transmit Data

TxD

3

 

8

CTS

Clear To Send

I

O

Data Terminal Ready

DTR

4

 

9

RI

Ring Indicator

O

/

Signal Ground

GND

5

 

S

Shield

Chassis Ground

/

 

 

Schema des Pulsempfängers für die serielle Schnittstelle:

 

Der 10k Ohm Widerstand wird direkt im Steckergehäuse des DB9 Steckers verlötet, so dass nur noch das zwei adrige Kabel für den Schalt-Kontakt aus dem Stecker heraus kommt.

Berechung Widerstand:

I = U / R = 24V / 10k = 2.4mA (bei geschaltetem Kontakt)

P = U * I = 24V * 2.4mA = 60mWatt (Wiederst. hat 125mW)

 

RTS und DTR sind auf 20mA strombegrenzt und Kurz­schluss­fest.

 

 

Die Pulse die von der Leistungserfassung kommen haben eine Zeit von ca. 50mSekunden. Der UART der seriellen Schnittstelle wird das schliessen des Kontaktes als beginn eines Seriell einlaufenden Bytes interpretieren. Als erstes ein Start Bit dann 8 Daten Bits und zum Schluss ein Stop Bit. Nun wird gewartet bis die Leitung wieder auf den Grundzustand zurück geht, da nur eine ansteigende Flanke als Start-Bit erkennt werden kann.

Daraus kann gefolgert werden, dass mit 50mS pro Puls nur maximal 19 Pulse pro Sekunde möglich sind. Also maximal 19 Bytes Pro Sekunde empfangen werden können. Daraus folgt 19Bytes/Sek. x10Bit’s pro Byte gleich 190 Bits pro Sekunde muss der Empfänger maximal verarbeiten könne. Also alle Datenraten grösser als 300BPS erfüllen dies.

 

Ein weiterer enormer Vorteil der Seriellen Schnittstelle mit dieser Betriebsart liegt darin, dass der Kontakt auch automatisch entprellt ist. D.h. ein Schaltkontakt schwingt beim schliessen, das hätte jedoch nur zur Folge, dass das erste Bit eventuell nicht gesetzt ist. Wir prüfen aber nicht die Bit’s sondern nur die viele Zeichen sind eingegangen. Ein Puls ist also ein Zeichen.

Noch ein High-Light - die heutigen UART’s haben einen FIFO (First In First Out) Buffer von 16 Zeichen eingebaut. Das bedeutet es ist nicht zwingend erforderlich, dass jedes Zeichen sofort abgeholt wird.

Aus den obigen Gründen wurde auf die Interrupt Auslösung der seriellen Schnittstelle verzichtet. Die Abholung der Zeichen wird im 18Hz Takt durchgeführt, also im Timer Interrupt Zyklus des PC’s, was maximal 18x16=288 Zeichen (Pulse) pro Sekunde möglich macht.

 

 

Messwert Empfangssystem - Hardware PC/mC

 

Klar die Signale einer Messtation lassen sich nicht einfach über einige Dutzend Kilometer übertragen. Die Signale müssen den Leitungseigenschaften angepasst werden. Weiter werden im Normalfall eine grössere Menge von verschiedenen Betriebsparametern übertragen. Bei solchen Anlagen die auch Fernwirk Anlagen genannt, werden läuft die Übertragung meistens via Telefon Leitung mittels Modems. Als Übertragungsprotokoll wird meistens HDLC verwendet (weit verbreitet und sehr simpel).

Bei unserer Messhardware drängt sich das Internet direkt auf, da am Ende die Visualisierung via Internet abläuft.

Am geeignetsten scheint also ein Mikro Controller oder ein PC. Da Mikro Controller mit Netzwerkanschluss eher teuer und komplex sind ist wohl ein PC vorzuziehen. Von der Leistung sind keine besonderen Anforderungen zu erwarten, alles ab PC-AT ist da wohl ausreichend. Benötigt wird lediglich eine serielle Schnittstelle (COM1), eine Netzwerkkarte Ethernet, ein Diskettenlaufwerk und 4MByte RAM.

Für unser Prototypen System wurde ein altes Systemboard im mikro-AT Format ver­wendet, ca. 20x20cm mit einem Intel Pentium-I Prozessor mit 166MHz. Zur Strom­ver­sorgung wurde ein Industrie Netzteil von Melcher eingesetzt mit drei Spannungen +5V 10A, +12V 2A, -12V 1A. Der Vorteil von Industrie Netzteilen ist, dass keine Ventilatoren benötigt werden, d.h. keine mechanischen Teile sind vorhanden.

 

Die Pin Belegung der AT Stromversorgung

 

Pin

P8

Farbe

 

Pin

P9

Farbe

1

Power Good

Orange

 

1

GND

Schwarz

2

+5V

Rot

 

2

GND

Schwarz

3

+12V

Gelb

 

3

-5V

Weiss

4

-12V

Blau

 

4

+5V

Rot

5

GND

Schwarz

 

5

+5V

Rot

6

GND

Schwarz

 

6

+5V

Rot

Die Pin’s sind in einer Reihe angeordnet und die 4 schwarzen Kabel liegen in der Mitte zusammen

 

Reset / Power Good Signal:

 

Da die Industriespeisungen kein Power-Good Signal bereit­stellen, muss dies noch konventionell erzeugt werden (wird für den Reset benötigt). Das Power Good Signal wird mit folgender Beschaltung erzeugt:

 

 

Natürlich muss auch das Diskettenlaufwerk mit Strom versorgt werden, die Farben der Drähte sind da ebenfalls genügend aussage kräftig.

 

Noch als kleines extra wurde die Power LED (grün) am System-Board angeschlossen. Es kann nichts schaden, wenn man sieht, dass das Gerät unter Strom ist.

Die rote LED die ja gar nicht in Gebrauch ist ohne Festplatte, wurde neu an die Pin’s des Lautsprechers angeschlossen. Nun wird die rote LED anstelle des Lautsprechers betrieben. D.h. mit einem Beep (ASC 7) oder [Ctrl] + [G] wird die LED für ca. ½ Sekunden aufleuchten. Bei beiden LED’s ist auf die Polarität zu achten damit‘s funktioniert.

 

Nun wird das alles in ein kleines Gehäuse gebaut.

 

 

Messwert Empfangssystem - Software

 

Bei der Software wurde versucht, den einfachsten Weg zu gehen. D.h. die Software liegt nicht in einem Option ROM des PC’s sondern wird ab Diskette geladen. Dies ist zwar ein hohes betriebs- sicherheit’s Risiko, da die Laufwerke verschmutzen und dann eventuell den Dienst versagen. Aber der Einfachheit zuliebe...

Aus lizenzrechtlichen Gründen wurde als Betriebssystem FeeDOS gewählt.

 

FreeDOS ist ein Open Source DOS http://www.freedos.org das fast 100% zu MS-DOS kompatibel ist.

 

Für die effektive Zählung der Puls wurde ein Speicher residentes Programm (TSR) in Turbo Pascal 4 geschrieben.

Source Code: PLS_MESS.PAS PLS_MESS.EXE

Das Programm unterstützt COM1 bis COM4

{ COM1 := $03F8, COM2 := $02F8, COM3 := $03e8, com4 := $2e8 }

Interrupt der seriellen Schnittstelle wird nicht benutzt!!

Programm Aufruf: PLS_MESS.EXE  1

Der erste Parameter ist die Nummer des zu verwendenden COM Portes in diesem Falle COM1. Nach dem Starten des Programmes geht die Kontrolle sogleich wieder an den Kommando Prozessor zurück, da das Programm sich speicherresident eingeklinkt hat. Es wird nun im RAM auf der Adresse $0:181 eine LongInteger Variable bei jedem Zeichen auf COM1 inkrementiert. Wobei $0:181 Das nieder wertigste Byte ist und $0:184 das höchst wertige. Auf der Adresse $0:180 wird in jedem Messdurchlauf $5A geschrieben. Damit kann jeder Zeit geprüft werden ob das TSR Programm läuft. Wird die Adresse $0:180 mit $00 überschrieben, so müsste spätesten 55mS später wieder $5A stehen. Das TSR Programm arbeitet wie ein Maustreiber und wird im System-Timer Interrupt 18 mal pro Sekunde gestartet. Dies kann auch im Debug’er verifiziert werden:

 

Debug [Enter]

D 0:180 [Enter]

D 0:180 [Enter]

Quit [Enter]

 

Jetzt können die Summe der Pulse jeder Zeit, alle 15 Minuten oder jede volle Stunde ausgelesen werden.

Source Code: PLS_READ.PAS PLS_READ.EXE

Das Programm liest den Wert auf der Adresse $0:181 und folgende und schreibt diesen in dezimal in die als Parameter angegebene Datei. Danach wird der Zähler wieder auf Null zurück gestellt. Natürlich wird der ausgelesene Wert so oder so auf dem Bildschirm ausgegeben, egal ob ein Parameter angegeben wurde.

 

Der ausgelesene Wert wird mit FTP an den FTP-Server gesendet. Dies wird per Batch Script erledigt:

 

Ausschnitt aus dem Batch-Script zum Senden der Messwerte

 

IF "%FTPNAME%" == "" SET FTPNAME=Anonymous

IF "%FTPPASSWD%" == "" SET FTPPASSWD=XXYYZZ

IF "%FTPDIR%" == "" SET FTPDIR=\

::

PLS_READ PLS_READ.TMP

TYPE PLS_READ.TMP | SETWORD 1 > PLS_READ.BAT

CALL PLS_READ.BAT PLS_READ > NUL

DEL PLS_READ.TMP > NUL

DEL PLS_READ.BAT > NUL

::

echo.>enter

DATE <enter >DATUM.tmp

TYPE DATUM.tmp | SETWORD 5 > DATUM.bat

CALL DATUM.BAT DATUM > NUL

DEL DATUM.BAT > NUL

::

ECHO %PLS_READ%,%ZEIT%>>%DATUM%

ECHO %PLS_READ%,%ZEIT% == %DATUM%

::

ECHO OPEN DATA.CLINCH.CH>FTP.TMP

ECHO %FTPNAME%>>FTP.TMP

ECHO %FTPPASSWD%>>FTP.TMP

ECHO CD %FTPDIR%>>FTP.TMP

ECHO PUT %DATUM% %DATUM%>>FTP.TMP

ECHO CD ..>>FTP.TMP

ECHO CLOSE>>FTP.TMP

ECHO BYE>>FTP.TMP

::

FTP -f ftp.tmp

DEL FTP.TMP>NUL

Internet Access Staff

 

 

 

Puls Zähler auslesen

 

Setze Variable PLS_READ

 

 

 

Variable mit dem aktuellen

Datum erst.

 

 

 

 

Messwerte aneinander hängen

 

 

FTP Kommando Liste erstellen

 

 

 

 

 

 

 

 

FTP ausführen

 

 

Neben bei noch das mit der roten LED

Die Codes die die rote front LED zum Blinken bringen:

ECHO ^G

ASC Code für Beep, Code 7, LED anstatt Lautsprecher angeschlossen  J

 

Da das Programm weitgehendst in Batch Script geschrieben ist, kann es einfach an alle Gegebenheiten angepasst werden.

 

Selbst verständlich muss für jede Netzwerkkarte der individuelle Paket Treiber geladen werden, dieser ist im Verzeichnis \LAN abgelegt und wird vom PLS_INIT initialisiert. In diesem Beispiel ist eine D-LINK DFE-530TX+ Netzwerkkarte im Rechner.

 

Als TCP/IP Stack für DOS wurde WhatTCP verwendet.

Weitere Infos: http://www.smashco.com/wattcp.asp

TCP/IP Treiber unterstützt Statische IP Adressierung als auch Dynamische mit DHCP. Hilfsprogramme wie Ping, Telnet usw... sind auch vorhanden. Interessant ist auch, dass der Netzwerkkarten Paket Treiber speicher Resident installiert wird, der TCP Stack ist jedoch in jedem TCP Programm separat enthalten. Dies hat zur Folge, dass das Gerät nur während einer FTP Übertragung oder während einer laufenden Telnet Session mit Ping von extern gePing’t werden kann.

 

Diskette:

http://www.clinch.ch/clinch/pls_messwerte/pls_mess.img

Image2Disk:

http://www.clinch.ch/clinch/pls_messwerte/dd.exe

AutomImg2Disk:

http://www.clinch.ch/clinch/pls_messwerte/makedisk.bat

 

 

Daten übertragungs- Protokoll          Modem/Internet z.b. FTP

 

Wie immer bei der Wahl des übertragungs Protokolls stellt sich die Frage, nehmen wir etwas standardisiertes oder machen wir was eigenes? Ein eigenes Protokoll hätte zur Folge, dass auf dem Server ein entsprechendes Gegenstück installiert werden müsste. Dies ist bei den meisten Providern nicht möglich. Ein Protokoll das bei jedem ISP möglich ist, ist wohl FTP, das dies für den Daten upload fast unverzichtbar ist. Einigen wir uns also auf FTP, ist zwar unverschlüsselt aber es sind ja keine heiklen Daten die übertragen werden und das Datenverzeichnis ist ein separater FTP Zugang und ist kontingentiert.

Da wir zu möglichst vielen ISP Kompatibilität sein wollen, wurde auf einen SQL Server verzichtet. Kostet ja auch nur zusätzlich gebühren.

Als ist eine Text Datenbank gefragt. D.h. das Dateisystem dient als Datenbank. Dies ist bis 1000 Dateien je Ordner absolut kein Problem. Wenn wir also für jeden Tag eine Datei mit den Messwerten erzeugen und der Name der Datei ist zugleich das Datum. In diesem Falle hilft uns das Dateisystem um die Record’s zu suchen.

Also haben wir jeden Tag eine Neue Datei mit z.b. folgendem Namen: 08-31-2003 Das Amerikanische Datumsformat stammt vom FreeDOS US Treiber geladen.

Der Datei Inhalt könnte als Beispiel folgende Werte haben:

 

428,12:00:31.69

402,1:00:32.11

361,2:00:32.64

318,3:00:31.25

298,4:00:31.83

304,5:00:32.58

331,6:00:31.8

373,7:00:31.72

312,8:00:32.47

360,9:00:31.14

 

Also, jetzt können die Werte via PHP Server Side Programming alsgelesen werden und HTML generiert werden.

 

Das System hat also verschiedene Protokolle:

- Datei Inhalt

Messwert und Zeit

- Datei Namen

Messwerte eines Tages

- FTP

für die Übertragung

- TCP/IP

ADSL, CableModem oder ISDN Router

 

 

Datenbank auslesen - Darstellung als Text Grafik

 

Darstellung der Messwerte als Text Grafik mit PHP. Datenformat gegeben gemäss obigen Angaben. Weiter wird ein Zugriffs Zähler gewünscht für das anzeigen der Besucher bis jetzt. Eine Aufzeichnung der Besucher (Zeit und IP-Adresse)

 

Ein Programm-Ausschnitt der wichtigen Teile (Auslesen in PHP):

<?php

 /*  Aufruf: http://data.clinch.ch/EWAMesswerte/Messwerte.html */

global $ip;                                      // IP-Adrasse

 global $zCountMax;                              // Such für max Anzahl eEinträge

 global $DataFile;                               // Datenbank

 global $IPLogFile;                              // IP-AccessLog

 global $cfile;                                  // Access-Count DataBase

 global $KundenNr;                               // Übergeben via Post

 global $PassWort;                               // Übergeben via Post

 

 $dbDate    = "";                                // Datum der Datenbank

 $ip        = getenv("REMOTE_ADDR");             // IP-Adrasse erfragen

                                                 // (eigene falls keine übergeben wurde)

$DataFileP = "\inetpub\www\xxx\";                // Datenbank Pfad der MesswertDateien

$IPLogFile = "\inetpub\www\xxx\Messwerte.log";   // IP-AccessLog

$cfile     = "\inetpub\www\xxx\Messwerte.cou";   // Access-Count DataBase

 

$_Datum = date("d.m.Y");                         // Datum holen Windows Script

$_Datum = date("m-d-Y");                         // Datum holen FreeDOS Script engl.

$DataFile=$_Datum;                               // Datei auslesen falls vorhanden

 

for ($Tag=1; $Tag<31; $Tag++) {                  // Monat Tag Zähler

  $DataFile = SubStr($DataFile,0,3) . $Tag .

              SubStr($DataFile,5,5);             // Tag abschneiden (FreeDOS engl)

  If (strlen($DataFile)<10)

    {$DataFile = SubStr($DataFile,0,3) . "0"

                 SubStr($DataFile,3,6);}         // führendes Null einsetzen

  if (file_exists($DataFile)) {                  // Werte für diesen Tag vorhanden?

    $fp = fopen($DataFile,"r");

    while (!feof($fp)) {                         // alle Werte dieses Tages holen

      $Zeile=fgets($fp,1000);

      $Zeile=SubStr($Zeile,0,strpos($Zeile,","));// Zeit usw... abschneiden

........

 

Wie sollen jetzt die Daten im Web dargestellt werden auf einfachste Weise (Text Grafik)?

 

Nr.Datum   Zeit  Temp -20°C.............-10°C.................0°C..............10°C.........15°C

0  31.08. 00:00 +15.0 .........................................I.............................X

1  31.08. 01:00 +14.9 .........................................I.............................X

2  31.08. 02:00 +14.8 .........................................I.............................X

3  31.08. 03:00 +14.5 .........................................I.............................X

4  31.08. 04:00 +13.9 .........................................I...........................X

5  31.08. 05:00 +13.5 .........................................I...........................X

6  31.08. 06:00 +13.5 .........................................I...........................X

7  31.08. 07:00 +13.0 .........................................I.........................X

8  31.08. 08:00 +12.1 .........................................I.......................X

9  31.08. 09:00 +13.0 .........................................I.........................X

10 31.08. 10:00 +16.0 .........................................I...............................X

11 31.08. 11:00 +11.9 .........................................I.......................X

12 31.08. 12:00 +15.3 .........................................I.............................X

13 31.08. 13:00 +16.0 .........................................I...............................X

14 31.08. 14:00 +15.9 .........................................I...............................X

15 31.08. 15:00 +17.4 .........................................I.................................X

16 31.08. 16:00 +17.0 .........................................I.................................X

17 31.08. 17:00 +14.5 .........................................I.............................X

18 31.08. 18:00 +12.9 .........................................I.........................X

 

Die obige Darstellung lässt sich in HTML in 5 Spalten realisieren (Nr, Datum, Zeit, Temp und Graph). Damit die “X“ die die Werte repräsentieren auf Position sind wurden die Punkte mit einer For-Schleife hochgezählt. Damit die Punkte nicht sichtbar sind wurde der Vordergrund und der Hintergrund mit der gleichen Farbe versehen. Dies ist zwar keine gewaltige Leistung, aber es ist schnell und einfach realisierbar.

 

Oder so als SnapShot:

 

 

Oder als Balken Grafik aus einzelnen kleinen Grafik Gif block’s:

 

 

 

On-Line Messdaten finden in den folgenden Bereichen vorzugsmässigen Einsatz.

 

Die jeweilige Betreiber Firma kann ebenfalls via Internet auf die eigenen Daten zugreifen.

Einsatzgebiete:

 

WERKE: Gas, Elektro, Wasser, Solar, Generatoren, Treibstoffe, Heizung, Kühlung, Kommunikation, Strahlung, usw...

Fabrikations und Verteilungsanlagen: Abfüllmedien, Chemie, Statistik, Leistung, Aktuelle Pegel

KMU's: Serienummern abfrage, Auftragsstatus

 

Radioaktivität mit einem Geiger Zähler Messen

 

Radioaktivität ist die Eigenschaft bestimmter Atomkerne (Elemente und Isotope), sich ohne äusseren Einfluss unter Aussenden von Strahlungsenergie (Alpha-, Beta-, Gamma-Strahlung) in Atomkerne anderer Art umzuwandeln (Atomzerfall, radioaktiver Zerfall).

 

Mit einer kleinen Schaltung können die Pips Töne des Geiger Zählers in Puls umgewandelt werden. Jeder Pipser wird durch ein Teilchen das durch das Geiger-Müller Rohr fräst ausgelöst.

Im folgenden die beschriebene Schaltung:

Die Schaltung ist ausschliesslich mit Standard Bauteilen realisiert worden.

Die Stromversorgung wird direkt aus der seriellen Schnittstelle geholt.

Achtung: Die Schaltung arbeitet nur wenn das Mess-Programm aktiv ist. Da nur dann die Pegel von RTS/DTR zur Speisung korrekt vorliegen.

 

Sievert Sv:

1 Sv = 1 J/kg. SI-Einheit der Äquivalentdosis; löst die alte Bezeichnung rem  ab.

 

Die Äquivalentdosis ist die Stärke der biologischen Wirkung einer bestimmten Strahlendosis. Gleich grosse Äquivalentdosen sind somit unabhängig von der Strahlenart in ihrer Wirkung auf den Menschen vergleichbar.

Die Äquivalentdosis ergibt sich durch Multiplikation der Energiedosis (Gray) mit einem Qualitätsfaktor, der sog. Relativen biologischen Wirksamkeit, die von der Strahlungsart und -Energie abhängt und auf Erfahrungswerten beruht.

 

 

Und das waren einige Ideen für die Messwert-Erfassung