Ü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:
- Request
- Indication
- Response
- Confirmation
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 | ADSREAD-Indication | |
ADSREAD-Response | ||
WRITE | ADSWRITE-Indication | |
ADSWRITE-Response | ||
READ & WRITE | ADS-READ & WRITE-Indication | |
ADS-READ & WRITE-Response |
![]() | 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. |
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 | ADSREAD-Indication mit Angabe der Index-Group | |
ADSREAD-Response | ||
WRITE | ADSWRITE-Indication mit Angabe der Index-Group | |
ADSWRITE-Response | ||
READ & WRITE | ADS-READ & WRITE-Indication mit Angabe der Index-Group | |
ADS-READ & WRITE-Response |