Webserver
The easiest way to get in contact with ethernode! Create web sites with a standard program and insert "msp"-commands to access directly the I/O. A support program creates a download pak (Hex-Datei) by HTML and pictures for the flash on ethernode.
- Up to 3 webservers per unit, thereby hidden accesses for configuration etc. can be realised better.
- Static HTML-sites with tables and pictures
- PDF manual
- Password protected directories
- mCAT server pages for direct I/O integration into HTML-Sites
- Direct I/O - integration in HTML - sites without programming
- if, foreach und repeat - program control
- Prices
- Details
Prices
The webserver is included in the delivery of every ELZET80-Ethernetboard.
The service program which is needed for downloading the files is part of the mCAT developer licence. If you don't want to program in C, we can send it to you by E-Mail for free.
Details
Schnell mal reinschauen: die Webseite Ihres ethernode gibt einen Sofortüberblick über den Zustand der E/A und ermöglicht das Setzen von Ausgängen. Das kann statisches HTML natürlich nicht - aber die "mCAT Server Page"-Technologie (mSP) erlaubt das Einstreuen von mSP-Tags in ansonsten normale HTML-Seiten. Diese mSP-Tags werden bei Aufruf der Seite vom Webserver durch aktuelle E/A-Werte oder Systeminformationen ersetzt. Das folgende einfache mSP-Beispiel zeigt, mit wie wenig Aufwand man eine kleine Überwachungs-Webseite erstellen kann. Das Programm fragt zuerst die Anzahl der Ereigniszähler auf der Hardware (im Beispiel TSM-ARMCPU) ab und stellt diese in einer Tabelle mit dem zugehörigen Zählerwert dar. Dieser wird rot dargestellt, wenn er größer als 1000 ist. Das Ergebnis sieht dann z.B. wie folgt aus:
2 Ereigniszähler vorhanden |
|
1 | 2 |
1018 | 713 |
Hier der dazu nötige Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV="Refresh" CONTENT="5"><!--Browser lädt alle 5s neu-->
</head>
@@xio.vecin(%xio.CPU, 6) <!-- Einlesen von CPU-Modul 6:
EventCNT -->
<table>
<--! Länge des eingelesenen Vektors abfragen, Tabellen-Kopfzeile aufsetzen-->
<tr><th colspan="@@paste([?])">@@paste([?])
Ereigniszaehler vorhanden</th></tr>
<--! Nummerierung der Eingänge, interne Bezeichnung 0,1,.. +1, also 1,2, ..-->
<tr> @@foreach
<td>@@paste(@int.add(@paste(%var.for), 1))</td>
@@endfor </tr>
<tr> @@foreach <td><font
@@if(@int.ge([%var.for], 1000), 1)
@@paste(’color="#FF0000"’)>
@@else
@@endif
@@paste([%var.for])</font></td> <!--Zählerwert anzeigen-->
@@endfor</tr>
</table>
</html>
Dieses Beispiel kommt völlig ohne Programmierung auf ethernode-Seite aus. Der Webserver setzt die mit @ beginnenden mSP-Tags in Aufrufe an die mCAT-Express-I/O-Schicht um und gibt in der an den Browser gelieferten Seite dann die von mCAT zurückgegebenen Werte aus.
Das mSP-Tag @@xio.vecin(%xio.CPU, 6) beispielsweise macht einen Vektor-Zugriff (vecin - d.h. liest die ganze Baugruppe ein) auf die CPU-internen E/A, innerhalb dieser die Gruppe 6, das sind die Ereigniszähler. Weitergehend im Programm wird die Tabelle aufgebaut, indem man mit foreach durch die Anzahl der Einträge [?] im Argumentvektor geht. @paste entspricht einer print- Anweisung, wobei paste(%var.for) den Wert der Laufvariable des @foreach schreibt und @paste([%var.for]) den Wert des Elements des Argumentvektors, auf den die Laufvariable zeigt. Das alles ist natürlich im mCAT-Handbuch detailliert beschrieben und auf der mCAT-Entwickler-CD gibt es eine Reihe von Beispielen zu mSP.
Neben E/A kann man auch auf Metainformationen wie die Anzahl der angeschlossenen E/A zugreifen oder auf Systemdaten wie Werte im Konfigurations-EEPROM. Um solche zugriffe zu schützen, beherrscht der mCAT Webserver einen Passwortschutz auf ganze Verzeichnisse für ausgewählte Benutzer (sog. Basic authentication). Und ein wenig rechnen kann mSP auch, allerdings muss man, um Arithmetik in HTML unterbringen zu können, leider mit Funktionen für die einfachsten Operationen arbeiten (@@int.add(’1’,’2’)).
Für komplexere Algorithmen lohnt es sich dann natürlich, in die C-Programmierung auf ethernode zu wechseln. Auch Abläufe sind schwer aus dem Browser zu steuern - ein Browser-bedientes Lauflicht wird bestenfalls ein Kriechlicht sein. Also stellt das mCAT Webinterface die Möglichkeit von Funktionsaufrufen bereit, wahlweise über klassische CGI-Mechanismen oder als elegant in HTML eingebettete mSP-Funktionen. Diese werden ähnlich wie eine Task unter mCAT erstellt und mit speziellen Befehlen dem Webserver bekanntgemacht.
Wir haben ein Lauflicht-Beispiel zum Tutorial ausgebaut und zeigen auf der mSP-Seite, wie man das Lauflicht ein- und ausschaltet und die Laufrichtung umkehrt - über ein Browserfenster.