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 Dokumentation und der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.
Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem Zeitpunkt veröffentlichte Dokumentation zu verwenden.

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.
Wir behalten uns das Recht vor, die Dokumentation jederzeit und ohne Ankündigung zu überarbeiten und zu ändern.
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®, EtherCAT G®, EtherCAT G10®, EtherCAT P®, Safety over EtherCAT®, TwinSAFE®, XFC®, XTS® und XPlanar® 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, EP1456722, EP2137893, DE102015105702
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizenziert durch die Beckhoff Automation GmbH, Deutschland.

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.


Einleitung

Mit der ADS-Script-DLL kann von Scriptsprachen (VBScript oder JScript) auf ADS-Geräte zugegriffen werden. Verwendung finden die Scriptsprachen beim Windows Scripting Host (WSH) oder bei der Erstellung von interaktiven Internetanwendungen. Die Scripte können sowohl auf dem Webserver (Active Server Pages), als auch auf dem Client (DHTML, ...) ausgeführt werden.

Da die Scriptsprachen nur wenige Datentypen unterstützen, ist für jeden möglichen Datentyp im ADS-Gerät eine entsprechende Methode vorhanden. Die Anzahl der Parameter wurde dabei auf ein Minimum reduziert. Eine Ausnahme bilden die Methoden, bei denen per Name auf die Variable zugegriffen wird (TcScriptSync::ReadVar() und TcScriptSync::WriteVar()). Hierbei wird der Datentyp der ADS-Variable aus dem ADS-Gerät ermittelt. Die beiden Methoden wandeln intern die Parameter in die entsprechenden Datentypen um und greifen anschließend auf das ADS-Gerät zu.


Methodenübersicht

Da die Scriptsprachen nur wenige Datentypen unterstützen, ist für jeden möglichen Datentyp im ADS-Gerät eine entsprechende Methode vorhanden. Die Anzahl der Parameter wurde dabei auf ein Minimum reduziert. Eine Ausnahme bilden die Methoden, bei denen per Name auf die Variable zugegriffen wird (TcScriptSync::ReadVar() und TcScriptSync::WriteVar()). Hierbei wird der Datentyp der ADS-Variable aus dem ADS-Gerät ermittelt. Die beiden Methoden wandeln intern die Parameter in die entsprechende Datentypen um und greifen anschließend auf das ADS-Gerät zu.

Verwendung | Methode
allgemein | Kommunikation | TcScriptSync::ConnectTo()
Lesen | TcScriptSync::ReadAdsState()
Schreiben | TcScriptSync::WriteAdsState()
per Adresse | per Variablenname
synchron Lesen TcScriptSync::ReadBool()
TcScriptSync::ReadInt8()
TcScriptSync::ReadInt16()
TcScriptSync::ReadInt32()
TcScriptSync::ReadReal32()
TcScriptSync::ReadReal64()
TcScriptSync::ReadArrayOfBool()
TcScriptSync::ReadArrayOfInt8()
TcScriptSync::ReadArrayOfInt16()
TcScriptSync::ReadArrayOfInt32()
TcScriptSync::ReadArrayOfReal32()
TcScriptSync::ReadArrayOfReal64()
 TcScriptSync::ReadVar()
Schreiben TcScriptSync::WriteBool()
TcScriptSync::WriteInt8()
TcScriptSync::WriteInt16()
TcScriptSync::WriteInt32()
TcScriptSync::WriteReal32()
TcScriptSync::WriteReal64()
TcScriptSync::WriteArrayOfBool()
TcScriptSync::WriteArrayOfInt8()
TcScriptSync::WriteArrayOfInt16()
TcScriptSync::WriteArrayOfInt32()
TcScriptSync::WriteArrayOfReal32()
TcScriptSync::WriteArrayOfReal64()
 TcScriptSync::WriteVar()


TcScriptSync::ConnectTo()

TwinCAT ADS-Script-DLL - Reference

ConnectTo

Öffnet einen Kommunikationskanal zwischen dem Objekt und einem ADS-Gerät (SPS, NC, ...).

object.ConnectTo(
  sAmsNetId	As String,
  nPort		As Long
)

Parameter

sAmsNetId
AdsAmsNetId.
nPort
Portnummer.

Rückgabewert

-

Beschreibung

Der erste Parameter enthält die sechsstellige AdsAmsNetId. Die einzelnen Werte werden durch einen Punkt voneinander getrennt. Wird ein leerer String übergeben, so wird die lokale AdsAmsNetId benutzt.

Bestand vor dem Aufruf von ConnectTo() schon ein geöffneter Kommunikationskanal, so wird dieser automatisch geschlossen. Der Kommunikationskanal wird ebenfalls geschlossen, wenn das Objekt gelöscht wird.

Beispiele

VBScript:

Dim TcClientSync
Set TcClientSync = CreateObject("TCSCRIPT.TcScriptSync")
Call TcClientSync.ConnectTo("", 801)

JScript:

var TcClientSync;
TcClientSync = new ActiveXObject("TCSCRIPT.TcScriptSync");
TcClientSync.ConnectTo("172.16.17.13.1.1", 811);


TcScriptSync::ReadAdsState()

ReadAdsState

Liest den aktuellen ADS-Zustand von einem ADS-Gerät aus.

object.ReadAdsState() As Long

Parameter

-

Rückgabewert

ADS-Status.

Beschreibung

Jedes ADS-Gerät kann verschiedene Zustände annehmen. So kann z.B. die SPS im STOP- oder im RUN-Zustand sein. Dieser Zustand lässt sich mit Hilfe der Methode ReadAdsState() abfragen. Eine Übersicht aller möglichen Zustände finden Sie z.B. bei der Beschreibung des Enums ADSSTATE vom ADS-OCX. Bei der Auswertung des ADS-Zustandes ist zu beachten, dass nicht jedes ADS-Gerät jeden Zustand annehmen kann. So kann sich z.B. die NC nicht im STOP-Zustand befinden.
Die wichtigsten ADS-Zustände sind RUN (5) und STOP (6) und werden am häufigsten im Zusammenhang mit der SPS eingesetzt.

Beispiele

VBScript:

Dim nAdsState
nAdsState = TcClientSync.ReadAdsState()
WScript.echo "AdsState = ", nAdsState

JScript:

var nAdsState;
nAdsState = TcClientSync.ReadAdsState();
WScript.echo("AdsState = ", nAdsState);


TcScriptSync::WriteAdsState()

WriteAdsState

Ändert den ADS-Status eines ADS-Gerätes.

object.WriteAdsState(
  nAdsState	As Long
)

Parameter

nAdsState
neuer ADS-Status.

Rückgabewert

-

Beschreibung

Jedes ADS-Gerät kann verschiedene Zustände annehmen. So kann z.B. die SPS im STOP- oder im RUN-Zustand sein. Dieser Zustand lässt sich mit Hilfe der Methode WriteAdsState() verändern. Eine Übersicht aller möglichen Zustände finden Sie z.B. bei der Beschreibung des Enums ADSSTATE vom ADS-OCX. Bei der Auswertung des ADS-Zustandes ist zu beachten, dass nicht jedes ADS-Gerät jeden Zustand annehmen kann. So kann sich z.B. die NC nicht im STOP-Zustand befinden.
Die wichtigsten ADS-Zustände sind RUN (5) und STOP (6) und werden am häufigsten im Zusammenhang mit der SPS eingesetzt.

Beispiele

VBScript:

Call TcClientSync.WriteAdsState(5)

JScript:

TcClientSync.WriteAdsState(5);


TcScriptSync::ReadVar()

ReadVar

Liest den Wert einer Variable aus einem ADS-Gerät.

object.ReadVar(
  sVarName	As String
) As Variant

Parameter

sVarName
Name der ADS-Variable.

Rückgabewert

Wert der ADS-Variable.

Beschreibung

Der Lesevorgang wird synchron durchgeführt.

Beispiele

VBScript:

Dim VarValue
VarValue = TcClientSync.ReadVar(".PLCVarSInt")
WScript.echo "VarValue = ", VarValue

JScript:

var VarValue;
VarValue = TcClientSync.ReadVar(".PLCVarSInt");
WScript.echo("VarValue = ", VarValue);


TcScriptSync::ReadBool()

ReadBool

Liest eine Variable vom Typ Boolean aus einem ADS-Gerät.

object.ReadBool(
  nIndexGroup	As Long,
  nIndexOffset	As Long
) As Boolean

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.

Rückgabewert

Wert der ADS-Variable.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp BOOL.

Beispiele

VBScript:

Dim VarBool
VarBool = TcClientSync.ReadBool(&H4020, 0)
WScript.echo "VarBool = ", VarBool

JScript:

var VarBool;
VarBool = TcClientSync.ReadBool(0x4020, 0);
WScript.echo("VarBool = ", VarBool);


TcScriptSync::ReadInt8()

ReadInt8

Liest eine Variable vom Typ Byte aus einem ADS-Gerät.

object.ReadInt8(
  nIndexGroup	As Long,
  nIndexOffset	As Long
) As Byte

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.

Rückgabewert

Wert der ADS-Variable.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp BYTE, SINT oder USINT.

Beispiele

VBScript:

Dim VarInt8
VarInt8 = TcClientSync.ReadInt8(&H4020, 0)
WScript.echo "VarInt8 = ", VarInt8

JScript:

var VarInt8;
VarInt8 = TcClientSync.ReadInt8(0x4020, 0);
WScript.echo("VarInt8 = ", VarInt8);


TcScriptSync::ReadInt16()

ReadInt16

Liest eine Variable vom Typ Integer aus einem ADS-Gerät.

object.ReadInt16(
  nIndexGroup	As Long,
  nIndexOffset	As Long
) As Integer

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.

Rückgabewert

Wert der ADS-Variable.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp WORD, INT oder UINT.

Beispiele

VBScript:

Dim VarInt16
VarInt16 = TcClientSync.ReadInt16(&H4020, 0)
WScript.echo "VarInt16 = ", VarInt16

JScript:

var VarInt16;
VarInt16 = TcClientSync.ReadInt16(0x4020, 0);
WScript.echo("VarInt16 = ", VarInt16);


TcScriptSync::ReadInt32()

ReadInt32

Liest eine Variable vom Typ Long aus einem ADS-Gerät.

object.ReadInt32(
  nIndexGroup	As Long,
  nIndexOffset	As Long
) As Long

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.

Rückgabewert

Wert der ADS-Variable.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp DWORD, DINT oder UDINT.

Beispiele

VBScript:

Dim VarInt32
VarInt32 = TcClientSync.ReadInt32(&H4020, 0)
WScript.echo "VarInt32 = ", VarInt32

JScript:

var VarInt32;
VarInt32 = TcClientSync.ReadInt32(0x4020, 0);
WScript.echo("VarInt32 = ", VarInt32);


TcScriptSync::ReadReal32()

ReadReal32

Liest eine Variable vom Typ Float aus einem ADS-Gerät.

object.ReadReal32(
  nIndexGroup	As Long,
  nIndexOffset	As Long
) As Single

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.

Rückgabewert

Wert der ADS-Variable.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp REAL.

Beispiele

VBScript:

Dim VarReal32
VarReal32 = TcClientSync.ReadReal32(&H4020, 0)
WScript.echo "VarReal32 = ", VarReal32

JScript:

var VarReal32;
VarReal32 = TcClientSync.ReadReal32(0x4020, 0);
WScript.echo("VarReal32 = ", VarReal32);


TcScriptSync::ReadReal64()

ReadReal64

Liest eine Variable vom Typ Double aus einem ADS-Gerät.

object.ReadReal64(
  nIndexGroup	As Long,
  nIndexOffset	As Long
) As Double

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.

Rückgabewert

Wert der ADS-Variable.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp LREAL.

Beispiele

VBScript:

Dim VarReal64
VarReal64 = TcClientSync.ReadReal64(&H4020, 0)
WScript.echo "VarReal64 = ", VarReal64

JScript:

var VarReal64;
VarReal64 = TcClientSync.ReadReal64(0x4020, 0);
WScript.echo("VarReal64 = ", VarReal64);


TcScriptSync::ReadArrayOfBool()

ReadArrayOfBool

Liest ein Array mit Elementen vom Typ Boolean aus einem ADS-Gerät.

object.ReadArrayOfBool(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  nCount		As Long
) As Variant

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
nCount
Anzahl der Elemente, die gelesen werden sollen.

Rückgabewert

Array, mit den Werten aus dem ADS-Gerät.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF BOOL.

Beispiele

VBScript:

Dim VarArrayBool
VarArrayBool = TcClientSync.ReadArrayOfBool(&H4020, 0, 2)
WScript.echo "VarArrayBool(0) = ", VarArrayBool(0)
WScript.echo "VarArrayBool(1) = ", VarArrayBool(1)

JScript:

var VarArrayBool;
VarArrayBool = TcClientSync.ReadArrayOfBool(0x4020, 0, 2);
WScript.echo("VarArrayBool[0] = ", VarArrayBool[0]);
WScript.echo("VarArrayBool[1] = ", VarArrayBool[1]);


TcScriptSync::ReadArrayOfInt8()

ReadArrayOfInt8

Liest ein Array mit Elementen vom Typ Byte aus einem ADS-Gerät.

object.ReadArrayOfInt8(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  nCount		As Long
) As Variant

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
nCount
Anzahl der Elemente, die gelesen werden sollen.

Rückgabewert

Array, mit den Werten aus dem ADS-Gerät.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF BYTE, ARRAY OF SINT oder ARRAY OF USINT.

Beispiele

VBScript:

Dim VarArrayInt8
VarArrayInt8 = TcClientSync.ReadArrayOfInt8(&H4020, 0, 2)
WScript.echo "VarArrayInt8(0) = ", VarArrayInt8(0)
WScript.echo "VarArrayInt8(1) = ", VarArrayInt8(1)

JScript:

var VarArrayInt8;
VarArrayInt8 = TcClientSync.ReadArrayOfInt8(0x4020, 0, 2);
WScript.echo("VarArrayInt8[0] = ", VarArrayInt8[0]);
WScript.echo("VarArrayInt8[1] = ", VarArrayInt8[1]);


TcScriptSync::ReadArrayOfInt16()

ReadArrayOfInt16

Liest ein Array mit Elementen vom Typ Integer aus einem ADS-Gerät.

object.ReadArrayOfInt16(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  nCount		As Long
) As Variant

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
nCount
Anzahl der Elemente, die gelesen werden sollen.

Rückgabewert

Array, mit den Werten aus dem ADS-Gerät.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF WORD, ARRAY OF INT oder ARRAY OF UINT.

Beispiele

VBScript:

Dim VarArrayInt16
VarArrayInt16 = TcClientSync.ReadArrayOfInt16(&H4020, 0, 2)
WScript.echo "VarArrayInt16(0) = ", VarArrayInt16(0)
WScript.echo "VarArrayInt16(1) = ", VarArrayInt16(1)

JScript:

var VarArrayInt16;
VarArrayInt16 = TcClientSync.ReadArrayOfInt16(0x4020, 0, 2);
WScript.echo("VarArrayInt16[0] = ", VarArrayInt16[0]);
WScript.echo("VarArrayInt16[1] = ", VarArrayInt16[1]);


TcScriptSync::ReadArrayOfInt32()

ReadArrayOfInt32

Liest ein Array mit Elementen vom Typ Long aus einem ADS-Gerät.

object.ReadArrayOfInt32(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  nCount		As Long
) As Variant

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
nCount
Anzahl der Elemente, die gelesen werden sollen.

Rückgabewert

Array, mit den Werten aus dem ADS-Gerät.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF DWORD, ARRAY OF DINT oder ARRAY OF UDINT.

Beispiele

VBScript:

Dim VarArrayInt32
VarArrayInt32 = TcClientSync.ReadArrayOfInt32(&H4020, 0, 2)
WScript.echo "VarArrayInt32(0) = ", VarArrayInt32(0)
WScript.echo "VarArrayInt32(1) = ", VarArrayInt32(1)

JScript:

var VarArrayInt32;
VarArrayInt32 = TcClientSync.ReadArrayOfInt32(0x4020, 0, 2);
WScript.echo("VarArrayInt32[0] = ", VarArrayInt32[0]);
WScript.echo("VarArrayInt32[1] = ", VarArrayInt32[1]);


TcScriptSync::ReadArrayOfReal32()

ReadArrayOfReal32

Liest ein Array mit Elementen vom Typ Float aus einem ADS-Gerät.

object.ReadArrayOfReal32(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  nCount		As Long
) As Variant

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
nCount
Anzahl der Elemente, die gelesen werden sollen.

Rückgabewert

Array, mit den Werten aus dem ADS-Gerät.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF REAL.

Beispiele

VBScript:

Dim VarArrayReal32
VarArrayReal32 = TcClientSync.ReadArrayOfReal32(&H4020, 0, 2)
WScript.echo "VarArrayReal32(0) = ", VarArrayReal32(0)
WScript.echo "VarArrayReal32(1) = ", VarArrayReal32(1)

JScript:

var VarArrayReal32;
VarArrayReal32 = TcClientSync.ReadArrayOfReal32(0x4020, 0, 2);
WScript.echo("VarArrayReal32[0] = ", VarArrayReal32[0]);
WScript.echo("VarArrayReal32[1] = ", VarArrayReal32[1]);


TcScriptSync::ReadArrayOfReal64()

ReadArrayOfReal64

Liest ein Array mit Elementen vom Typ Double aus einem ADS-Gerät.

object.ReadArrayOfReal64(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  nCount		As Long
) As Variant

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
nCount
Anzahl der Elemente, die gelesen werden sollen.

Rückgabewert

Array, mit den Werten aus dem ADS-Gerät.

Beschreibung

Der Lesevorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF LREAL.

Beispiele

VBScript:

Dim VarArrayReal64
VarArrayReal64 = TcClientSync.ReadArrayOfReal64(&H4020, 0, 2)
WScript.echo "VarArrayReal64(0) = ", VarArrayReal64(0)
WScript.echo "VarArrayReal64(1) = ", VarArrayReal64(1)

JScript:

var VarArrayReal64;
VarArrayReal64 = TcClientSync.ReadArrayOfReal64(0x4020, 0, 2);
WScript.echo("VarArrayReal64[0] = ", VarArrayReal64[0]);
WScript.echo("VarArrayReal64[1] = ", VarArrayReal64[1]);


TcScriptSync::WriteVar()

WriteVar

Schreibt in eine Variable eines ADS-Gerätes.

object.WriteVar(
  sVarName	As String,
  nValue		As Variant
)

Parameter

sVarName
Name der ADS-Variable.
nValue
Wert, der in die Variable geschrieben werden soll.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt.

Beispiele

VBScript:

Dim VarValue = 0
Call TcClientSync.WriteVar(".PLCSIntVar", VarValue)

JScript:

var VarValue = 0;
TcClientSync.WriteVar(".PLCSIntVar", VarValue);


TcScriptSync::WriteBool()

WriteBool

Schreibt in eine Variable vom Typ Boolean.

object.WriteBool(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  bValue		As Boolean
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
bValue
Wert, der in die Variable geschrieben werden soll.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp BOOL.

Beispiele

VBScript:

Dim VarBool = 0
Call TcClientSync.WriteBool(&H4020, 0, VarBool)

JScript:

var VarBool = 0;
TcClientSync.WriteBool(0x4020, 0, VarBool);


TcScriptSync::WriteInt8()

WriteInt8

Schreibt in eine Variable vom Typ Byte.

object.WriteInt8(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  nValue		As Byte
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
nValue
Wert, der in die Variable geschrieben werden soll.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp BYTE, SINT oder USINT.

Beispiele

VBScript:

Dim VarInt8 = 0
Call TcClientSync.WriteInt8(&H4020, 0, VarInt8)

JScript:

var VarInt8 = 0;
TcClientSync.WriteInt8(0x4020, 0, VarInt8);


TcScriptSync::WriteInt16()

WriteInt16

Schreibt in eine Variable vom Typ Integer.

object.WriteInt16(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  nValue		As Integer
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
nValue
Wert, der in die Variable geschrieben werden soll.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp WORD, INT oder UINT.

Beispiele

VBScript:

Dim VarInt16 = 0
Call TcClientSync.WriteInt16(&H4020, 0, VarInt16)

JScript:

var VarInt16 = 0;
TcClientSync.WriteInt16(0x4020, 0, VarInt16);


TcScriptSync::WriteInt32()

WriteInt32

Schreibt in eine Variable vom Typ Long.

object.WriteInt32(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  nValue		As Long
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
nValue
Wert, der in die Variable geschrieben werden soll.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp DWORD, DINT oder UDINT.

Beispiele

VBScript:

Dim VarInt32 = 0
Call TcClientSync.WriteInt32(&H4020, 0, VarInt32)

JScript:

var VarInt32 = 0;
TcClientSync.WriteInt32(0x4020, 0, VarInt32);


TcScriptSync::WriteReal32()

WriteReal32

Schreibt in eine Variable vom Typ Single.

object.WriteReal32(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  fValue		As Single
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
fValue
Wert, der in die Variable geschrieben werden soll.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp REAL.

Beispiele

VBScript:

Dim VarReal32 = 0
Call TcClientSync.WriteReal32(&H4020, 0, VarReal32)

JScript:

var VarReal32 = 0;
TcClientSync.WriteReal32(0x4020, 0, VarReal32);


TcScriptSync::WriteReal64()

WriteReal64

Schreibt in eine Variable vom Typ Double.

object.WriteReal64(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  fValue		As Double
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
fValue
Wert, der in die Variable geschrieben werden soll.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp LREAL.

Beispiele

VBScript:

Dim VarReal64 = 0
Call TcClientSync.WriteReal64(&H4020, 0, VarReal64)

JScript:

var VarReal64 = 0;
TcClientSync.WriteReal64(0x4020, 0, VarReal64);


TcScriptSync::WriteArrayOfBool()

WriteArrayOfBool

Schreibt ein Array mit Elementen vom Typ Boolean in ein ADS-Gerät.

object.WriteArrayOfBool(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  pValue		As Variant
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
pValue
Array, mit Elementen vom Typ Boolean.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF BOOL.

Beispiele

VBScript:

Dim VarArrayBool(1)
VarArrayBool(0) = True
VarArrayBool(1) = False
Call TcClientSync.WriteArrayOfBool(&H4020, 0, VarArrayBool)

JScript:

var VarArrayBool[2];
VarArrayBool[0] = true;
VarArrayBool[1] = false;
TcClientSync.WriteArrayOfBool(0x4020, 0, VarArrayBool);


TcScriptSync::WriteArrayOfInt8()

WriteArrayOfInt8

Schreibt ein Array mit Elementen vom Typ Byte in ein ADS-Gerät.

object.WriteArrayOfInt8(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  pValue		As Variant
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
pValue
Array, mit Elementen vom Typ Byte.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF BYTE, ARRAY OF SINT oder ARRAY OF USINT.

Beispiele

VBScript:

Dim VarArrayInt8(1)
VarArrayInt8(0) = 0
VarArrayInt8(1) = 1
Call TcClientSync.WriteArrayOfInt8(&H4020, 0, VarArrayInt8)

JScript:

var VarArrayInt8[2];
VarArrayInt8[0] = 0;
VarArrayInt8[1] = 1;
TcClientSync.WriteArrayOfInt8(0x4020, 0, VarArrayInt8);


TcScriptSync::WriteArrayOfInt16()

WriteArrayOfInt16

Schreibt ein Array mit Elementen vom Typ Integer in ein ADS-Gerät.

object.WriteArrayOfInt16(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  pValue		As Variant
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
pValue
Array, mit Elementen vom Typ Integer.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF WORD, ARRAY OF INT oder ARRAY OF UINT.

Beispiele

VBScript:

Dim VarArrayInt16(1)
VarArrayInt16(0) = 0
VarArrayInt16(1) = 1
Call TcClientSync.WriteArrayOfInt16(&H4020, 0, VarArrayInt16)

JScript:

var VarArrayInt16[2];
VarArrayInt16[0] = 0;
VarArrayInt16[1] = 1;
TcClientSync.WriteArrayOfInt16(0x4020, 0, VarArrayInt16);


TcScriptSync::WriteArrayOfInt32()

WriteArrayOfInt32

Schreibt ein Array mit Elementen vom Typ Long in ein ADS-Gerät.

object.WriteArrayOfInt32(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  pValue		As Variant
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
pValue
Array, mit Elementen vom Typ Long.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF DWORD, ARRAY OF DINT oder ARRAY OF UDINT.

Beispiele

VBScript:

Dim VarArrayInt32(1)
VarArrayInt32(0) = 0
VarArrayInt32(1) = 1
Call TcClientSync.WriteArrayOfInt32(&H4020, 0, VarArrayInt32)

JScript:

var VarArrayInt32[2];
VarArrayInt32[0] = 0;
VarArrayInt32[1] = 1;
TcClientSync.WriteArrayOfInt32(0x4020, 0, VarArrayInt32);


TcScriptSync::WriteArrayOfReal32()

WriteArrayOfReal32

Schreibt ein Array mit Elementen vom Typ Single in ein ADS-Gerät.

object.WriteArrayOfReal32(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  pValue		As Variant
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
pValue
Array, mit Elementen vom Typ Single.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF REAL.

Beispiele

VBScript:

Dim VarArrayReal32(1)
VarArrayReal32(0) = 0.1
VarArrayReal32(1) = 1.2
Call TcClientSync.WriteArrayOfReal32(&H4020, 0, VarArrayReal32)

JScript:

var VarArrayReal32[2];
VarArrayReal32[0] = 0.1;
VarArrayReal32[1] = 1.2;
TcClientSync.WriteArrayOfReal32(0x4020, 0, VarArrayReal32);


TcScriptSync::WriteArrayOfReal64()

WriteArrayOfReal64

Schreibt ein Array mit Elementen vom Typ Double in ein ADS-Gerät.

object.WriteArrayOfReal64(
  nIndexGroup	As Long,
  nIndexOffset	As Long,
  pValue		As Variant
)

Parameter

nIndexGroup
Index-Gruppe der ADS-Variable.
nIndexOffset
Index-Offset der ADS-Variable.
pValue
Array, mit Elementen vom Typ Double.

Rückgabewert

-

Beschreibung

Der Schreibvorgang wird synchron durchgeführt. In der IEC 61131-6 entspricht dieses dem Datentyp ARRAY OF LREAL.

Beispiele

VBScript:

Dim VarArrayReal64(1)
VarArrayReal64(0) = 0.1
VarArrayReal64(1) = 1.2
Call TcClientSync.WriteArrayOfReal64(&H4020, 0, VarArrayReal64)

JScript:

var VarArrayReal64[2];
VarArrayReal64[0] = 0.1;
VarArrayReal64[1] = 1.2;
TcClientSync.WriteArrayOfReal64(0x4020, 0, VarArrayReal64);


Übersicht

Beschreibung | Quelltexte
Beispiel 1: Windows Scripting Host | ADS-Script-DLL Sample01.exe
Beispiel 2: Visual Basic | ADS-Script-DLL Sample02.exe
Beispiel 3: Active Server Pages | ADS-Script-DLL Sample03.exe


Beispiel - Windows Scripting Host

Windows Scripting Host

Laden Sie das SPS-Programm in die lokale SPS auf Ihrem PC und starten Sie das SPS-Programm. Rufen Sie anschließend das Script auf.

Nachdem der Kommunikationskanal geöffnet wurde, wird überprüft, ob sich die SPS im RUN-Zustand befindet. Falls nicht, wird die SPS gestartet. Als nächstes werden alle SPS-Variablen ausgelesen und einzeln angezeigt. Anschließend werden alle Variablen erhöht und zur Kontrolle wieder ausgelesen und angezeigt. Zum Schluß wird die SPS wieder gestoppt.

VBScript:

Dim TcClientSync
Dim VarBool, VarInt8, VarInt16, VarInt32, VarReal32, VarReal64

'create TcScript-Object
Set TcClientSync = CreateObject("TCSCRIPT.TcScriptSync")
Call TcClientSync.ConnectTo("", 801)

if (TcClientSync.ReadAdsState() <> 5) then
WScript.echo("PLC is not running!" & vbCrLf & "Start PLC.")
Call TcClientSync.WriteAdsState(5)
end if

'read from PLC
VarBool = TcClientSync.ReadBool(&H4020, 0)
WScript.echo "VarBool = ", VarBool

VarInt8 = TcClientSync.ReadInt8(&H4020, 2)
WScript.echo "VarInt8 = ", VarInt8

VarInt16 = TcClientSync.ReadInt16(&H4020, 4)
WScript.echo "VarInt16 = ", VarInt16

VarInt32 = TcClientSync.ReadInt32(&H4020, 6)
WScript.echo "VarInt32 = ", VarInt32

VarReal32 = TcClientSync.ReadReal32(&H4020, 10)
WScript.echo "VarReal32 = ", VarReal32

VarReal64 = TcClientSync.ReadReal64(&H4020, 14)
WScript.echo "VarReal64 = ", VarReal64

'write to PLC
Call TcClientSync.WriteBool(&H4020, 0, NOT VarBool)
Call TcClientSync.WriteInt8(&H4020, 2, VarInt8 + 1)
Call TcClientSync.WriteInt16(&H4020, 4, VarInt16 + 1)
Call TcClientSync.WriteInt32(&H4020, 6, VarInt32 + 1)
Call TcClientSync.WriteReal32(&H4020, 10, VarReal32 + 1.1)
Call TcClientSync.WriteReal64(&H4020, 14, VarReal64 + 1.11)

Call TcClientSync.WriteVar(".PLCBoolVar", VarBool)
Call TcClientSync.WriteVar(".PLCSIntVar", VarInt8 + 2)
Call TcClientSync.WriteVar(".PLCIntVar", VarInt16 + 2)
Call TcClientSync.WriteVar(".PLCDIntVar", VarInt32 + 2)
Call TcClientSync.WriteVar(".PLCRealVar", VarReal32 + 2.1)
Call TcClientSync.WriteVar(".PLCLRealVar", VarReal64 + 2.11)

'read again from PLC
VarBool = TcClientSync.ReadVar(".PLCBoolVar")
WScript.echo "VarBool = ", VarBool

VarInt8 = TcClientSync.ReadVar(".PLCSIntVar")
WScript.echo "VarInt8 = ", VarInt8

VarInt16 = TcClientSync.ReadVar(".PLCIntVar")
WScript.echo "VarInt16 = ", VarInt16

VarInt32 = TcClientSync.ReadVar(".PLCDIntVar")
WScript.echo "VarInt32 = ", VarInt32

VarReal32 = TcClientSync.ReadVar(".PLCRealVar")
WScript.echo "VarReal32 = ", VarReal32

VarReal64 = TcClientSync.ReadVar(".PLCLRealVar")
WScript.echo "VarReal64 = ", VarReal64

if (TcClientSync.ReadAdsState() = 5) then
WScript.echo("PLC is running!" & vbCrLf & "Stop PLC.")
Call TcClientSync.WriteAdsState(6)
end if

JScript:

var TcClientSync;
var VarBool, VarInt8, VarInt16, VarInt32, VarReal32, VarReal64;

// create TcScript-Object
TcClientSync = new ActiveXObject("TCSCRIPT.TcScriptSync");
TcClientSync.ConnectTo("", 801);

if (TcClientSync.ReadAdsState() != 5)
{
WScript.echo("PLC is not running!\nStart PLC.");
TcClientSync.WriteAdsState(5);
}

// read from PLC
VarBool = TcClientSync.ReadBool(0x4020, 0);
WScript.echo("VarBool = ", VarBool);

VarInt8 = TcClientSync.ReadInt8(0x4020, 2);
WScript.echo("VarInt8 = ", VarInt8);

VarInt16 = TcClientSync.ReadInt16(0x4020, 4);
WScript.echo("VarInt16 = ", VarInt16);

VarInt32 = TcClientSync.ReadInt32(0x4020, 6);
WScript.echo("VarInt32 = ", VarInt32);

VarReal32 = TcClientSync.ReadReal32(0x4020, 10);
WScript.echo("VarReal32 = ", VarReal32);

VarReal64 = TcClientSync.ReadReal64(0x4020, 14);
WScript.echo("VarReal64 = ", VarReal64);

// write to PLC
TcClientSync.WriteBool(0x4020, 0, !VarBool);
TcClientSync.WriteInt8(0x4020, 2, VarInt8 + 1);
TcClientSync.WriteInt16(0x4020, 4, VarInt16 + 1);
TcClientSync.WriteInt32(0x4020, 6, VarInt32 + 1);
TcClientSync.WriteReal32(0x4020, 10, VarReal32 + 1.1);
TcClientSync.WriteReal64(0x4020, 14, VarReal64 + 1.11);

TcClientSync.WriteVar(".PLCBoolVar", VarBool);
TcClientSync.WriteVar(".PLCSIntVar", VarInt8 + 2);
TcClientSync.WriteVar(".PLCIntVar", VarInt16 + 2);
TcClientSync.WriteVar(".PLCDIntVar", VarInt32 + 2);
TcClientSync.WriteVar(".PLCRealVar", VarReal32 + 2.1);
TcClientSync.WriteVar(".PLCLRealVar", VarReal64 + 2.11);

// read again from PLC
VarBool = TcClientSync.ReadVar(".PLCBoolVar");
WScript.echo("VarBool = ", VarBool);

VarInt8 = TcClientSync.ReadVar(".PLCSIntVar");
WScript.echo("VarInt8 = ", VarInt8);

VarInt16 = TcClientSync.ReadVar(".PLCIntVar");
WScript.echo("VarInt16 = ", VarInt16);

VarInt32 = TcClientSync.ReadVar(".PLCDIntVar");
WScript.echo("VarInt32 = ", VarInt32);

VarReal32 = TcClientSync.ReadVar(".PLCRealVar");
WScript.echo("VarReal32 = ", VarReal32);

VarReal64 = TcClientSync.ReadVar(".PLCLRealVar");
WScript.echo("VarReal64 = ", VarReal64);

if (TcClientSync.ReadAdsState() == 5)
{
WScript.echo("PLC is running!\nStop PLC.");
TcClientSync.WriteAdsState(6);
}

Beispielprogramm 'Windows Scripting Host' entpacken.


Beispiel - Visual Basic

Visual Basic

Wie in der Einleitung schon erwähnt, ist die ADS-Script-DLL in erster Linie für Scriptsprachen entwickelt worden. Trotzdem ist an dieser Stelle ein Visual Basic Programm. Es dient legendlich dazu, die Möglichkeiten der ADS-Script-DLL besser zu demonstrieren. Für Anwendungen, die mit Visual Basic erstellt werden sollen, ist das ADS-OCX besser geeignet.

Laden Sie als erstes das SPS-Programm in die lokale SPS (Laufzeitsystem 1) auf Ihrem PC. Starten Sie anschließend das Visual Basic Programm:

Wenn Sie keine anderen Angaben machen, wird ein Kommunikationskanal zu Ihrer lokalen SPS hergestellt. Durch Eingabe einer anderen AdsAmsNetId und einer anderen Portnummer können Sie eine Verbindung zu einem anderen Laufzeitsystem auf einem anderen PC herstellen. Auf diesem Laufzeitsystem muss dann allerdings das oben genannte SPS-Programm aktiv sein. Ebenfalls muss der evtl. ausgewählte Remote Rechner im TwinCAT System Control eingetragen sein.

Sie können wahlweise die SPS-Variablen per Adresse (IndexGroup und IndexOffset), oder per Variablenname auslesen. Gleiches gilt auch für das Schreiben neuer Werte. Für den Bediener hat dieses keine Bedeutung. Es soll nur die beiden Möglichkeiten aufführen.

In der oberen rechten Ecke kann der Zustand der SPS ausgelesen und verändert werden. Eine 5 entspricht dem RUN-Zustand und eine 6 dem STOP-Zustand.

Option Explicit

Public TcClientSync As TCSCRIPTLib.TcScriptSync
Public nAdsAmsPort As Integer
Public strAdsAmsNetId As String

Private Sub Form_Load()
    Set TcClientSync = CreateObject("TcScript.TcScriptSync")
    Call TcClientSync.ConnectTo("", 801)
End Sub

Private Sub Form_Terminate()
    Set TcClientSync = Nothing
End Sub

Private Sub cmdConnect_Click()
    nAdsAmsPort = CLng(txtAdsAmsPort.Text)
    if (Len(txtAdsAmsNetId.Text) > 0) Then
       strAdsAmsNetId = txtAdsAmsNetId.Text
    Else
       strAdsAmsNetId = ""
    End If
    Set TcClientSync = CreateObject("TcScript.TcScriptSync")
    Call TcClientSync.ConnectTo(strAdsAmsNetId, nAdsAmsPort)
End Sub

Private Sub cmdRead_Click()
    Dim VarBool As Variant
    Dim VarInt8 As Byte
    Dim VarInt16 As Integer
    Dim VarInt32 As Long
    Dim VarReal32 As Single
    Dim VarReal64 As Double

    VarBool = TcClientSync.ReadBool(&H4020, 0)
    lblBoolean.Caption = VarBool

    VarInt8 = TcClientSync.ReadInt8(&H4020, 2)
    lblInt8.Caption = VarInt8

    VarInt16 = TcClientSync.ReadInt16(&H4020, 4)
    lblInt16.Caption = VarInt16

    VarInt32 = TcClientSync.ReadInt32(&H4020, 6)
    lblInt32.Caption = VarInt32

    VarReal32 = TcClientSync.ReadReal32(&H4020, 10)
    lblReal32.Caption = VarReal32

    VarReal64 = TcClientSync.ReadReal64(&H4020, 14)
    lblReal64.Caption = VarReal64
End Sub

Private Sub cmdReadByName_Click()
    Dim VarBool As Variant
    Dim VarInt8 As Byte
    Dim VarInt16 As Integer
    Dim VarInt32 As Long
    Dim VarReal32 As Single
    Dim VarReal64 As Double

    VarBool = TcClientSync.ReadVar(".PLCBoolVar")
    lblBoolean.Caption = VarBool

    VarInt8 = TcClientSync.ReadVar(".PLCSIntVar")
    lblInt8.Caption = VarInt8

    VarInt16 = TcClientSync.ReadVar(".PLCIntVar")
    lblInt16.Caption = VarInt16

    VarInt32 = TcClientSync.ReadVar(".PLCDIntVar")
    lblInt32.Caption = VarInt32

    VarReal32 = TcClientSync.ReadVar(".PLCRealVar")
    lblReal32.Caption = VarReal32

    VarReal64 = TcClientSync.ReadVar(".PLCLRealVar")
    lblReal64.Caption = VarReal64
End Sub

Private Sub cmdWrite_Click()
    Dim VarBool As Boolean
    Dim VarInt8 As Byte
    Dim VarInt16 As Integer
    Dim VarInt32 As Long
    Dim VarReal32 As Single
    Dim VarReal64 As Double

    If (txtBoolean.Text <> "") Then
        VarBool = CBool(txtBoolean.Text)
        Call TcClientSync.WriteBool(&H4020, 0, VarBool)
        txtBoolean.Text = VarBool
    End If

    If (txtInt8.Text <> "") Then
        VarInt8 = CByte(txtInt8.Text)
        Call TcClientSync.WriteInt8(&H4020, 2, VarInt8)
        txtInt8.Text = VarInt8
    End If

    If (txtInt16.Text <> "") Then
        VarInt16 = CInt(txtInt16.Text)
        Call TcClientSync.WriteInt16(&H4020, 4, VarInt16)
        txtInt16.Text = VarInt16
    End If

    If (txtInt32.Text <> "") Then
        VarInt32 = CLng(txtInt32.Text)
        Call TcClientSync.WriteInt32(&H4020, 6, VarInt32)
        txtInt32.Text = VarInt32
    End If

    If (txtReal32.Text <> "") Then
        VarReal32 = CSng(txtReal32.Text)
        Call TcClientSync.WriteReal32(&H4020, 10, VarReal32)
        txtReal32.Text = VarReal32
    End If

    If (txtReal64.Text <> "") Then
        VarReal64 = CDbl(txtReal64.Text)
        Call TcClientSync.WriteReal64(&H4020, 14, VarReal64)
        txtReal64.Text = VarReal64
    End If
End Sub

Private Sub cmdWriteByName_Click()
    Dim VarBool As Boolean
    Dim VarInt8 As Byte
    Dim VarInt16 As Integer
    Dim VarInt32 As Long
    Dim VarReal32 As Single
    Dim VarReal64 As Double

    If (txtBoolean.Text <> "") Then
        VarBool = CBool(txtBoolean.Text)
        Call TcClientSync.WriteVar(".PLCBoolVar", VarBool)
        txtBoolean.Text = VarBool
    End If

    If (txtInt8.Text <> "") Then
        VarInt8 = CByte(txtInt8.Text)
        Call TcClientSync.WriteVar(".PLCSIntVar", VarInt8)
        txtInt8.Text = VarInt8
    End If

    If (txtInt16.Text <> "") Then
        VarInt16 = CInt(txtInt16.Text)
        Call TcClientSync.WriteVar(".PLCIntVar", VarInt16)
        txtInt16.Text = VarInt16
    End If

    If (txtInt32.Text <> "") Then
        VarInt32 = CLng(txtInt32.Text)
        Call TcClientSync.WriteVar(".PLCDIntVar", VarInt32)
        txtInt32.Text = VarInt32
    End If

    If (txtReal32.Text <> "") Then
        VarReal32 = CSng(txtReal32.Text)
        Call TcClientSync.WriteVar(".PLCRealVar", VarReal32)
        txtReal32.Text = VarReal32
    End If

    If (txtReal64.Text <> "") Then
        VarReal64 = CDbl(txtReal64.Text)
        Call TcClientSync.WriteVar(".PLCLRealVar", VarReal64)
        txtReal64.Text = VarReal64
    End If
End Sub

Private Sub cmdReadState_Click()
    lblAdsState.Caption = TcClientSync.ReadAdsState()
End Sub

Private Sub cmdWriteState_Click()
    If (txtAdsState.Text <> "") Then
        If (txtAdsState.Text <> TcClientSync.ReadAdsState()) Then
            Call TcClientSync.WriteAdsState(txtAdsState.Text)
        End If
    End If
End Sub

Beispielprogramm 'Visual Basic' entpacken.


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 'Active Server Pages' entpacken.


Active Server Pages für Windows CE

Dieses Beispiel ist eine Sonderform von Beispiel 3. Machen Sie sich daher bitte erst mit der in Beispiel 3 beschriebenen Methodik vertraut.

Windows CE kann als Web-Server für ASP-Seiten dienen (indem die entsprechenden Dateien in das "WWW"-Verzeichnis kopiert werden). Die Funktionalität hiervon ist jedoch eingeschränkt, was sich darin äußert, dass auf Windows CE die "global.asa"-Datei nicht verarbeitet werden kann. Somit ist es unter Anderem nicht möglich globale Variablen und Objekte zu erstellen; sie müssen bei jedem Seitenaufruf neu angelegt werden, indem (wie nachfolgend dargestellt) sie direkt im Script instanziiert werden.

default.asp:

<%@ language=JScript %>
<%
   TcClient = new ActiveXObject("TcScript.TcScriptSync");
   TcClient.ConnectTo("", 801);

   var nIntSet = 0;
   var nIntActual = 0;
   var sSet = Request.QueryString("set");

   if ((sSet != null) && (sSet.length != 0))
   {
      var bSetIsNumber = true;

      for (var i = 0; ((i < sSet.length) && (bSetIsNumber == true)); i++)
      {
         var sChar = sSet.charAt(i);
         if (ValidChars.indexOf("0123456789.") == -1)
         {
            bSetIsNumber = false;
         }
      }

      if (bSetIsNumber == true)
      {
         nIntSet = parseInt(sSet);
         if(nIntSet >= 0)
         {
            TcClient.WriteVar(".PLCVarInt", nIntSet);
         }
      }
   }

   nIntActual = TcClient.ReadVar(".PLCVarInt");
%>

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <title>TwinCAT ADS-Script-DLL - Sample 04 - Windows CE</title>
   </head>

   <body>
      <h1>TwinCAT ADS-Script-DLL - Sample 04 - Active Server Pages for Windows CE</h1>
      <form method="get" action="default.asp" name="tempSet">
         set: <input name="set" size="4" value="<% Response.Write( nIntSet ); %>">
      </form>
      actual: <% Response.Write( nIntActual ); %>
   </body>
</html>

Darstellung im Internet Explorer:

HTML-Seite die zum Client (Internet Explorer) geschickt wurde:

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <title>TwinCAT ADS-Script-DLL - Sample 04 - Windows CE</title>
   </head>

   <body>
      <h1>TwinCAT ADS-Script-DLL - Sample 04 - Active Server Pages for Windows CE</h1>
      <form method="get" action="Sample04.asp" name="tempSet">
         set: <input name="set" size="4" value="3">
      </form>
      actual: 3
   </body>
</html>

Beispielprogramm 'Active Server Pages für Windows CE' entpacken.