Übersicht

Die erweiterten ADS-Funktionsbausteine ermöglichen den Aufbau einer Client-Server-Kommunikation zwischen einem ADS-Gerät und einer SPS-Task. Bei dem ADS-Gerät kann es sich z. B. um eine Windows‑Applikation (nutzt die AdsDLL/AdsOcx) oder ein anderes SPS-Laufzeitsystem handeln. Die Kommunikation zwischen dem ADS-Gerät und der SPS-Task wird mittels folgenden Dienstprimitiven abgewickelt:

Die Kommunikation zwischen einem ADS-Gerät und einer SPS-Task hat folgenden Ablauf: Ein ADS-Gerät sendet ein Request (Anfrage) an das Zielgerät (SPS-Task). Diese Anfrage wird durch eine Indication in dem Zielgerät registriert. Das Zielgerät (SPS-Task) führt daraufhin einen entsprechenden Dienst aus. Der auszuführende Dienst wird über die Index-Group/Offset-Parameter verschlüsselt. Danach sendet die SPS-Task ein Response (Antwort) an das ADS-Gerät. Das Response wird von dem ADS-Quellgerät als Confirmation registriert.

Die ADS-Geräte werden über eine Portadresse und eine Netzwerkadresse (NETID) adressiert. (Portadresse der SPS-Task = _TaskInfo.AdsPort)

Damit ein Request an die SPS-Task weitergeleitet wird, muss in dem Index-Group-Parameter beim Request das höchstwertige Bit gesetzt werden (z.B. 0x80000001).

Kommunikation über IndexGroup 0x80000000 – 0x80FFFFFF

Pro SPS-Task kann sinnvoll nur eine Instanz des Indication- und Response-Funktionsbausteins benutzt werden (eine Instanz von ADSREADIND, ADSREADRES, ADSWRITEIND, ADSWRITERES, ADSRDWRTIND und ADSRDWRTRES). Entsprechend den verfügbaren ADS-Diensten: READ, WRITE und READ & WRITE gibt es zu jedem Dienst einen entsprechenden Indication- bzw. Response-Funktionsbaustein.

Dienst

Name

Beschreibung

READ

ADSREADIND

ADSREAD-Indication

ADSREADRES

ADSREAD-Response

WRITE

ADSWRITEIND

ADSWRITE-Indication

ADSWRITERES

ADSWRITE-Response

READ & WRITE

ADSRDWRTIND

ADS-READ & WRITE-Indication

ADSRDWRTRES

ADS-READ & WRITE-Response

Übersicht 1:

FiFos

Jede SPS-Task besitzt 3 Fifos in die die ankommenden Requests (Indications) zuerst abgelegt werden. Das heißt es gibt einen ADSREADIND-Fifo, ADSWRITEIND-Fifo und einen ADSRDWRTIND-Fifo.
In jedem Fifo können maximal 10 Indications gespeichert werden, bis diese abgearbeitet wurden (bis Response abgeschickt wurde). Wenn Sie z. B. gleichzeitig 12 ADSREAD-Requests an eine SPS‑Task senden, dann werden 10 Requests als Indications in dem Fifo abgelegt und zwei mit der ADS-Fehlermeldung 1814 (0x716) quittiert (verworfen). In diesem Fall müssen Sie den Fehlercode auswerten und die zwei fehlgeschlagenen ADSREAD-Requests gegebenenfalls wiederholen. Durch den Aufruf der ADSxxxxxxIND-Instanz werden die Indications einzeln aus dem dazugehörigen Fifo rausgenommen. Erst danach können neue Indications erfolgreich in dem Fifo abgelegt werden.

Kommunikation über IndexGroup 0x8n000000 – 0x8nFFFFFF

Um mehr als eine Client-Server-Kommunikation pro SPS-Task zu realisieren, werden folgende Indication-Funktionsbausteine benötigt. Diese sind um die Möglichkeit erweitert, einen gewünschten Bereich der IndexGroup anzugeben.

So werden die Anfragen gefiltert und nur auf gewünschte Bereiche reagiert.

Es stehen hierbei 16 frei wählbare Bereiche zu Verfügung:
0x80000000 – 0x80FFFFFF
0x81000000 – 0x81FFFFFF

0x8E000000 – 0x8EFFFFFF
0x8F000000 – 0x8FFFFFFF

Um an einem Indication-Funktionsbaustein einen solchen Bereich der Index-Group anzugeben, wird am Eingang MINIDXGRP der Index-Group-Wert angegeben, mit dem der gewählte Bereich beginnt.
Beispiel: Mit MINIDXGRP:=16#85000000 werden alle Anfragen gefiltert und Anfragen mit einer Index-Group im Bereich 0x85000000 – 0x85FFFFFF als Indication registriert.

Dienst

Name

Beschreibung

READ

ADSREADINDEX

ADSREAD-Indication mit Angabe der Index-Group

ADSREADRES

ADSREAD-Response

WRITE

ADSWRITEINDEX

ADSWRITE-Indication mit Angabe der Index-Group

ADSWRITERES

ADSWRITE-Response

READ & WRITE

ADSRDWRTINDEX

ADS-READ & WRITE-Indication mit Angabe der Index-Group

ADSRDWRTRES

ADS-READ & WRITE-Response