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.
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.