ADS-Zugriff auf Device-Parameter

Der Austausch der azyklischen Daten erfolgt über einen festgelegten Index- und Subindex-Bereich, der gerätespezifisch ist und in der entsprechenden Herstellerdokumentation nachgelesen werden kann.

Parameter Datenaustausch

Ein intelligenter IO-Link Sensor/Aktuator (in der vorherigen Abbildung mit „Sensor (IO-Link Device)“ gekennzeichnet) kann eine Parametrierung durch SPDU (Service Protocol Data Units) unterstützen. Diese azyklischen Servicedaten müssen von der SPS explizit angefragt oder, als solche gekennzeichnet, gesendet werden.

ADS-Zugriff auf Device-Parameter 1:

Zugang SPDU

TwinCAT unterstützt den Zugriff über ADS und über das EP6224-xxxx CoE-Verzeichnis.

Über den sogenannten SPDU Index wird der entsprechende Parameter adressiert, verfügbar sind die Bereiche:

Bezeichnung

Bereich Index

System

0x00 … 0x0F

Identification

0x10 … 0x1F

Diagnostic

0x20 … 0x2F

Communication

0x30 … 0x3F

Prefered Index

0x40 … 0xFE

Extended Index

0x0100 … 0x3FFF

 

der Bereich 0x4000 … 0xFFFF ist reserviert

Die Nutzung der Implementierung dieser Bereiche obliegt dem Sensor/Aktor-Hersteller. Zur Verdeutlichung sehen Sie hier nur einige mögliche Indexe mit Bezeichnung aufgeführt, sehen Sie sich dazu das entsprechende Kapitel „Objektbeschreibung und Parametrierung“ an.

Index

Name

0010

Vendor Name

0011

Vendor Text

0012

Product Name

0013

Product ID

0015

Serial Number

0016

Hardware Revision

0017

Firmware Revision

...

...

ADS

Die Kommunikation der IO-Link Bedarfsdaten wird über einen ADS Befehl ausgeführt. Eine ADS-Adresse besteht immer aus NetID und PortNr. Ein ADS Befehl wird von TwinCAT über AoE (ADS over EtherCAT) an das Box-Modul EP6224 weitergeleitet. Dort wird der Befehl an den IO-Link Masterteil und damit an den Bedarfsdatenkanal weitergeleitet.

AoE-NetID

Die EP6224 bekommt zur Kommunikation mit dem IO-Link Masterteil eine eigene AoE-NetID. Diese wird vom Konfigurationstool vergeben (siehe nachfolgende Abbildung).

ADS-Zugriff auf Device-Parameter 2:
Vergabe AoE-NetID

PortNr

Die Zuordnung der einzelnen IO-Link Ports des Masters erfolgt über die Portnummer. Die Portnummern werden Aufsteigend ab 0x1000 vergeben. D. h. IO-Link Port1 === PortNr 0x1000 und IO-Link Portn === PortNr 0x1000 + n-1.
Für die EP6224 (4-Port IO-Link Master) gilt folgende Festlegung:
IO-Link Port1 === PortNr 0x1000
IO-Link Port2 === PortNr 0x1001
IO-Link Port3 === PortNr 0x1002
IO-Link Port4 === PortNr 0x1003

ADS Indexgroup

Die Indexgroup eines ADS Befehls ist, wie beim CoE, auf 0xF302 für den IO-Link-Bedarfsdatenkanal festgelegt.

ADS Indexoffset

Im Indexoffset ist die IO-Link Adressierung mit Index und Subindex codiert. Der Indexoffset ist 4-Byte groß und wie folgt aufgeteilt: 2-Byte Index, 1-Byte reserved, 1-Byte Subindex.

Beispiel mit ADS Monitor

Auslesen des „Application Specific Name“, Index 0x0018 Subindex 0x00 (siehe nachfolgende Abbildung).

ADS-Zugriff auf Device-Parameter 3:
Auslesen des Application Specific Name

Beispiel Prinzip im Code

Auslesen des „Application Specific Name“, Index 0x0018 Subindex 0x00 am IO-Link Port2.
AmsAddr adsAdr;
adsAdr.netId.b[0] = 0x0A; //AoE-NetID der EP6224
adsAdr.netId.b[1] = 0x03; //AoE-NetID der EP6224
adsAdr.netId.b[2] = 0x02; //AoE-NetID der EP6224
adsAdr.netId.b[3] = 0x16; //AoE-NetID der EP6224
adsAdr.netId.b[4] = 0x02; //AoE-NetID der EP6224
adsAdr.netId.b[5] = 0x03; //AoE-NetID der EP6224
adsAdr.port = 0x1001; //IO-Link Port2
errCode = AdsSyncReadReq(&adsAdr, 0xF302, 0x00180000, 100, &pReadBuffer);