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.


Einführung ADS

Die Automation Device Specification (ADS) beschreibt eine geräte- und feldbusunabhängige Schnittstelle, welche die Kommunikation zwischen den ADS Teilnehmern (Geräte) regelt.

Device-Konzept

Die Systemarchitektur von TwinCAT erlaubt es, einzelne Teile der Software (z.B. TwinCAT PLC, TwinCAT NC, ...) als eigenständige Geräte (Devices) zu betrachten: Für jede Aufgabe gibt es ein Softwaremodul (Server oder Client).

Der Nachrichtenaustausch zwischen diesen Objekten wird über eine einheitliche ADS-Schnittstelle vom Message-Router abgewickelt. Dieser verwaltet und verteilt alle Nachrichten im System und im Netzwerk (TCP/IP).

Der TwinCAT Message-Router existiert auf jedem TwinCAT-PC und auf jedem Busklemmen-Controller . Somit können alle TwinCAT-Server und Client-Programme Befehle und Daten austauschen.

ADS-Device

Ein Objekt, welches die ADS-Schnittstelle implementiert hat und "Server-Dienste" anbietet, wird als ADS-Device bezeichnet. Die inhaltliche Bedeutung eines ADS-Dienstes ist spezifisch für jedes ADS-Device und in den jeweiligen ADS-Device-Dokumentation beschrieben:

  • ADS Device Dokumentation SPS
  • ADS Device Dokumentation NC
  • ADS Device Dokumentation CAM (Nockenschaltwerk)

ADS-Kommunikationsteilnehmer

Um an der ADS-Kommunikation teilnehmen zu können stehen folgende Software-Bibliotheken zur Verfügung:

  • SPS-Bibliothek "TcSystem.lib"
    Einsatz in der TwinCAT-SPS
  • ADS-DLL
    Einsatz unter z.B. C/C++, Delphi, etc.
  • ADS.NET-Komponente
    Einsatz unter z.B. VB.NET, C#, Delphi.NET, Delphi Prism etc.
  • ADS-OCX (ActiveX-Control)
    Einsatz unter z.B. Visual Basic, Visual C++, Delphi, etc.
  • ADS-Script-DLL
    Einsatz unter z.B. VBScript, JScript, etc.
  • ADS-WebService
    ADS Kommunikation via HTTP. Einsatz unter z.B. Visual C#, Delphi.NET, etc.
  • ADS-Java-DLL


Identifikation ADS-Gerät

Die eindeutige Identifizierung von ADS-Geräten erfolgt über zwei Kennungen:

  • NetId
  • Port

NetId

Grundsätzlich können Daten nicht nur innerhalb eines PC, sondern zusätzlich auch PC-übergreifend, per ADS ausgetauscht werden.

Konfiguration:

Die ADS-AmsNetId vom TwinCAT-PC kann im TwinCAT-System-Service eingestellt werden: Nach Anwahl des System-Service-Icons erscheint ein Menü. Durch die Auswahl "Eigenschaften" gelangen Sie in den Dialog "TwinCAT System Eigenschaften".

Standartmäßig wird die NetId automatisch vergeben. Sie können diese aber in dem Reiter "AMS Router" anpassen und freiwählen.

Wenn Sie mit einem ADS-Teilnehmer im Netzwerk kommunizieren (Remote Computers) möchten, muss für beide Teilnehmer die NetId des anderen Teilnehmers bekannt sein. Sie können es manuell ("Add"-Button) oder über den Systemmanager die Routen eintragen.

Port

Die ADS-Geräte an einem TwinCAT-Message-Router werden über eine Nummer, der sogenannten ADS-PortNr, eindeutig identifiziert. Diese ist bei ADS-Geräte fest vorgegeben, während reine ADS-Client-Anwendungen (z.B. eine Visualisierung) bei dem ersten Zugriff auf den Message-Router eine variable ADS-Port-Nummer zugewiesen bekommen.

Folgende ADS-Port-Nummern sind u.a. bereits vergeben:

ADS-PortNr | Beschreibung ADS-Gerät
100 | Logger (nur NT-Logbuch)
110 | Eventlogger
300 | IO
301 | zusätzliche Task 1
302 | zusätzliche Task 2
500 | NC
801 | SPS LaufzeitSystem 1
811 | SPS LaufzeitSystem 2
821 | SPS LaufzeitSystem 3
831 | SPS LaufzeitSystem 4
900 | Nockenschaltwerk
10000 | System Service
14000 | Scope


Einstellung einer ADS-Remote Verbindung

TwinCAT ADS

Erstellung einer ADS-Remote Verbindung

Um eine AMS Verbindung zwischen mehreren (n) Rechnern aufzubauen, müssen diese Rechner über eine Netzwerkkarte verfügen. Das Netzwerk muss unter Windows NT eingerichtet sein. Wenn die Rechner in einem LAN Netzwerk betrieben werden, dann besteht die Möglichkeit die TCP/IP Adresse des Rechners über den DHCP-Server zu beziehen. Wird die Remote Verbindung beispielsweise zur Wartung an einer laufenden Anlage aufgebaut, dann ist es zu empfehlen eine feste TCP/IP Adresse zu vergeben.

Die Vergabe einer festen Adresse verhindert außerdem, dass die Ereignisanzeige mit der Fehlermeldung: 'DHCP konnte keine Lease der IP-Adresse für die Karte mit der Netzwerkadresse 00E0F40FC80F erhalten. Folgender Fehler ist aufgetreten: Das Zeitlimit für die Semaphore wurde erreicht.' vollgeschrieben wird.

Die Netzwerkverbindung zwischen den n Rechnern sollte mit dem Befehl Ping <PCI/IP-Adresse des Zielrechners> getestet werden. Wurde der Netzwerktest erfolgreich durchgeführt, kann zu den Einstellungen in TwinCAT übergegangen werden. Zuerst müssen die Remote Computer untereinander bekannt sein.

Dazu notwendige Einträge werden unter TwinCAT+-> Eigenschaften +-> AMS Router durchgeführt.

Die AMS Net ID setzt sich aus der TCP/IP des lokalen Computers + dem Zusatz .1.1 zusammen. Die AMS Net ID basiert auf der TCP/IP-Adresse, es besteht jedoch kein zwingender Zusammenhang.

Um einen Remote Computer in die Verbindung aufzunehmen wird "hinzufügen" betätigt.

In diesem Fenster können die Parameter von Hand eingegeben werden oder über "Browse" ausgewählt werden. Dieser Vorgang wird n-1 mal wiederholt. Dabei ist zu beachten, dass die Angaben im Fenster "Remote Verbindung hinzufügen" mit den Daten des Remote Computers übereinstimmen. Auf dem Remote Computer wird der Host Computer entsprechend eingefügt.

Sind die Einstellungen vorgenommen, werden sie mit Return übernommen. An dieser Stelle können die n Rechner neu gestartet werden.

In TwinCAT PLC Control kann einer der n Rechner als SPS Plattform unter Online +-> "Auswahl Zielsystem" für das aktuelle PLC Projekt ausgewählt werden.


Cookbook "How to implement an ADS client"

• 0. Overview
• 1. Get started and open/connect to ADS router
• 2. Which variables available
• 3. Get handles of variables
• 4. Cyclic collection of life data
• 5. Release handles
• 6. Close ADS channel
• 7. In case of ADS error

0. Overview

Always good to start with overview
Following samples are based on C++, however they work identically for C#

See device concept

1. Get started and open/connect to ADS router

Overview C++ samples

The easy (but not recommended way) to read data: Read flag synchronously from the PLC by absolute adress information
See sample

Disadvantage: If PLC code or PLC variable declaration is changing the ADS-client will not notice this in any case.
WE HIGHLY RECOMMEND to work on handles of variables (see Agenda 3)

2. Which variables available

By compiling PLC code the PLC-Editor "PLC-Control" creates an XML-based export file <projectname.tpy> containing all information about symbols (variables) and their properties (datatype etc).
At HMI design time this file can be imported to Scada editor to configure mapping between variable and HMI-object.

We are preparing sample code to parse typ on demand, will be available here

3. Get handles of variables

ADS-List-command: Get/Release multiple handles with one ADS call
Instead looping through a routine to get handles we recommend, to save protocol transport time by requesting multiple handles with one single ADS call
See sample C++

NOTE:
Devices with previous TwinCAT-versions might not support this call (ADS returncode “Service not supported”). In this case collect handles one by one.

4. Cyclic collection of life data

ADS Sum Command : Read

Works also for write direction
The Sub-IndexGroup should always be 0xF005 in combination with the Sub-IndexOffset filled with the handle of variable.

See sample C++

5. Release handles

ADS-List-command: Get/Release multiple handles with one ADS call
Instead looping through a routine to release handles we recommend, to save protocol transport time by releasing multiple handles with one single ADS call

See sample C++

NOTE:
Devices with previous TwinCAT-versions might not support this call (ADS returncode “Service not supported”) In this case release handles one by one.

6. Close ADS channel

Always close ADS channel PortClose() – be aware to release handles before !

7. In case of ADS error

Alsways good to take care on return codes
See ADS return codes

In case of return code “Invalid handle” somebody downloaded a new PLC code or restarted the TwinCAT machine.
Release existing handles and request new handles, after this continue collection data.

ADS-Monitor is helpfully tool for diagnostic - public available
Download


Cookbook "How to implement an ADS client"

TwinCAT ADS

How to.. "Routerspeicher bestimmen"

Bei einem erhöhten Aufkommen an ADS Nachrichten muss evtl. der Routerspeicher erhöht werden.

Berechnung

Die Berechnung des Routerspeicher hängt von mehreren Faktoren ab. Vereinfacht lässt er sich wie folgt bestimmen:

Routerspeicher = Paketgröße pro Notification* + 500 kB Nachrichtenpuffer + 200 kB Verwaltungsinformationen

*Die Paketgröße der Notification ist abhängig von den gewählten Parametern (Cycletime und Maxdelay). Es sind mindestens 1 kB pro Notification.

Beispiel*:

Es werden 10 Steuerung mit jeweils 20 Notifications (DINT-Werte, Cycle Time = 1ms Maxdelay = 100ms).

Pro Notification-Nachricht wird in diesen Beispiel 1220 Byte belegt (wird auf 2 kB aufgerundet, weil der Speicher in kB angegeben wird).

Datenfeld | Größe | Beschreibung
Length | 4 Bytes | Größe der Daten in Byte.
Stamps | 4 Bytes | Anzahl der Elemente vom Typ AdsStampHeader.
TimeStamp | 8 Bytes | Zeitstempel. Der Zeitstempel ist nach dem Windows FILETIME-Format kodiert. D.h. der Wert enthält die Anzahl der Nanosekunden, die seit dem 1.1.1601 vergangen sind. Außerdem wird die lokale Zeitverschiebung nicht berücksichtigt. Somit liegt der Zeitstempel als Universal Coordinated Time (UTC) vor.
Samples | 4 Bytes | Anzahl der Elemente vom Typ AdsNotificationSample.

Der MaxDelay-Parameter sorgt dafür, dass 100 Werte gepuffert werden:

Notification Handle | 100 x 4 Bytes | 100 Handle der Notification.
Sample Size | 100 x 4 Bytes | Größe des Datenbereichs in Byte.
Data | 100 x 4 Bytes | DINT Daten.

Benötigter Routerspeicher* = 10 Steuerungen x 20 Notification/Steuerung x 2 kB/Notification + 500 kB Nachrichtenbuffer + 200 kB Verwaltungsinformationen = 1100 kB

* Die Berechnung bezieht sich auf den Fall der maximalen Speicherauslastung. Die Speicherbelegung kann im Normalbetrieb abweichen.


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


Client - Server Beziehung

ADS-Dienste können zunächst kategorisiert werden in "bestätigte"- und "unbestätigte" Dienste.

ADS-Client | ADS-Server
Request (Anforderung) -> | -> Indication (Aufforderung)
Confirmation (Bestätigung) <- | <- Response (Antwort)

Der Ablauf einer ADS-Kommunikation beginnt mit einem ADS-Request, welcher als ADS-Indication in dem ADS-Server eintrifft.
Der ADS-Server antwortet mit einer ADS-Response, die wiederum im ADS-Client als ADS-Confirmation gemeldet wird.

Nachrichten, die ein ADS-Server selbständig schickt (z.B. Fehler- oder andere Statusmeldungen) werden dem ADS-Client als Notification Indication gemeldet.

Allgemeine ADS-Dienste:

Die allgemeinen ADS-Kommunikations-Dienste werden unterschieden in

  • Asynchron

    - Client stellt ADS-Request an den Server
    - Client arbeitet weiter (ohne ADS-Confirmation)
    - Server bearbeitet ADS-Request und stellt dem Client per Callback (ADS-Confirmation im Client) das Ergebnis zu
  • Notification

    - Client meldet sich per ADS-Request bei dem Server für einen bestimmten Dienst an
    - Server bedient Client eigenständig per Callback (ADS-Confirmation im Client) bis Client sich wiederum für diesen Dienst abmeldet
    - Der Vorteil dieser Art der Kommunikation liegt in einem geringeren ADS-Protokollflussaufkommen, da die zyklische ADS-Anforderung vom Client-Programm entfällt

Spezifische ADS-Dienste:

Über die allgemeinen ADS-Dienste hinaus wurden zusätzliche Funktionen, welche die ADS-Kommunikationen kapseln und das Arbeiten mit z.B. Visual Basic, Visual C++ definiert. Diese "spezifische ADS-Dienste" wurden im ADS-OCX bzw. der ADS-DLL implementiert und bieten z.B. die Möglichkeit der synchronen Kommunikation oder nehmen Rücksicht auf evtl. bestehende Restriktionen (in Visual Basic z.B. vorzeichenlose Variablentypen)

  • Synchron

    - Client stellt ADS-Request an den Server
    - Der aufrufende Client-Thread ist für die weitere Dauer der ADS-Kommunikation suspendiert
    - Bei der Rückkehr des ADS-Request-Aufrufes ist das Resultat vom ADS-Server schon vorhanden
    - Der Vorteil dieser Art der Kommunikation liegt in einem geringerem Verwaltungsaufwand für das Client-Programm


ADS Gerätekonzept

TwinCAT ADS
TwinCAT ADS

Einführung ADS

Die Automation Device Specification (ADS) beschreibt eine geräte- und feldbusunabhängige Schnittstelle, welche die Kommunikation zwischen den ADS Teilnehmern (Geräte) regelt.

Gerätekonzept

Die Systemarchitektur von TwinCAT erlaubt es, einzelne Teile der Software (z.B. TwinCAT PLC, TwinCAT NC, ...) als eigenständige Geräte zu betrachten: Für jede Aufgabe gibt es ein Softwaremodul (Server oder Client).

Der Nachrichtenaustausch zwischen diesen Objekten wird über eine einheitliche ADS-Schnittstelle vom Message-Router abgewickelt. Dieser verwaltet und verteilt alle Nachrichten im System und im Netzwerk (TCP/IP).

Der TwinCAT Message-Router existiert auf jedem TwinCAT-PC und auf jedem Busklemmen-Controller . Somit können alle TwinCAT-Server und Client-Programme Befehle und Daten austauschen.

ADS-Kommunikationsteilnehmer

Um an der ADS-Kommunikation teilnehmen zu können stehen folgende Software-Bibliotheken zur Verfügung:

  • SPS-Bibliothek "TcSystem.lib"
    Einsatz in der TwinCAT-SPS
  • ADS-DLL
    Einsatz unter z.B. C/C++, Delphi, etc.
  • ADS.NET-Komponente
    Einsatz unter z.B. VB.NET, C#, Delphi.NET, Delphi Prism etc.
  • ADS-OCX (ActiveX-Control)
    Einsatz unter z.B. Visual Basic, Visual C++, Delphi, etc.
  • ADS-Script-DLL
    Einsatz unter z.B. VBScript, JScript, etc.
  • ADS-WebService
    ADS Kommunikation via HTTP. Einsatz unter z.B. Visual C#, Delphi.NET, etc.
  • ADS-Java-DLL