FC310x - PCI-Karten für PROFIBUS

Übersicht

Im TwinCAT RunMode ist der DP-Master immer mit der höchstprioren Task synchronisiert, mit der Variablen verknüpft sind. Die Zykluszeit der entsprechenden Task wird in der Cycle-Time auf dem Karteireiter "FC310x" (für TwinCAT 2.8 bzw. TwinCAT 2.9) des Masters angezeigt, sobald einmal das Mapping erzeugt wurde. Bei der Task kann eingestellt werden, ob das "I/O am Task-Anfang" aktualisiert werden soll oder nicht.

 

I/O am Task-Anfang

Wenn bei der Task die Einstellung "I/O am Task-Anfang" (Check-Box) angewählt ist (Default-Einstellung bei NC-Task), wird vor dem Start der Task geprüft, ob der vorangegangene DP-Zyklus beendet wurde, dann die Inputs und Outputs (die Outputs sind dann vom letzten Task-Zyklus) kopiert und der DP-Zyklus gestartet (im Beispiel Task-Zykluszeit 2 ms, Echtzeit-Ressourcen 80 %):

 
I/O am Task-Anfang und keine Überschreitung der Echtzeit-Ressourcen

Wenn in dem vorliegenden Fall das Kopieren der Inputs und Outputs sowie die Task-Rechenzeit 0,8 ms überschreiten, würde die Ausführung der Task durch NT unterbrochen werden, da die 80 % Echtzeit-Ressourcen erreicht sind:

 
I/O am Task-Anfang und Überschreitung der Echtzeit-Ressourcen

Dieser Fall wäre auch noch unproblematisch, da der DP-Zyklus rechtzeitig fertig ist. Wenn die Einstellung "IO am Task-Anfang" nicht angewählt ist, ist der Ablauf etwas kritischer, wie im Folgenden beschrieben ist.

 
 

I/O nicht am Task-Anfang

Wenn bei der Task die Einstellung "I/O am Task-Anfang" (Check-Box) nicht angewählt ist (Default-Einstellung bei SPS-Task), wird vor dem Start der Task geprüft, ob der vorangegangene DP-Zyklus beendet wurde, und die Inputs werden kopiert. Danach erfolgt die Taskbearbeitung und am Ende der Task werden die Outputs kopiert und der DP-Zyklus gestartet (im Beispiel Task-Zykluszeit 2 ms, Echtzeit-Ressourcen 80 %):

 
I/O nicht am Task-Anfang und keine Überschreitung der Echtzeit-Ressourcen

Da sich im Fall "I/O nicht am Task-Anfang" die Task und der PROFIBUS die Bandbreite teilen müssen, wirkt sich eine Überschreitung der Echtzeit-Ressourcen wesentlich stärker aus als beim Fall "I/O am Task-Anfang":

 
I/O nicht am Task-Anfang und Überschreitung der Echtzeit-Ressourcen

In dem beschriebenen Fall fängt der DP-Zyklus später an und ist nicht mehr rechtzeitig (vor dem Start des folgenden Task-Zyklus) fertig. Das hat zur Folge, dass vor dem Ausführen der Task festgestellt wird, dass der letzte DP-Zyklus noch nicht beendet war, woraufhin vor dem Starten der Task keine Inputs kopiert werden (die Task also mit den alten Inputs rechnet) und nach der Taskabarbeitung auch keine Outputs kopiert sowie der DP-Zyklus nicht neu gestartet wird, es wird also ein DP-Zyklus ausgelassen. Das Ausfallen eines DP-Zyklus kann mit dem CycleCounter erkannt werden, der im Kapitel Master-Diagnose beschrieben ist.

 
 

Gegenüberstellung I/O am Task-Anfang und I/O nicht am Task-Anfang

Bei der Einstellung "I/O am Task-Anfang" hat man den Vorteil, dass Task und DP-Zyklus sich die zur Verfügung stehende Bandbreite nicht teilen müssen und dass das Starten des DP-Zyklus sehr konstant erfolgt (Jitter entspricht dem TwinCAT-Jitter), während bei der Einstellung "I/O nicht am Task-Anfang" es leichter passieren kann, dass ein DP-Zyklus ausgelassen wird und dass die zeitliche Konstanz des DP-Zyklus-Starts zusätzlich von dem Jitter der Taskabarbeitung abhängt. Der Nachteil der Einstellung "I/O am Task-Anfang" ist, dass die Totzeit (System-Reaktionszeit) größer wird.