Slave-Priorisierung/mehrere DP-Zyklen

Aufteilung der DP-Slaves auf mehrere DP-Zyklen (Priorisierung der Slaves)

Um in Systemen, bei denen einige Slaves sehr schnell gepollt, bei anderen aber eine größere Zykluszeit ausreichend wäre, eine möglichst geringere DP-Zykluszeit zu bekommen, können die Slaves priorisiert werden. Dabei kann je Slave angegeben werden, in jedem wievielten Zyklus (Divider unter Data-Exch Poll-Rate auf dem Karteireiter Features des Slaves) er gepollt werden soll. Weiterhin ist es dann sinnvoll, dass z. B. in dem nachfolgend dargestellten Fall bei 4 Slaves, die jeweils nur in jedem zweiten Zyklus angesprochen werden sollen, auch einstellbar ist, dass jeweils 2 Slaves in dem einen Zyklus und 2 Slaves in dem anderen Zyklus gepollt werden, um die Gesamt-DP-Zyklus möglichst konstant zu halten. Dazu gibt es auf dem Karteireiter Features des Slaves die Einstellung des Modulo unter Data-Exch Poll-Rate, wobei in dem dargestellten Fall Slave 3 und 5 den Modulo 0 und Slave 4 und 6 den Modulo 1 erhalten würden. Der aktuelle Modulo kann in der Variablen ActualModulo gelesen werden, die im Kapitel Master-Diagnose beschrieben ist.

Slave-Priorisierung/mehrere DP-Zyklen 1:
Diagramm Aufteilung der DP-Slaves auf mehrere DP-Zyklen

Mehrere DP-Zyklen in einem Task-Zyklus

Bei Taskzykluszeiten, die mehr als doppelt so groß wie die DP-Zykluszeit sind, ist es möglich, mehrere DP-Zyklen innerhalb eines Task-Zyklus durchzuführen, um möglichst aktuelle Inputdaten zu bekommen. Dabei wird entsprechend des auf dem Karteireiter "FC310x" (für TwinCAT 2.8 bzw. TwinCAT 2.9) des Masters einstellbaren Faktors Anzahl DP-Zyklen je Task-Zyklus mit dem Starten des ersten DP-Zyklus ein Timer mit der Zykluszeit (Task-Zykluszeit/(Anzahl DP-Zyklen je Task-Zyklus)) gestartet, über den dann weitere DP-Zyklen gestartet werden. Dabei ist allerdings aufzupassen, dass der letzte DP-Zyklus rechtzeitig (vor dem nächsten Start der Task) beendet ist, da es sonst zu einem (bzw. mehreren, in Abhängigkeit vom Verhältnis Anzahl DP-Zyklen je Task-Zyklus) DP-Zyklusausfall kommt, wie im Kapitel Synchronisierung beschrieben wurde.

Slave-Priorisierung/mehrere DP-Zyklen 2:
Diagramm mehrere DP-Zyklen in einem Task-Zyklus

Mehrere Data-Samples innerhalb eines Task-Zyklus

Die beiden beschrieben Funktionalitäten lassen sich jetzt kombinieren, um z. B. einem oder mehreren Slaves in einem 2 ms-Zyklus jede ms neue Daten zu geben bzw. von dem Slave neue Daten zu bekommen, um eine bessere Regelqualität zu erhalten. Für diesen Fall werden die Einstellungen unter Additional Data_Exchange Samples auf dem Karteireiter Features des Slaves statt unter Data-Exch Poll-Rate (wie oben beschrieben) vorgenommen.

In dem unten dargestellten Beispiel ist zunächst der Faktor Anzahl DP-Zyklen je Task-Zyklus auf dem Karteireiter "FC310x" (für TwinCAT 2.8 bzw. TwinCAT 2.9) des Masters auf 2 einzustellen. Damit die Task 2 verschiedene Werte an den Slave senden bzw. 2 verschiedene Werte von dem Slave empfangen kann, ist der entsprechende Slave zweimal im System Manager einzutragen, wobei alle Einstellungen, mit Ausnahme des Modulo unter Additional Data_Exchange Samples auf dem Karteireiter Features des Slaves, gleich sein müssen. Dort wäre für den entsprechenden Slave eine 0 bei der einen und eine 1 bei der anderen Box im System Manager anzugeben. Der Multiplier unter Additional Data_Exchange Samples ist für diesen Slave bei beiden Boxen auf 2 zu stellen, d.h., jede der beiden eingetragenen Boxen wird nur in jedem 2. DP-Zyklus gepollt (der Slave wird dann in jedem DP-Zyklus gepollt, aber er ist ja zweimal eingetragen). Für alle anderen Slaves, die nur einmal innerhalb des Task-Zyklus gepollt werden sollen (die sind natürlich auch nur einmal im System Manager eingetragen), ist der Multiplier unter Additional Data_Exchange Samples ebenfalls auf 2, mit dem Modulo unter Additional Data_Exchange Samples können diese Slaves jetzt noch auf die beiden Zyklen aufgeteilt werden. Ein Slave, der zweimal gepollt, aber nur ein Variablenabbild in der Task haben soll, ist nur einmal einzufügen, der Multiplier wäre auf 1, der Modulo auf 0 eingestellt.

Im vorliegenden Beispiel wären die Slaves 1 und 2 jeweils zweimal im System Manager eingetragen mit den Einstellungen:

Die Slaves 3 und 5 wären nur einmal im System Manager eingetragen und hätten die Einstellungen:

Die Slaves 4 und 6 wären ebenfalls nur einmal im System Manager eingetragen mit den Einstellungen:

Slave-Priorisierung/mehrere DP-Zyklen 3:
Diagramm mehrere Data-Samples innerhalb eines Task-Zyklus

Für die Slaves 1 und 2 liegen die Variablen zweimal vor (jeweils 2 Boxen im System Manager), die Variablen der Box mit dem Additional Data_Exchange Samples/Modulo 0 werden zuerst gesendet bzw. empfangen.