ADS Server Interface

Der ADS-Server des HMI-Servers

Wenn der HMI-Server als Dienst gestartet wird, öffnet der Service Manager einen ADS-Server an Port 19800. Dieser ADS-Server kann verwendet werden, um den Status von HMI-Server-Instanzen, die vom Service Manager verwaltet werden, zu ermitteln und abzurufen.

Index Groups und Index Offsets

ADS Server Interface 1:

Read-Write Requests

Der Wert "RW" in der Spalte "Zugriff" zeigt an, dass für diese Index Group/Index Offset-Kombination nur Read-Write Requests unterstützt werden. Alle Index-Offsets der Index Group INDEXGROUP_SERVERSTATES erwarten den Namen der verwalteten Server-Instanz als Write-Wert. Er ist analog zu einem Funktionsparameter.

Die folgende Tabelle enthält alle unterstützten Index-Groups:

Index Group

Name

Beschreibung

Anmerkungen

0x00000001

INDEXGROUP_SERVERSTATES

Enthält Index-Offsets für den Zustand der verwalteten Server-Instanzen.

 

0x00000002

INDEXGROUP_INSTANCES

Enthält Index-Offsets, die den Zugriff auf die Namen der verwalteten Server-Instanzen ermöglichen.

 

Die folgende Tabelle enthält alle unterstützten Index-Offsets für die Index-Group INDEXGROUP_SERVERSTATES:

Index Group

Index Offset

Zugriff

Datentyp

Offset-Name

Beschreibung

0x00000001

0x00000001

RW

W: STRING R: STRING

INDEXOFFSET_SERVERSTATE_JSON

Der vollständige Status einer konkreten verwalteten Server-Instanz als JSON-Objekt.

0x0000001

0x00000002

RW

W: STRING R: STRING

INDEXOFFSET_SERVERSTATE_ARCHITECTURE

Der Name der Architektur, auf der eine konkrete verwaltete Server-Instanz ausgeführt wird.

0x00000001

0x00000003

RW

W: STRING R: BOOL

INDEXOFFSET_SERVERSTATE_CREATOR_MODE

True, wenn die verwaltete Server-Instanz ein Engineering-Server ist (mit "--creator" gestartet).

0x00000001

0x00000004

RW

W: STRING R: UINT64

INDEXOFFSET_SERVERSTATE_PID

Die Prozess-ID einer konkreten verwalteten Server-Instanz.

0x00000001

0x00000005

RW

W: STRING R: HMIVERSION

INDEXOFFSET_SERVERSTATE_PRODUCT_VERSION

Die Produktversion einer konkreten verwalteten Server-Instanz.

0x00000001

0x00000006

RW

W: STRING R: STRING

INDEXOFFSET_SERVERSTATE_PROJECT_NAME

Der konfigurierte Projektname einer konkreten verwalteten Server-Instanz.

0x00000001

0x00000007

RW

W: STRING R: HMIVERSION

INDEXOFFSET_SERVERSTATE_PROJECT_VERSION

Die konfigurierte Projektversion einer konkreten verwalteten Server-Instanz.

0x00000001

0x00000008

RW

W: STRING R: BOOL

INDEXOFFSET_SERVERSTATE_PUBLISH_IN_PROGRESS

True, wenn ein Projekt auf der konkreten verwalteten Server-Instanz veröffentlicht wird.

0x00000001

0x00000009

RW

W: STRING R: BOOL

INDEXOFFSET_SERVERSTATE_SERVICE_MODE

Immer True, denn alle verwalteten Server-Instanzen werden vom Service Manager gestartet.

0x00000001

0x0000000A

RW

W: STRING R: STRING

INDEXOFFSET_SERVERSTATE_SERVICE_NAME

Der eindeutige Instanz-Name einer konkreten verwalteten Server-Instanz. Das ist ziemlich nutzlos, weil man es wissen muss, um es zu anzufordern.

0x00000001

0x0000000B

RW

W: STRING R: INT32

INDEXOFFSET_SERVERSTATE_STATE

Der Betriebszustand einer konkreten verwalteten Server-Instanz.

0x00000001

0x0000000C

RW

W: STRING R: HMIVERSION

INDEXOFFSET_SERVERSTATE_VERSION

Die Version einer konkreten verwalteten Server-Instanz.

0x00000001

0x0000000D

RW

W: STRING R: UINT8[n]

INDEXOFFSET_SERVERSTATE_ENDPOINTS

Die Anzahl der zurückgegebenen Strings als UINT32, gefolgt von allen konfigurierten Endpunkten einer konkreten verwalteten Server-Instanz, die jeweils durch ein 0x00-Byte getrennt sind.

0x00000001

0x0000000E

RW

W: STRING R: UINT8[n]

INDEXOFFSET_SERVERSTATE_FORCEAUTHENDPOINTS

Die erzwungenen Authentifizierungsendpunkte einer konkreten verwalteten Server-Instanz.

0x00000001

0x0000000F

RW

W: STRING R: STRING

INDEXOFFSET_SERVERSTATE_SERVERTIME

Der aktuelle ISO-8601-Zeitstempel einer konkreten verwalteten Server-Instanz.

0x00000001

0x0000001F

RW

W: STRING R: INT64

INDEXOFFSET_SERVERSTATE_SERVERTIME_NS

Der aktuelle Zeitstempel einer konkreten verwalteten Server-Instanz in Nanosekunden seit der Unix-Epoche.

Die folgende Tabelle enthält alle unterstützten Index-Offsets für die Index-Group INDEXGROUP_INSTANCES:

Index Group

Index Offset

Zugriff

Datentyp

Offset-Name

Beschreibung

0x00000002

0x00000001

R

STRING

INDEXOFFSET_INSTANCE_NAMES_JSON

Die Namen der verwalteten Server-Instanzen in Form eines JSON-Arrays von Strings.

0x00000002

0x00000002

R

UINT8[n]

INDEXOFFSET_INSTANCE_NAMES

Die Anzahl der zurückgegebenen Strings als UINT32, gefolgt von den Namen der verwalteten Server-Instanzen, die jeweils durch ein 0x00-Byte getrennt sind.

Der Typ HMIVERSION

Normalerweise verwendet ADS dreiteilige Versionsnummern, die aus einer Hauptversion, einer Revisionsnummer und einer Buildnummer bestehen. Die TwinCAT HMI verwendet stattdessen vierteilige Versionsnummern. Um dieses Problem zu lösen, wurde der Typ HMIVERSION eingeführt. Er wird von Anfragen an die folgenden Index Group/Index Offset-Kombinationen zurückgegeben:

Typdefinition in Strukturiertem Text (ST):

TYPE HMIVERSION  :STRUCT    one   : UDINT;
    two   : UDINT;
    three : UDINT;
    four  : UDINT;
END_STRUCTEND_TYPE

Typdefinition in C:

struct HMIVERSION
{
    uint32_t one;
    uint32_t two;
    uint32_t three;
uint32_t four;
};

Beispiel für das JSON-Objekt, das von INDEXGROUP_SERVERSTATES:INDEXOFFSET_SERVERSTATE_JSON zurückgegeben wird

{
   "architecture": "win-x64",
   "creatorMode": false,
   "endpoints": ["http://127.0.0.1:59150"],
   "forceAuthEndpoints": [],
   "pid": 31756,
   "productVersion": "0.0.0.0",
   "projectName": "",
   "projectVersion": "",
   "publishInProgress": false,
   "serviceMode": true,
   "serviceName": "ServerInstanceOne",
"state": 1,
"version": "0.0.0.0"
}

Beispiel für das JSON-Array, das von INDEXGROUP_INSTANCES:INDEXOFFSET_INSTANCE_NAMES_JSON zurückgegeben wird

["ServerInstanceOne", "ServerInstanceTwo"]