FB_KL6831KL6841Communication

FB_KL6831KL6841Communication 1:

Die Funktionsbausteine für die SMI-Befehle greifen nicht direkt auf das Prozessabbild der KL6831/KL6841 zu, sondern legen die einzelnen SMI-Befehle in drei verschiedene Puffer ab. Der Funktionsbaustein FB_KL6831KL6841Communication() liest sequentiell die SMI-Befehle aus diesen drei Puffern aus und gibt die SMI-Befehle zu der KL6831/KL6841 weiter. Hierdurch wird sichergestellt, dass nicht mehrere Funktionsbausteine gleichzeitig auf das Prozessabbild der KL6831/KL6841 zugreifen. Jeder dieser drei Puffer wird mit einer anderen Priorität (hoch, mittel oder niedrig) abgearbeitet. Durch den Parameter eCommandPriority, den es bei den meisten Funktionsbausteinen gibt, können Sie beeinflussen, mit welcher Priorität der jeweilige SMI-Befehl von dem Funktionsbaustein FB_KL6831KL6841Communication() bearbeitet werden soll.

Die Puffer, in denen die SMI-Befehle abgelegt werden, sind alle in einer Variablen vom Typ ST_SMICommandBuffer enthalten. Pro KL6831/KL6841 gibt es eine Instanz vom Funktionsbaustein FB_KL6831KL6841Communication() und eine Variable vom Typ ST_SMICommandBuffer. Der Funktionsbaustein FB_KL6831KL6841Communication() sollte, wenn möglich, in einer separaten, schnelleren Task aufgerufen werden.

Über die Ausgänge des Funktionsbausteins kann ermittelt werden, wie stark die Puffer ausgelastet sind. Hierzu werden drei Arrays ausgegeben, bei dem jedes Element (0, 1 oder 2) für einen der drei Puffer (hoch, mittel oder niedrig) steht. Sollten Sie feststellen, dass einer der drei Puffer regelmäßig überläuft, so sollten Sie folgende Maßnahmen in Betracht ziehen:

FB_KL6831KL6841Communication 2: Eingänge

VAR_INPUT
  bResetMaximumDemandCounter : BOOL;
  bResetOverflowCounter      : BOOL;
  bResetInactiveProcessImage : BOOL;
  bResetDataFrameError       : BOOL;
  dwOptions                  : DWORD := 0;
END_VAR

Name

Typ

Beschreibung

bResetMaximumDemandCounter

BOOL

Eine positive Flanke setzt den gespeicherten Wert der maximalen Befehlspuffer-Auslastung (arrBufferMaximumDemandMeter) zurück.

bResetOverflowCounter

BOOL

Eine positive Flanke setzt den gespeicherten Wert der Anzahl der Befehlspuffer-Überläufe (arrBufferOverflowCounter) zurück.

bResetInactiveProcessImage

BOOL

Eine positive Flanke hebt die Sperrung des Prozessabbildes der Klemme wieder auf. Die Ausgänge bProcessImageInactive, bDigitalInput1Active und bDigitalInput2Active werden wieder auf FALSE gesetzt. Die Sperrung wird aktiviert, sobald einer der digitalen Eingänge Input1 oder Input2 an der Klemme betätigt wurde.

bResetDataFrameError

BOOL

Eine positive Flanke setzt die Meldung für einen Telegrammfehler wieder zurück. Der Ausgang bDatafRameError wird wieder auf FALSE gesetzt. Die Sperrung wird aktiviert, sobald von der Klemme ein Telegrammfehler erkannt wurde.

dwOptions

DWORD

Reserviert für zukünftige Erweiterungen

FB_KL6831KL6841Communication 3: Ein-/Ausgänge

VAR_IN_OUT
  stInData        : ST_KL6831KL6841InData;
  stOutData       : ST_KL6831KL6841OutData;
  stCommandBuffer : ST_SMICommandBuffer;
END_VAR

Name

Typ

Beschreibung

stInData

ST_KL6831KL6841InData

Verweis auf die Struktur zur Kommunikation mit der KL6831/KL6841

stOutData

ST_KL6831KL6841OutData

Verweis auf die Struktur zur Kommunikation mit der KL6831/KL6841

stCommandBuffer

ST_SMICommandBuffer

Verweis auf die Struktur zur Kommunikation mit den SMI-Funktionsbausteinen

FB_KL6831KL6841Communication 4: Ausgänge

VAR_OUTPUT
  bBusy                       : BOOL;
  bError                      : BOOL;
  udiErrorId                  : UDINT;
  arrBufferDemandMeter        : ARRAY [0..2] OF BYTE;
  arrBufferMaximumDemandMeter : ARRAY [0..2] OF BYTE;
  arrBufferOverflowCounter    : ARRAY [0..2] OF UINT;
  bLineIsInitialized          : BOOL;
  b24VPowerSupplySwitchedOn   : BOOL;
  bDigitalInput1Active        : BOOL;
  bDigitalInput2Active        : BOOL;
  bProcessImageInactive       : BOOL;
  bDataFrameError             : BOOL;
  bChecksumError              : BOOL;
END_VAR

Name

Typ

Beschreibung

bBusy

BOOL

Der Ausgang wird gesetzt, sobald der Funktionsbaustein einen Befehl verarbeitet und bleibt so lange aktiv, bis der Befehl abgearbeitet wurde.

bError

BOOL

Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung eines Befehls ein Fehler aufgetreten ist. Der befehlsspezifische Fehlercode ist in udiErrorId enthalten. Durch das erneute Aktivieren des Funktionsbausteins über den Eingang bStart wird der Ausgang wieder auf FALSE zurückgesetzt.

udiErrorId

UDINT

Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls. Wird durch das erneute Aktivieren des Funktionsbausteins über den Eingang bStart wieder auf 0 zurückgesetzt (siehe Fehlercodes).

arrBufferDemandMeter

ARRAY OF BYTE

Belegung des jeweiligen Puffers (0 – 100 %)

arrBufferMaximumDemandMeter

ARRAY OF BYTE

Bisherige maximale Auslastung des jeweiligen Puffers (0 – 100 %)

arrBufferOverflowCounter

ARRAY OF BYTE

Bisherige Anzahl der Pufferüberläufe

bLineIsInitialized

BOOL

Wird der Funktionsbaustein das erste Mal aufgerufen (z. B. beim Starten der Steuerung), so wird eine Initialisierung durchgeführt. Während dieser Zeit können keine SMI-Befehle bearbeitet werden. Ist die Initialisierung abgeschlossen, wird dieser Ausgang auf TRUE gesetzt.

b24VPowerSupplySwitchedOn

BOOL

Die KL6831/KL6841 muss über zwei Anschlüsse mit 24 V DC versorgt werden. Der Ausgang wird gesetzt, sobald die 24 V DC erkannt wurden. Fehlen die 24 V DC geht der Ausgang auf FALSE und es können keine SMI-Befehle über die Steuerung bearbeitet werden, solang die 24 V DC nicht vorhanden sind.

bDigitalInput1Active

BOOL

Der digitale Eingang Input1 an der Klemme wurde betätigt oder ist betätigt (siehe auch Klemmendokumentation). Der Ausgang bProcessImageInactive wird gesetzt und es können keine weiteren SMI-Befehle über die Steuerung bearbeitet werden.

bDigitalInput2Active

BOOL

Der digitale Eingang Input2 an der Klemme wurde betätigt oder ist betätigt (siehe auch Klemmendokumentation). Der Ausgang bProcessImageInactive wird gesetzt und es können keine weiteren SMI-Befehle über die Steuerung bearbeitet werden.

bProcessImageInactive

BOOL

Einer der digitalen Eingänge Input1 oder Input2 wurde an der Klemme betätigt. Es können keine weiteren SMI-Befehle über die Steuerung bearbeitet werden. Über den Eingang bResetInactiveProcessImage muss die Sperrung wieder freigeschaltet werden.

bDataFrameError

BOOL

Die Klemme hat einen Telegrammfehler auf dem SMI-Bus erkannt. Über den Eingang bResetDataFrameError muss der Fehler wieder zurückgesetzt werden.

bChecksumError

BOOL

Die Klemme hat einen Checksummenfehler auf dem SMI-Bus erkannt. Die Meldung wird automatisch zurückgesetzt, sobald ein Telegramm wieder fehlerfrei übertragen wurde.

Voraussetzungen

Entwicklungsumgebung

Einzubindende SPS-Bibliothek

TwinCAT ab v3.1.4020.14

Tc2_SMI ab 3.3.5.0