Active Server Pages
Active Server Pages (ASP) bieten die Möglichkeit HTML-Seiten dynamisch, also in Abhängigkeiten von bestimmten Ereignissen, auf dem HTTP-Server zu erzeugen. Erreicht wird dieses durch Einbetten von Scriptsegmenten in den HTML-Code. Die Scripte werden hierbei vom Web-Server ausgeführt. Für den Zugriff auf TwinCAT wird hierbei die TcScript.dll eingesetzt. Das folgende Beispiel benutzt den Internet Information Server (IIS) bzw. den Personal Web Server (PWS) von Microsoft.
Das Erzeugen einer TcScript.dll-Instanz kann am einfachsten in der global.asa durchgeführt werden. Die erzeugte Instanz ist innerhalb der Web-Applikation für alle ASP-Seiten gültig.
global.asa:
<OBJECT RUNAT="Server" SCOPE="Application" ID="TcPLC" PROGID="TcScript.TcScriptSync"> </OBJECT>
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart()
Call TcPLC.ConnectTo("", 801)
End Sub
</SCRIPT>
An der URL einer ASP-Seite können Parameter angehängt werden. Diese Parameter werden durch ein '?' von der URL getrennt und haben den Aufbau VarName=VarWert. Am Anfang der ASP-Seite wird überprüft ob der Parameter set übergeben wurde und ob der Wert in eine Zahl konvertiert werden kann. Ist dieses der Fall, wird der Parameter in die VBScript-Variable intSet kopiert und anschließend in die globale SPS-Variable PLCVarInt übertragen. Am Ende des Scripts wird die SPS-Variable ausgelesen und in die VBScript-Variable intActual geschrieben. Das Auslesen der SPS-Variable wird auch dann durchgeführt, wenn kein Parameter an die ASP-Seite übergeben wurde.
Innerhalb des HTML-Bereichs wird über das Response-Objekt (stellt ASP zur Verfügung) der Wert der VBScript-Variable intActual in den HTML-Code eingesetzt und zum Client übertragen. D.h. jedes Mal, wenn die ASP-Seite aufgerufen wird (mit oder ohne Parameter), wird der aktuelle Wert der SPS-Variablen im Explorer angezeigt.
Um Eingaben vom Bediener entgegen zu nehmen, werden innerhalb von HTML Formulare benutzt. Die Eingaben werden dabei an eine bestimmten Seite als Parameter übergeben. Bei unserem Beispiel wird die gleiche Seite (default.asp) wieder aufgerufen. Als Parameter wird set übergeben (Name des Eingabefeldes), mit dem entsprechenden Wert, den der Bediener eingeben hat. Da jetzt die Seite mit dem Parameter set erneut aufgerufen wird, wird der Wert hinter dem set-Parameter in die SPS geschrieben.
default.asp:
<%@ Language=VBScript %>
<%Option Explicit
Dim intActual, intSet
Application.Lock
If Not (IsEmpty(Request.Querystring("set"))) Then
If (IsNumeric(Request.Querystring("set"))) Then
intSet = cint(Request.Querystring("set"))
call TcPLC.WriteVar(".PLCVarInt", intSet)
End if
End If
intActual = TcPLC.ReadVar(".PLCVarInt")
Application.Unlock%>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<form method="get" action="default.asp" name="tempSet">set: <input name="set" size="4" value="<% Response.Write intSet %>"></form>
actual: <% Response.Write intActual %>
</body>
</html>
Darstellung im Internet Explorer:
Der Client (Internet Explorer) bekommt hierbei reines HTML zugeschickt. Dadurch können die Seiten auch von Rechnern aufgerufen werden, auf denen kein TwinCAT installiert ist (z.B. Handheld PC, oder auch Smart-Phones). Der Zugriff auf TwinCAT wird hierbei ausschließlich von Web-Server durchgeführt.
HTML-Seite die zum Client (Internet Explorer) geschickt wurde:
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<form method="get" action="default.asp" name="tempSet">set: <input name="set" size="4" value="100"></form>
actual: 100
</body>
</html>
Beispielprogramm ADS-Script-DLLSample03.zip, 'Active Server Pages' entpacken.