Spezifikation für ADS-Systemdienste

Dieser Abschnitt umfasst diejenigen ADS-Dienste, die bei jedem TwinCAT-ADS-Gerät identische Bedeutung und Wirkung haben. In dieser Gruppe befinden sich auch Dienste für den Zugriff auf die SPS-Prozessdaten der Ein- und Ausgänge.

Index
Group

Index
Offset

Zugriff

Datentyp

Beschreibung

0x0000F003

0x00000000

R/W

W: UINT8[n] R: UINT32

GET_SYMHANDLE_BYNAME
Dem in den Write-Daten enthaltene Namen wird ein Handle (Kennwert) zugewiesen und dem Aufrufer als Ergebnis in den Read-Daten zurückgereicht.

0x0000F004

0x00000000

R/W

W: UINT8[n] R: SIZEOF(SYMVAL)

READ_SYMVAL_BYNAME

0x0000F005

0x00000000- 0xFFFFFFFF=symHandle

R/W

UINT8[n]

READ_/WRITE_SYMVAL_BYHANDLE Den Wert, der durch 'symHdl' identifizierten Variable, lesen oder der Variablen einen Wert zuweisen. Der ‚symHdl' muss vorher durch den GET_SYMHANDLE_BYNAME-Dienst ermittelt worden sein.

0x0000F006

0x00000000

W

UINT32

RELEASE_SYMHANDLE Die in den Write-Daten enthaltene Kennzahl (Handle) für eine abzufragende benannte SPS-Variable wird freigegeben.

0x0000F020

0x0001F400- 0xFFFFFFFF

R/W

UINT8[n]

READ_I - WRITE_I SPS-Prozessabbild der physikalischen Eingänge( %I-Feld ). Offset ist Byteoffset.

0x0000F021

0x000FA000- 0xFFFFFFFF

R/W

UINT8

READ_IX - WRITE_IX SPS-Prozessabbild der physikalischen Eingänge( %IX-Feld ). Der Index-Offset enthält die Bitadresse, die sich aus Basisoffset (0xFA000) + Bytenummer*8+Bitnummer errechnet.

0x0000F025

0x00000000

R

ULONG

ADSIGRP_IOIMAGE_RISIZE Bytelänge des SPS-Prozessabbildes der physikalischen Eingänge.

0x0000F030

0x0003E800- 0xFFFFFFFF

R/W

UINT8[n]

READ_Q - WRITE_Q SPS-Prozessabbild der physikalischen Ausgänge( %Q-Feld ). Offset ist Byteoffset.

0x0000F031

0x001F4000- 0xFFFFFFFF

R/W

UINT8

READ_QX - WRITE_QX SPS-Prozessabbild der physikalischen Ausgänge( %QX-Feld ). Der Index-Offset enthält die Bitadresse, die sich aus Basisoffset (0x1F4000) Bytenummer*8+Bitnummer errechnet.

0x0000F035

0x00000000

R

ULONG

ADSIGRP_IOIMAGE_ROSIZE Bytelänge des SPS-Prozessabbildes der physikalischen Ausgänge.

0x0000F080

0x00000000- 0xFFFFFFFF= n (Anzahl der internen (Sub-)Befehle)n(max) = 500

R&W

W:
(n * ULONG[3]) :=
IG1, IO1, Len1,
IG2, IO2, Len2,
...,
IG(n), IO(n), Len(n)



R:
(n * ULONG)
+ UINT8[Len1]
+ UINT8[Len2]
+ ...,
+ UINT8[Len(n)] :=
Result1, Result2, ..., Result(n),
Data1, Data2,..., Data(n)

ADSIGRP_SUMUP_READ Die Write-Daten enthalten eine Liste von mehreren, separaten AdsReadReq(IG, IO, Len, Data) quasi als "Sammel-Lesebefehl".
Dem Aufrufer wird in den Read-Daten das Ergebnis der Sammelanfrage zurückgereicht. Dabei werden zuerst alle Rückgabewerte aufgelistet, anschließend folgen die angefragten Daten.

0x0000F081

0x00000000 - 0xFFFFFFFF= n (Anzahl der internen (Sub-)Befehle)n(max) = 500

R&W

W:
(n * ULONG[3])
+ UINT8[Len1]
+ UINT8[Len2]
+ ...,
+ UINT8[Len(n)] :=
IG1, IO1, Len1,
IG2, IO2, Len2,
...,
IG(n), IO(n), Len(n),
Data1, Data2, ..., Data(n)


R:
ULONG[n] :=
Result1, Result2, ..., Result(n)

ADSIGRP_SUMUP_WRITE Die Write-Daten enthalten eine Liste von mehreren, separaten AdsWriteReq(IG, IO, Len, Data) quasi als "Sammel-Schreibbefehl".
Dem Aufrufer wird in den Read-Daten das Ergebnis der Sammelanfrage (die Rückgabewerte) zurückgereicht.

0x0000F082

0x00000000 - 0xFFFFFFFF= n (Anzahl der internen (Sub-)Befehle)n(max) = 500

R&W

W:
(n * ULONG[4])
+ UINT8[WriteLen1]
+ UINT8[WriteLen2]
+ ...,
+ UINT8[WriteLen(n)] :=
IG1, IO1, ReadLen1, WriteLen1,
IG2, IO2, ReadLen2, WriteLen2,
...,
IG(n), IO(n), ReadLen(n), WriteLen(n),
WriteData1, WriteData2, ..., WriteData(n)


R:
(n * ULONG[2])
+ UINT8[ReturnLen1],
+ UINT8[ReturnLen2]
+ ...,
+ UINT8[ReturnLen(n)] :=
Result1, ReturnLen1,
Result2, ReturnLen2,
...,
Result(n), ReturnLen(n),
Read
Data1, ReadData2, ..., ReadData(n)

ADSIGRP_SUMUP_READWRITE Die Write-Daten enthalten eine Liste von mehreren, separaten AdsReadWriteReq(IG, IO, readLen, writeLen, writeData) quasi als "Sammel-Schreib/Lesebefehl".
Dem Aufrufer wird in den Read-Daten das Ergebnis der Sammelanfrage zurückgereicht. Dabei werden zuerst alle Rückgabewerte und Return-Längen aufgelistet, anschließend folgen die angefragten Daten.

0x0000F083

0x00000000- 0xFFFFFFFF= n (Anzahl der internen (Sub-)Befehle)n(max) = 500

R&W

W:
(n * ULONG[3]) :=
IG1, IO1, Len1,
IG2, IO2, Len2,
...,
IG(n), IO(n), Len(n)



R:
(n * ULONG)
+ UINT8[Len1]
+ UINT8[Len2]
+ ...,
+ UINT8[Len(n)] :=
Result1, Result2, ..., Result(n),
Data1, Data2,..., Data(n)

ADSIGRP_SUMUP_READEX Die Write-Daten enthalten eine Liste von mehreren, separaten AdsReadReqEx(IG, IO, Len, Data) quasi als "Sammel-Lesebefehl".
Dem Aufrufer wird in den Read-Daten das Ergebnis der Sammelanfrage zurückgereicht. Dabei werden zuerst alle Rückgabewerte aufgelistet, anschließend folgen die angefragten Daten.

0x0000F084

0x00000000- 0xFFFFFFFF= n (Anzahl der internen (Sub-)Befehle)n(max) = 500

R&W

W:
(n * ULONG[3]) :=
IG1, IO1, Len1,
IG2, IO2, Len2,
...,
IG(n), IO(n), Len(n)



R:
(n * ULONG)
+ UINT8[Len1]
+ UINT8[Len2]
+ ...,
+ UINT8[Len(n)] :=
Result1, Result2, ..., Result(n),
Data1, Data2,..., Data(n)

ADSIGRP_SUMUP_READEX2 Die Write-Daten enthalten eine Liste von mehreren, separaten AdsReadReqEx2(IG, IO, Len, Data) quasi als "Sammel-Lesebefehl".
Dem Aufrufer wird in den Read-Daten das Ergebnis der Sammelanfrage zurückgereicht. Dabei werden zuerst alle Rückgabewerte aufgelistet, anschließend folgen die angefragten Daten.