SingleRequest vs. CyclicRequest

Beim Zugriff auf Datenpunkte einer S7 Steuerung über ein I/O Mapping (vgl. Kapitel zu Mapping vs. SPS Bibliothek) lassen sich verschiedene Zugriffsarten konfigurieren. Deren Funktionsweise soll im Folgenden näher beschrieben werden. Die folgende Tabelle stellt beide Zugriffsarten zunächst gegenüber.

Request

Trigger

Single

über SendRequest Variable

Cyclic

über konfigurierbare CycleTime

SingleRequest

Beim SingleRequest werden die Datenpunkte konfiguriert und zum Prozessabbild hinzugefügt. Der Lese- bzw. Schreibzugriff erfolgt jedoch "On Demand", d.h. bei Eintreten einer bestimmten Bedingung. Diese Bedingung lässt sich über die Status und Control Variablen realisieren. Ein Request wird zum Beispiel genau dann ausgeführt, wenn SendRequest um eins größer ist als ReceiveCounter. Hierbei gilt es auch den Überlauf der Variablen beim Datentyp BYTE zu beachten, d.h. 0 > 255.

SingleRequest vs. CyclicRequest 1:

Die folgende Tabelle gibt hierzu einen Überblick:

Variable

Datentyp

Beschreibung

Control.SendRequest

BYTE

Durch Inkrementieren dieser Variablen aus dem Anwendungscode heraus wird ein Lese-/Schreibkommando (Request) ausgelöst. Sobald die zugehörige Antwort von der S7 Steuerung empfangen wurde, wird die Eingangsvariable Status.ReceiveCounter entsprechend ebenfalls um 1 inkrementiert. So weiß die Anwendung dass die Lese/Schreib Operation erfolgreich war.

Control.WriteToS7Enable

BIT

Schreib-Kommandos werden nur dann ausgeführt, wenn diese Variable auf TRUE gesetzt wurde.

Status.ReceiveCounter

BYTE

siehe oben Control.SendRequest

Status.Error

WORD

Bei Auftreten eines Fehlers während der Abarbeitung eines Kommandos wird hier der zugehörige Fehlercode angezeigt. Eine Beschreibung der Fehlercodes ist im Kommentarfeld hinterlegt.

CyclicRequest

Beim CyclicRequest erfolgt eine zyklische Abarbeitung des Lese- bzw. Schreibkommandos. Die Zykluszeit lässt sich über einen Parameter konfigurieren. Wird die Zykluszeit schneller als die Echtzeit-Task des Systems eingestellt, dann läuft der Request so schnell wie möglich ab, d.h. ein neuer Request wird abgeschickt sobald der vorherige vom Remotesystem beantwortet wurde.

SingleRequest vs. CyclicRequest 2: