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.