Hinweise zur Dokumentation

Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.
Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.

Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt.

Disclaimer

Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt.
Deshalb ist die Dokumentation nicht in jedem Fall vollständig auf die Übereinstimmung mit den beschriebenen Leistungsdaten, Normen oder sonstigen Merkmalen geprüft.
Falls sie technische oder redaktionelle Fehler enthält, behalten wir uns das Recht vor, Änderungen jederzeit und ohne Ankündigung vorzunehmen.
Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche auf Änderung bereits gelieferter Produkte geltend gemacht werden.

Marken

Beckhoff®, TwinCAT®, EtherCAT®, Safety over EtherCAT®, TwinSAFE®, XFC® und XTS® sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH.
Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.

Patente

Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP1590927, EP1789857, DE102004044764, DE102007017835
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

Die TwinCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP0851348, US6167425 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

Copyright

© Beckhoff Automation GmbH & Co. KG, Deutschland.
Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet.
Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster- oder Geschmacksmustereintragung vorbehalten.


Anbindung Flash per ASP/ASP.NET

Beckhoff Knowledge Base: Kommunikation - Anbindung Flash per ASP/ASP.NET

Einführung

Im Folgenden wird ein Beispiel gezeigt, wie zwischen TwinCAT und Flash Daten ausgetauscht werden können.

Voraussetzungen

Software

Microsoft Windows 2000/XP/2003/CE

TwinCAT PLC (ab Version 2.10)

Macromedia (Adobe) Flash (ab Version 8)

ggf. Microsoft Visual Studio (ab Version 7.1 (".NET 2003"))

Kenntnisse

Programmierung mit dem TwinCAT PLC-Control

Kommunikation per ADS

Erstellung von Flash-Animationen

Programmierung mit ASP und/oder .NET

Einrichtung einer ASP- und ASP.NET-Anwendung im IIS (Internet Information Service) (ab Version 5) und/oder einer ASP-Anwendung unter Windows CE (ab Version 4.2)

Testen der ASP(X)-Seite

Hinweis: Bitte beachten Sie, dass es nicht möglich ist, direkt auf einem CX1000-System mit Windows CE Flash-Seiten im Internet Explorer zu betrachten. Diese Systeme können nur als Server für diese Seiten dienen.
Für einen einfachen Test können Sie das beigefügte Testprogramm oder die Flash-Test-Animation benutzen.
Mit dem Testprogramm oder der Flash-Test-Animation können entsprechende HTTP-Requests aufgerufen werden. Durch den Dialog werden die notwendigen Parameter beim Aufruf mit übergeben. Tritt eine Fehler auf, so wird dieses in der Statuszeile angezeigt. Eine gültige Anwort wird in dem Feld unter 'HTTP-Response' ausgegeben.

Funktionsweise

Die ASP(X)-Seiten sind in der Lage ADS-Befehle auszuführen. Per HTTP-POST-Methode werden dieseASP- bzw. ASPX-Seite aufgerufen. Diesen Seiten werden verschiedene Parameter übergeben, die festlegen, welcher ADS-Befehl mit welchen Werten aufgerufen wird. Es wird keine HTML-Seite zurück gegeben, sondern nur einen String, in dem die Werte oder eine Fehlermeldung enthalten sind.

Hinweis:

Ein vergleichsweise ähnlicher Lösungsansatz wäre die Verwendung des TwinCAT Ads-WebServices. Zu dem Zeitpunkt als dieses Dokument entstand war in der WebService Implementierung von Flash ein Fehler in der Speicherverwaltung. Dieser Fehler hatte zur Folge, dass nach mehrtägigen Betrieb die Kommunikation abgebrochen wurde. Des weiteren ist die hier vorgestellte Art und Weise des Datenaustausches deutlich schneller als per SOAP, da die Protokollstruktur einfacher ist. Dieses macht sich besonders bei einfachen, nicht so leistungsfächigen Clients (z.B. PDA's) bemerkbar.

Die folgenden Beispiele lesen und schreiben Werte mit dem Flash-Animations-Beispiel. Dabei wird die auf einem Beckhoff CX1000-System (mit Microsoft Windows CE) liegende ASP-Seite angesprochen. Die SPS befindet sich ebenfalls auf diesem System.

Beispiel 1 (Lesen eines INT16-Wertes):

HTTP-Request

POST /TcAdsHTTPWrapper/TcAdsHTTPWrapper.asp HTTP/1.1
Accept: */*
x-flash-version: 8,0,22,0
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: (...)
Host: (...)
Connection: Keep-Alive
Cache-Control: no-cache

IndexOffset=30&IndexGroup=16416&Port=801&AmsNetId=5%2E0%2E226%2E138%2E1%2E1&Cmd=3

Die ASP-Seite wird mit den folgenden Parametern aufgerufen:

"IndexGroup" & "IndexOffset" : Geben an, ab welcher Speicheradresse gelesen werden soll (in diesem Fall ab Merkerbyte 30)

"AmsNetId" & "Port" : Bezeichnen die zu verwendene SPS und ihr Laufzeit-System [es können sowohl Punkte (".") als auch "%2E" verwendet werden]

"Cmd" : Steht für die Nummer der auszuführenden Funktion (in diesem Fall entspricht 3 dem Lesen eines INT16-Wertes)

HTTP-Response

HTTP/1.0 200 OK
Date: (...)
Server: Microsoft-WinCE/5.0
Expires: (...)
Content-Type: application/x-www-form-urlencoded
Connection: keep-alive
Content-Length: 16

&data=198&eof=1&

Wie weiter oben bereits erwähnt, wird kein HTML zurückgeliefert, sondern nur ein Antwort-String. Dieser ist so formatiert, dass er der Flash-Syntax entspricht, wodurch es leichter zu parsen ist.

"&" : Trennzeichen

"eof=1" : Terminierungszeichen

"data" : Beschreibt bei Lese-Befehlen die Antwortdaten

Beispiel 2 (Schreiben eines INT16-Wertes):

HTTP-Request

POST /TcAdsHTTPWrapper/TcAdsHTTPWrapper.asp HTTP/1.1
Accept: */*
x-flash-version: 8,0,22,0
Content-Type: application/x-www-form-urlencoded
Content-Length: 90
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: (...)
Host: (...)
Connection: Keep-Alive
Cache-Control: no-cache

Data=123&IndexOffset=30&IndexGroup=16416&Port=801&AmsNetId=5%2E0%2E226%2E138%2E1%2E1&Cmd=7

"Data" : Bezeichnet bei Schreib-Befehlen den zu setzenden Wert

HTTP-Response

HTTP/1.0 200 OK
Date: (...)
Server: Microsoft-WinCE/5.0
Expires: (...)
Content-Type: application/x-www-form-urlencoded
Connection: keep-alive
Content-Length: 7

&eof=1&

Beispiel 3 (Lesen eines BOOL-Arrays):

HTTP-Request

POST /TcAdsHTTPWrapper/TcAdsHTTPWrapper.asp HTTP/1.1
Accept: */*
x-flash-version: 8,0,22,0
Content-Type: application/x-www-form-urlencoded
Content-Length: 89
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: (...)
Host: (...)
Connection: Keep-Alive
Cache-Control: no-cache

Count=3&IndexOffset=30&IndexGroup=16416&Port=801&AmsNetId=5%2E0%2E226%2E138%2E1%2E1&Cmd=2

"Count" : Bezeichnet bei Array-Befehlen die Anzahl der zu bearbeitenden Elemente

HTTP-Response

HTTP/1.0 200 OK
Date: (...)
Server: Microsoft-WinCE/5.0
Expires: (...)
Content-Type: application/x-www-form-urlencoded
Connection: keep-alive
Content-Length: 19

&data=1|0|1|&eof=1&

"|" : Trennzeichen zwischen den einzelnen Array-Werten

Einbinden in Flash

Beispiel 1 lässt sich mit Hilfe des folgenden ActionScripts realisieren:

Zuerst müssen die Initialisierungsvariablen angelegt werden:

var URL              : String   = "";
var HTTPCommand      : String   = "";
var Cmd              : Number   = 0;
var AmsNetId         : String   = "";
var Port             : Number   = 0;
var IndexGroup       : Number   = 0;
var IndexOffset      : Number   = 0;
var Data             : Number   = 0;
var HTTPResponseData : String   = "";
var Request          : LoadVars = new LoadVars();
var Response         : LoadVars = new LoadVars();
var submitListener   : Object   = new Object();

Mit Hilfe der folgenden Operationen wird das zurückgelieferte Ergebnis aufbereitet:

Response.onData = function(raw)
{
   if (raw == undefined)
   {
      HTTPResponseData = "Error";
   }
   else
   {
      HTTPResponseData = unescape(raw);
   }
}

Nun müssen die entsprechenden Werte gesetzt werden:

URL                 = "http://(...)/TcAdsHTTPWrapper/TcAdsHTTPWrapper.asp";
HTTPCommand         = "POST";

Durch Setzen der folgenden Werte werden diese als Parameter beim HTTP-Request übergeben:

Request.Cmd         = 3;
Request.AmsNetId    = "5.0.226.138.1.1";
Request.Port        = 801
Request.IndexGroup  = 16416
Request.IndexOffset = 30

Mit dem folgenden Methodenaufruf wird die Kommmunikation gestartet:

Request.sendAndLoad(URL,Response,HTTPCommand);

Das Ergebnis befindet sich nun in der Variable "HTTPResponseData".

Projektdateien

Es werden hier zwei verschiedene Lösungen vorgestellt.

Zum einen eine ASP.NET-Anwendung. Diese ist für Server geeignet, die ASPX-Anwendungen unterstützen.
Sie müssen diese erst noch kompilieren und entsprechend in den IIS einbinden.

Zum anderen eine ASP-Seite, die auch bei Servern eingesetzt werden kann, bei denen kein ASPX zur Verfügung steht (.NET Compact Framework V1.1).
Diese können Sie direkt in das entsprechende Webverzeichnis (beim CX1000 mit Windows CE "\hard disk\www") kopieren.

Projekttyp | Projektdateien
ASP-Anwendung | TcAdsHTTPWrapper.zip
ASP.NET-Anwendung (für .NET-Framework 1.1) | TcAdsHTTPWrapperNET.zip
C#-Testprogramm | TcAdsHTTPWrapperTest.zip
Flash-Test-Animation | TcAdsFlashTest.zip
Licht-Demo | TcAdsFlashLightDemo.zip

Licht-Demo: