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.
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).
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.
- Bsp.: für Index 0x1234 und Subindex 56 entspricht Indexoffset 0x12340056
Beispiel mit ADS Monitor
Auslesen des „Application Specific Name“, Index 0x0018 Subindex 0x00 (siehe nachfolgende Abbildung).
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);