[Inhalt] [Kapitel 1] [Kapitel 2] [Kapitel 3] [Kapitel 4] [Kapitel 5] [Fazit]

4. Das VCLab

4.1 Die Realisierungsstruktur und deren Elemente

Um den Nachteil der festgelegten und starren Systemumgebung für eine regelungstechnische Lehrumgebung wie bei vielen anderen CBT oder Tutoriellen Systemen zur vermeiden, wird für das VCLab ein WWW-Browser als Benutzerschnittstelle gewählt. Dieser ermöglicht es, die entwickelte Software auch für andere Plattformen kompatibel oder leicht konvertierbar zu halten. Die Kommunikation im WWW ist als Client / Server Struktur angelegt. Der Server liefert beliebige einzelne Dateien, die nur durch ihren MIME-Typ zu unterscheiden sind. Es kann also jeder Datei eine entsprechende Anwendung oder ein Plugin im Browser zugewiesen werden.

Aufgrund der Zustandslosigkeit von HTTP können keine Informationen oder Daten vom Client auf den Server übertragen werden. Die Möglichkeit sogenannte CGI- (Common Gateway Interface) Skripte einzusetzen, um Formulareingaben auszuwerten oder benutzerspezifische Dokumente etwa aus Datenbanken zu erzeugen, wurde verworfen, da dies voraussetzt, daß jeder Autor von Lehrinhalten zu dem zu entwickelnden VCLab Zugang zu einem WWW-Server besitzt und auf diesem dazu berechtigt ist, CGI-Skripte zu installieren. Dies wird bei größeren WWW-Servern aus Sicherheits-, Stabilitäts- und Praktikabilitätsgründen nur dem Systemverwalter erlaubt sein. Internet Provider (AOL, CompuServe, T-Online, ...) gestatten grundsätzlich keinen so tiefgreifenden Eingriff in die Betriebsmittel.

Nach der in Kapitel 2 erfolgten Analyse der vorhandenen und eingesetzten Lehr- und Lernumgebungen wurden für das VCLab die folgenden Punkte umgesetzt:

Als Plattform für die Benutzung und Entwicklung des VCLab wurde Windows95 auf einem Standard PC mit einem Pentium 90 MHz Prozessor eingesetzt. Die Kompatibilität von Windows95 zu WindowsNT 4.0 erlaubt die Benutzung aller Teile des VCLab auch für WindowsNT.

Zur Navigation und zur Interaktion wird der Netscape Navigator ab der Version 3.0 für Windows95 Plattformen eingesetzt. Dabei handelt es sich um eine Version, bei der eine Reihe von Plugins mitgeliefert werden. Insbesondere das Live3D-Plugin zur Darstellung komplexer dreidimensionaler Körper und Welten wird in Beispielen zum VCLab eingesetzt.

Eine der Grundvoraussetzung für regelungstechnische Lehrsysteme ist die Darstellung von Gleichungen. In bisher bekannten Systemen, siehe Kapitel 2, und insbesondere bei Lehreinheiten, die auf dem WWW basieren, werden Gleichungen zunächst mit einer Textverarbeitung (z.B. AmiPro, Word, Word Perfect, LaTeX, ...) erzeugt und anschließend in eine Grafikdatei konvertiert. Diese Grafikdatei wird anschließend auf der entsprechenden HTML-Seite mittels eines Anchors eingebunden (z.B. " <a href="Gleichung_3_5.gif"> "). Soll diese Gleichung zu einem späteren Zeitpunkt verändert oder angepaßt werden, so muß in einem aufwendigen Verfahren über eine Textverarbeitung erneut eine entsprechende Grafikdatei erzeugt werden. Diese Vorgehensweise ist statisch und es besteht nach der Erzeugung entsprechender HTML-Seiten keine Möglichkeit, die Darstellung der Gleichungen dynamisch zu verändern. Zur Lösung dieses Problems wurde ein Java-Applet programmiert, das imstande ist, ein ausgewähltes Spektrum der in dem Satzsystem LaTeX zur Verfügung stehenden Befehle zum Setzen von Gleichungen zu interpretieren. Dieser Gleichungsbetrachter wurde in Anlehnung an seine dynamischen Fähigkeiten "HotEqn - Equation Viewer" genannt.

Als regelungstechnisches Programmsystem wird MATLAB/SIMULINK eingesetzt, da dieses System durch die Vielzahl der bereits vorhandenen Toolboxen, implementierten Verfahren, Systeme und Modelle im täglichen Gebrauch sowohl für kleine als auch sehr komplexe Probleme sehr leistungsfähig ist. Die Vorgehensweise des VCLab erlaubt es, vorhandene M-Dateien, SIMULINK-Systeme, Daten-Dateien und MEX-Dateien weiterhin zu benutzten. M-Dateien können in der Regel nach kleinen Änderungen weiterverwendet werden. Werden grafische Ausgaben zur Visualisierung eingesetzt, so kann durch Umlenkung der Grafikausgabe der Netscape Navigator zur Anzeige benutzt werden.

Das in Bild 4.1 dargestellte Diagramm veranschaulicht den Datenfluß im und um den WWW Browser. Die in Kapitel 3 erläuterten Mechanismen zur Kommunikation und Animation mit JavaScript, Plugins und Java-Applets über das Hilfsmittel LiveConnect, werden durch die Anbindung von MATLAB/SIMULINK an den Browser ergänzt.


Bild 4.1: Datenfluß zwischen Browser, MATLAB, Laboranlage und HTTP-Servern.

Es wurden zwei Mechanismen zur Integration von MATLAB/SIMULINK eingesetzt. Über das in Kapitel 4.3 beschriebene Plugin, im weiteren Verlauf der Arbeit MATLAB-Plugin genannt, können vom Browser aus im MATLAB-Workspace Operationen und Befehle ausgeführt werden, sowie Variablenwerte und Matrizen zurück zum Plugin und damit auf die HTML-Seite übertragen werden. Dazu wurden im Plugin eine Reihe von Java-Methoden implementiert, die soweit wie möglich an die Funktionen der MATLAB-Engine und der entsprechenden Bibliotheken angelehnt wurden und um einige WWW spezifische Methoden erweitert wurden.


Bild 4.2: Bode-Diagramm Beispiel nach dem Mausklick auf die Gleichungen (5) und (6) und auf den Push-Button "Bode plot".

Die zweite Kommunikationsform wird durch die Verwendung der DDE-Funktionen von MATLAB ermöglicht. SIMULINK-Simulationen können durch Ergänzung eines einzelnen Blocks befähigt werden, mit einem Java-Applet (DDEmeter-Klasse) im Netscape Browser zu kommunizieren. Im Browser wird dazu eine Klassensammlung von Neva Object Technology verwendet, die es Java-Applets ermöglicht, DDE-Dienste in Anspruch zu nehmen.
Bild 4.2 enthält als Beispiel die Berechnung des Bode-Diagramms für ein lineares zeitinvariantes System mit einem Eingang und zwei Ausgängen.
Im oberen Bereich von Bild 4.2 ist der Fensterbereich des MATLAB-Plugins abgebildet, in dem Aktionen des Plugins und die Textausgabe des MATLAB-Workspaces angezeigt werden. Der markierte Link verweist auf die Erklärung des Begriffs "LTI-system" (lineare zeitinvariante Systeme), die auf einer separaten WWW Seite erfolgt. Die 6 Gleichungen zur Beschreibung des Systems werden von einem Java-Applet dargestellt. Die grafische Ausgabe von MATLAB wird von einem weiteren Plugin, dem "ClipBoard-Plugin", übernommen. Der Push-Button "Bode plot" startet die Berechnung des Bode-Diagramms in MATLAB, indem über das MATLAB-Plugin Befehle im MATLAB-Workspace ausgeführt werden.

In den folgenden Kapiteln werden entsprechenden Mechanismen, Applets und Plugins beschrieben.

4.2 Das HotEqn-Applet

4.2.1 Einführung

In der Spezifikation zu HTML 3.0 [Bra95] wird vom World Wide Web Consortium (W3C) die Unterstützung zur Darstellung von mathematischen Gleichungen in einer tagorientierten Weise vorgesehen. Diese Spezifikation wurde allerdings bisher von keinem kommerziellen Browserhersteller umgesetzt. In der nachfolgenden Spezifikation zu HTML 3.2 [Wil96] ist allerdings auf die Unterstützung zur Darstellung von mathematischen Gleichungen verzichtet worden. Es bestand somit zu Beginn dieser Arbeit die Forderung, eine geeignete Unterstützung für mathematisch formulierte Probleme zu entwickeln. Um die Lösung möglichst allgemeingültig und portierbar zu gestalten, wurde das Java-Applet "HotEqn - Equation Viewer" entwickelt, das eine Untermenge der unter dem Satzsystem LaTeX zur Verfügung stehenden Befehle und Anweisungen implementiert. Das komplette Spektrum der in LaTeX zur Verfügung stehenden Befehle und Zeichen zur Beschreibung von Gleichungen umfaßt zirca 200-300 Einzelbefehle. In der zum Ende dieser Arbeit fertiggestellten Version 1.1 des Applets wird eine Untermenge von etwa 70 Befehlen und Zeichen unterstützt. Bild 4.1 zeigt ein Beispiel von durch HotEqn erzeugten Gleichungen. Im rechten Teil der Abbildung ist die Codierung in der dazugehörigen HTML-Datei wiedergegeben. Dabei wird der darzustellende mathematische Ausdruck über einen Parameter an das Applet übergeben. Der linke Teil der Abbildung zeigt die vom Applet erzeugte Darstellung der Gleichungen.

<applet code=HotEqn.class height=200 width=300 name=equation MAYSCRIPT><param name=equation value="\array{ 35.6+\left\[ \array{x & 2 & 4 \\ 0 & \sqrt{\alpha} & \frac{1}{x+1} \\ 0 & 1 & 7} \right| +\sqrt{\frac{x^{4}}{x*5_{3k+1}}} \\ x=4*y \\ y = 2*x^{6*k}+5 }"><param name="Fontsize1" value="18"><param name="Fontsize2" value="16"><param name="Fontsize3" value="12"><param name="Fontsize4" value="8"></applet>

Bild 4.1: Beispiel für den Einsatz von HotEqn.

4.2.2 Die Applet Syntax

Die Syntax zum Aufruf des HotEqn-Applets entspricht den Angaben zur Darstellung von Java-Applets entsprechend Kapitel 3.2. Bild 4.2 zeigt die Syntax des Applet-Tags und die Angabe der unterschiedlichen Parameter. Die Java-Klasse des Applets heißt "HotEqn.class" und wird in jeder Parametrierung des Applet-Tags angegeben.

<applet code=HotEqn.class height=200   width=300 
        name="equation1"   align=middle MAYSCRIPT>
<param  name="equation"    value="LaTeX-String">
<param  name="LeftSide"    value="LaTeX-String">
<param  name="RightSide"   value="LaTeX-String">
<param  name="prev0"       value="equation1">
<param  name="prev1"       value="equation2">
 ...                       ...
<param  name="prevXXX"     value="equationXXX">
<param  name="Fontsize1"  value="18">
<param  name="Fontsize2"  value="16">
<param  name="Fontsize3"  value="12">
<param  name="Fontsize4"  value="8">

Bild 4.2: Syntax des HotEqn-Applets.

4.2.3 Die Minimalkonfiguration

Zur minimalen Konfiguration des Applets sind die in Bild 4.3 dargestellten Angaben nötig. Neben der Angabe der Java-Klasse "HotEqn.class" werden die Höhe "height=200" und die Breite "width=300" des Appletfensters angegeben. Der Parameter "equation" enthält als Argument die darzustellende Gleichung als LaTeX-Befehlsstring. Wird die Größe des Appletfensters zu klein zur kompletten Darstellung des mathematischen Ausdrucks angegeben, so erfolgt die Ausgabe der benötigten Fenstermaße im Java-Ausgabefenster des Browsers. Bei einem späteren Update der entsprechenden HTML-Seite kann dann die korrekte Größe angegeben werden.

<applet code=HotEqn.class height=200   width=300
                          align=middle MAYSCRIPT><param
 name=equation     value="LaTeX-String"></applet>

Bild 4.3: Minimalkonfiguration des HotEqn-Applets.

4.2.4 Die Applet Funktionalität

Die Inter Applet Kommunikation, siehe Kapitel 3.4.1, ermöglicht es, dynamisch den Inhalt von Gleichungen zu verändern. Bild 4.4 zeigt einen Ausschnitt aus dem Browserfenster. Abgebildet sind drei HotEqn-Applets. Das dritte Gleichungsapplet (eqn3) führt eine Reihe von Aktionen aus, wenn der Benutzer mit der linken Maustaste auf die Gleichung klickt.


Bild 4.4: Drei unterschiedliche Gleichungen.


Bild 4.5: Die drei Gleichungen nach dem Anklicken von (eqn3) mit der linken Maustaste.

Bild 4.5 zeigt das Resultat nach dem Mausklick. In der Gleichung wurden die Variablen z und y durch die rechten Seiten der Gleichungen (eqn1) und (eqn2) ersetzt. Durch erneutes Klicken auf (eqn3), diesmal mit der rechten Maustaste, wird der Ausgangszustand aus Bild 4.4 wiederhergestellt.

Der in Bild 4.6 abgebildete Ausschnitt aus einer HTML-Datei enthält drei HotEqn-Applets (eqn1), (eqn2) und (eqn3). Im Gegensatz zu den Bildern 4.1 und 4.3 wird zur Codierung der Gleichung bei den ersten beiden Applets nicht der Parameter "equation" benutzt, sondern die Parameter "LeftSide" und "RightSide" zur Festlegung der linken und rechten Seiten der darzustellenden Gleichungen. Beide Angaben werden in der anschließenden Darstellung durch ein "="-Zeichen verbunden. Das dritte Applet enthält die beiden Angaben "prev0" und "prev1". Diese besitzen als Argument die Namen der vorherigen beiden Gleichungen, nämlich "eqn1" und "eqn2" zur Referenzierung anderer HotEqn-Applets.

 
Given 
    <applet code=HotEqn.class height=40 width=60 name=eqn1  
            align=middle      MAYSCRIPT> 
    <param  name="LeftSide"  value="x"> 
    <param  name="RightSide" value="\sqrt{\frac{3}{5}}"> 
    </applet>(eqn1) 
and 
    <applet code=HotEqn.class height=60 width=60 name=eqn2  
            align=middle      MAYSCRIPT> 
    <param  name="LeftSide"  value="y"> 
    <param  name="RightSide" value="\sum_{i=0}^{5}x^{i}"> 
    </applet>(eqn2) 
follows 
    <applet code=HotEqn.class height=80 width=150 name=eqn3  
            align=middle      MAYSCRIPT> 
    <param  name="equation"  value="z = \sqrt{3*x+4}-                                
       \frac{4}{y}"> 
    <param  name="prev0"     value="eqn1"> 
    <param  name="prev1"     value="eqn2"> 
    </applet>(eqn3).<br> 

Bild 4.6: Parametrierung der Applets bei Inter Applet Kommunikation.

Nach einem Mausklick mit der linken Taste auf diese Gleichung werden jeweils die zuerst im LaTeX-String von (eqn3) vorkommenden linken Seiten von (eqn1) bzw. (eqn2) durch die rechten Seiten von (eqn1) bzw. (eqn2) ersetzt. Die Anzahl der Parameter vom Typ "prev" ist variabel und kann durch Anhängen einer fortlaufenden Zahl (z.B. "prev3", "prev4", ..., "prevXXX") erhöht werden, wenn in einer Gleichung mehrere Variablen oder auch Terme durch andere Variablen oder Terme ersetzt werden sollen.

Während der Entwicklung von VCLab ergaben sich eine Reihe von weiteren Anforderungen zur Aktion des Gleichungsapplets. So können mit den Parametern "evalMFile", "engEvalString", "engGetFull" und "Matrix2LaTeX" weitere Aktionen ausgelöst werden. Die Funktion der einzelnen Parameter kann Bild 4.8 entnommen werden. Die vier Parameter setzen voraus, daß sich das MATLAB-Plugin mit dem Namen "matlab" auf der gleichen HTML-Seite befindet wie auch das Gleichungsapplet. Auf diese Weise können über das MATLAB-Plugin Daten mit MATLAB ausgetauscht werden. Bild 4.7 verdeutlicht die zeitliche Abfolge der Parameterabfragen und Aktionen bei den entsprechenden Mausklicks. Der Einsatz dieser aktionsbehafteten Parameter erfolgt in Beispielen zum VCLab in Kapitel 5.


Bild 4.7: Aktionsreihenfolge des HotEqn-Applets.

Bild 4.8 enthält die vollständige Auflistung aller für HotEqn implementierten Parameter und deren Funktion. Der Parameter "Fontname" gibt den zu verwendenden Zeichensatz für die grafische Darstellung an. In Java sind vier verschiedene Standardzeichensätze implementiert. Diese sind "Helvetica", "TimesRoman", "Courier" und "Dialog", standardmäßig ist "Helvetica" eingestellt. Die Parameter " Fontsize1", "Fontsize2", "Fontsize3" und "Fontsize4" bieten die Möglichkeit, die Größe der verwendeten Schrift zu wählen, wobei eine größere Nummer eine kleinere Schrift (Tiefstellen, Brüche,...) bedeutet. Diese Auswahl geschieht allerdings nicht stufenlos, sondern ist bislang auf die Größen 18, 16, 14, 12, 10 und 8 Punkt-Schriften beschränkt. Der Grund dafür ist, daß Java bislang weder das griechische Alphabet noch Sonderzeichen in den Zeichensätzen unterstützt. Griechische Zeichen und Sonderzeichen werden deshalb bei Bedarf als einzelne Gif-Bilder vom Applet geladen. Sie müssen in allen in Frage kommenden Schriftgrößen auf dem WWW-Server oder bei lokaler Anwendung auf der lokalen Festplatte vorliegen.

<param name="Parameter" value="Wert">
name für Datenaustausch zwischen Applets und Referenzierung für JavaScript
equation Mathematische Gleichung im LaTeX-Format
LeftSide linke Seite einer Gleichung
RightSide rechte Seite einer Gleichung

Es gilt: equation = LeftSide +" = "+ RightSide

prev0 vorherige Gleichung (Daten Quelle 0)
prev1 vorherige Gleichung (Daten Quelle 1)
prev2 vorherige Gleichung (Daten Quelle 2)
prevXXX vorherige Gleichung (Daten Quelle XXX)
next nachfolgende Gleichung (Daten Ziel)
evalMFile M-Datei zur Berechnung in MATLAB
engGetFull holt Matrix ("name") aus MATLAB-Workspace im LaTeX-Format
Fontname Name des verwendeten Fonts
Fontsize1 Größe des Normalfonts
Fontsize2 Größe des 1. rekursiven Fonts (kleiner)
Fontsize3 Größe des 2. rekursiven Fonts (noch kleiner)
Fontsize4 Größe des 3. rekursiven Fonts (noch kleiner)

Bild 4.8: Parameterliste des HotEqn-Applets.

void setEquation(String Equation) Neue Gleichung setzen
void setLeftSide(String LeftSideS) Linke Seite festlegen
void setRightSide(String RightSideS) Rechte Seite festlegen
String getLeftSide() Linke Seite zurückgeben
String getRightSide() Rechte Seite zurückgeben

Bild 4.9: Public Methoden des HotEqn-Applets.

Das HotEqn-Applet bietet einige als "public" definierte Methoden an, die von anderen Applets und von JavaScript genutzt werden können. Die Methoden sind in zwei Gruppen zum Setzen und zum Auslesen der Gleichungen aufgeteilt. Die genaue Syntax der Methoden kann Bild 4.9 entnommen werden.

Die implementierte Untermenge der LaTeX-Anweisungen und Zeichen kann dem Bild 4.10 entnommen werden. Sie richtet sich nach den in [Kop93] angegebenen Tabellen.

Befehle:
Beispiel-Applet:
LaTeX-Code:
Operatoren: + - * / = < > # ~ ; : + - * / = < > # ~ ; :
Subscripts:_{ <eqn> }

y= x_{k,n_{i+j},}
Superscripts:^{ <eqn> }

y= x^{e^{sin ( x+3 ) }}
Wurzeln:\sqrt{ <eqn> }

12.9+\sqrt{3.8+x_{i}}
Brüche:\frac{ <eqn> } { <eqn> }

z=\frac{x+2}{y+\frac{x^{2}}{x+8y}}
Klammern:\left( \right) left | \right| \left\[ \right\] \left\{ \right\} \left. \right.

(Verschiedene Kombinationen von \left und \right sind möglich.)



\left( \left\{ \left| x \right| * x+y \right| \right)
Felder:\array{ <eqn> & <eqn> \\ <eqn> & <eqn> }

\left( \array{1 & x\\4 & y} \right)
Griechische Symbole:\alpha \beta \gamma \delta (\epsilon not implemented) \varepsilon \zeta \eta \theta \vartheta \iota \kappa \lambda \mu \nu \xi \pi \varpi \rho (\varrho not implemented) \sigma (\varsigma not implemented) \tau \upsilon \phi \varphi \chi \psi \omega \Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma (\Upsilon not implemented) \Phi \Psi \Omega (siehe links)
Summen:\sum_{ <eqn> }^{ <eqn> }

z=\sum_{x=1}^{8}2x+4
Produkte:\prod_{ <eqn> }^{ <eqn> }

z=\prod_{x=1}^{8}2x+4
Integrale:\int_{ <eqn> }^{ <eqn> }

z=\int_{x=1}^{8}2x+4
Limes:\lim_{ <eqn> }

z=\lim_{x \arrow \infty}
Akzente:\acute \bar \dot \ddot \grave \hat \tilde \vec

\hat{a} = \vec{a} = \tilde{a} = \bar{a}
Sonderzeichen:\arrow \infty

\arrow \infty

Bild 4.10: Menge der unterstützten LaTeX-Anweisungen und Zeichen.

4.3 Das MATLAB-Plugin

4.3.1 Einführung

Das MATLAB-Plugin verbindet den Browser mit dem regelungstechnischen Programmpaket MATLAB / SIMULINK entsprechend Bild 4.1. Auf diese Weise wird es möglich, von einer HTML-Seite aus Berechnungen in MATLAB durchzuführen und Matrizen oder Variablenwerte von MATLAB zum Browser zurück zu übertragen. Über LiveConnect wird das Plugin, wenn es in einer HTML-Seite eingebunden ist, in den Objektbaum eingetragen und kann von anderen Plugins, Java-Applets oder von JavaScript-Anweisungen referenziert werden.

4.3.2 Die Plugin Syntax

In Bild 4.11 sind fünf unterschiedliche Aufrufe des Plugins angegeben. Dabei wird grundsätzlich zwischen 2 Möglichkeiten unterschieden. Zum einen kann eine spezielle Datei angegeben werden, die vom Plugin bearbeitet werden soll. Die Aufrufe 1 und 4 geben eine MATLAB M-Datei an, die in MATLAB ausgeführt wird. Der Aufruf 2 gibt ein MM-Archiv an, das eine Anzahl verschiedener M-, MEX- und / oder Daten-Dateien enthalten kann. Die zweite Möglichkeit des Aufrufs besteht darin, den MIME-Typ anzugeben, der jedem Plugin zugewiesen wird und vom WWW-Server jeder übertragenen Datei vorangestellt wird.

 
<EMBED SRC="test.m" WIDTH=400 HEIGHT=350   NAME="matlab"> 
<EMBED SRC="test.mm" WIDTH=400 HEIGHT=350   NAME="matlab"> 
<EMBED TYPE=application/x-matlab WIDTH =400 HEIGHT=350  NAME="matlab"> 
<EMBED SRC="test.m" HIDDEN=true  NAME="matlab"> 
<EMBED TYPE=application/x-matlab HIDDEN=true   NAME="matlab"> 

Bild 4.11: Syntaxmöglichkeiten zum Aufruf des MATLAB-Plugins.

Durch das Schlüsselwort "HIDDEN" wird die sichtbare Fenstergröße des Plugins auf 0*0 Punkte herabgesetzt. Das Plugin besitzt also kein sichtbares Fenster. Dieser Ansatz ermöglicht es, daß das Plugin die Verbindung mit der MATLAB-Engine halten kann, ohne dabei auf der HTML-Seite selbst sichtbar zu sein.

4.3.3 Die Minimalkonfiguration

Zur minimalen Konfiguration des Plugins reicht es aus, die in Bild 4.12 angegebene Anweisung auf der HTML-Seite zu codieren. Der Parameter "name" sollte unbedingt den Wert "matlab" besitzen, da andere Applets und Plugins davon ausgehen, daß ein solches Objekt auf der HTML-Seite existiert.

<EMBED   TYPE=application/x-matlab   HIDDEN=true   NAME="matlab"> 

Bild 4.12: Minimalkonfiguration des MATLAB-Plugins.

Der abgebildete Aufruf des Plugins erzeugt das Objekt "matlab" im JavaScript-Objektbaum. Das Plugin ist durch die Angabe "HIDDEN=true" nicht auf der HTML-Seite sichtbar. Die Angabe von "TYPE=application/x-matlab" weist den Browser an, das MATLAB-Plugin zu laden.

4.3.4 Die Plugin Zugriffsmethoden

Ein wesentlicher Anteil an dem Plugin sind die Zugriffsfunktionen, die es ermöglichen, von anderen Plugins, Java-Applets und von JavaScript aus auf das Plugin und damit auf MATLAB zugreifen zu können.

Grundsätzlich gilt, daß Methoden, die von JavaScript aus aufgerufen werden können, bei Matrizen bzw. Feldern die Zählung der Indizes, wie in MATLAB, mit "1" beginnt. Diese für Java und JavaScript unübliche Zählweise wurde gewählt, um bei Einsatz von MATLAB-Code auf einer HTML-Seite Konsistenz für die Codierung gewährleisten zu können. Alle Argumente der Zugriffsfunktionen sind vom Typ "String" oder "URL", da von JavaScript alle Variablen zunächst als vom Typ "String" betrachtet werden.


Bild 4.13: Der Datenfluß der Zugriffsmethoden zwischen der HTML-Seite, dem Plugin und dem MATLAB-Workspace.

Die folgende Aufzählung enthält die Syntax und die Funktion der einzelnen Zugriffsmethoden. In Bild 4.13 kann der Datenfluß zwischen der HTML-Seite, dem Plugin und dem MATLAB-Workspace betrachtet werden. Das Plugin besitzt die Möglichkeit, eine Matrix in einem Feld vom Typ "double" mit der Zeilenzahl "m" und der Spaltenzahl "n" zwischenzuspeichern. Dies ist deshalb sinnvoll, da bei Übertragungen von und nach MATLAB die Datenformate konvertiert werden müssen und teilweise nur ausgewählte Elemente einer Matrix benötigt werden.

Die folgenden Zugriffsmethoden werden vom MATLAB-Plugin zur Interaktion mit anderen Plugins, Applets und JavaScript bereitgestellt:

 <embed src=test2.m name="matlab" width=500 height=300>
 <form name=control>
Matrix: <input type="text" value="h" size=10 name="matrix"> m = <input type="text" value="1" size=3 name="m"> n = <input type="text" value="1" size=3 name="n"> value = <input type="text" value="" size=10 name="out"> <input type=button value="double engGetFull(Matrix,m,n)"> onClick="var matrix = document.control.matrix.value; var m = document.control.m.value; var n = document.control.n.value; document.control.out.value= document.matlab.engGetFull(matrix,m,n);"> </form>

Bild 4.14: Beispiel für den Befehl "engGetFull(Matrix,m, n)".

Das Beispiel in Bild 4.14 zeigt eine mögliche Anwendung des Befehls auf einer HTML-Seite. In drei Textfeldern werden die drei Variablen "Matrix", "m" und "n" erfaßt. Durch Drücken eines Push-Buttons wird im MATLAB-Plugin über den Befehl "document.matlab.engGetFull(matrix,m,n)" ein Element aus der Matrix "matrix" zurückgegeben und wiederum in einem Textfeld dargestellt.

Die breit gefächerten Anwendungsgebiete und Codierungsmöglichkeiten der Zugriffsmethoden können den Beispielen zum VCLab entnommen werden. Die unterschiedliche Funktionalität der Methoden ist im wesentlichen im Java-Teil des Plugins konzentriert, der schnell und einfach erweitert werden kann. Die Kompilierung des C++-Teils des Plugins ist somit nur bei wirklich grundlegenden Änderungen nötig.

4.3.5 Die MM-Dateien

Während der Entwicklung des VCLab und des MATLAB-Plugins stellte sich heraus, daß viele regelungstechnische Verfahren, Beispiele und fast alle SIMULINK-Modelle eine ganze Reihe von Dateien von unterschiedlichem Typ für ihre Arbeit benötigen. Dabei handelt es sich nicht nur um M-Dateien, sondern auch um CMEX-Dateien oder auch Daten-, Text- und Bilddateien.


Bild 4.15: Entpacken und Löschen von MM-Dateien.

Gelöst wurde dieses Problem durch die Einführung von MM-Dateien oder auch MM-Archiven. Dabei handelt es sich um eine Variante der sogenannten ZIP-Archive. Diese Dateien können in einem erweiterten Format nicht nur Dateien, sondern auch die dazugehörigen Verzeichnisstrukturen enthalten. Ferner werden die Archive in der Regel komprimiert, um Speicherplatz einzusparen.

Für das MATLAB-Plugin wurde eine Variante der ZIP-Archive ausgewählt, in der keine Verzeichnisstrukturen enthalten sind und in der die Dateien unkomprimiert enthalten sind. Diese Wahl erlaubt es, den Entpackungsalgorithmus sehr einfach zu halten. Die archivierten Dateien sind durch spezielle Trennzeichen und die Angabe der Dateinamen untereinander getrennt. Während des Entpackungsvorgangs werden alle Dateien in dem Cache-Verzeichnis (temporärer WWW-Speicher) des Netscape Browsers abgelegt. Nach Beendigung des Entpackens wird MATLAB veranlaßt, in dieses Verzeichnis zu wechseln und die Datei "startup.m" (oder wahlweise "astart.m") auszuführen. Verläßt der Benutzer die aktuelle HTML-Seite, löscht das Plugin alle Dateien des MM-Archivs aus dem Cache-Verzeichnis des Browsers.

MM-Dateien können mit den gängigen ZIP-Archiv Programmen (z.B. PKZIP, WinZip,... ) erzeugt werden, wobei die Kompression und alle Verzeichnisoptionen abgeschaltet werden müssen.

4.3.6 Sicherheitsaspekte: Ein Security Manager

Bei der Benutzung des VCLab-Plugins besteht immer die Möglichkeit, daß übermittelte M- oder MM-Dateien fehlerhafte oder zerstörerische Anweisungen enthalten. Diese Anweisungen können gewollt oder unbeabsichtigt entstanden sein. Enthält eine M-Datei zum Beispiel die Anweisung "!del \*.*", so wird auf dem Rechner, auf dem das MATLAB-Plugin und MATLAB ausgeführt werden, die gesamte Festplatte gelöscht und alle Daten sind unwiderruflich verloren. Auch die Benutzung von "fprintf(...)" und weiterer Befehle zur Erzeugung und Bearbeitung von Dateien kann Schaden anrichten.

Dieses Sicherheitsproblem kann nicht vollständig behoben werden. Es bieten sich jedoch verschiedene Methoden zur Eindämmung solcher Risiken an. So könnten M-Dateien auf DOS-Befehle und Ein-/Ausgabebefehle durchsucht werden. Dabei ist natürlich auch die Speicherung von Matrizen mit z.B. "save A" als Sicherheitsrisiko zu betrachten. Werden die Möglichkeiten der MM-Archive genutzt, so können in diesen ZIP-Archiven CMEX-Dateien vorhanden sein. Diese Dateien sind wegen ihres Binärfomats nicht auf gefährdende Befehle überprüfbar. Grundsätzlich sollten M-Dateien von unbekannten, also nicht lokalen WWW-Servern als äußerst gefahrvoll betrachtet werden.

Folgende Sicherheitsmaßnahmen werden für eine spätere, neuere Version des MATLAB-Plugins vorgeschlagen:

http://www.esr.ruhr-uni-bochum.de /VCLAb/* sicher
aktuelles Verzeichnis und Unterverzeichnisse
http://www.esr.ruhr-uni-bochum.de /~mueller/ sicher
nur aktuelles Verzeichnis
http://www.esr.ruhr-uni-bochum.de /~foo unsicher
aber
http://www.esr.ruhr-uni-bochum.de /~foo/matlab/ sicher
http://www.foo.com /* unsicher

Für DOS-/Windows- Plattformen besteht mit der aktuellen MATLAB Version 4.2c keine Möglichkeit der Begrenzung oder Abschaltung von Befehlen und Anweisungen. Offen ist, ob eine nachfolgende Version von MATLAB/SIMULINK mit dem Gedanken an den Einsatz in unsicheren Umgebungen um so eine Funktion erweitert werden kann.

4.4 Das ClipBoard-Plugin

4.4.1 Einführung und Funktion

Das MATLAB-Plugin wird dazu eingesetzt, die Objekte auf einer HTML-Seite mit der MATLAB Simulation Engine zu verbinden. Mit den in Kapitel 4.3 angegebenen Zugriffsmethoden und dem Verfahren zum Ausführen von M- und MM-Dateien im MATLAB-Workspace können alle bisher in MATLAB/SIMULINK gewohnten Verfahren und Berechnungen weiterverwendet werden. Die Grafikausgabe der entsprechenden Befehle ( plot( ) , bode( ) , step( ) , impulse( ) , rlocus( ) , ...) kann zu einem anderen Plugin, dem ClipBoard-Plugin umgelenkt werden. Dazu muß zunächst die Darstellung der Grafiken in MATLAB unterbunden werden. Dies geschieht mit dem Befehl

"set (1,'visible','off')",

der beim Initialisieren des MATLAB-Plugins, das sich in der Regel auch auf der HTML-Seite befindet, ausgeführt wird. Es wird nur die sichtbare Grafikausgabe abgeschaltet, die Objekte (Punkte, Striche, Texte, Farben, ...) der Grafikbefehle werden trotzdem generiert und befinden sich weiterhin im Objektbaum der MATLAB-Grafikverwaltung. Mit dem Befehl

"print -dmeta",

der entweder über eine Zugriffsmethode über das MATLAB-Plugin im MATLAB-Workspace ausgeführt wird oder in einer ausgeführten M-Datei angegeben ist, wird die im Objektbaum beschriebene Grafik in die Zwischenablage (Clip Board) des Windows95 / NT Betriebsystems übertragen. Die Daten befinden sich dort in dem von der Einbindung von MATLAB-Grafiken in Textverarbeitungsprogramme (z.B. Word6, AmiPro,...) bekannten Meta-File Grafik Format. Das ClipBoard-Plugin wird durch einen entsprechenden Befehl (z.B. "showClipBoard()") angewiesen, die in der Zwischenablage gespeicherte Grafik in einem zugewiesenen Fenster im Browser darzustellen. Zur Darstellung werden die Windows spezifischen Bibliotheksfunktionen zur Darstellung von "Enhanced Meta-File" Daten aufgerufen. Das Plugin kann deshalb prinzipiell auch dafür verwendet werden, Dateien, die Grafiken im Enhanced Meta-File Format enthalten, darzustellen. In der Registrierung der Plugins im Netscape Browser ist das Plugin deshalb als EMF-Plugin (Enhanced Metafile Plugin) vermerkt.

Bild 4.16 verdeutlicht den Ablauf der grafischen Darstellung im VCLab. Auf der HTML-Seite sind zwei verschiedene Anweisungen nötig, um die Grafik im Browser darstellen zu können. Zum einen werden Befehle zur Erzeugung der Grafik über das MATLAB-Plugin an MATLAB übertragen. Dann werden die unsichtbaren Grafiken mit einem zweiten Befehl aus der Zwischenablage abgeholt und im ClipBoard-Plugin Fenster dargestellt.


Bild 4.16: Umleitung der Grafikausgabe von MATLAB und Darstellung im Fenster des ClipBoard-Plugins.

4.4.2 Die Plugin Syntax

Die Syntax der HTML-Anweisung für das ClipBoard-Plugin entspricht im wesentlichen der des MATLAB-Plugins. Es gibt allerdings nur zwei verschiedene Möglichkeiten des Aufrufs. Zum einen kann eine Grafikdatei im " .emf"-Format (Enhanced Metafile Format) angegeben werden oder der registrierte MIME-Typ des Plugins kann spezifiziert werden. Wird eine Datei angegeben, so wird diese über das Netz oder von der lokalen Festplatte geladen und dargestellt. Bei der Angabe des MIME-Typs verbleibt das Fenster des Plugins leer, bis ein entsprechender Befehl zur Darstellung angewendet wird. Bild 4.17 zeigt diese beiden Möglichkeiten.

 
 <EMBED SRC="test.emf" WIDTH=400 HEIGHT=350  NAME="ClipBoard"> 
 <EMBED TYPE=image/x-emf WIDTH=400 HEIGHT=350 NAME="ClipBoard"> 

Bild 4.17: Syntaxmöglichkeiten in HTML zur Darstellung des ClipBoard-Plugins.

Die Angabe des Schlüsselworts "HIDDEN" ist auch bei diesem Plugin möglich, allerdings besteht die Funktion dieses Plugins gerade darin, sichtbare grafische Informationen darzustellen. Die Anwendung dieses Schlüsselworts ist damit hinfällig und ohne Nutzen.

4.4.3 Die Minimalkonfiguration

Zur minimalen Konfiguration des Plugins reicht es aus, neben dem Parameter "name" den MIME-Typ und die sichtbare Fenstergröße anzugeben.

<EMBED TYPE=image/x-emf WIDTH=400 HEIGHT=350 NAME="ClipBoard"> 

Bild 4.18: Minimalkonfiguration des ClipBoard-Plugins.

4.4.4 Die Zugriffsmethoden des Plugins

Ein wichtiger Bestandteil des Plugins sind die Zugriffsmethoden, die es ermöglichen, von anderen Plugins, Java-Applets und von JavaScript aus auf das Plugin und damit auf die Zwischenablage (Clipboard) zugreifen zu können.

<embed type="application/x-matlab" name="matlab" hidden=true> 
... 
<embed type="image/x-emf" width=500 height=300 name="grafik">
... 
  <form> 
  <input  type=button     value="Do Bode plot" 
    onClick="document.matlab.engEvalString('bode(A,B,C,D,1)'); 
             document.matlab.engEvalString('print -dmeta'); 
             document.grafik.showClipBrd();"> 
  </form> 
... 

Bild 4.19: HTML-Beispiel für die Berechnung und Darstellung von Grafiken mit Hilfe des ClipBoard-Plugins.

Der in Bild 4.19 abgebildete Codeausschnitt aus einer HTML-Seite zur Berechnung und Darstellung eines Bode-Diagramms enthält die beiden Plugins (MATLAB-Plugin und ClipBoard-Plugin) und einen Push-Button, der die Steuerung der Berechnung und die anschließende Darstellung im Browserfenster koordiniert.

4.5 Das Slider-Applet

4.5.1 Einführung

Bei regelungstechnischen Problemstellungen ist es häufig notwendig, daß spezielle Größen in einem angegebenen Intervall variiert werden können. Das GUI (Graphical User Interface) von MATLAB/SIMULINK enthält einen Schieberegler (Slider), mit dem der Wert einer vorgegebenen Variablen mit einer voreingestellten Schrittweite in einem Intervall [minmax] verändert werden kann. Analog zu dem vorhandenen Slider wurde ein entsprechendes Java-Applet entwickelt, das nicht nur eine Variable verändert, sondern dabei zusätzlich mit den anderen Komponenten des VCLab interagieren kann.

4.5.2 Die Applet Syntax

Die Syntax zum Aufruf des Slider-Applets entspricht den allgemeinen Angaben zu Java-Applets entsprechend Kapitel 3.2. Das Applet wird über die Java-Klasse "slider.class" angesprochen. Bild 4.20 zeigt die möglichen Parameter des Applets. Die Parameter sind in Angaben zur grafischen Orientierung des Schiebereglers und der Textfelder, Angaben zum Wertebereich und Angaben zu weiteren Aktionen im VCLab eingeteilt.

 
<applet code=slider.class  height=50   width=200 
        name=slider1       MAYSCRIPT>
<param  name="var"        value="MATLAB Matrix">
<param  name="text"       value="true  | false |                           
                                  right | left  |
                                  top   | bottom">
<param  name="orientation" value="horizontal | vertical">
<param name="min"         value="100">
<param name="x0"          value="500">
<param name="max"         value="1000">
<param name="steps"       value="100">
<param name="action"      value="MATLAB-Anweisung">
<param name="script"      value="JavaScript-function">
<param name="clpbrd"      value="Clip-Board name">
</applet>

Bild 4.20: HTML-Syntax zum Aufruf des Slider-Applets.

4.5.3 Die Minimalkonfiguration

Zur minimalen Konfiguration des Applets sind die in Bild 4.21 enthaltenen Angaben notwendig. Da das Applet die Aufgabe besitzt, Variablenwerte in den MATLAB-Workspace zu übertragen, muß sich auf der gleichen HTML-Seite wie das Slider-Applet auch noch das MATLAB-Plugin befinden. Dabei geht das Slider-Applet davon aus, daß sich das MATLAB-Plugin mit dem Objektnamen "name=matlab" im JavaScript Objektbaum befindet.

...
<embed type=application/x-matlab    hidden=true name="matlab">
...
<applet code=slider.class  height=50   width=200 MAYSCRIPT>
</applet>

Bild 4.21: Minimalkonfiguration des Slider-Applets.

Die abgebildete Konfiguration erzeugt einen horizontalen Slider mit der Höhe 50 und der Breite 200 Punkte. Die Textfelder für Minimum, Funktionswert und Maximum werden unterhalb des Sliders dargestellt. Das Attribut MAYSCRIPT muß vorhanden sein, da das Slider-Applet mit dem MATLAB-Plugin kommuniziert. Bild 4.22 zeigt das durch die Anweisungen in Bild 4.21 erzeugte Applet.


Bild 4.22: Darstellung des Slider-Applets mit der Konfiguration aus Bild 4.21.

4.5.4 Die Applet Funktionalität

Während der Initialisierung des Applets wird zunächst der Wertebereich überprüft. Es muß stets gelten min <= x0 <= max. Gilt diese Einschränkung nicht, dann werden für den Slider die Standardeinstellungen min=-1 , x0=0 und max=1 verwendet. Werden der "name" und der "var" Parameter nicht gesetzt, dann wird für beide Variablen der Wert "slider" eingesetzt.


Bild 4.23: Aktionsreihenfolge des Slider-Applets.

Die Werte für das Minimum "min", den aktuellen Funktionswert "value" und das Maximum "max" können direkt in den Textfeldern des Applets verändert werden. Die Eingabe der neuen Werte wird mit <Return> abgeschlossen. Gilt die folgende Relation min <= x0 <= max nicht, werden die vorherigen Parameter weiterbenutzt. Durch die verschiedenen Möglichkeiten zur Orientierung des Applets mit und ohne Textfelder ergeben sich die in Bild 4.25 abgebildeten Applets.

<param name="Parameter" value="Wert">
name Name des Applets (default = "slider")
var Name der Variablen in MATLAB (default var = name )
min Minimalwert des Sliders (default min = -1 )
x0 Wert des Sliders beim Start des Applets (default: var ist in der Mitte zwischen min und max )
max Maximalwert des Sliders (default max = 1 )
text true (default) Die Textfelder für Minimum,Funktionswert und
Maximum werden dargestellt.
text false Keine Textfelder.
text top Bei orientation=horizontal werden die
Textfelder oberhalb des Sliders dargestellt.
text bottom (default) Bei orientation=horizontal werden die
Textfelder unterhalb des Sliders dargestellt.
text left Bei orientation=vertical werden die Textfelder links vom Slider dargestellt.
text right (default) Bei orientation=vertical werden die Textfelder rechts vom Slider dargestellt
orientation horizontal (default) Der Slider kann horizontal bewegt werden und die Textfelder können ober- oder unterhalb des Sliders dargestellt werden.
orientation vertical Der Slider kann vertikal bewegt werden und die Textfelder können rechts oder links neben dem Slider dargestellt werden.
steps Anzahl der Unterteilungen des Sliders.
action MATLAB-Befehle die bei einer Änderung der Schiebervariablen zusätzlich in MALTAB ausgeführt werden.
script Bezeichner einer JavaScript-Funktion, die auf der aktuellen HTML-Seite ausgeführt werden soll. (ACHTUNG! Aufgrund eines Fehlers in der Netscape LiveConnect Implementierung darf diese JavaScript-Funktion keine Methoden in anderen Applets oder Plugins aufrufen.) Der script Parameter wird nach dem action Parameter ausgewertet.
clpbrd Referenzname des ClipBoard-Plugins in dem eine Grafik dargestellt werden soll. Der clpbrd Parameter wird nach dem script Parameter ausgewertet.

Bild 4.24: Parameterliste des Slider-Applets.

<applet code=slider.class height=50 width=200 name=slider1 MAYSCRIPT><param name="var" value="gain_1"><param name="text" value="true"><param name="orientation" value="horizontal"><param name="min" value="100"><param name="x0" value="500"><param name="max" value="1000"></applet>

<applet code=slider.class height=20 width=100 name=slider2 MAYSCRIPT><param name="text" value="top"><param name="orientation" value="horizontal">...</applet>

<applet code=slider.class height=150 width=80 name=slider3 MAYSCRIPT><param name="text" value="false"><param name="orientation" value="horizontal">...</applet>

<applet code=slider.class height=150 width=30 name=slider4 MAYSCRIPT><param name="text" value="right"><param name="orientation" value="vertical">...</applet>

<applet code=slider.class height=50 width=200 name=slider5 MAYSCRIPT><param name="text" value="left"><param name="orientation" value="vertical">...</applet>

<applet code=slider.class height=150 width=80 name=slider6 MAYSCRIPT><param name="text" value="false"><param name="orientation" value="vertical">...</applet>

Bild 4.25: Die verschiedenen Konfigurationen der grafischen Ausgabe des Slider-Applets.

Die Syntax und die Funktion der Zugriffsmethoden des Applets sind wie folgt:

Ein Beispiel zur interaktiven Konstruktion und Simulation von Wurzelortskurven in Kapitel 5.3 verdeutlicht den Gebrauch und den Einsatz nahezu aller Möglichkeiten des Slider-Applets.

4.6 JavaDDE und das DDEmeter-Applet

4.6.1 Einführung und Funktion

Der Einsatz des MATLAB- und des ClipBoard-Plugins ermöglicht es, von MATLAB berechnete Grafiken in einem Fenster des Netscape Browsers darzustellen. Wird die Verzögerungsrate des ClipBoard-Plugins klein gewählt, so ist es prinzipiell möglich, animierte Grafiken im Browser darzustellen. Wegen der großen Verzögerungszeit von etwa einer Sekunde (Erstellung der Grafik in MATLAB, Kopie in die Zwischenablage, Darstellung im Browser) ist dieser Weg zur Animation nur für sehr langsame Anwendungen sinnvoll. Die Firma Neva Object Technologies bietet mit ihren Methoden der Coroutinen und des JavaDDE die Möglichkeit an, von Java-Applets aus die DDE- (Dynamic Data Exchange) Dienste des Windows Betriebssystems zu nutzen. Damit können Java-Applets durch Einbindung der "jddeml"-Klasse sowohl DDE-Server wie auch DDE-Client Funktionen bereitstellen. Im MATLAB-Paket ist ebenfalls eine DDE-Toolbox implementiert. Die mit der MATLAB Version 4.2c1 gelieferten Funktionen sind allerdings sehr fehlerhaft und müssen durch die neuere "DDE Toolbox für MATLAB für Windows Version 2.1" ersetzt werden.

Das Applet kann mit zwei Zeigern die übertragenen Funktionswerte anzeigen. Zur besseren Visualisierung kann das dem Netscape Browser beiliegende Live3D-Plugin zur Darstellung von VRML-Modellen benutzt werden. Dieses Plugin erlaubt die Darstellung und Betrachtung von dreidimensionalen Objekten aus beliebigen Blickwinkeln und Entfernungen. In Bild 4.26 ist ein VRML-Modell des von [Gru93] aufgebauten Pendels abgebildet. Zu dieser Anlage wurde in [Mue96], siehe Bild 4.27, eine SIMULINK-Simulation entwickelt. Die SIMULINK Simulation kann durch die Ergänzung eines einzigen Blocks, der prinzipiell aus einer S-Funktion besteht, um die Fähigkeit zur Nutzung von DDE erweitert werden.

Soll das DDEmeter-Applet an andere dreidimensionale Objekte angepaßt werden, muß der Autor einer entsprechenden Anwendung das Applet in Java programmieren, da die Referenzierung und Bewegung (Rotation, Translation) der Objekte des Live3D-Plugins durch Befehle mit einer Vielzahl von Parametern geschieht, deren Angabe im Applet die Handhabung desselben sehr erschweren würde.

Bild 4.26 zeigt weitere aus der VCLab-Umgebung stammende Objekte und Anwendungen in Verbindung mit dem DDEmeter-Applet.


Bild 4.26: Browser Darstellung einer Pendelanimation mit dem Live3D-Plugin (VRML) und dem DDEmeter-Applet.

4.6.2 SIMULINK und Applet Syntax

Zur Programmierung von Animationen mit dem VCLab stehen dem Autor alle in SIMULINK vorhandenen Verfahren, Bibliotheken und Funktionen zur Verfügung. In der Regel werden komplexere Simulationen aus einer Reihe von Dateien bestehen. Zur Übertragung mehrerer Dateien kann das in Kapitel 4.3.5 vorgeschlagene Dateiformat für MM-Archive eingesetzt werden. Grundsätzlich ist es möglich, die in SIMULINK vorhandenen Bibliotheksobjekte für Graphen zu benutzen. Allerdings wurde in der Spezifizierung zum VCLab verlangt, daß alle grafischen Ausgaben im Browser erfolgen. Hat der Autor eine entsprechende Simulation fertiggestellt und in der Umgebung von MATLAB/SIMULINK ausführlich getestet, wird die Simulation durch die Ergänzung des "Netscape Blocks" für die Benutzung im Zusammenhang mit dem WWW-Browser tauglich gemacht. Bild 4.27 zeigt das in [Mue96] entwickelte Modell mit der entsprechenden Erweiterung.


Bild 4.27: Pendelsimulation als SIMULINK-Diagramm.

Über die Maskierung des "Netscape Blocks" können Parameter für den DDE-Service (Application) und die DDE-Topic gesetzt werden. Service und Topic müssen ihr Gegenstück im DDEmeter-Applet finden, damit die gesendeten Funktionswerte ihr Ziel im Browser erreichen können.

Die DDE Datenpakete werden im Windows Betriebssystem in eine Nachrichtenwarteschlange eingereiht und in einem günstigen Moment der entsprechenden Anwendung zugestellt. Dadurch ergeben sich Verzögerungen in der Animation, die sich durch ruckelnde Pendelbewegungen bemerkbar machen. Der Parameter "Synchronization multiple:" ermöglicht eine Synchronisation der Übertragung nach einer gewissen Anzahl von Übertragungen (hier 10 Übertragungen). Mit "Enter animation interval:" wird angegeben, mit welcher Abtastzeit eine Übertragung von Funktionswerten zum Browser erfolgt. Die S-Funktion erlaubt es, beliebige Matrizen zu übertragen. Lediglich auf der Seite des Browsers müssen die Matrizen entsprechend der Funktion ihrer Elemente untersucht werden.

Bild 4.29 zeigt die eingesetzte Parametrierung des DDEmeter-Applets. Werden die Parameter "min" und " max" nicht oder falsch angegeben, so wird für die Darstellung der Zeiger im Applet das Intervall [-1 , 1] gewählt. Die eingetragenen Werte für " Service" und " Topic" sind zugleich die Werte für die Standardeinstellung, wenn keine Parameter angegeben werden.


Bild 4.28: Parameter des maskierten SIMULINK-Blocks der S-Funktion für die DDE-Übertragung.

<applet name="DDEmeter" CODE=DDEmeter.class WIDTH=50 HEIGHT=50 
        align=middle    MAYSCRIPT>
<param name=Service value="Pendel">
<param name=Topic   value="Animation">
<param name=min     value="-12.665">
<param name=max     value="12.665">
</applet>

Bild 4.29: Codierung des DDEmeter-Applets für den Einsatz in der Pendel Umgebung.

Das DDEmeter-Applet ist die einzige Komponente des VCLabs, die für neue oder andere Lehrinhalte in der Programmiersprache Java codiert werden muß. Die Verknüpfung des Applets mit beliebigen VRML-Objekten führt zu Parametrisierungsproblemen dei den verwendenden Live3D-Objektnamen und mit den anzuwendenden Operationen der einzelnen Objekte. Die notwendige Parametervielfalt würde die von anderen Objekten gewohnte einfache Parametrierung unnötig komplizieren.

4.7 Überblick über die erstellte Software

4.7.1 Benötigte Software für das VCLab

Die für das VCLab benötigte Software muß auf dem Client installiert werden und enthält die Grundfunktionen. Die verschiedenen Java-Applets werden grundsätzlich erst während des Betriebs geladen und gehören zum variablen Teil der Software. Neben dem Betriebssystem, MATLAB/SIMULINK und dem Netscape Navigator sind entsprechende Toolboxen für MATLAB notwendig. Das eigentliche VCLab besteht aus den beiden Plugins und den JavaDDE-Routinen und Bibliotheken.

Windows95 oder WindowsNT
MATLAB for Windows Version 4.2x
SIMULINK for Windows
DDE-Toolbox für MATLAB für Windows Version 2.1
"Control system toolbox" für MATLAB
Netscape Navigator Version 3.0x mit Plugins (Live3D, ...) für Windows95 oder WindowsNT
MATLAB- (VCLab-) Plugin
ClipBoard- (Enhanced-Metafile-) Plugin
JavaDDE von Neva Soft für SIMULINK Animationen

Bild 4.30: Benötigte Software für das VCLab.

4.7.2 Die Serverkonfiguration

Der Server stellt die einzelnen Dateien für das VCLab zur Verfügung. HTTP legt für jeden Dateityp eine entsprechende Kennung fest. Die entsprechenden MIME-Typen müssen in der Konfiguration des Web-Servers eingetragen werden. Der Client kann dann aus dem MIME-Typ das entsprechende Plugin, das Hilfsprogramm ("helper application") oder eine Anwendung auswählen. Die neu eingeführten MIME-Typen sind in Bild 4.31 aufgeführt.

Plugin/Anwendung Beschreibung DateiendungMIME-Typ
MATLAB-PluginMATLAB Datei .m oder .mmapplication/x-matlab
EMF-PluginEnhanced Metafile .emfimage/x-emf
JavaScriptJavaScript Datei .jsapplication/x-javascript
Bild 4.31: Die vom VCLab benötigten MIME-Typen.

EMF-Dateien werden in der Regel wohl nicht auf einem Server gelagert, sondern mit dem Befehl "print -dmeta" in MATLAB erzeugt und über die Zwischenablage in dem Fenster des ClipBoard-Plugins dargestellt.

4.7.3 Portierung auf andere Plattformen

Die Software ist in weiten Teilen durch die Verwendung von Java und Java-Applets plattformunabhängig. Die Hauptbestandteile (Plugins und JavaDDE) sind allerdings in C bzw. C++ implementiert und benutzen Windows-spezifische Funktionen und Dienste, die nicht oder in anderer Form auf anderen Plattformen (Mac, Unix, OS/2) zur Verfügung stehen. Der Aufbau des Plugin-Konzeptes des Netscape Navigators ist so angelegt, daß eine Portierung von Plugins auf die systemabhängigen Module und Funktionen beschränkt bleibt. Da jedoch die Klassen der Plugins in allen Applets zur Kommunikation referenziert werden, können auch die Java-Applets nur sehr eingeschränkt verwendet werden. Das HotEqn-Applet liegt aus diesem Grund in einer separaten Version vor, die keine Verbindung zum MATLAB- oder ClipBoard-Plugin benötigt. Für die Schnittstelle zur MATLAB-Engine sind standardisierte Bibliotheksfunktionen erhältlich, die von TheMathworks für jede verfügbare Plattform vertrieben werden.

4.8 Die Autorentätigkeit

Die Autorentätigkeit beim Entwurf von Lehreinheiten für das VCLab ist ein mehrstufiger Prozeß. Das Vorgehensmodell in Bild 4.32 folgt der in [Zek94] vorgeschlagenen Methode, allerdings wurde es um eine weitere Ebene zur Codierung von MATLAB- und JavaScript- Anweisungen erweitert.


Bild 4.32: Die Ebenen der Autorentätigkeit.

Die grobe Strukturierung der Lehrinhalte erfolgt auf der sogenannten Konzeptebene. Dabei wird definiert, welche Vor- und Nachbedingungen für die vorliegende Lehreinheit zu erfüllen sind. Ziel einer genauen Strukturierung ist es, daß die Lehreinheiten inhaltlich abgeschlossen sind, damit sie sich in der nachfolgenden Verknüpfung von anderen Themenbereichen sinnvoll auswählen lassen. Eine rechnergestützte Planungshilfe für die Strukturierung der Lehreinheiten auf der Grundlage von HTML-Dateien für das WWW existiert bisher nicht.

Auf der Hypertextebene werden die Lehreinheiten in kleine übersichtliche Teileinheiten zerlegt, die auf den einzelnen WWW-Seiten erscheinen sollen. Dabei werden zusätzlich die Hypertextverknüpfungen der Teileinheiten festgelegt. Das in [BEO96] vorgestellte Programm "Frontpage Explorer" bietet bereits einige Ansätze zur Verwaltung von mehreren verknüpften HTML-Dokumenten. Entwurfswerkzeuge für diesen Anwendungsbereich sind Gegenstand der aktuellen Entwicklung von HTML-Editoren. Es gibt allerdings bereits Programme, die nach der Fertigstellung einer Anzahl von HTML-Dokumenten, diese auf die Konsistenz der angegebenen Hypertextlinks hin überprüfen. Beispielhaft sind hierbei die Programme "Linkbot" von Tetranet Software Inc. oder "SiteHog" zu nennen.

Auf der dritten Entwurfsebene, der Hypertextdokumentenebene, werden die Lehreinheiten in den einzelnen HTML-Dateien codiert. Zunächst wird das Layout der Datei erstellt, dabei können Textpassagen, Formulare, Tabellen und Grafiken in der Regel sofort eingesetzt werden. Anschließend werden die Formularelemente, die vorgesehenen Java-Applets und gegebenenfalls Links mit den entsprechenden Aktionen und Parametern versehen. Dabei ist besonders zu untersuchen, ob der eingesetzte MATLAB-Code vom MATLAB-Plugin in M- oder MM-Dateien über das Netz geladen werden soll oder durch die Einbeziehung von JavaScript-Funktionen und Anweisungen, die Zugriffsmethoden des Plugins benutzt werden.

Bei der Entwicklung des VCLabs hat sich die nachfolgende Regel als günstig in Bezug auf die Abarbeitungsgeschwindigkeit der Lehreinheiten erwiesen:

Mehrere aufeinanderfolgende MATLAB-Anweisungen sollten besser als einzelne kleine Dateien in einem gemeinsamen MM-Archiv untergebracht werden. Die Abarbeitung einer M-Datei ist um ein Vielfaches schneller als die Übertragung einzelner Anweisungen von JavaScript über das MATLAB-Plugin und die MATLAB-Engine in den Workspace von MATLAB.

Der Autor steht somit vor einem doppelten Problem. Einerseits muß der HTML-Code für alle Texte, Bilder, Formulare, Applets, Plugins und JavaScript generiert werden. Zum anderen müssen Anweisungen in MATLAB programmiert werden. Beide Bereiche sind häufig miteinander verknüpft, wenn dynamisch Informationen erzeugt werden, die zwischen den Objekten mit LiveConnect ausgetauscht werden. Der HTML-Codierung folgt die Parametrierung der verschiedenen Applets (HotEqn, Slider, DDEmeter), die ihrerseits Methoden besitzen und Aktionen auslösen können, um mit anderen Objekten zu kommunizieren.

 
<html> 
<head>
<title>Bode Plot</title>
<head> 
<script language="JavaScript" SRC="script.js"> 
</script> 
<body  bgcolor="white" link="darkblue" vlink="006666">
 
<a href="index.html">[Assist]</a>
 
<center><h1>Bode Plot</h1></center>
 
<embed type="application/x-matlab" name="matlab" hidden=true> 
<script language="JavaScript"> 
   getUserLevel(); 
</script>
 
<table border=1 align=left><tr><td> 
<embed type="image/x-emf" width=500 height=300 name="grafik"> 
</td></tr></table>
 
<script language="JavaScript"> 
writeExpert(20,"<font size=+2>Graph Controls</font>"); 
writeExpert(20,"<form name=graphcontrol>"); 
writeExpert(20,"<input type=button value=\"grid on\""+ 
               "onClick=\"document.matlab.engEvalString('grid on;'+ 
                        +'print -dmeta;');"+ 
               "document.grafik.showClipBrd();\">");
 
function setaxis(xmin,xmax,ymin,ymax){ 
  document.matlab.engEvalString("axis(["+ xmin +" "+ xmax +" "+ ymin +" "+
                                 ymax+"]);print -dmeta;"); 
  document.grafik.showClipBrd(); 
} 
</script>
<form name=control> 
<input  type=button value="Do
Bode plot" 
        onClick="document.matlab.engEvalString('bode(A,B,C,D,1)'); 
                 document.matlab.engEvalString('print -dmeta'); 
                 document.grafik.showClipBrd(); "> 
</form>
 
</body> 
</html> 

Bild 4.33: Beispiel zur Codierung einer HTML-Datei zur Erzeugung eines Bode-Diagramms.

Das in Bild 4.33 dargestellte Beispiel zur Codierung einer HTML-Datei verdeutlicht die Schwierigkeiten des Autors bei der Programmierung. Die Einbindung der MATLAB-Befehle und die Ansteuerung des ClipBoard-Plugins sind mit verschiedenen JavaScript-Funktionen verbunden. So gibt es neben der JavaScript-Methode "onClick" auch Funktionen, die dynamisch HTML-Code erzeugen, wobei erst während des Seitenaufbaus im Browser anhand verschiedener Variablen (hier: "UserLevel") entschieden wird, welche Informationen dem Lernenden präsentiert werden. Die Funktion "writeExpert(20,"...")" zeigt den eingeschlossenen HTML-Code nur dann im Browser an, wenn der Lernende über einen entsprechenden Vorwissensstatus verfügt, der wiederum auf einer anderen HTML-Seite zu einem früheren Zeitpunkt eingegeben worden sein muß.

4.9 Zusammenfassung

Das entwickelte Softwarekonzept des VCLab erweitert den Netscape Browser um eine Vielzahl von interaktiven Komponenten. Die Erweiterungen bestehen aus zwei neu entwickelten Plugins (MATLAB-Plugin und ClipBoard-Plugin), einer Reihe von Java-Applets (HotEqn, Slider, DDEmeter) und den JDDE-Routinen, die zur Datenübertragung bei animierten Simulationen eingesetzt werden.
Die Benutzer der mit Hilfe des VCLab entstandenen Lehreinheiten müssen die Programmiersprache von MATLAB/SIMULINK nicht erlernen. Zur Bedienung werden die in HTML vorgesehenen Bedienungselemente und die von konfigurierbaren Java-Applets bereitgestellten grafischen Elemente eingesetzt.
Für die Unterstützung des Autors bei der Erstellung von Lehrinhalten existieren beim gegenwärtigen Entwicklungsstand nur einige rudimentäre Ansätze. Zur Erstellung von HTML-Code gibt es dagegen bereits eine große Anzahl von Werkzeugen. Eine komfortable Unterstützung des Autors bei Verknüpfung mit MATLAB- und JavaScript-Anweisungen und Funktionen existiert bisher nicht. Aus diesen Gründen müssen die Interaktionsmöglichkeiten des VCLab mit dem Benutzer vom Autor manuell programmiert werden.


[Inhalt] [Kapitel 1] [Kapitel 2] [Kapitel 3] [Kapitel 4] [Kapitel 5] [Fazit]