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

Das ADS-OCX stellt Methoden, Ereignisse und Eigenschaften zur Verfügung, um über den TwinCAT-Router mit anderen ADS-Geräten Informationen auszutauschen. Das ADS-OCX wurde als ActiveX-Steuerelement realisiert und basiert auf der COM-Technologie von Microsoft. Jede Programmierumgebung die ActiveX-Steuerelemente unterstützt, kann das ADS-OCX nutzen. Die am meisten eingesetzte Programmierumgebung für ActiveX-Steuerelemente ist Visual Basic * (siehe unten).

Die in dieser Anleitung gezeigten Beispiele sind alle in Visual Basic 6 Service Pack 3 realisiert. Da keines der Beispiele sehr komplex ist, sind tiefgreifende Kenntnisse in Visual Basic nicht erforderlich.


Zugriff auf ADS-Geräte

Für den Zugriff auf die Daten eines ADS-Gerätes stehen mehrere Möglichkeiten zur Verfügung:
· synchron
· asynchron
· zyklisch

Je nach Applikationsumgebung (Kommunikationsmedium, Datenmenge, Datenübertragungsrate,...) hat jede dieser Möglichkeiten ihre Vorzüge, die weiter unten im Einzelnen erläutert werden. Um eine Variable in einem ADS-Gerät zu identifizieren, gibt es zwei weitere Varianten.

per Adresse

Es wird eine Adresse angegeben. Die Adresse setzt sich zusammen aus der Index-Gruppe und dem Index-Offset. Die Adressaufteilung ist aus der entsprechenden Dokumentation des ADS-Gerätes zu entnehmen.

per Variablenname

Beim Zugriff auf ADS-Geräte kann alternativ auch der Name einer ADS-Variablen angegeben werden.

Synchron

Nach dem Aufruf der Schreib-/Lesemethode wird die Ausführung des Visual Basic-Programms so lange unterbrochen, bis die angeforderten Daten vorliegen. In den darauf folgenden Anweisungen kann mit den Daten sofort weiter gearbeitet werden. Der Vorteil dieser Zugriffsart ist, dass sehr wenig Programmieraufwand im Visual Basic-Programm durchgeführt werden muss.
Diese Zugriffsweise ist dann zu empfehlen, wenn sich das Visual Basic-Programm und das ADS-Gerät auf dem gleichen Rechner befinden oder über ein schnelles Netzwerk miteinander verbunden sind, so dass die Wartezeit sehr gering ist.
Beispiel: In einem Eingabefenster soll der Bediener verschiedene Parameter eingeben. Beim Betätigen eines Buttons, sollen die Daten in die SPS geschrieben werden. Da das Schreiben der Werte nicht zyklisch stattfindet, sondern von dem Verhalten des Bedieners abhängig ist, sollte in diesem Fall ein synchroner Schreibbefehl verwendet werden.

Asynchron

Bei dem asynchronen Zugriff wird die Ausführung des Visual Basic-Programms nicht unterbrochen, sondern sofort mit der Abarbeitung des nächsten Befehls fortgefahren. Treffen die angeforderten Daten beim ADS-OCX ein, wird im Visual Basic-Programm eine Ereignisfunktion ausgelöst, in der als Parameter der Wert übergeben wird. Dadurch, dass das Visual Basic-Programm zu einem beliebigen Zeitpunkt seine Daten erhalten kann, ist dort ein größerer Programmieraufwand notwendig als bei der synchronen Zugriffsweise.
Wenn der ADS-Server und das Visual Basic-Programm räumlich voneinander getrennt sind und das Datenübertragungsmedium sehr langsam ist, z.B. Modem oder ISDN, so ist die asynchrone Arbeitsweise sinnvoll.

Connect

Sollen Werte kontinuierlich zu einem Visual Basic-Programm übertragen werden, so ist die zyklische Zugriffsmethode, auch 'per connect' genannt, die einfachste und effektivste Möglichkeit. Ein Methodenaufruf veranlasst, dass die Daten aus dem ADS-Gerät zyklisch oder bei Veränderung dem Visual Basic-Programm durch eine Ereignisfunktion übergeben werden.
Beispiel: In einem Anzeigefenster sollen die Positionen mehrerer Achsen angezeigt werden; alle 250ms. Benutzen Sie die Methode AdsReadVarConnectEx() damit für jede Achsenposition alle 250ms das Ereignis AdsReadConnectUpdateEx() ausgelöst wird. Dieses Prinzip kann noch weiter optimiert werden, so dass nur dann Werte übertragen werden, wenn sich die Position der Achse verändert (server on change)! Ein kleines Beispiel finden Sie unter 'Ereignisgesteuertes Lesen'.

Rückgabewerte

Der Rückgabewert aller Methoden gibt Auskunft darüber, ob die durchgeführte Operation erfolgreich war oder ob ein Fehler aufgetreten ist. Allgemein gilt die Festlegung, dass der Rückgabewert 0 eine fehlerfreie Durchführung signalisiert. Eine genaue Auflistung der möglichen Rückgabewerte und ihre Bedeutungen finden Sie unter ADS-Fehlercodes.
Alternativ kann das ADS-OCX im Fehlerfall auch eine Exception auslösen. Dazu muss die Eigenschaft EnableErrorHandling auf TRUE gesetzt werden. Über das Objekt Err kann die Fehlerursache ermittelt werden. Das Object Err wird in der Dokumentation von Visual Basic beschrieben.

Methodenübersicht

per Adresse per Variablenname
synchron Lesen AdsSyncReadReq()
AdsSyncReadBoolReq()
AdsSyncReadIntegerReq()

AdsSyncReadLongReq()
AdsSyncReadSingleReq()
AdsSyncReadDoubleReq()
AdsSyncReadStringReq()

 -
AdsSyncReadBoolVarReq() AdsSyncReadIntegerVarReq() AdsSyncReadLongVarReq() AdsSyncReadSingleVarReq() AdsSyncReadDoubleVarReq() AdsSyncReadStringVarReq()
Schreiben AdsSyncWriteReq()
AdsSyncWriteBoolReq()
AdsSyncWriteIntegerReq()
AdsSyncWriteLongReq()
AdsSyncWriteSingleReq()
AdsSyncWriteDoubleReq()
AdsSyncWriteStringReq() 		-
AdsSyncWriteBoolVarReq()
AdsSyncWriteIntegerVarReq()
AdsSyncWriteLongVarReq()
AdsSyncWriteSingleVarReq()
AdsSyncWriteDoubleVarReq() AdsSyncWriteStringVarReq()
asynchron Lesen AdsReadIntegerReq()
AdsReadLongReq()
AdsReadSingleReq()
AdsReadDoubleReq()
AdsReadStringReq() 		-
Schreiben AdsWriteIntegerReq()
AdsWriteLongReq()
AdsWriteSingleReq()
AdsWriteDoubleReq()
AdsWriteStringReq() 		-
connect Lesen AdsReadConnect()
AdsReadBoolConnect()
AdsReadIntegerConnect()
AdsReadLongConnect()
AdsReadSingleConnect()
AdsReadDoubleConnect()

AdsReadStringConnect()

AdsReadVarConnectEx()
Schreiben AdsWriteConnect()
AdsWriteBoolConnect()
AdsWriteIntegerConnect()
AdsWriteLongConnect()
AdsWriteSingleConnect()
AdsWriteDoubleConnect() 		AdsWriteVarConnect()
AdsWriteBoolVarConnect()
AdsWriteIntegerVarConnect()
AdsWriteLongVarConnect()
AdsWriteSingleVarConnect()
AdsWriteDoubleVarConnect()


ADS Return Codes

Error codes: 0x000..., 0x500..., 0x700..., 0x1000..., 0x274C...

Global Error Codes

Hex | Dec | Description | Possible Causes | Solution
0x0 | 0 | no error |  |
0x1 | 1 | Internal error |  |
0x2 | 2 | No Rtime |  |
0x3 | 3 | Allocation locked memory error |  |
0x4 | 4 | Insert mailbox error | No ADS mailbox was available to process this message. | Reduce the number of ADS calls (e.g ADS-Sum commands or Max Delay Parameter)
0x5 | 5 | Wrong receive HMSG |  |
0x6 | 6 | target port not found | ADS Server not started |
0x7 | 7 | target machine not found | Missing ADS routes |
0x8 | 8 | Unknown command ID |  |
0x9 | 9 | Bad task ID |  |
0xA | 10 | No IO |  |
0xB | 11 | Unknown ADS command |  |
0xC | 12 | Win 32 error |  |
0xD | 13 | Port not connected |  |
0xE | 14 | Invalid ADS length |  |
0xF | 15 | Invalid AMS Net ID |  |
0x10 | 16 | Low Installation level |  |
0x11 | 17 | No debug available |  |
0x12 | 18 | Port disabled |  |
0x13 | 19 | Port already connected |  |
0x14 | 20 | ADS Sync Win32 error |  |
0x15 | 21 | ADS Sync Timeout |  |
0x16 | 22 | ADS Sync AMS error |  |
0x17 | 23 | ADS Sync no index map |  |
0x18 | 24 | Invalid ADS port |  |
0x19 | 25 | No memory |  |
0x1A | 26 | TCP send error |  |
0x1B | 27 | Host unreachable |  |
0x1C | 28 | Invalid AMS fragment |  |

Router Error Codes

Hex | Dec | Description | Possible Causes | Solution
0x500 | 1280 | ROUTERERR_NOLOCKEDMEMORY | No locked memory can be allocated |
0x501 | 1281 | ROUTERERR_RESIZEMEMORY | The size of the router memory could not be changed |
0x502 | 1282 | ROUTERERR_MAILBOXFULL | The mailbox has reached the maximum number of possible messages. The current sent message was rejected | Check the connection between the communication partners
0x503 | 1283 | ROUTERERR_DEBUGBOXFULL | The mailbox has reached the maximum number of possible messages. The sent message will not be displayed in the debug monitor | Check the connection to the debug monitor
0x504 | 1284 | ROUTERERR_UNKNOWNPORTTYPE | The port type is unknown |
0x505 | 1285 | ROUTERERR_NOTINITIALIZED | Router is not initialised |
0x506 | 1286 | ROUTERERR_PORTALREADYINUSE | The desired port number is already assigned |
0x507 | 1287 | ROUTERERR_NOTREGISTERED | Port not registered |
0x508 | 1288 | ROUTERERR_NOMOREQUEUES | The maximum number of Ports reached |
0x509 | 1289 | ROUTERERR_INVALIDPORT | The port is invalid. |
0x50A | 1290 | ROUTERERR_NOTACTIVATED | TwinCAT Router not active |
0x50B | 1291 | ROUTERERR_FRAGMENTBOXFULL |  |
0x50C | 1292 | ROUTERERR_FRAGMENTTIMEOUT |  |
0x50D | 1293 | ROUTERERR_TOBEREMOVED |  |

General ADS Error Codes

Hex | Dec | Description | Possible Causes | Solution
0x700 | 1792 | error class <device error> |  |
0x701 | 1793 | Service is not supported by server |  |
0x702 | 1794 | invalid index group |  |
0x703 | 1795 | invalid index offset |  |
0x704 | 1796 | reading/writing not permitted |  |
0x705 | 1797 | parameter size not correct |  |
0x706 | 1798 | invalid parameter value(s) |  |
0x707 | 1799 | device is not in a ready state |  |
0x708 | 1800 | device is busy |  |
0x709 | 1801 | invalid context (must be in Windows) |  |
0x70A | 1802 | out of memory |  |
0x70B | 1803 | invalid parameter value(s) |  |
0x70C | 1804 | not found (files, ...) |  |
0x70D | 1805 | syntax error in command or file |  |
0x70E | 1806 | objects do not match |  |
0x70F | 1807 | object already exists |  |
0x710 | 1808 | symbol not found |  |
0x711 | 1809 | symbol version invalid | Onlinechange | Release handle and get a new one
0x712 | 1810 | server is in invalid state |  |
0x713 | 1811 | AdsTransMode not supported |  |
0x714 | 1812 | Notification handle is invalid | Onlinechange | Release handle and get a new one
0x715 | 1813 | Notification client not registered |  |
0x716 | 1814 | no more notification handles |  |
0x717 | 1815 | size for watch too big |  |
0x718 | 1816 | device not initialized |  |
0x719 | 1817 | device has a timeout |  |
0x71A | 1818 | query interface failed |  |
0x71B | 1819 | wrong interface required |  |
0x71C | 1820 | class ID is invalid |  |
0x71D | 1821 | object ID is invalid |  |
0x71E | 1822 | request is pending |  |
0x71F | 1823 | request is aborted |  |
0x720 | 1824 | signal warning |  |
0x721 | 1825 | invalid array index |  |
0x722 | 1826 | symbol not active | Onlinechange | Release handle and get a new one
0x723 | 1827 | access denied |  |
0x724 | 1828 | missing license |  | Activate license for TwinCAT 3 function
0x72c | 1836 | exception occured during system start |  | Check each device transistions
0x740 | 1856 | Error class <client error> |  |
0x741 | 1857 | invalid parameter at service |  |
0x742 | 1858 | polling list is empty |  |
0x743 | 1859 | var connection already in use |  |
0x744 | 1860 | invoke ID in use |  |
0x745 | 1861 | timeout elapsed |  | Check ADS routes of sender and receiver and your firewall setting
0x746 | 1862 | error in win32 subsystem |  |
0x747 | 1863 | Invalid client timeout value |  |
0x748 | 1864 | ads-port not opened |  |
0x750 | 1872 | internal error in ads sync |  |
0x751 | 1873 | hash table overflow |  |
0x752 | 1874 | key not found in hash |  |
0x753 | 1875 | no more symbols in cache |  |
0x754 | 1876 | invalid response received |  |
0x755 | 1877 | sync port is locked |  |

RTime Error Codes

Hex | Dec | Description | Possible Causes
0x1000 | 4096 | RTERR_INTERNAL | Internal fatal error in the TwinCAT real-time system
0x1001 | 4097 | RTERR_BADTIMERPERIODS | Timer value not vaild
0x1002 | 4098 | RTERR_INVALIDTASKPTR | Task pointer has the invalid value ZERO
0x1003 | 4099 | RTERR_INVALIDSTACKPTR | Task stack pointer has the invalid value ZERO
0x1004 | 4100 | RTERR_PRIOEXISTS | The demand task priority is already assigned
0x1005 | 4101 | RTERR_NOMORETCB | No more free TCB (Task Control Block) available. Maximum number of TCBs is 64
0x1006 | 4102 | RTERR_NOMORESEMAS | No more free semaphores available. Maximum number of semaphores is 64
0x1007 | 4103 | RTERR_NOMOREQUEUES | No more free queue available. Maximum number of queue is 64
0x1008 | 4104 | TwinCAT reserved. |
0x1009 | 4105 | TwinCAT reserved. |
0x100A | 4106 | TwinCAT reserved. |
0x100B | 4107 | TwinCAT reserved. |
0x100C | 4108 | TwinCAT reserved. |
0x100D | 4109 | RTERR_EXTIRQALREADYDEF | An external synchronisation interrupt is already applied
0x100E | 4110 | RTERR_EXTIRQNOTDEF | No external synchronsiation interrupt applied
0x100F | 4111 | RTERR_EXTIRQINSTALLFAILED | The apply of the external synchronisation interrupt failed
0x1010 | 4112 | RTERR_IRQLNOTLESSOREQUAL | Call of a service function in the wrong context
0x1017 | 4119 | RTERR_VMXNOTSUPPORTED | Intel VT-x extension is not supported.
0x1018 | 4120 | RTERR_VMXDISABLED | Intel VT-x extension is not enabled in BIOS.
0x1019 | 4121 | RTERR_VMXCONTROLSMISSING | Missing feature in Intel VT-x extension.
0x101A | 4122 | RTERR_VMXENABLEFAILS | Enabling Intel VT-x fails.

TCP Winsock Error Codes

Hex | Dec | Description | Possible Causes | Solution
0x274c | 10060 | A socket operation was attempted to an unreachable host | Host unreachable | Check network connection via ping
0x274d | 10061 | A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. | Host unreachable | Check network connection via ping
0x2751 | 10065 | No connection could be made because the target machine actively refused it |  |
 |  | Further Winsock error codes: Win32 Error Codes |  |


Einfügen (Registrieren) des ADS OCX

TwinCAT ADS-OCX: Installation

Manuelle Installation des ADS OCX

Das ADS OCX kann mit Regsvr32 eingefügt werden. Dazu ist der Pfad der zu registrierenden Datei anzugeben.

Mit Start --> Ausführen --> Regsvr32 <Pfad zur AdsOcx-Datei>\AdsOcs.ocx eingeben.

Ein Reboot des Rechners ist nicht erforderlich.


AboutBox

Zeigt ein Informationsfenster mit der aktuellen Versionsnummer und dem Copyrightvermerk des ADS-OCX an.

object.AboutBox( )

Parameter

-

Rückgabewert

-

Bemerkungen

-

Beispiel


AdsAmsDisconnect

Über diese Methode wird das ADS-OCX vom TwinCAT-Router abgemeldet.

object.AdsAmsDisconnect() As Long

Parameter

-

Rückgabewert

-

Bemerkungen

Meldet sich der aktuelle Benutzer von Windows NT/2000/XP ab, so werden alle Anwendungen beendet. Enthält das Programm das ADS-OCX, welches mit dem Router verbunden ist, so muss das Programm sich vom TwinCAT-Router abmelden. Wird dieses nicht gemacht, so kann das Programm nicht komplett entladen werden; es ist nach dem erneuten Anmelden noch im NT-Task-Manager zu sehen.

Das Abmelden vom TwinCAT-Router wird durch die Methode AdsAmsDisconnect() realisiert. Diese sollte in dem Ereignis Form_Unload() aufgerufen werden.

Beispiel

Private Sub Form_Unload(Cancel As Integer)
  Call AdsOcx1.AdsAmsDisconnect
End Sub


AdsAmsPortEnabled

Über diese Methode kann festgestellt werden, ob der AMS-Port für die Kommunikation zur Verfügung steht.

object.AdsAmsPortEnabled() As Boolean

Parameter

-

Rückgabewert

-

Bemerkungen

-

Beispiel

Im folgenden Beispiel wird eine Funktion gezeigt, in der Meldungen in die Ereignisanzeige von Windows NT/2000/XP geschrieben werden. Dazu wird die Methode AdsLogFmtString() benutzt. Da der Zugriff auf die Ereignisanzeige über den TwinCAT-Router stattfindet, sollte die Methode nur dann aufgerufen werden, wenn der AMS-Port aktiv ist.

'Meldungen über ADS in die Ereignisanzeige schreiben
Public Function LogMsg (MsgType As ADSLOGMSGTYPE, MsgStr As String)
  If (AdsOcx.AdsAmsPortEnabled = True) Then
    MsgStr = Left(MsgStr, 250)
    Call AdsOcx.AdsLogFmtString(MsgType, MsgStr, 0, 0, 0, 0)
  End If
End Function


AdsCreateVarHandle

Erzeugt einen eindeutigen Handle von einer ADS-Variablen.

object.AdsCreateVarHandle(
  varName   As String,
  hVar      As Long)
As Long

Parameter

varName

[in] Name der ADS-Variable

hVar

[out] Handle der ADS-Variable

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

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-Namenn 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 'varName' unterscheidet nicht zwischen Groß- und Kleinbuchstaben. Wenn in einer Form nur bestimmte SPS-Variablen benötigt werden, sollte der Handle erst beim Laden der Form erzeugt werden und beim Schließen der Form wieder freigegeben werden. Siehe auch die AdsDeleteVarHandle() Methode.
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

-


AdsDeleteVarHandle

Gibt den Handle einer SPS-Variablen wieder frei.

object.AdsDeleteVarHandle(
  hVar     As Long)
As Long

Parameter

hVar

[in] Handle der ADS-Variable

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird eine ADS-Variable, die über einen Handle angesprochen wird, nicht mehr benötigt, sollte dieses über die Methode AdsDeleteVarHandle() wieder freigegeben werden. Wenn in einer Form nur bestimmte ADS-Variablen benötigt werden, sollte der Handle erst beim Laden der Form erzeugt werden und beim Schließen der Form wieder freigegeben werden. Siehe auch Methode AdsCreateVarHandle().

Beispiel

-


AdsEnableLogNotification

Setzt den Filter für das Empfangen von Meldungen über den TwinCAT-Router.

object.AdsEnableLogNotification(
  nBasePort       As Long,
  nPorts          As Long,
  dwCtrlMask      As Long)
As Long

Parameter

nBasePort

[in] Erste Portnummer, für die das Ereignis AdsLogNotification() ausgelöst wird

nPorts

[in] Anzahl der Ports ab nBasePort, für die das Ereignis AdsLogNotification() ausgelöst wird

dwCtrlMask

[in] Filtermaske, für die Art der Nachrichten die gemeldet werden sollen (siehe Datentyp ADSLOGMSGTYPE

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

ADS-Geräte haben die Möglichkeit Meldungen über den TwinCAT-Router an andere ADS-Geräte zu schicken. Bevor ein ADS-Gerät mit Hilfe des ADS-OCX Meldungen empfangen kann, muss mit Hilfe der Methode AdsEnableLogNotification() ein Filter definiert werden. Hierdurch wird festgelegt, welche Meldungen signalisiert werden.
Zum einen definiert der Filter ein Bereich von Portnummern. Alle Meldungen von den ADS-Geräten, die in diesem Portnummern-Bereich liegen, werden durch das Ereignis AdsLogNotification() gemeldet.
Der zweite Parameter, mit dem Meldungen gefiltert werden können, ist die Art der Meldung. Es wird unterschieden zwischen Hinweis, Warnung und Fehler (siehe ADSLOGMSGTYPE). Durch eine ODER-Verknüpfung können auch verschiedene Meldearten empfangen werden.

Beispiel

Visual Basic Beispiel: 'Meldungen über den TwinCAT-Router senden/empfangen'


AdsEnumSymbols

Mit dieser Methode kann die Liste der deklarierten Variablen aus einem ADS-Gerät ausgelesen werden.

object.AdsEnumSymbols(
  strSymbolName       As String,
  nSymbolType         As Long,
  cbSymbolSize        As Long,
  strComment          As String,
  nIndexGroup         As Long,
  nIndexOffset        As Long,
  bNext               As Boolean)
As Long

Parameter

strSymbolName

[out] Name der ADS-Variable

nSymbolType

[out] Datentyp der ADS-Variable (siehe Datentyp ADSDATATYPEID)

cbSymbolSize

[out] Datenlänge der ADS-Variable in Byte

strComment

[out] Kommentar hinter der ADS-Variablendeklaration

nIndexGroup

[out] Index-Gruppe der ADS-Variable

nIndexOffset

[out] Index-Offset der ADS-Variable

bNext

[in] TRUE für die erste ADS-Variable, FALSE für alle folgenden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Bei dem ersten Methodenaufruf von AdsEnumSymbols() müssen Sie den Parameter bNext auf FALSE setzen. Dadurch werden alle Informationen über die erste Variable ausgelesen. Bei jeden weiteren Aufruf von AdsEnumSymbols() muss der Parameter auf TRUE stehen. Dadurch werden die Informationen von der folgenden Variable ausgelesen.

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.
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.

Beispiel

Visual Basic Beispiel: 'SPS-Variablendeklaration auslesen'


AdsSetFirstDynSymbol

Mit dieser Methode kann die Liste der deklarierten Variablen aus einem ADS-Gerät ausgelesen werden.

object.AdsSetFirstDynSymbol(
  bForceReload               As Boolean)
As Long

Parameter

bForceReload

[in] TRUE wenn ein (neues) Laden der Symbolinformation vom Server gewünscht wird. Sind noch keine Symbolinformationen vorhanden, werden diese unabhängig von bForceReload geladen.

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Bei dem Methodenaufruf von AdsSetFirstDynSymbol() wird der interne "Zeiger" auf das akuelle Symbol, welches mit AdsGetNextDynSymbol() geladen werden kann, auf den Anfang zurück gesetzt.

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.
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.

Beispiel

Visual Basic Beispiel: 'SPS-Variablendeklaration auslesen'


AdsGetNextDynSymbol

Mit dieser Methode kann die Liste der deklarierten Variablen aus einem ADS-Gerät ausgelesen werden.

object.AdsGetNextDynSymbol(
  navType	       		As ADSGETDYNSYMBOLTYPE,
  bstrName         	As String,
  bstrFullName        	As String,
  bstrType          	As String,
  bstrComment          	As String,
  adsType         		As Long,
  symbolSize         	As Long,
  nIndexGroup         	As Long,
  nIndexOffset        	As Long)
As Long

Parameter

navType

[in] Navigationsvorgabe im Symbolbaum (siehe Datentyp ADSGETDYNSYMBOLTYPE)

bstrName

[out] Name des Symbol (Kurzform ohne vorangestellte Namen der Parents)

bstrFullName

[out] Vollständiger Name des Symbol

bstrType

[out] Name des Datentyps des Symbols

strComment

[out] Kommentar hinter der ADS-Variablendeklaration

adsType

[out] Datentyp der ADS-Variable (siehe Datentyp ADSDATATYPEID)

symbolSize

[out] Bytelänge des Symbols

nIndexGroup

[out] Index-Gruppe der ADS-Variable

nIndexOffset

[out] Index-Offset der ADS-Variable

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Beim navType ADSDYNSYM_GET_NEXT wird durch den gesamten Symbolbaum navigiert. Hiermit können auf einfache Weise alle Symbole ausgelesen werden. Die drei anderen navTypes können zur gesteuerten Navigation durch den Symbolbaum benutzt 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.
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.

Beispiel

Visual Basic Beispiel: 'SPS-Variablendeklaration auslesen'


AdsLogFmtString

Setzt eine Meldung über den TwinCAT-Router ab.

object.AdsLogFmtString(
  nMsgType     As ADSLOGMSGTYPE,
  strFmt       As String,
  arg0         As Variant,
  arg1         As Variant,
  arg2         As Variant,
  arg3         As Variant)
As Long

Parameter

nMsgType

[in] Art der Meldung (siehe Datentyp ADSLOGMSGTYPE)

strFmt

[in] Meldetext der abgesetzt werden soll

arg0

[in] 1. Parameter im Meldetext

arg1

[in] 2. Parameter im Meldetext

arg2

[in] 3. Parameter im Meldetext

arg3

[in] 4. Parameter im Meldetext

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Die abgesetzte Meldung wird bei allen ADS-Geräten signalisiert, bei denen die Filterbedingungen erfüllt sind. Außerdem wird die abgesetzte Meldung in den Event Logger von Windows NT/2000/XP geschrieben.

Es gibt drei Arten von Meldungen: Hinweis, Warnung und Fehler. Die abgesetzte Meldung muss einer dieser drei Meldungarten angehören. In dem Meldestring können bis zu vier numerische Parameter angeben. Als Platzhalter können folgende Buchstaben benutzt werden:

Platzhalter | Bedeutung
%d | Platzhalter für eine Variable vom Typ Long/Integer
%f | Platzhalter für eine Variable vom Typ Single/Double
%x | Platzhalter für eine Variable vom Typ Hexadezimal
%X | Platzhalter für eine Variable vom Typ Hexadezimal

Dabei wird der erste Platzhalter mit dem ersten Parameter (arg0) belegt, der zweite Platzhalter mit dem zweiten Parameter (arg1), usw.

Achten Sie darauf, dass nicht zu viele Meldungen in kurzer Zeit übertragen werden, da dieses das Gesamtsystem sonst beeinträchtigen könnte.

Tip: Wollen Sie in Ihrem Programm Meldungen protokollieren (z.B. Störungen einer Maschine), so sollten Sie dafür den TwinCAT-Event Logger benutzen. Dieser ist deutlich leistungsfähiger als der Event Logger von Windows NT/2000/XP und auf die Anforderungen der Automatisierungstechnik abgestimmt.

Beispiel

Visual Basic Beispiel: 'Meldungen über den TwinCAT-Router senden/empfangen'


AdsReadSymbolDesc

Mit der Methode AdsReadSymbolDesc() können Informationen einzelner Symbole (Variablen) von ADS-Geräten ermittelt werden.

object.AdsReadSymbolDesc(
  strSymbolName       As String,
  nSymbolType         As ADSDATATYPEID,
  cbSymbolSize        As Long,
  strComment          As String,
  nIndexGroup         As Long,
  nIndexOffset        As Long)
As Long

Parameter

strSymbolName

[in] Name der ADS-Variable, von der die Informationen ausgelesen werden sollen

nSymbolType

[out] Datentyp der ADS-Variable (siehe Datentyp ADSDATATYPID)

cbSymbolSize

[out] Datenlänge der ADS-Variable in Byte

strComment

[out] Kommentar hinter der ADS-Variablendeklaration

nIndexGroup

[out] Index-Gruppe der ADS-Variable

nIndexOffset

[out] Index-Offset der ADS-Variable

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wollen Sie die Informationen aller ADS-Variablen aus einem ADS-Gerät auslesen, so finden Sie dieses im Beispiel 'SPS-Variablendeklaration auslesen'.

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.
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.

Beispiel

-


AdsReadSymbolInfo

Mit der Methode AdsReadSymbolInfo() können Informationen über die Symbole (Variablen) von ADS-Geräten ermittelt werden.

object.AdsReadSymbolInfo(
  pSymbolsAvailable   As Long,
  pBufSizeNeeded      As Long)
As Long

Parameter

pSymbolsAvailable

[out] Anzahl der Symbole im ADS-Gerät

pBufSizeNeeded

[out] Länge der Daten in Byte, in der die Symbolinformationen gespeichert werden sollen

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Bevor mit der Methode AdsEnumSymbols() die Symbolliste auslesen werden kann, muß mit der Methode AdsReadSymbolInfo() die Anzahl der Symbole und die Größe der Symbolliste ermittelt 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.
Hinweis zur NC: Im System-Manager muß 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.

Beispiel

Visual Basic Beispiel: 'SPS-Variablendeklaration auslesen'


AdsSyncWriteControlReq

Ändert den Status eines ADS-Gerätes.

object.AdsSyncWriteControlReq(
  ADSSTATE     As Long,
  deviceState  As Long,
  length       As Long,
  pData        As Integer)
As Long

Parameter

ADSSTATE

[in] neuer Zustand des ADS-Gerätes (siehe Datentyp ADSSTATE)

deviceState

[in] reserviert

length

[in] Länge der Daten in Byte

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabeparameter

siehe ADS-Fehlercodes.

Bemerkungen

Außer dem Ändern des ADS-Status ist es zusätzlich noch möglich Daten zum ADS-Gerät zu schicken. Ob und wie diese Daten ausgewertet werden, ist von den einzelnen ADS-Geräten abhängig. Die mit TwinCAT ausgelieferten ADS-Geräte (SPS, NC/NCI, Nockenschaltwert, ...) werten diese Informationen nicht aus.

Beispiel

Visual Basic Beispiel: 'Statusänderung vom TwinCAT-Router und der SPS erkennen/verändern'


AdsWriteControlReq

Ändert den ADS-Status und den Geräte-Status von dem ADS-Server.

object.AdsWriteControlReq(
  nInvokeId     As Long,
  nAdsState     As Long,
  nDeviceState  As Long,
  cbLength      As Long,
  pData         As Integer)
As Long

Parameter

nInvokeId

[in] Auftragsnummer zur Identifizierung der Antwort

nAdsState

[in] neuer ADS-Status (siehe Datentyp ADSSTATE)

nDeviceState

[in] neuer Geräte-Status

cbLength

[in] Länge der Daten in Byte

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Außer dem Ändern von dem ADS-Status und dem Geräte-Status ist es zusätzlich noch möglich, Daten zum ADS-Server zu schicken, um weitere Informationen zu übertragen. Bei den aktuellen ADS-Geräten (PLC, NC, ...) werden diese Daten nicht weiter ausgewertet.
Jedes ADS-Gerät kann seinen aktuellen Zustand anderen ADS-Geräten mitteilen. Dabei wird zwischen den Status des Gerätes selber (DeviceState) und dem Status der ADS-Schnittstelle von dem ADS-Gerät (AdsState) unterschieden. Die möglichen Zustände, die die ADS-Schnittstelle annehmen kann, ist durch die ADS-Spezifikation festgelegt.

Beispiel

-


ShowPropertyPages

Zeigt das Eigenschaftsfenster vom ADS-OCX an.

object.ShowPropertyPages( ) As Long

Parameter

-

Rückgabewert

siehe ADS-Fehlercodes.

Anmerkungen

-

Beispiel


AdsSyncReadBoolVarReq

AdsSyncReadIntegerVarReq

AdsSyncReadLongVarReq

AdsSyncReadSingleVarReq

AdsSyncReadDoubleVarReq

AdsSyncReadStringVarReq

Liest synchron Daten von einem ADS-Gerät an und schreibt diese in eine Visual Basic-Variable vom Typ Boolean, Integer, Long, Single, Double oder String.

object.AdsSyncRead[Datatype]VarReq(
  hVar      As Long,
  cbLength  As Long,
  pData     As [Datatype])
As Long

Parameter

hVar

[in] Handle der ADS-Variable (siehe Methode AdsCreateVarHandle())

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Achtung: Im Falle eines Fehlers wird die VB-Variable (pData), deren Wert beschrieben werden sollte, auf "0" gesetzt.

Bemerkungen

Die Ausführung des Visual Basic-Programms wird so lange angehalten, bis die Daten vom ADS-Gerät vorliegen oder bis die Zeit in der Eigenschaft AdsAmsCommTimeout überschritten ist.
Anmerkung zum Datentyp String: Bei der Länge der Daten ist zu beachten, dass sich diese auf die Länge der Variable im Visual Basic Programm bezieht. Da Visual Basic ein Zeichen mit 2 Byte darstellt, muss die Länge der Variable mit LenB() ermittelt werden, nicht mit Len().

VB Beispiel

Dim hVar As Long
Dim VBVar As Single
'Handle der SPS-Variable holen
Call AdsOcx1.AdsCreateVarHandle("MAIN.PLCVar", hVar)
'Variable auslesen
Call AdsOcx1.AdsSyncReadSingleVarReq(hVar, 4&, VBVar)
'Variablen anzeigen
Label1.Caption = VBVar
'Handle wieder freigeben
Call AdsOcx1.AdsDeleteVarHandle(hVar)
Dim hVar As Long
Dim VBVar As String
'Handle der SPS-Variable holen
Call AdsOcx1.AdsCreateVarHandle("MAIN.PLCVar", hVar)
'Visual Basic initialisieren
VBVar = Space(10)
'Variable auslesen
Call AdsOcx1.AdsSyncReadStringVarReq(hVar, LenB(VBVar), VBVar)
'Variablen anzeigen
Label1.Caption = VBVar
'Handle wieder freigeben
Call AdsOcx1.AdsDeleteVarHandle(hVar)

Delphi Beispiel

procedure TForm1.Button1Click(Sender: TObject);
var     res1, res2, res3 :integer;
        //handles
        hBoolean, hSmallint, hLongint, hSingle, hDouble, hString : integer;
        //read buffer
        vWordBool : WordBool;
        vSmallint : Smallint;
        vLongint : Longint;
        vSingle : Single;
        vDouble : Double;
        vString : WideString;
begin
        res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vBOOL', hBoolean );
        res2 :=  AdsOcx1.AdsSyncReadBoolVarReq( hBoolean, sizeof(vWordBool), vWordBool );
        res3 := AdsOcx1.AdsDeleteVarHandle( hBoolean );
        Label1.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %s', [res1, res2, res3, BoolToStr(vWordBool, TRUE)]);

        res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vINT', hSmallint );
        res2 :=  AdsOcx1.AdsSyncReadIntegerVarReq( hSmallint, sizeof(vSmallint), vSmallint );
        res3 := AdsOcx1.AdsDeleteVarHandle( hSmallint );
        Label2.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %d', [res1, res2, res3, vSmallint]);

        res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vDINT', hLongint );
        res2 :=  AdsOcx1.AdsSyncReadLongVarReq( hLongint, sizeof(vLongint), vLongint );
        res3 := AdsOcx1.AdsDeleteVarHandle( hLongint );
        Label3.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %d', [res1, res2, res3, vLongint]);

        res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vREAL', hSingle );
        res2 :=  AdsOcx1.AdsSyncReadSingleVarReq( hSingle, sizeof(vSingle), vSingle );
        res3 := AdsOcx1.AdsDeleteVarHandle( hSingle );
        Label4.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %f', [res1, res2, res3, vSingle]);

        res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vLREAL', hDouble );
        res2 :=  AdsOcx1.AdsSyncReadDoubleVarReq( hDouble, sizeof(vDouble), vDouble );
        res3 := AdsOcx1.AdsDeleteVarHandle( hDouble );
        Label5.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %f', [res1, res2, res3, vDouble]);

        res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vSTRING', hString );
        SetLength(vString,80{standard length of the PLC string variable});
        res2 :=  AdsOcx1.AdsSyncReadStringVarReq( hString, Length(vString)*2{byte length!}, vString );
        res3 := AdsOcx1.AdsDeleteVarHandle( hString );
        Label6.Caption := Format('res1: %d, res2: %d, res3: %d,  Length: %d, Value: %s', [res1, res2, res3, Length(vString), vString]);
end;


AdsSyncReadReq

Liest Daten von einem beliebigen Typ synchron aus einem ADS-Gerät.

object.AdsSyncReadReq(
  nIndexGroup   As Long,
  nIndexOffset  As Long,
  cbLength      As Long,
  pData         As YY)
As Long

Parameter

nIndexGroup

[in] Index-Gruppe der ADS-Variable

nIndexOffset

[in] Index-Offset der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Achtung: Im Falle eines Fehlers wird die VB-Variable (pData), deren Wert beschrieben werden sollte, auf "0" gesetzt.

Bemerkung

Die Ausführung des Visual Basic-Programms wird so lange angehalten, bis die Daten vom ADS-Gerät vorliegen oder bis die Zeit in der Eigenschaft AdsAmsCommTimeout überschritten ist.
Die Visual Basic-Variable muss als Array deklariert werden. An die Methode wird das gesamte Array übergeben.
Es wird nicht der Variablentyp String unterstützt.

Beispiel

Dim VBVarInteger(0) As Integer
Dim VBVarLong(0) As Long
Dim VBVarSingle(0) As Single
Dim VBVarDouble(0) As Double
Dim VBVarByte(0) As Byte
Dim VBVarBool(0) As Boolean

'Variablen auslesen
Call AdsOcx1.AdsSyncReadReq(&H4020&, 0&, 2&, VBVarInteger)
Call AdsOcx1.AdsSyncReadReq(&H4020&, 2&, 4&, VBVarLong)
Call AdsOcx1.AdsSyncReadReq(&H4020&, 6&, 4&, VBVarSingle)
Call AdsOcx1.AdsSyncReadReq(&H4020&, 10&, 8&, VBVarDouble)
Call AdsOcx1.AdsSyncReadReq(&H4020&, 18&, 1&, VBVarByte)
Call AdsOcx1.AdsSyncReadReq(&H4021&, 152&, 2&, VBVarBool)

'Variablen anzeigen
lblInteger.Caption = VBVarInteger(0)
lblLong.Caption = VBVarLong(0)
lblSingle.Caption = VBVarSingle(0)
lblDouble.Caption = VBVarDouble(0)
lblByte.Caption = VBVarByte(0)
lblBool.Caption = VBVarBool(0)


AdsSyncReadBoolReq

AdsSyncReadIntegerReq

AdsSyncReadLongReq

AdsSyncReadSingleReq

AdsSyncReadDoubleReq

AdsSyncReadStringReq

Liest synchron Daten von einem ADS-Gerät an und schreibt diese in eine Visual Basic-Variable vom Typ Boolean, Integer, Long, Single, Double oder String.

object.AdsSyncRead[Datatype]Req(
  nIndexGroup     As Long,
  nIndexOffset    As Long,
  cbLength        As Long,
  pData           As [Datatype])
As Long

Parameter

nIndexGroup

[in] Index-Gruppe der ADS-Variable

nIndexOffset

[in] Index-Offset der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Achtung: Im Falle eines Fehlers wird die VB-Variable (pData), deren Wert beschrieben werden sollte, auf "0" gesetzt.

Bemerkungen

Die Ausführung des Visual Basic-Programms wird so lange angehalten, bis die Daten vom ADS-Gerät vorliegen oder bis die Zeit in der Eigenschaft AdsAmsCommTimeout überschritten ist.
Anmerkung zum Datentyp String: Bei der Länge der Daten ist zu beachten, dass sich diese auf die Länge der Variable im Visual Basic Programm bezieht. Da Visual Basic ein Zeichen mit 2 Byte darstellt, muss die Länge der Variable mit LenB() ermittelt werden, nicht mit Len().

VB Beispiel

Dim VBVar As Long
'Wert auslesen
Call AdsOcx1.AdsSyncReadLongReq(&H4020&, 0&, 8&, VBVar)
'Variablen anzeigen
Label1.Caption = VBVar
Dim VBVar As String
'Visual Basic Variable initialisieren
VBVar = Space(10)
"Wert aus Variable auslesen
Call AdsOcx1.AdsSyncReadStringReq(&H4020&, 0&, LenB(VBVar), VBVar)
'Variablen in Form anzeigen
Label1.Caption = VBVar

Delphi Beispiel

procedure TForm1.Button2Click(Sender: TObject);
var     res :integer;
        //read buffer
        vWordBool : WordBool;
        vSmallint : Smallint;
        vLongint : Longint;
        vSingle : Single;
        vDouble : Double;
        vString : WideString;
begin
        res :=  AdsOcx1.AdsSyncReadBoolReq( $4020, 0, sizeof(vWordBool), vWordBool );
        Label1.Caption := Format('res: %d,  Value: %s', [res, BoolToStr(vWordBool, TRUE)]);

        res :=  AdsOcx1.AdsSyncReadIntegerReq( $4020, 2, sizeof(vSmallint), vSmallint );
        Label2.Caption := Format('res: %d,  Value: %d', [res, vSmallint]);

        res :=  AdsOcx1.AdsSyncReadLongReq( $4020, 4, sizeof(vLongint), vLongint );
        Label3.Caption := Format('res: %d,  Value: %d', [res, vLongint]);

        res :=  AdsOcx1.AdsSyncReadSingleReq( $4020, 16, sizeof(vSingle), vSingle );
        Label4.Caption := Format('res: %d,  Value: %f', [res, vSingle]);

        res :=  AdsOcx1.AdsSyncReadDoubleReq( $4020, 32, sizeof(vDouble), vDouble );
        Label5.Caption := Format('res: %d,  Value: %f', [res, vDouble]);

        SetLength(vString,80{standard length of the PLC string variable});
        res :=  AdsOcx1.AdsSyncReadStringReq( $4020, 64, Length(vString)*2{byte length!}, vString );
        Label6.Caption := Format('res: %d,  Length: %d, Value: %s', [res, Length(vString), vString]);
end;


AdsSyncWriteBoolVarReq

TwinCAT ADS-OCX: Referenz

AdsSyncWriteBoolVarReq
AdsSyncWriteIntegerVarReq
AdsSyncWriteLongVarReq
AdsSyncWriteSingleVarReq
AdsSyncWriteDoubleVarReq
AdsSyncWriteStringVarReq

Fordert synchron Daten von einem ADS-Gerät an und schreibt diese in eine Visual Basic-Variable vom Typ Boolean, Integer, Long, Single, Double oder String.

object.AdsSyncWrite[Datatype]VarReq(
  hVar    As Long,
  length  As Long,
  pData   As [Datatype])
As Long

Parameter

hVar

[in] Handle der ADS-Variable (siehe Methode AdsCreateVarHandle())

length

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Die Ausführung des Visual Basic-Programms wird so lange angehalten, bis die Daten vom ADS-Gerät vorliegen oder bis die Zeit in der Eigenschaft AdsAmsCommTimeout überschritten ist.
Anmerkung zum Datentyp String: Bei der Länge der Daten ist zu beachten, dass sich diese auf die Länge der Variable im Visual Basic Programm bezieht. Da Visual Basic ein Zeichen mit 2 Byte darstellt, muss die Länge der Variable mit LenB() ermittelt werden, nicht mit Len().

Beispiel

Dim hVar As Long
Dim VBVar As Double
Call AdsOcx1.AdsCreateVarHandle("MAIN.PLCVar", hVar)
VBVar = 3,1415
Call AdsOcx1.AdsSyncWriteDoubleVarReq(hVar, 8&, VBVar)
Call AdsOcx1.AdsDeleteVarHandle(hVar)
Dim hVar As Long
Dim VBVar As String
'Handle holen
Call AdsOcx1.AdsCreateVarHandle("MAIN.PLCVar", hVar)
VBVar = "TwinCAT"
Call AdsOcx1.AdsSyncWriteStringVarReq(hVar, LenB(VBVar), VBVar)
'Handle freigeben
Call AdsOcx1.AdsDeleteVarHandle(hVar)


AdsSyncWriteReq

Schreibt Daten von einen beliebigen Typ synchron in ein ADS-Gerät.

object.AdsSyncWriteReq(
  nIndexGroup    As Long,
  nIndexOffset   As Long,
  cbLength       As Long,
  pData          As YY)
As Long

Parameter

nIndexGroup

[in] Index-Gruppe der ADS-Variable

nIndexOffset

[in] Index-Offset der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Die Ausführung des Visual Basic-Programms wird so lange angehalten, bis das ADS-Gerät die Daten empfangen hat oder bis die Zeit in der Eigenschaft AdsAmsCommTimeout überschritten ist.
Die Visual Basic-Variable muss als Array deklariert werden. An die Methode wird das gesamte Array übergeben.
Es wird nicht der Variablentyp String unterstützt.

Beispiel

Dim VBVarInteger(0) As Integer
Dim VBVarLong(0) As Long
Dim VBVarSingle(0) As Single
Dim VBVarDouble(0) As Double
Dim VBVarByte(0) As Byte
Dim VBVarBoolean(0) As Boolean

VBVarInteger(0) = 123
VBVarLong(0) = 456
VBVarSingle(0) = 3,1415
VBVarDouble(0) = 2,876
VBVarByte(0) = 7
VBVarBoolean(0) = False

'Werte in SPS schreiben
Call AdsOcx1.AdsSyncWriteReq(&H4020&, 0&, 2&, VBVarInteger)
Call AdsOcx1.AdsSyncWriteReq(&H4020&, 2&, 4&, VBVarLong)
Call AdsOcx1.AdsSyncWriteReq(&H4020&, 6&, 4&, VBVarSingle)
Call AdsOcx1.AdsSyncWriteReq(&H4020&, 10&, 8&, VBVarDouble)
Call AdsOcx1.AdsSyncWriteReq(&H4020&, 18&, 1&, VBVarByte)
Call AdsOcx1.AdsSyncWriteReq(&H4021&, 152&, 2&, VBVarBoolean)


AdsSyncWriteBoolReq

TwinCAT ADS-OCX: Referenz

AdsSyncWriteBoolReq
AdsSyncWriteIntegerReq
AdsSyncWriteLongReq
AdsSyncWriteSingleReq
AdsSyncWriteDoubleReq
AdsSyncWriteStringReq

Schreibt synchron Daten aus einer Visual Basic-Variable vom Typ Boolean, Integer, Long, Single, Double oder String in ein Datum eines ADS-Gerätes.

object.AdsSyncWrite[Datatype]Req(
  indexGroup   As Long,
  indexOffset  As Long,
  length       As Long,
  pData        As [Datatype])
As Long

Parameter

indexGroup

[in] Index-Gruppe der ADS-Variable

indexOffset

[in] Index-Offset der ADS-Variable

length

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Die Ausführung des Visual Basic-Programms wird so lange angehalten, bis das ADS-Gerät die Daten empfangen hat oder bis die Zeit in der Eigenschaft AdsAmsCommTimeout überschritten ist.
Anmerkung zum Datentyp String: Bei der Länge der Daten ist zu beachten, dass sich diese auf die Länge der Variable im Visual Basic Programm bezieht. Da Visual Basic ein Zeichen mit 2 Byte darstellt, muss die Länge der Variable mit LenB() ermittelt werden, nicht mit Len().

Beispiel

Dim VBVar As Boolean
VBVar = True
Call AdsOcx1.AdsSyncWriteBoolReq(&H4021&, 0&, 2&, VBVar)
Dim VBVar As String
VBVar = "TwinCAT"
Call AdsOcx1.AdsSyncWriteStringReq(&H4020&, 0&, LenB(VBVar), VBVar)


AdsReadIntegerReq

TwinCAT ADS-OCX: Referenz

AdsReadIntegerReq
AdsReadLongReq
AdsReadSingleReq
AdsReadDoubleReq
AdsReadStringReq

Setzt ein Read-Request für ein Datum von Typ Integer, Long, Single, Double oder String ab.

object.AdsRead[Datatype]Req(
  nInvokeId     As Long,
  nIndexGroup   As Long,
  nIndexOffset  As Long,
  cbLength      As Long)
As Long

Parameter

nInvokeId

[in] Auftragsnummer zur Identifizierung der Antwort

nIndexGroup

[in] Index-Gruppe der ADS-Variable

nIndexOffset

[in] Index-Offset der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Nachdem ein Read-Request an das ADS-Gerät abgesetzt wurde, wird mit der Abarbeitung des Visual Basic-Programms fortgefahren. Sobald die Daten vorliegen, löst das ADS-OCX die Ereignisfunktion AdsRead[Datatype]Conf() aus, mit der die geforderten Daten übermittelt werden.
Beim Absetzen vom Read-Request muss eine Identifizierungsnummer mit angegeben werden, die später beim Aufruf der Ereignisfunktion wieder zurückgegeben wird. Dadurch ist eine Zuordnung zwischen Read-Request und der Ereignisfunktion möglich.
Anmerkung zum Datentyp String: Bei der Länge der Daten ist zu beachten, dass sich diese auf die Länge der Variable im Visual Basic Programm bezieht. Da Visual Basic ein Zeichen mit 2 Byte darstellt, muss die Länge der Variable mit LenB() ermittelt werden, nicht mit Len().

Beispiel

Dim nInvokeId As Long
nInvokeId = 1
'Lesen von MW0 aus der SPS
Call AdsOcx1.AdsReadIntegerReq(nInvokeId, &H4020&, 0&, 4&)

Private Sub AdsOcx1_AdsReadIntegerConf(ByVal nInvokeId As Long, ByVal nResult As Long, ByVal cbLength As Long, pData As Integer)
    If (nInvokeId = 1) And (nResult = 0) Then
        'Daten anzeigen
        Label1.Caption = pData
    End If
End Sub
Dim nInvokeId As Long
nInvokeId = 1
'Lesen aus SPS
Call AdsOcx1.AdsReadStringReq(nInvokeId, &H4020&, 0&, 20&)

Private Sub AdsOcx1_AdsReadStringConf(ByVal nInvokeId As Long, ByVal nResult As Long, ByVal cbLength As Long, ByVal pData As String)
    If (nInvokeId = 1) And (nResult = 0) Then
        'Daten anzeigen
        Label1.Caption = pData
    End If
End Sub


AdsWriteIntegerReq

TwinCAT ADS-OCX: Referenz

AdsWriteIntegerReq
AdsWriteLongReq
AdsWriteSingleReq
AdsWriteDoubleReq
AdsWriteStringReq

Setzt ein Read-Request für ein Datum von Typ Integer, Long, Single, Double oder String ab.

object.AdsWrite[Datatype]Req(
  nInvokeId     As Long,
  nIndexGroup   As Long,
  nIndexOffset  As Long,
  cbLength      As Long,
  pData         As [Datatype])
As Long

Parameter

nInvokeId

[in] Auftragsnummer zur Identifizierung der Antwort

nIndexGroup

[in] Index-Gruppe der ADS-Variable

nIndexOffset

[in] Index-Offset der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Nachdem das Write-Request an das ADS-Gerät abgesetzt wurde, wird mit der Abarbeitung des Visual Basic-Programms fortgefahren. Sobald die Daten geschrieben wurden, löst das ADS-OCX die Ereignisfunktion AdsWriteConf() aus.
Beim Absetzen vom Write-Request muß eine Identifizierungsnummer mit angegeben werden, die später beim Aufruf der Ereignisfunktion wieder zurückgegeben wird. Dadurch ist eine Zuordnung zwischen Write-Request und der Ereignisfunktion möglich.
Anmerkung zum Datentyp String: Bei der Länge der Daten ist zu beachten, dass sich diese auf die Länge der Variable im Visual Basic Programm bezieht. Da Visual Basic ein Zeichen mit 2 Byte darstellt, muss die Länge der Variable mit LenB() ermittelt werden, nicht mit Len().

Beispiel

Dim VBVar As Integer
Dim nInvokeId As Long
VBVar = 100
nInvokeId = 1
Call AdsOcx1.AdsWriteIntegerReq(nInvokeId, &H4020&, 0&, 2&, VBVar)

Private Sub AdsOcx1_AdsWriteConf(ByVal nInvokeId As Long, ByVal nResult As Long)
    If (nResult <> 0) Then MsgBox ("Error AdsWriteConf " & nResult)
End Sub
Dim VBVar As String
Dim InvokeId As Long
VBVar = "TwinCAT"
InvokeId = 1
Call AdsOcx1.AdsWriteStringReq(InvokeId, &H4020&, 0&, LenB(VBVar), VBVar)

Private Sub AdsOcx1_AdsWriteConf(ByVal nInvokeId As Long, ByVal nResult As Long)
    If (nResult <> 0) Then MsgBox ("Error AdsWriteConf " & nResult)
End Sub


AdsReadVarConnectEx

Stellt eine feste Verbindung zwischen einer Visual Basic-Variablen und einem Datum aus einem ADS-Gerät her.

object.AdsReadVarConnectEx(
  adsVarName       As String,
  nRefreshType     As ADSOCXTRANSMODE,
  nCycleTime       As Long,
  phConnect        As Long
  hUser            As Variant)
As Long

Parameter

adsVarName

[in] Name der ADS-Variable

nRefreshType

[in] Art des Datenaustausches zwischen 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!).

hUser

[in] Optional: Dieser Wert wird beim Aufruf des Ereignis AdsReadConnectUpdateEx() ü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.

Hinweis zum Einsatz unter Borland Delphi: Beim Aufruf der dazugehörigen Ereignisfunktion AdsReadConnectUpdateEx() werden die OleVariant-Parameter an die Delphi-Applikation nicht richtig übergeben. Die Methode AdsReadVarConnectEx2() mit der dazugehörigen Ereignissfunktion AdsReadConnectUpdateEx2() bietet die gleiche Funktionalität wie die Methode AdsReadVarConnectEx/AdsReadConnectUpdateEx. Bitte benutzen Sie diese Methode/Ereignis in Delphi-Applikationen. In Visual Basic-Applikationen können beide Methoden benutzt werden.

Beispiel

Visual Basic Beispiel: 'Ereignisgesteuertes Lesen'


AdsReadVarConnectEx2

Stellt eine feste Verbindung zwischen einer Visual Basic-Variablen und einem Datum aus einem ADS-Gerät her.

object.AdsReadVarConnectEx2(
  adsVarName       As String,
  nRefreshType     As ADSOCXTRANSMODE,
  nCycleTime       As Long,
  phConnect        As Long
  hUser            As Variant)
As Long

Parameter

adsVarName

[in] Name der ADS-Variable

nRefreshType

[in] Art des Datenaustausches zwischen 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!).

hUser

[in] Optional: Dieser Wert wird beim Aufruf des Ereignis AdsReadConnectUpdateEx2() ü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.

Hinweis zum Einsatz unter Borland Delphi: Beim Aufruf der Ereignisfunktion AdsReadConnectUpdateEx() werden die OleVariant-Parameter an die Delphi-Applikation nicht richtig übergeben. Bitte benutzen Sie die Methode AdsReadVarConnectEx2 und das dazugehörige Ereignis in Delphi-Applikationen. In Visual Basic-Applikationen können beide Methoden/Ereignisse benutzt werden.

Beispiel

Visual Basic: 'Ereignisgesteuertes Lesen'


AdsReadVarConvertConnect

Ab TwinCAT 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(
  adsVarName       	As String,
  nRefreshType     	As ADSOCXTRANSMODE,
  nCycleTime       	As Long,
  phConnect       		As 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)


AdsReadBoolVarConnect

TwinCAT ADS-OCX: Referenz

AdsReadBoolVarConnect
AdsReadIntegerVarConnect
AdsReadLongVarConnect
AdsReadSingleVarConnect
AdsReadDoubleVarConnect
AdsReadStringVarConnect

Stellt eine feste Verbindung zwischen einer Visual Basic-Variablen vom Typ Boolean, Integer, Long, Single, Double oder String und einem Datum aus einem ADS-Gerät her.

object.AdsRead[Datatype]VarConnect(
  adsVarName         As String,
  cbLength           As Long,
  nRefreshType       As Integer,
  nCycleTime         As Integer,
  pData              As [Datatype])
As Long

Parameter

adsVarName

[in] Name der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

nRefreshType

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

nCycleTime

[in] Lese-Zyklus in ms

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkung

Bei Änderung der SPS-Variablen wird das Ereignis AdsReadConnectUpdate() ausgelöst.
Wird die Verbindung zu einer ADS-Variablen nicht mehr benötigt, sollte diese über die Methode AdsRead[Datentyp]Disconnect() 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.
Es wird pro SPS-Variabel nur ein Handle erzeugt, d.h. beim Verbinden mehrerer Variablen auf eine SPS-Variabel wird bei Änderungen entsprechend mehrmals das Ereignis AdsReadConnectUpdate() mit dem selben Handle aufgerufen.
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.
Wenn eine Variable aus der SPS mit einer Visual Basic-Variablen verbunden wird, müssen Sie als Länge 2 angeben, da Visual Basic Boolean-Variablen intern mit 2 Byte verwaltet.
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.

Diese Methode wurde durch AdsReadVarConnectEx() ersetzt. Benutzen Sie in Zunkunft AdsReadVarConnectEx() da AdsReadBoolVarConnect() nicht weiter geflegt wird und nur noch aus Kompatibilitätsgründen enthalten sein wird.

Beispiel

-


AdsDisconnectEx

Beendet eine feste Verbindung zwischen einer Visual Basic-Variablen und einem Datum aus einem ADS-Gerät.

object.AdsDisconnectEx(
  hConnect As Long)
As Long

Parameter

hConnect

[in] Handle der Verbindung zwischen der Visual Basic-Variablen und der ADS-Variablen

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung zu einer ADS-Variablen nicht mehr benötigt, sollte die Verbindung über die Methode AdsDisconnectEx() beendet 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. Siehe auch Methode AdsReadVarConnectEx().

Beispiel

Visual Basic Beispiel: 'Ereignisgesteuertes Lesen'


AdsReadConnect

Stellt eine feste Verbindung zwischen einer Visual Basic-Variablen und einem Datum aus einem ADS-Gerät her.

object.AdsReadConnect(
  nIndexGroup       As Long,
  nIndexOffset      As Long,
  cbLength          As Long,
  nRefreshType      As ADSOCXTRANSMODE,
  nCycleTime        As Integer,
  pData             As Variant)
As Long

Parameter

nIndexGroup

[in] Index-Gruppe der ADS-Variable

nIndexOffset

[in] Index-Offset der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

nRefreshType

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

nCycleTime

[in] Lese-Zyklus in ms

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung zu einer ADS-Variablen nicht mehr benötigt, sollte dieses über die Methode AdsReadDisconnect() 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. Der Variablentyp String wird von der Methode AdsReadConnect() nicht unterstützt.

Beispiel

Dim VBVarInteger(0) As Integer
Dim VBVarSingle(0) As Single
Dim VBVarBoolean(0) As Boolean

'wird beim Starten des Programms aufgerufen
Private Sub Form_Load()
  'Verbindung zu den Variablen in der SPS herstellen
  Call AdsOcx1.AdsReadConnect(&H4020&, 0&, 2&, ADSTRANS_SERVERONCHA, 55, VBVarInteger)
  Call AdsOcx1.AdsReadConnect(&H4020&, 2&, 4&, ADSTRANS_SERVERONCHA, 55, VBVarSingle)
  Call AdsOcx1.AdsReadConnect(&H4021&, 48&, 2&, ADSTRANS_SERVERONCHA, 55, VBVarBoolean)
End Sub

'wird beim Beenden des Programms aufgerufen
Private Sub Form_Unload(Cancel As Integer)
  'Verbindungen zu den Variablen in der SPS beenden
  Call AdsOcx1.AdsReadDisconnect(VBVarInteger)
  Call AdsOcx1.AdsReadDisconnect(VBVarSingle)
  Call AdsOcx1.AdsReadDisconnect(VBVarBoolean)
End Sub

'wird nach Änderung einer SPS-Variablen vom ADS-OCX aufgerufen
Private Sub AdsOcx1_AdsReadConnectUpdate(ByVal nIndexGroup As Long, ByVal nIndexOffset As Long)
  If (nIndexGroup = &H4020&) Then
    Select Case nIndexOffset
      Case 0: lblInteger.Caption = VBVarInteger(0)
      Case 2: lblSingle.Caption = VBVarSingle(0)
    End Select
  End If
  If (nIndexGroup = &H4021&) Then
    Select Case nIndexOffset
      Case 48: Shape1.BackColor = IIf(VBVarBoolean(0) = True, &HFF00&, &H8000&)
    End Select
  End If
End Sub


AdsReadDisconnect

Beendet eine feste Verbindung zwischen einer Visual Basic-Variablen und einem Datum aus einem ADS-Gerät.

object.AdsReadDisconnect(
  pData As Variant)
As Long

Parameter

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung zu einer ADS-Variablen nicht mehr benötigt, sollte die Verbindung über die Methode AdsReadDisconnect() beendet 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. Siehe auch Methode AdsReadConnect().

Beispiel

-


AdsReadBoolConnect

TwinCAT ADS-OCX: Referenz

AdsReadBoolConnect
AdsReadIntegerConnect
AdsReadLongConnect
AdsReadSingleConnect
AdsReadDoubleConnect
AdsReadStringConnect

Stellt eine zyklische Verbindung zwischen einer Visual Basic-Variablen vom Typ Boolean, Integer, Long, Single, Double oder String und einem Datum aus einem ADS-Gerät her.

object.AdsRead[Datatype]Connect(
  nIndexGroup       As Long,
  nIndexOffset      As Long,
  cbLength          As Long,
  nRefreshType      As Integer,
  nCycleTime        As Integer,
  pData             As [Datatype])
As Long

Parameter

nIndexGroup

[in] Index-Gruppe der ADS-Variable

nIndexOffset

[in] Index-Offset der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

nRefreshType

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

nCycleTime

[in] Lesezyklus in ms

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung zu der ADS-Variable nicht mehr benötigt, sollte dieses über die Methode AdsRead[Datatype]Disconnect() 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.
Anmerkung zum Datentyp String: Bei der Länge der Daten ist zu beachten, dass sich diese auf die Länge der Variable im Visual Basic Programm bezieht. Da Visual Basic ein Zeichen mit 2 Byte darstellt, muss die Länge der Variable mit LenB() ermittelt werden, nicht mit Len().

Beispiel

Dim VBVar As Integer

'wird beim Starten des Programms aufgerufen
Private Sub Form_Load()
    'Verbindung zwischen Merkerwort 0 der SPS und VBVar herstellen
    Call AdsOcx1.AdsReadIntegerConnect(&H4020&, 0&, 2&, 1, 110, VBVar)
End Sub

'wird beim Beenden des Programms aufgerufen
Private Sub Form_Unload(Cancel As Integer)
    'Verbindung zwischen den Variablen trennen
    Call AdsOcx1.AdsReadIntegerDisconnect(VBVar)
End Sub

'wird nach jedem Lesen vom ADS-OCX aufgerufen
Private Sub AdsOcx1_AdsReadConnectUpdate(ByVal nIndexGroup As Long, ByVal nIndexOffset As Long)
    'Variablen am Bildschirm anzeigen
    Label1.Caption = VBVar
End Sub
Dim VBVar As String

'wird beim Starten des Programms aufgerufen
Private Sub Form_Load()
    'Visual Basic Variable initialisieren
    VBVar = Space(10)
    'Verbindung zur Variable in der SPS herstellen
    Call AdsOcx1.AdsReadStringConnect(&H4020&, 0&, LenB(VBVar), 4, 110, VBVar)
End Sub

'wird beim Beenden des Programms aufgerufen
Private Sub Form_Unload(Cancel As Integer)
    'Verbindung zur Variable in SPS beenden
    Call AdsOcx1.AdsReadStringDisconnect(VBVar)
End Sub

'wird bei Veränderung der SPS-Variablen vom ADS-OCX aufgerufen
Private Sub AdsOcx1_AdsReadConnectUpdate(ByVal nIndexGroup As Long, ByVal nIndexOffset As Long)
    If (nIndexGroup = &H4020) And (nIndexOffset = 0) Then
        'Variablen in Form anzeigen
        Label1.Caption = VBVar
    End If
End Sub


AdsReadBoolDisconnect

TwinCAT ADS-OCX: Referenz

AdsReadBoolDisconnect
AdsReadIntegerDisconnect
AdsReadLongDisconnect
AdsReadSingleDisconnect
AdsReadDoubleDisconnect
AdsReadStringDisconnect

Beendet eine feste Verbindung zwischen einer Visual Basic-Variablen vom Typ Boolean, Integer, Long, Single, Double oder String und einem Datum aus einem ADS-Gerät.

object.AdsRead[Datatype]Disconnect(
  pData        As [Datatype])
As Long

Parameter

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird der Wert einer ADS-Variable nicht mehr benötigt, sollte die Verbindung mit der Methode AdsReadBoolDisconnect() beendet 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. Siehe auch Methode AdsRead[Datatype]VarConnect() und AdsRead[Datatype]Connect().

Beispiel

-


AdsWriteDisconnect

Beendet eine feste Verbindung zwischen einer Visual Basic-Variablen und dem Datum eines ADS-Gerätes.

object.AdsWriteDisconnect(
  pData As Variant)
As Long

Parameter

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung der ADS-Variable nicht mehr benötigt, sollte diese über die Methode AdsWriteDisconnect() 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.

Beispiel

-


AdsWriteBoolDisconnect

TwinCAT ADS-OCX: Referenz

AdsWriteBoolDisconnect
AdsWriteIntegerDisconnect
AdsWriteLongDisconnect
AdsWriteSingleDisconnect
AdsWriteDoubleDisconnect

Beendet eine feste Verbindung zwischen einer Visual Basic-Variablen vom Typ Boolean, Integer, Long, Single oder Double und einem Datum aus einem ADS-Gerät.

object.AdsWrite[Datatype]Disconnect(
  pData As [Datatype])
As Long

Parameter

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung der ADS-Variable nicht mehr benötigt, sollte diese über die Methode AdsWrite[Datatype]Disconnect() 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.

Beispiel

-


AdsWriteVarConnect

Stellt eine feste Verbindung zwischen einer Visual Basic-Variablen und einer Variablen von einem ADS-Gerät her.

object.AdsWriteVarConnect(
  adsVarName     As String,
  cbLength       As Long,
  nRefreshType   As ADSOCXTRANSMODE,
  nCycleTime     As Integer,
  pData          As Variant)
As Long

Parameter

adsVarName

[in] Name der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

nRefreshType

[in] Art des Datenaustausches zwischen VB-Variable und ADS-Variable (siehe Datentyp ADSOCXTRANSMODE). Die Methode AdsWriteVarConnect unterstützt (sinnvollerweise) nur den ADSTRANS_CLIENTCYCLE Modus. Der Wert der Visual Basic-Variablen wird dabei zyklisch zum ADS-Gerät geschrieben.

nCycleTime

[in] Schreib-Zyklus in ms

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung zu einer ADS-Variablen nicht mehr benötigt, sollte diese über die Methode AdsWriteDisconnect() 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.
Der Variablentyp String wird nicht unterstützt.
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-Namenn 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

Dim VBVarInteger(0) As Integer
Dim VBVarSingle(0) As Single
Dim VBVarBoolean(0) As Boolean

'wird beim Starten des Programms aufgerufen
Private Sub Form_Load()
  'Verbindung zu den Variablen in der SPS herstellen
  Call AdsOcx1.AdsWriteVarConnect("MAIN.PLCVarInteger", 2&, 1, 110, VBVarInteger)
  Call AdsOcx1.AdsWriteVarConnect("MAIN.PLCVarSingle", 4&, 1, 110, VBVarSingle)
  Call AdsOcx1.AdsWriteVarConnect("MAIN.PLCVarBoolean", 2&, 1, 110, VBVarBoolean)
End Sub

'wird beim Beenden des Programms aufgerufen
Private Sub Form_Unload(Cancel As Integer)
  'Verbindung zu den Variablen in der SPS beenden
  Call AdsOcx1.AdsWriteDisconnect(VBVarInteger)
  Call AdsOcx1.AdsWriteDisconnect(VBVarSingle)
  Call AdsOcx1.AdsWriteDisconnect(VBVarBoolean)
End Sub

'wird vom Bediener aufgerufen
Private Sub cmd_write_Click()
  VBVarInteger(0) = CInt(txt_int.Text)
  VBVarSingle(0) = CSng(txt_single.Text)
  VBVarBoolean(0) = IIf(chk_boolean.Value = 1, True, False)
End Sub


AdsWriteBoolVarConnect

TwinCAT ADS-OCX: Referenz

AdsWriteBoolVarConnect
AdsWriteIntegerVarConnect
AdsWriteLongVarConnect
AdsWriteSingleVarConnect
AdsWriteDoubleVarConnect

Stellt eine feste Verbindung zwischen einer Visual Basic-Variablen vom Typ Boolean, Integer, Long, Single oder Double und einem ADS-Gerät her.

object.AdsWrite[Datatype]VarConnect(
  adsVarName     As String,
  cbLength       As Long,
  nRefreshType   As Integer,
  nCycleTime     As Integer,
  pData          As [Datatype])
As Long

Parameter

adsVarName

[in] Name der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

nRefreshType

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

nCycleTime

[in] Schreib-Zyklus in ms

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung zu einer ADS-Variablen nicht mehr benötigt, sollte diese über die Methode AdsWrite[Datatype]Disconnect() 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-Namenn 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

Dim VBVar As Integer

'wird beim Starten des Programms aufgerufen
Private Sub Form_Load()
    'Verbindung zur Variable in der SPS herstellen
    Call AdsOcx1.AdsWriteIntegerVarConnect("MAIN.PLCVar", 2&, 1, 110, VBVar)
End Sub

'wird beim Beenden des Programms aufgerufen
Private Sub Form_Unload(Cancel As Integer)
    'Verbindung zur Variable in SPS beenden
    Call AdsOcx1.AdsWriteIntegerDisconnect(VBVar)
End Sub

'wird vom Bediener aufgerufen
Private Sub cmd_write_Click()
    VBVar = CInt(Text1.Text)
End Sub


AdsWriteConnect

Stellt eine feste Verbindung zwischen einer Visual Basic-Variablen und einem ADS-Gerät her.

object.AdsWriteConnect(
  nIndexGroup     As Long,
  nIndexOffset    As Long,
  cbLength        As Long,
  nRefreshType    As ADSOCXTRANSMODE,
  nCycleTime      As Integer,
  pData           As Variant)
As Long

Parameter

nIndexGroup

[in] Index-Gruppe der ADS-Variable

nIndexOffset

[in] Index-Offset der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

nRefreshType

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

nCycleTime

[in] Schreib-Zyklus in ms

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung der ADS-Variable nicht mehr benötigt, sollte diese über die Methode AdsWriteDisconnect() 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.
Der Variablentyp String wird nicht unterstützt.

Beispiel

Dim VBVarInteger(0) As Integer
Dim VBVarSingle(0) As Single
Dim VBVarBoolean(0) As Boolean

'wird beim Starten des Programms aufgerufen
Private Sub Form_Load()
  'Verbindung zu den Variablen in der SPS herstellen
   Call AdsOcx1.AdsWriteConnect(&H4020&, 0&, 2&, ADSTRANS_CLIENTCYCLE, 55, VBVarInteger)
   Call AdsOcx1.AdsWriteConnect(&H4020&, 2&, 4&, ADSTRANS_CLIENTCYCLE, 55, VBVarSingle)
   Call AdsOcx1.AdsWriteConnect(&H4021&, 48&, 2&, ADSTRANS_CLIENTCYCLE, 55, VBVarBoolean)
End Sub

'wird beim Beenden des Programms aufgerufen
Private Sub Form_Unload(Cancel As Integer)
  'Verbindung zu den Variablen in der SPS beenden
  Call AdsOcx1.AdsWriteDisconnect(VBVarInteger)
  Call AdsOcx1.AdsWriteDisconnect(VBVarSingle)
  Call AdsOcx1.AdsWriteDisconnect(VBVarBoolean)
End Sub

'wird vom Bediener aufgerufen
Private Sub cmd_write_Click()
  VBVarInteger(0) = CInt(txt_int.Text)
  VBVarSingle(0) = CSng(txt_single.Text)
  VBVarBoolean(0) = IIf(chk_boolean.Value = 1, True, False)
End Sub


AdsWriteBoolConnect

TwinCAT ADS-OCX: Referenz

AdsWriteBoolConnect
AdsWriteIntegerConnect
AdsWriteLongConnect
AdsWriteSingleConnect
AdsWriteDoubleConnect

Stellt eine feste Verbindung zwischen einer Visual Basic-Variablen vom Typ Boolean, Integer, Long, Single oder Double und einem Datum aus einem ADS-Gerät her.

object.AdsWrite[Datatype]Connect(
  nIndexGroup      As Long,
  nIndexOffset     As Long,
  cbLength         As Long,
  nRefreshType     As Integer,
  nCycleTime       As Integer,
  pData            As [Datatype])
As Long

Parameter

nIndexGroup

[in] Index-Gruppe der ADS-Variable

nIndexOffset

[in] Index-Offset der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

nRefreshType

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

nCycleTime

[in] Schreib-Zyklus in ms

pData

[in] Visual Basic-Variable, aus der die Daten in die ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung der ADS-Variable nicht mehr benötigt, sollte diese über die Methode AdsWrite[Datatype]Disconnect() 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.

Beispiel

Dim VBVar As Integer

'wird beim Starten des Programms aufgerufen ---
Private Sub Form_Load()
    'Verbindung zur Variable herstellen
    Call AdsOcx1.AdsWriteIntegerConnect(&H4020&, 0&, 2&, 1, 110, VBVar)
End Sub

'wird beim Beenden des Programms aufgerufen
Private Sub Form_Unload(Cancel As Integer)
    'Verbindung zu den Variablen in SPS beenden
    Call AdsOcx1.AdsWriteIntegerDisconnect(VBVar)
End Sub

'wird durch den Bediener aufgerufen
Private Sub Cmd_write_Click()
    VBVar = CInt(Text1.Text)
End Sub


AdsAmsConnectTimeout

Dieses Ereignis wird aufgerufen, sobald bei einer "per Connect" verbundenen Variable eine Zeitüberschreitung auftritt.

object_AdsAmsConnectTimeout(
  nIndexGroup    As Long,
  nIndexOffset   As Long)

Parameter

nIndexGroup

[out] Index-Gruppe der ADS-Variable, bei der die Zeitüberschreitung aufgetreten ist.

nIndexOffset

[out] Index-Offset der ADS-Variable, bei der die Zeitüberschreitung aufgetreten ist.

Bemerkungen

Das Ereignis AdsAmsConnectTimeout wird nur aufgerufen, wenn die Art des Datenaustausches zwischen VB-Variable und ADS-Variable vom Client (ADSTRANS_CLIENTCYCLE) gesteuert wird.

Beispiel

-


AdsAmsTimeout

Dieses Ereignis wird aufgerufen, sobald bei einer asynchronen Lese- oder Schreibanfrage (read/write request) eine Zeitüberschreitung auftritt.

object_AdsAmsTimeout(
  nInvokeId      As Long)

Parameter

nInvokeId

[out] Identifikationsnummer der Anfrage (request), bei der die Zeitüberschreitung aufgetreten ist.

Bemerkungen

-

Beispiel

-


AdsConnectError

Falls im Server ein Fehler bei einer "per Connect" verbundenen Variable auftritt, wird dieses Ereignis aufgerufen.

object_AdsAmsConnectTimeout(
  nIndexGroup    As Long,
  nIndexOffset   As Long,
  errorCode      As Long)

Parameter

nIndexGroup

[out] Index-Gruppe der ADS-Variable, bei der der Fehler aufgetreten ist.

nIndexOffset

[out] Index-Offset der ADS-Variable, bei der der Fehler aufgetreten ist.

errorCode

[out] Fehlerstatus; siehe ADS-Fehlercodes

Bemerkungen

-

Beispiel

-


AdsLogNotification

Dieses Ereignis wird aufgerufen, sobald ein ADS-Gerät eine Nachricht abgesetzt hat und die zuvor definierten Filterbedingungen erfüllt sind.

object_AdsLogNotification(
  dateTime       As Date,
  nMs            As Long,
  dwMsgCtrl      As Long,
  nServerPort    As Long,
  szDeviceName   As String,
  szLogMsg       As String)

Parameter

dateTime

[out] Datum und Uhrzeit, als die Meldung vom ADS-Gerät abgesetzt wurde

nMs

[out] Millisekunden, als die Meldung vom ADS-Gerät abgesetzt wurde

dwMsgCtrl

[out] Filtermaske für die Art der Nachrichten die gemeldet werden sollen (siehe Datentyp ADSLOGMSGTYPE )

nServerPort

[out] Portnummer des ADS-Gerätes, welches die Meldung abgesetzt hat

szDeviceName

[out] Name des ADS-Gerätes, welches die Meldung abgesetzt hat

szLogMsg

[out] Nachricht, die vom ADS-Gerät abgesetzt wurde

Bemerkungen

Sobald ein ADS-Gerät eine Nachricht abgesetzt hat und die Filterbedingungen, die durch die Methode AdsEnableLogNotificaion() definiert wurden erfüllt sind, wird das Ereignis AdsLogNotification() ausgelöst. Anhand der übergebenen Parameter, kann die Meldung weiter ausgewertet werden.

Beispiel

Visual Basic Beispiel: 'Meldungen über den TwinCAT-Router senden/empfangen'


AdsReadConnectUpdate

Dieses Ereignis wird aufgerufen, wenn die Methode AdsReadYY(Var)Connect() aufgerufen wurde und der Wert aus dem ADS-Gerät gelesen wurde bzw. sich geändert hat.

object_AdsReadConnectUpdate(
  nIndexGroup    As Long,
  nIndexOffset   As Long)

Parameter

nIndexGroup

[out] Datum und Uhrzeit, als die Meldung vom ADS-Gerät abgesetzt wurde

nIndexOffset

[out] Millisekunden, als die Meldung vom ADS-Gerät abgesetzt wurde

Bemerkungen

Bei dem Ereignis AdsReadConnectUpdate() ist es nicht notwendig, dass der Wert mit übertragen wird, da das ADS-OCX im Hintergrund die Visual Basic Variable aktualisiert. Um Schreibzugriffe auf Anzeigeobjekte in der Form zu optimieren, sollte in der Ereignisfunktion abgefragt werden, welche Variable sich geändert hat und nur das Element auf der Form aktualisiert werden, welches den Wert anzeigt. Wurde eine VB-Variable per VarConnect mit einer ADS-Variablen verbunden, so wird bei dem Ereignis AdsReadConnectUpdate() im Parameter nIndexOffset der Handle der Variablen übergeben, in den Parameter nIndexGroup wird in diesen Fall der konstante Wert &HF005 übertragen. Damit Sie den nIndexOffset auswerten können, müssen Sie zuvor mit der Methode AdsCreateVarHandle() den Handle der ADS-Variablen holen. Dieses kann z.B. im Load-Ereignis der Form geschehen. Im Ereignis AdsReadConnectUpdate() wird dann abgefragt, welcher Variablenhandle in dem Parameter nIndexOffset übergeben wurde.
Wurde die Verbindung nicht mit dem Variablennamen angelegt, sondern mit der Variablenadresse, so wird in den Parametern nIndexGroup und nIndexOffset die Adresse der Variablen übertragen, die sich geändert hat.
Wenn die Verbindung zwischen VB-Variable und ADS-Variable beendet wird, sollte auch der Handle mit der Methode AdsDeleteVarHandle() wieder freigegeben werden.

Beispiel

-


AdsReadConnectUpdateEx

Dieses Ereignis wird aufgerufen, wenn die Methode AdsReadVarConnectEx() aufgerufen wurde und der Wert aus dem ADS-Gerät gelesen wurde bzw. sich geändert hat.

object_AdsReadConnectUpdateEx(
  ByVal dateTime        As Date,
  ByVal nMs             As Long,
  ByVal hConnect        As Long,
  ByVal data            As Variant,
  Optional ByVal hUser  As Variant)

Parameter

dateTime

[out] Zeitstempel

nHs

[out] Millisekunden vom Zeitstempel

hConnect

[out] Handle der Verbindung; wird durch die Methode AdsReadVarConnectEx() erzeugt

data

[out] Wert aus dem ADS-Gerät

hUser

[out] frei benutzbarer Wert; wird bei dem Aufruf der Methode AdsReadVarConnectEx() übergeben

Bemerkungen

-

Beispiel

Visual Basic Beispiel: 'Ereignisgesteuertes Lesen'


AdsReadConnectUpdateEx2

Dieses Ereignis wird aufgerufen, wenn die Methode AdsReadVarConnectEx2() aufgerufen wurde und der Wert aus dem ADS-Gerät gelesen wurde bzw. sich geändert hat.

object_AdsReadConnectUpdateEx2(
  ByVal dateTime        As Date,
  ByVal nMs             As Long,
  ByVal hConnect        As Long,
  ByRef data            As Variant,
  Optional ByRef hUser  As Variant)

Parameter

dateTime

[out] Zeitstempel

nHs

[out] Millisekunden vom Zeitstempel

hConnect

[out] Handle der Verbindung; wird durch die Methode AdsReadVarConnectEx2() erzeugt

data

[out] Wert aus dem ADS-Gerät

hUser

[out] frei benutzbarer Wert; wird bei dem Aufruf der Methode AdsReadVarConnectEx2() übergeben

Bemerkungen

Die Parameter data und hUser müssen ByRef übergeben werden (notwendig für den Einsatz unter Borland Delphi).

Beispiel

Visual Basic: 'Ereignisgesteuertes Lesen'


AdsReadConvertConnectUpdate

Ab TwinCAT TwinCAT 2.8 Build > 743 und höher.

Dieses Ereignis wird aufgerufen, wenn die Methode AdsReadVarConvertConnect() aufgerufen wurde und der Wert aus dem ADS-Gerät gelesen wurde bzw. sich geändert hat.

object_AdsReadConvertConnectUpdate(
      ByVal dateTime        As Date,
      ByVal nMs             As Long,
      ByVal hConnect        As Long,
      ByRef data            As Variant,
      Optional ByRef hUser  As Variant)

Parameter

dateTime

[out] Zeitstempel.

nHs

[out] Millisekunden vom Zeitstempel.

hConnect

[out] Handle der Verbindung; wird durch die Methode AdsReadVarConvertConnect() erzeugt.

data

[out] Wert aus dem ADS-Gerät. Der Datentyp der Variant-Variablen wurde als Parameter beim Aufruf von AdsReadVarConvertConnect() festgelegt.

hUser

[out] frei benutzbarer Wert; wird bei dem Aufruf der Methode AdsReadVarConvertConnect() übergeben.

Beispiel

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


AdsReadIntegerConf

TwinCAT ADS-OCX: Referenz

AdsReadIntegerConf
AdsReadLongConf
AdsReadSingleConf
AdsReadDoubleConf
AdsReadStringConf

Liefert das Ergebnis nach einen Aufruf der Methode AdsRead[Datatype]Req().

object_AdsRead[Datatype]Conf(
  nInvokeId        As Long,
  nResult          As Long,
  cbLength         As Long,
  pData            As [Datatype])

Parameter

nInvokeId

[out] Auftragsnummer zur Identifizierung der Antwort

nResult

[out] Fehlerstatus; siehe ADS-Fehlercodes

cbLength

[out] Länge der Daten in Byte

pData

[out] ausgelesende Daten aus dem ADS-Gerät

Bemerkungen

Nachdem ein Read-Request an das ADS-Gerät abgesetzt wurde, wird mit der Abarbeitung des Visual Basic-Programms fortgefahren. Sobald die Daten vorliegen, löst das ADS-OCX die Ereignisfunktion AdsRead[Datatype]Conf() aus, mit der die geforderten Daten übermittelt werden.
Beim Absetzen vom Read-Request muss eine Identifizierungsnummer mit angegeben werden, die später beim Aufruf der Ereignisfunktion wieder zurückgegeben wird. Dadurch ist eine Zuordnung zwischen Read-Request und der Ereignisfunktion möglich. Siehe auch AdsRead[Datatype]Req().

Beispiel

-


AdsRouterRemove

Wird in der Systemsteuerung von Windows NT/2000 der TwinCAT-Router komplett aus dem Betriebssystem entfernt, so wird dieses Ereignis ausgelöst.

object_AdsRouterRemove()

Parameter

-

Bemerkungen

-

Beispiel

Visual Basic: 'Statusänderung vom TwinCAT-Router und der SPS erkennen/verändern'


AdsRouterShutdown

Wird der TwinCAT-Router gestoppt, so wird dieses Ereignis ausgelöst.

object_AdsRouterShutdown()

Parameter

-

Bemerkungen

-

Beispiel

Visual Basic: 'Statusänderung vom TwinCAT-Router und der SPS erkennen/verändern'


AdsRouterStart

Wird der TwinCAT-Router gestartet, so wird dieses Ereignis ausgelöst.

object_AdsRouterStart()

Parameter

-

Bemerkungen

-

Beispiel

Visual Basic: 'Statusänderung vom TwinCAT-Router und der SPS erkennen/verändern'


AdsServerStateChanged

Diese Ereignisfunktion wird aufgerufen, wenn sich der Zustand des ADS-Gerätes geändert hat.

object_AdsServerStateChanged(
  nAdsState      As ADSSTATE,
  nDeviceState   As Long)

Parameter

nAdsState

[out] neuer Zustand des ADS-Gerätes (siehe Datentyp ADSSTATE)

nDeviceState

[out] (wird derzeit nicht unterstüzt)

Bemerkungen

-

Beispiel

Visual Basic: 'Statusänderung vom TwinCAT-Router und der SPS erkennen/verändern'


AdsServerSymChanged

Diese Ereignisfunktion wird ausgelöst, wenn Sie die Symboltabelle im ADS-Gerät geändert hat.

object_AdsServerSymChanged()

Parameter

-

Bemerkungen

Jedes ADS-Gerät legt seine Symbolnamen in eine interne Tabelle ab. Dabei wird jedem Symbol ein Handle zugeordnet, der mit der Methode AdsCreateVarHandle() ausgelesen werden kann. Ändert sich die Symboltabelle, z.B. weil sich die Anzahl der Variablen geändert hat, wird dieses Ereignis ausgelöst.

Beispiel

Visual Basic: 'Statusänderung vom TwinCAT-Router und der SPS erkennen/verändern'


AdsWriteConf

Bestätigt ein Schreibt-Request.

object_AdsWriteConf(
  nInvokeId        As Long,
  nResult          As Long)

Parameter

nInvokeId

[out] Auftragsnummer zur Identifizierung der Antwort

nResult

[out] Fehlerstatus; siehe ADS-Fehlercodes

Bemerkungen

Nachdem ein WriteRequest an das ADS-Gerät abgesetzt wurde, wird mit der Abarbeitung des Visual Basic-Programms fortgefahren. Sobald die Daten in das Gerät geschrieben wurden, löst das ADS-OCX die Ereignisfunktion AdsWriteConf() aus.
Beim Absetzen vom Write-Request muss eine Identifizierungsnummer mit angegeben werden, die später beim Aufruf der Ereignisfunktion wieder zurückgegeben wird. Dadurch ist eine Zuordnung zwischen Write-Request und der Ereignisfunktion möglich. Siehe auch AdsWrite[Datatype]Req().

Beispiel

-


AdsAmsClientNetId

In dieser Eigenschaft ist die NetId des Rechners abgelegt, auf dem das Visual Basic-Programm mit dem ADS-OCX ausgeführt wird.

object.AdsAmsClientNetId As String

Bemerkung

Diese Eigenschaft ist nur lesbar und kann weder innerhalb der Visual Basic-Entwicklungsumgebung noch während der Laufzeit des Programms geändert werden.

Über das TwinCAT System-Control kann die NetId eingestellt werden.


AdsAmsClientPort

Die Client-Portnummer ist die Portnummer, unter der andere ADS-Geräte das Visual Basic Programm ansprechen können.

object.AdsAmsClientPort As Long

Bemerkung

Wenn Sie selbst keine Portnummer vorgeben, vergibt das ADS-OCX automatisch eine Portnummer, die immer größer als 32767 ist. Beachten Sie, dass sich diese Portnummer jedesmal beim Starten ändert.

Wenn Ihr Visual Basic-Programm eine feste Portnummer erhalten soll, müssen Sie im Programm die Eigenschaft AdsAmsClientPort mit der gewünschten Portnummer setzen. Dieser Wert muss dann zwischen 16000 und 32000 liegen.

Sie können auch während der Entwicklungsphase über das Eigenschaftfenster des ADS-OCX die Eigenschaft AdsAmsClientPort setzen. Anschließend muss die SavePort auf TRUE gesetzt werden. Dadurch wird dem ADS-OCX angeordnet, die Portnummer nicht zu ändern.

Siehe auch Eigenschaft AdsAmsSaveClientPort.


AdsAmsConnected

AdsAmsConnected kann dazu verwendet werden, den Status der Verbindung zwischen ADS-OCX und TwinCAT ADS-Routers festzustellen

object.AdsAmsConnected As Boolean

Bemerkungen

Wenn die Verbindung zu dem TwinCAT ADS-Router besteht, ist der Wert der Eigenschaft "TRUE", andernfalls ist der Wert "FALSE".

Diese Eigenschaft kann nur gelesen werden.


AdsAmsCommTimeout

In AdsAmsCommTimeOut wird eine Zeit in Millisekunden angegeben, in der eine Antwort des Kommunikationspartners erwartet wird.

object.AdsAmsCommTimeout As Long

Bemerkung

Zulässige Werte: 1 bis 2147483647 Millisekunden. Negative Werte und der Wert Null werden bei einer Zuweisung nicht übernommen. Default: 5000 Millisekunden.


AdsAmsSaveClientPort

Verhindert, dass das ADS-OCX dynamisch den Port des Clients vergibt.

object.AdsAmsSaveClientPort As Boolean

Bemerkung

Wenn Sie selbst keine Portnummer vorgeben, vergibt das ADS-OCX automatisch eine Portnummer, die immer größer als 32767 ist. Beachten Sie, dass sich diese Portnummer jedesmal beim Starten ändert.

Wenn Ihr Visual Basic-Programm eine feste Portnummer erhalten soll, müssen Sie im Programm die Eigenschaft AdsAmsClientPort mit der gewünschten Portnummer setzen. Dieser Wert muss dann zwischen 16000 und 32000 liegen.

Sie können auch während der Entwicklungsphase über das Eigenschaftfenster des ADS-OCX die Eigenschaft AdsAmsClientPort setzen. Anschließend muss die SavePort auf TRUE gesetzt werden. Dadurch wird dem ADS-OCX angeordnet, die Portnummer nicht zu ändern.

Siehe auch Eigenschaft AdsAmsClientPort.


AdsAmsServerNetId

In dieser Eigenschaft ist die NetId des Rechners abgelegt, auf dem das Visual Basic-Programm mit dem ADS-OCX zugreifen soll.

object.AdsAmsServerNetId As String

Bemerkung

ADS-Geräte können sich auf verschiedenen Rechnern innerhalb eines Netzwerkes befinden. Jeder Rechner muss eine eindeutige NetId innerhalb dieses Netzwerks besitzen.

Geben Sie in dieser Eigenschaft die NetId des Rechners ein, auf dem sich das ADS-Gerät befindet, mit welchem Sie kommunizieren wollen. Falls sich in dieser Eigenschaft ein Leerstring befindet, werden die ADS-Geräte des lokalen Rechners angesprochen. Wenn sich z.B. Ihr Visual Basic-Programm immer auf den gleichen Rechner befindet wie die SPS, so lassen Sie diese Eigenschaft leer. Dadurch können Sie das Visual Basic-Programm leichter auf andere Rechner einsetzen, auch wenn diese Rechner unterschiedliche NetIds haben.

Über das TwinCAT System-Control kann festgestellt werden, welche NetId eingestellt ist.


AdsAmsServerPort

Beinhaltet die Portnummer des ADS-Gerätes, welches mit dem ADS-OCX angesprochen werden soll.

object.AdsAmsServerPort As Long

Bemerkung

Die Portnummern der einzelnen ADS-Gerätes sind aus der entsprechenden Dokumentation zu entnehmen. Hier eine Tabelle mit den wichtigsten ADS-Geräten:

ADS-Gerät | Portnummer
NC / NCI | 501
SPS Laufzeitsystem 1 | 801
SPS Laufzeitsystem 2 | 811
SPS Laufzeitsystem 3 | 821
SPS Laufzeitsystem 4 | 831
Nockenschaltwerk | 901


AdsClientAdsControl

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


AdsClientAdsState

Mit Hilfe dieser Eigenschaft kann anderen Kommunikationspartner mitgeteilt werden, in welchem Zustand sich gerade das ADS-Gerät befindet.

object.AdsClientAdsState As String

Bemerkung

Welche Zustände ein ADS-Gerät unterstützen, ist aus der Dokumentation des ADS-Gerätes zu entnehmen.


AdsClientBuild

Enthält den Buildlevel des ADS-Gerätes.

object.AdsClientBuild As Integer

Bemerkung

Jedes ADS-Gerät besitzt Eigenschaften, aus denen die Versionsnummer und die Typbezeichnung des ADS-Gerätes ausgelesen werden kann. Die Versionsnummer besteht aus:

· Version (siehe Eigenschaft AdsClientVersion)

· Revision (siehe Eigenschaft AdsClientRevision)

· Build (siehe Eigenschaft AdsClientBuild)

Sie sollten beim Erstellen von ADS-Geräten immer dafür sorgen, dass diese Eigenschaften gesetzt werden, damit das ADS-Gerät von anderen Teilnehmern identifiziert werden kann.


AdsServerDeviceControl

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


AdsClientDeviceState

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


AdsClientRevision

Enthält den Revisionlevel des ADS-Gerätes.

object.AdsClientRevision As Integer

Bemerkung

Jedes ADS-Gerät besitzt Eigenschaften, aus denen die Versionsnummer und die Typbezeichnung des ADS-Gerätes ausgelesen werden kann. Die Versionsnummer besteht aus:

· Version (siehe Eigenschaft AdsClientVersion)

· Revision (siehe Eigenschaft AdsClientRevision)

· Build (siehe Eigenschaft AdsClientBuild)

Sie sollten beim Erstellen von ADS-Geräten immer dafür sorgen, dass diese Eigenschaften gesetzt werden, damit das ADS-Gerät von anderen Teilnehmern identifiziert werden kann.


AdsClientType

Enthält den Typbezeichnung des ADS-Gerätes.

object.AdsClientType As String

Bemerkung

Die Typbezeichnung besteht aus einer beliebigen Zeichenkette. Sie sollten beim Erstellen von ADS-Geräten immer dafür sorgen, dass diese Eigenschaften gesetzt werden, damit dieses ADS-Gerät von anderen Teilnehmern identifiziert werden kann.


AdsClientVersion

Enthält die Versionsnummer des ADS-Gerätes.

object.AdsClientVersion As Integer

Bemerkung

Jedes ADS-Gerät besitzt Eigenschaften, aus denen die Versionsnummer und die Typbezeichnung des ADS-Gerätes ausgelesen werden kann. Die Versionsnummer besteht aus:

  • Version (siehe Eigenschaft AdsClientVersion)

  • Revision (siehe Eigenschaft AdsClientRevision)

  • Build (siehe Eigenschaft AdsClientBuild)

Sie sollten beim Erstellen von ADS-Geräten immer dafür sorgen, dass diese Eigenschaften gesetzt werden, damit das ADS-Gerät von anderen Teilnehmern identifiziert werden kann.


AdsServerAdsControl

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


AdsServerAdsState

Anhand dieser Eigenschaften kann abgefragt werden, in welchem Zustand sich gerade das angesprochene ADS-Gerät befindet.

object.AdsServerAdsState As String

Bemerkung

Welche Zustände das ADS-Gerät durch diese Eigenschaft signalisert, ist aus der Dokumentation des ADS-Gerätes zu entnehmen.
Dieses Property ist nur lesbar.


AdsServerBuild

Anhand dieser Eigenschaften kann abgefragt werden, welche Version das angesprochenen ADS-Gerät hat

object.AdsServerBuild As Integer

Bemerkung

Jedes ADS-Gerät besitzt Eigenschaften, aus denen die Versionsnummer und die Typbezeichnung des ADS-Gerätes ausgelesen werden kann. Die Versionsnummer besteht aus:

· Version (siehe Eigenschaft AdsServerVersion)

· Revision (siehe Eigenschaft AdsServerRevision)

· Build (siehe Eigenschaft AdsServerBuild)


AdsServerDeviceState

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


AdsServerLastMessage

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


AdsServerLastMessageNo

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


AdsServerLastMessageSubNo

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


AdsServerRefreshTimerInterval

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


AdsServerRevision

Anhand dieser Eigenschaften kann abgefragt werden, welche Revisionlevel das angesprochenen ADS-Gerät hat.

object.AdsServerRevision As Integer

Bemerkung

Jedes ADS-Gerät besitzt Eigenschaften, aus denen die Versionsnummer und die Typbezeichnung des ADS-Gerätes ausgelesen werden kann. Die Versionsnummer besteht aus:

· Version (siehe Eigenschaft AdsServerVersion)

· Revision (siehe Eigenschaft AdsServerRevision)

· Build (siehe Eigenschaft AdsServerBuild)


AdsServerType

Anhand dieser Eigenschaften kann abgefragt werden, von welchen Typ das angesprochene ADS-Gerät ist.

object.AdsServerType As String

Bemerkung

In der unteren Tabelle sind die Typbezeichnungen der wichtigsten ADS-Geräte aufgelistet:

ADS-Gerät | Bezeichnung
IO | I/O Server
SPS | PLC Server
NC / NCI | NC-ADS-Server


AdsServerVersion

Anhand dieser Eigenschaften kann abgefragt werden, welche Versionsnummer das angesprochenen ADS-Gerät hat

object.AdsServerVersion As Integer

Bemerkung

Jedes ADS-Gerät besitzt Eigenschaften, aus denen die Versionsnummer und die Typbezeichnung des ADS-Gerätes ausgelesen werden kann. Die Versionsnummer besteht aus:

· Version (siehe Eigenschaft AdsServerVersion)

· Revision (siehe Eigenschaft AdsServerRevision)

· Build (siehe Eigenschaft AdsServerBuild)


AdsServerWatchDogEnable

Diese Eigenschaft wird zur Zeit noch nicht unterstützt.


EnableErrorHandling

Schaltet das Exceptionhandling ein.

object.EnableErrorHandling As Boolean

Bemerkung

Ist diese Eigenschaft TRUE und tritt innerhalb einer Methode ein Fehler auf, so wird eine Exception ausgelöst. Mit der Anweisung On Error Goto können Sie an einer definierten Sprungmarke die Exception abfangen und über das Object Err die Ursache ermitteln.


Index

Index innerhalb eines Controlarrays.

object.Index As Integer

Bemerkung

Es ist möglich, ein Array von mehreren ADS-OCXe anzulegen. Dazu bekommt jedes ADS-OCX, welches zu dem Array gehören soll, den gleichen Namen. Unterschieden werden die einzelnen ADS-OCXe durch die Index-Eigenschaft. Der Index beginnt standardmäßig bei 0. Angesprochen werden die einzelnen Objekte durch den Arrayname mit nachfolgendem Index in runden Klammern, z.B. AdsOcxName(1).


Name

Eindeutiger Name des Controls.

object.Name As String

Bemerkung

Der Standardname für neu hinzugefügte ADS-OCXe ist der Objekttyp (AdsOcx) plus einer eindeutigen Integerzahl. Zum Beispiel hat das erste ADS-OCX den Namen AdsOcx1, das Zweite AdsOcx2 und das Dritte AdsOcx3.
Der Name muss mit einem Buchstaben anfangen und kann maximal 40 Zeichen lang sein. Innerhalb des Namens sind Unterstriche (_) und Zahlen erlaubt. Es sollten keine Namen von globalen Systemobjekten (Clipboard, Screen oder App) benutzt werden, da diese anschließend nicht mehr angesprochen werden können.


Object

Mit Hilfe der Object-Eigenschaft eines OLE-Containers können Sie auch die Eigenschaften und Methoden des verknüpften oder eingebetteten Objekts verwenden.

object.Object As Object

Bemerkung

Diese Eigenschaft wird in Verbindung mit OLE (Object Linking and Embedding) benutzt. Für weitere Informationen siehe Programmierhandbuch von Visual Basic.


Parent

Gibt eine Form, ein Objekt oder eine Collection zurück, in der das ADS-OCX enthalten ist.

object.Parent As Object

Bemerkung

Um z.B. den Namen des Containers zu ermitteln, müssen Sie folgende Anweisung eingeben: AdsOcx1.Parent.Name


Tag

Enthält einen frei benutzbaren String.

object.Tag As String

Bemerkung

In dieser Eigenschaft können beliebige Daten abgelegt werden. Diese werden weder von Visual Basic noch von dem ADS-OCX weiter ausgewertet.


ADSDATATYPEID

ADST_BIT             = 33 (&H21)
ADST_INT8            = 16 (&H10)
ADST_INT16           = 2
ADST_INT32           = 3
ADST_INT64           = 20 (&H14)
ADST_UINT8           = 17 (&H11)
ADST_UINT16          = 18 (&H12)
ADST_UINT32          = 19 (&H13)
ADST_UINT64          = 21 (&H15)
ADST_REAL32          = 4
ADST_REAL64          = 5
ADST_REAL80          = 32 (&H20)
ADST_BIGTYPE         = 65 (&H41)
ADST_VOID            = 0


ADSLOGMSGTYPE

ADSLOG_MSGTYPE_HINT         = 1
ADSLOG_MSGTYPE_WARN         = 2
ADSLOG_MSGTYPE_ERROR        = 4


ADSOCXTRANSMODE

ADSTRANS_CLIENTCYCLE      = 1
ADSTRANS_SERVERCYCLE      = 3
ADSTRANS_SERVERONCHA      = 4

Beschreibung

Parameter | Beschreibung
ADSTRANS_CLIENTCYCLE | Das ADS-OCX führt zyklisch einen Schreib-/Lesebefehl aus. Die Zykluszeit wird auf das Vielfache von 55 gerundet. Die kleinste Zeit beträgt 55ms. Der Timer, der das Lesen / Schreiben anstößt, läuft im Usermode von Windows NT/2000/XP, deshalb ist das Zeitverhalten stark von der Auslastung des Systems abhängig.
ADSTRANS_SERVERCYCLE (nur beim Lesen) | Das angesprochene ADS-Gerät schreibt zyklisch die Daten zum ADS-OCX. Die kleinste mögliche Zeit, ist die Zykluszeit des ADS-Gerätes; bei der SPS ist dieses die Zykluszeit der Task. Die Zykluszeit kann in 1ms-Schritten ausgewertet werden. Geben Sie als Zykluszeit 0ms an, so werden in jedem Zyklus der Task des ADS-Gerätes die Daten zum ADS-OCX geschickt.
ADSTRANS_SERVERONCHA (nur beim Lesen) | Das angesprochene ADS-Gerät schreibt nur dann die Daten zum ADS-OCX, wenn sich diese geändert haben. Die Abtastung beim ADS-Gerät erfolgt in der Zeit, die durch die Zykluszeit angegeben wird. Die Zykluszeit kann in 1ms-Schritten ausgewertet werden. Geben Sie als Zykluszeit 0ms an, so wird jede Änderung der Variablen zum ADS-OCX geschickt. Durch eine größere Zykluszeit kann die Anzahl der Datenübertragungen zum ADS-OCX reduziert werden.

Die größte Zykluszeit beträgt 32767ms.

Achtung: Durch zu viele Schreib / Leseoperationen kann das System so stark ausgelastet werden, so dass die Bedieneroberfläche stark verlangsamt wird.

Tip: Setzen Sie die Zykluszeit auf möglichst angemessene Werte und beenden Sie jedes Mal die Verbindungen, wenn diese nicht mehr benötigt werden.


ADSSTATE

ADSSTATE_INVALID         = 0
ADSSTATE_IDLE            = 1
ADSSTATE_RESET           = 2
ADSSTATE_INIT            = 3
ADSSTATE_START           = 4
ADSSTATE_RUN             = 5
ADSSTATE_STOP            = 6
ADSSTATE_SAVECFG         = 7
ADSSTATE_LOADCFG         = 8
ADSSTATE_POWERFAILURE    = 9
ADSSTATE_POWERGOOD       = 10 (&H0A)
ADSSTATE_ERROR           = 11 (&H0B)
ADSSTATE_SHUTDOWN        = 12 (&H0C)
ADSSTATE_SUSPEND         = 13 (&H0D)
ADSSTATE_RESUME          = 14 (&H0E)
ADSSTATE_CONFIG          = 15 (&H0F)'system is in config mode
ADSSTATE_RECONFIG        = 16 (&H10)'system should restart in config mode
ADSSTATE_MAXSTATES       = 17 (&H11)


ADSGETDYNSYMBOLTYPE

ADSDYNSYM_GET_NEXT 	= 1	// liefert nächstes Symbol (versucht erst ADSDYNSYM_GET_CHILD, dann ADSDYNSYM_GET_SIBLING, dann ADSDYNSYM_GET_PARENT)
ADSDYNSYM_GET_SIBLING 	= 2	// liefert nächstes Symbol auf derselben Ebene
ADSDYNSYM_GET_CHILD 	= 3	// liefert Child Symbol
ADSDYNSYM_GET_PARENT 	= 4	// liefert das nächste Symbol auf der Ebene des Parents


AdsReadVarConnect

Stellt eine feste Verbindung zwischen einer Visual Basic-Variablen und einem Datum aus einem ADS-Gerät her.

object.AdsReadVarConnect(
  adsVarName       As String,
  cbLength         As Long,
  nRefreshType     As ADSOCXTRANSMODE,
  nCycleTime       As Integer,
  pData            As Variant)
As Long

Parameter

adsVarName

[in] Name der ADS-Variable

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

nRefreshType

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

nCycleTime

[in] Lese-Zyklus in ms

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Wird die Verbindung zu einer ADS-Variablen nicht mehr benötigt, sollte dieses über die Methode AdsReadDisconnect() 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.
Diese Methode unterstützt nicht den Datentyp String.
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.

Diese Methode wurde durch AdsReadVarConnectEx() ersetzt. Benutzen Sie in Zunkunft AdsReadVarConnectEx() da AdsReadVarConnect() nicht weiter geflegt wird und nur noch aus Kompatibilitätsgründen enthalten sein wird.

Beispiel

-


AdsSyncReadStateReq

Ließt den ADS-Status und den Geräte-Status von dem ADS-Gerät aus.

object.AdsSyncReadSateReq(
  pAdsState     As Long,
  pDeviceState  As Long)
As Long

Parameter

pAdsState

[in] aktueller ADS-Status (siehe Datentyp ADSSTATE)

pDeviceSatet

[in] (wird derzeit nicht unterstützt)

Rückgabewert

siehe ADS-Fehlercodes.

Bemerkungen

Jedes ADS-Gerät kann seinen aktuellen Zustand anderen ADS-Geräten mitteilen. Dabei wird unterschieden zwischen den Status des Gerätes selber (DeviceState) und dem Status der ADS-Schnittstelle von dem ADS-Gerät (ADSSTATE). Die möglichen Zustände, die die ADS-Schnittstelle annehmen kann, ist durch die ADS-Spezifikation festgelegt.

Beispiel

-