Optimierungsmöglichkeiten

Manchmal ist der offensichtliche Weg nicht immer auch der effizienteste Weg. Der folgende Artikel zeigt einige Möglichkeiten auf, wie Sie die S7 Datenkommunikation optimieren können.

Beispiel 1: Auslesen von vielen BOOL-/BIT-Variablen

Die Konfiguration im TIA-Projekt enthält mehrere (in diesem Beispiel 10) BOOL-/BIT-Variablen, welche sich im Speicher direkt „nacheinander“ befinden und ausgelesen werden sollen:

Optimierungsmöglichkeiten 1:

Die offensichtlichste Implementierung wäre es, die 10 Variablen vom Typ BOOL an einen Request zu hängen.

Optimierungsmöglichkeiten 2:

Auf dem Draht würde diese Implementierung dann wie folgt aussehen:

Optimierungsmöglichkeiten 3:

Die verschiedenen Variablen werden hierbei einzeln angefragt, wobei jeder „Item“-Eintrag 12 Bytes lang ist. Der gesamte Payload des S7 Request ist dadurch 132 Bytes lang. Eine entsprechende Response würde dann wie folgt aussehen:

Optimierungsmöglichkeiten 4:

Jedes „Item“ ist hierbei 5 Bytes lang und der gesamte S7 Response 73 Bytes.

Eine (auf dem Draht) effizientere Implementierung wäre es ein Byte-Array zu lesen, in diesem Fall 2 Bytes.

Optimierungsmöglichkeiten 5:

Das Byte-Array würde dann auf die BOOL-Variablen „gemapped“.

Optimierungsmöglichkeiten 6:

Der Request würde in diesem Fall wie folgt aussehen:

Optimierungsmöglichkeiten 7:

Der Payload ist in diesem Fall nur noch 24 Bytes lang (also 108 Bytes weniger). Die entsprechende Response wäre dann:

Optimierungsmöglichkeiten 8:

Der Payload der Response ist in diesem Fall nur noch 20 Bytes lang (vorher 73 Bytes).

Request:

Response:

Optimierungsmöglichkeiten 9:

Weitere Informationen

Wird ein Request-Frame länger als die S7-Steuerung verarbeiten kann, so muss der TwinCAT3 S7 Kommunikationstreiber den Request in mehrere Requests aufteilen. Dadurch kann sich die Antwortzeit um ein Vielfaches erhöhen.

Beispiel 2: Auslesen von vielen WORD-Variablen

Die Konfiguration im TIA Projekt enthält mehrere (in diesem Beispiel 5) WORD-Variablen, welche sich im Speicher direkt „nacheinander“ befinden und ausgelesen werden sollen:

Optimierungsmöglichkeiten 10:

Hierbei gilt dasselbe Prinzip wie im Beispiel 1: jeder Eintrag erhöht die Payload-Größe des Requests und der zugehörigen Response. Zur Optimierung kann derselbe Ansatz gewählt werden (bitte beachten Sie die „Endianess“). Ein optimiertes SPS-Programm könnte dann wie folgt aussehen:

Optimierungsmöglichkeiten 11:

Optimierungsmöglichkeiten 12:

Die Einträge müssen dann entsprechend „gemapped“ und richtig „gedreht“ werden.

Optimierungsmöglichkeiten 13:

Die Ersparnis im Vergleich zur direkten (offensichtlichen) Implementierung wäre dann wie folgt:

Request:

Response: