AdsReadVarConvertConnect

Ab TwinCAT 2.8 Build > 743 und höher.

Die Methode stellt eine feste Verbindung zu einer Variablen eines ADS-Gerätes her. Durch den 'usrConvertType' Parameter kann festgelegt werden, welchen Datentyp (Format) die ankommenden Variablen-Daten in der Ereignisfunktion haben sollen. Die 'usrConvertType' Parameterübergabe erfolgt "ByValue", d.h der übergebene Datentyp wird nur als "Vorlage" für die Konvertierung benutzt.  Bei der Konvertierung wird jeweils die entsprechende Menge an Datenbytes in den vom Benutzer festgelegten Datentyp hineinkopiert.

object.AdsReadVarConvertConnect(nIndexOffset As String,
  nRefreshType As ADSOCXTRANSMODE,
  nCycleTime As Long,
  phConnectAs Long,
  usrConvertType As Variant,
  hUser As Variant
) As Long

Parameter

adsVarName

[in] Name der ADS-Variable

nRefreshType

[in] Art des Datenaustausches zwischen der VB-Variable und ADS-Variable (siehe Datentyp ADSOCXTRANSMODE)

nCycleTime

[in] Lese-Zyklus in ms

phConnect

[out] Enthält einen eindeutigen Handle für die aufgebaute Verbindung (dieses ist nicht der Handle der ADS-Variablen!).

usrConverType

[in] Datentyp in den die Ereignisdaten konvertiert werden sollen. Die folgende Tabelle enthält eine Liste der unterstützten VB-Datentypen die als Parameter übergeben werden können.

Visual Basic data type

Equal to C++ VARTYPE

Equal to PLC data type (memory use)

Byte

VT_UI1

BYTE (1Byte)

Integer

VT_I2

INT (2 Byte) and enums

Long

VT_I4

DINT (4 Byte)

Single

VT_R4

REAL (4 Byte)

Double

VT_R8

LREAL (8 Byte)

String*

VT_BSTR

STRING (Deklarierte Stringlänge + Null-Terminierung)

Boolean**

VT_BOOL

BOOL (1Byte)

Date***

VT_DATE

DT; DATE_AND_TIME (4Byte)

not supported in VB

VT_UI2

WORD; UINT (2Byte)

not supported in VB

VT_UI4

DWORD; UDINT (4Byte)

not supported in VB

VT_I1

SINT (1Byte)

Variant****

VT_VARIANT

-

Dim varArray() As <anything of above types>

VT_ARRAY | <anything of above types>

-

* Die Stringlänge muss auf die maximale Anzahl der Zeichen (inklusive der abschließenden NULL) gesetzt werden, die die Stringvariable aufnehmen soll. Aus den Ereignisdaten werden dann (VB-Stringlänge + 1Byte(für Nullterminierung)) Bytes in die Stringvariable hineinkopiert. Danach wird die Länge des Strings auf die tatsächliche Länge verkürzt. D.h. der String wird beim ersten Null-Character abgeschnitten. Bei passend gesetzter Stringlänge können auch Stringarrays aus der SPS gelesen werden. Z. B.:

VAR_GLOBAL
     plcStringArr    : ARRAY[ 1..2 ] OF STRING(30);
END_VAR

    in VB:

Dim  vbStringArr( 1 To 2) As String
vbStringArr(1) = String( 31, "#") 
vbStringArr(2) = String( 31, "#") 
call AdsOcx1.AdsReadVarConvertConnect(".plcStringArr", ADSTRANS_SERVERONCHA, 300, hConnect, vbStringArr )

 

** Bei der Konvertierung wird jeweils ein Byte Ereignisdaten in einen 2-Byte OleVariant-Datentyp konvertiert. Es gilt: TRUE bei Data <> 0 und FALSE bei Data = 0;

 

*** Der OleVariant-Datentyp Date kann dafür benutzt werden, um z. B. die SPS-Variable vom Typ DATE_AND_TIME in eine VB-Applikation zu lesen. Bei der Konvertierung werden die lokalen Einstellungen des PC's berücksichtigt. Andere SPS-Datentypen wie z. B. TIME oder TOD werden nicht unterstützt, weil sie nicht passend konvertiert werden können.

 

**** Die Variant-Variable muss mit einem Datentyp initialisiert werden. VT_EMPTY oder VT_NULL sind z. B. nicht erlaubt.

 

hUser

[in] Optional: Dieser Wert wird beim Aufruf des Ereignis AdsReadConvertConnectUpdate()  übergeben.

Rückgabewert

Siehe ADS-Fehlercodes

Bemerkungen

Wird die Verbindung zu einer ADS-Variablen nicht mehr benötigt, sollte diese über die Methode AdsDisconnectEx() wieder freigegeben werden. Wenn in einer Form nur bestimmte Werte benötigt werden, sollte die Verbindung erst beim Laden der Form erzeugt werden und beim Schließen der Form wieder freigegeben werden.

Hinweis zur SPS: Achten Sie beim PLC-Control darauf, dass unter Projekt / Optionen / TwinCAT der Symbol-Download aktiviert ist. Nähere Informationen können Sie aus dem Handbuch vom PLC-Control entnehmen.

Der erste Parameter der Methode setzt sich aus dem POE-Namen und der SPS-Variablen zusammen, die adressiert werden soll. Soll z. B. aus der Funktion 'Funk1' die Variable 'SPSVar1' angesprochen werden, so muss als erster Parameter 'Funk1.SPSVar1' angegeben werden. Beim Zugriff auf globale Variablen wird der POE-Name weggelassen, also z. B. '.SPSGlobVar'. Der Parameter adsVarName unterscheidet nicht zwischen Groß- und Kleinbuchstaben.

Hinweis zur NC: Im System-Manager muss bei jeder Achse der Symbol-Download aktiviert werden. Dieses können Sie bei dem Konfigurations-Dialog der Achse unter Allgemein festlegen. Das Feld 'Symbole erzeugen' muss gekennzeichnet sein. Siehe Handbuch System Manager.

Die Symbolnamen der einzelnen Parameter der NC sind fest vorgegeben und können aus der NC-Dokumentation entnommen werden.

Beispiel

Visual Basic Beispiel: Ereignisgesteuertes Lesen (mit Konvertierung in einen anderen Typ)