K-Bus-Zyklus

Der K-Bus-Zyklus kann freilaufend (FreeRun-Mode) oder synchron (Synchron-Mode) zum DP-Zyklus eingestellt sein. Der K-Bus-Zyklus für die DP-Koppler besteht aus den folgenden Teilen:

K-Bus-Zyklus 1:
Aufbau des K-Bus-Zyklus für die DP-Koppler

Die K-Bus-Zykluszeit kann mit der folgenden Formel auf etwa 10% genau berechnet werden (4-Kanal-Klemmen oder Klemmen mit mehr als 6 Byte Daten (Ausnahme ASI-Klemme KL6201: mehr als 12 Byte Daten) benötigen zwei oder mehr K-Bus-Zyklen).

Tcyc (in µs) = Anzahl der K-Bus-Zyklen x (600 + Anzahl digitale Kanäle x 2,5 + Anzahl analoge Input-Kanäle x 32 + Anzahl analoge Output-Kanäle x 42)

Die K-Bus-Zykluszeit kann per DPV1 gemessen werden, bei der Verwendung von TwinCAT ist das auf dem Karteireiter "Beckhoff" des DP-Kopplers im System Manager möglich.

K-Bus-Modes

Der K-Bus-Mode (Art der Synchronisierung zwischen K-Bus-Zyklus und DP-Zyklus) wird über die UserPrmData eingestellt:

Byte 9, Bit 4

Byte 9, Bit 6

Byte 12, Bit 0

Byte 12, Bit 1

K-Bus-Mode

0bin

1bin

0bin

0bin

Slow FreeRun

1bin

1bin

0bin

0bin

Fast FreeRun

0bin

0bin

0bin

0bin

Synchron

0bin

0bin

1bin

0bin

Synchron mit optimiertem Input-Update, ein Zyklus

0bin

0bin

0bin

1bin

Synchron mit optimiertem Input-Update, zwei Zyklen

FreeRun-Mode

Slow FreeRun (Default-Einstellung)

Im Mode FreeRun sind K-Bus-Zyklus und DP-Zyklus nicht miteinander synchronisiert. Der Mode Slow FreeRun zeichnet sich dadurch aus, dass der K-Bus-Zyklus aus der Main-Task aufgerufen wird. Azyklische Kommunikation oder Ereignisse führen zu einem stärkeren Jitter des K-Bus-Zyklus (KS2000, DPV1, Klemmen-Diagnose, etc.), da alle diese Funktionalitäten ebenfalls aus der Main-Task aufgerufen werden.

K-Bus-Zyklus 2:
K-Bus - Slow FreeRun Mode (Default-Einstellung)

Fast FreeRun

Um den Jitter aufgrund azyklischer Kommunikation bzw. Ereignissen zu meiden und schnelle K-Bus-Update-Zeiten zu bekommen, kann der Mode Fast FreeRun aktiviert werden. Der K-Bus-Zyklus wird timer-gesteuert von einer höherprioren Task aufgerufen. Nach dem Ende des K-Bus-Zyklus bekommen die niederprioren Tasks (DPV1, KS2000-interface, etc.) für 12,5% der vorangegangenen K-Bus-Zyklus-Dauer Rechenzeit, bevor der nächste K-Bus-Zyklus gestartet wird. Im Fast-FreeRun-Mode werden also Inputs und Outputs aktualisiert, sie sind aber nicht mit dem DP-Zyklus synchronisiert:

K-Bus-Zyklus 3:
K-Bus - Fast FreeRun Mode

Synchron-Mode

Wie in der obigen Tabelle erwähnt, gibt es drei verschiedene Synchron-Modi.

Standard Synchron-Mode

Im Standard-Synchron-Mode wird der K-Bus-Zyklus immer sofort nach dem Empfang des Data_Exchange-Telegramms vom DP-Master gestartet, die Outputs werden also so schnell wie möglich ausgegeben, während die Inputs immer einen DP-Zyklus alt sind.

K-Bus-Zyklus 4:
K-Bus - Standard Synchron-Mode

Dabei ist zu beachten, dass die Dauer des K-Bus-Zyklus plus ca. 20% (für die niederprioren Prozesse auf dem Koppler) kleiner als die DP-Zykluszeit (bei TwinCAT die Zykluszeit der zugeordneten Task) ist.

Synchron-Mode mit optimiertem Input-Update (ein Zyklus)

Beim optimierten Input-Update kann der Start des K-Bus-Zyklus nach dem Empfang des Data_Exchange-Telegramms verzögert werden, so dass die Inputs aktueller als beim Standard-Synchron-Mode sind, während die Ausgabe der Outputs stärker verzögert wird. Dabei ist zu beachten, dass die Dauer des K-Bus-Zyklus plus die Verzögerungszeit plus ca. 20% (für die niederprioren Prozesse auf dem Koppler) kleiner als die DP-Zykluszeit (bei TwinCAT die Zykluszeit der zugeordneten Task) ist.

K-Bus-Zyklus 5:
K-Bus - Synchron-Mode mit optimiertem Input-Update (ein Zyklus)

Die Verzögerungszeit wird über die UserPrmData eingestellt (in µs in Motorola-Format), dazu ist allerdings die Extended-GSD-Datei des Buskopplers notwendig:

Byte

Wert: Beschreibung

13

Delay-Time (in µs) High-Byte

14

Delay-Time (in µs) Low-Byte

Synchron-Mode mit optimiertem Input-Update (zwei Zyklen)

In der dritten Synchron-Betriebsart sind die Vorteile der anderen beiden Betriebsarten kombiniert, es werden zwei K-Bus-Zyklen innerhalb eines DP-Zyklus durchgeführt. Der erste Zyklus wird sofort nach dem Empfang des Data_Exchange-Telegramms vom Master gestartet, daher werden die Outputs so schnell wie möglich ausgegeben. Der zweite Zyklus wird nach Ablauf einer Verzögerungszeit, die nach Abschluss des ersten Zyklus gestartet wird, gestartet, so dass die Inputs möglichst jung sind. Dabei ist zu beachten, dass zweimal die Dauer des K-Bus-Zyklus plus die Verzögerungszeit plus ca. 20% (für die niederprioren Prozesse auf dem Koppler) kleiner als die DP-Zykluszeit (bei TwinCAT die Zykluszeit der zugeordneten Task) ist.

K-Bus-Zyklus 6:
K-Bus - Synchron-Mode mit optimiertem Input-Update (zwei Zyklen)

Die Verzögerungszeit wird über die UserPrmData eingestellt (in µs in Motorola-Format), dazu ist allerdings die Extended-GSD-Datei des Buskopplers notwendig:

Byte

Beschreibung

13

Delay-Time (in µs) High-Byte

14

Delay-Time (in µs) Low-Byte

Dummy-Output-Byte

Der PROFIBUS-DP-ASIC der Buskoppler kann beim Empfang eines Data_Exchange-Telegramms nur dann einen Interrupt generieren, wenn Output-Daten empfangen wurden, d.h. im synchronen Mode muss mindestens ein Output-Byte über DP übertragen werden. Wenn nur Eingangsklemmen gesteckt sind und keine Output-Daten vorhanden, kann ein Dummy-Output-Byte konfiguriert werden, das in den UserPrmData aktiviert und als Modul in den CfgData eingetragen sein muss, dazu ist allerdings die Extended-GSD-Datei des Buskopplers notwendig:

Byte

Bit

Wert

Beschreibung

3

5

1bin

Dummy-Output-Byte aktiviert

Zusätzlich muss das Dummy-Output-Byte vor den komplexen Klemmen in den CfgData konfiguriert werden:

CfgData

DP-Module

0x20

Dummy-Output-Byte

K-Bus-Cycle-Counter

Um im Master sicher überprüfen zu können, ob im synchronen Mode während eines DP-Zyklus immer genau ein (oder zwei) K-Bus-Zyklen durchgeführt wurden, kann ein K-Bus-Cycle-Counter in den Inputdaten vom Buskoppler zum Master übertragen werden, das nach jedem K-Bus-Zyklus inkrementiert wird (0 wird ausgelassen, d.h. nach 255 folgt 1). Der K-Bus-Cycle-Counter muss in den UserPrmData aktiviert und als Modul in den CfgData eingetragen werden, dazu ist allerdings die Extended-GSD-Datei des Buskopplers notwendig:

Byte

Bit

Wert

Beschreibung

3

3

1bin

K-Bus-Cycle-Counter aktiviert

Zusätzlich muss das K-Bus-Cycle-Counter-Byte vor den komplexen Klemmen in den CfgData konfiguriert werden:

CfgData

DP-Module  

0x10

K-Bus-Cycle-Counter