FB_SMIDiagAll

FB_SMIDiagAll 1:

Mit dem Funktionsbaustein FB_SMIDiagAll kann ermittelt werden, in welche Richtung die Antriebe fahren, ob diese gestoppt sind oder ob ein Motorfehler vorliegt. Der Befehl kann auch an mehrere SMI-Slaves gesendet werden. Dadurch lassen sich die Zustände aller SMI-Slaves mit einem Befehl abfragen.

Das Ergebnis der Abfrage wird durch vier Ausgänge weitergegeben. Jeder dieser Ausgänge kann drei Zustände annehmen:

Weiter unten werden hierzu einige Beispiele erläutert.

FB_SMIDiagAll 2: Eingänge

VAR_INPUT
  bStart           : BOOL;
  dwAddr           : DWORD := 0;
  eAddrType        : E_SMIAddrType := eSMIAddrTypeAddress;
  dwAddrOption     : DWORD := 0;
  eCommandPriority : E_SMICommandPriority := eSMICommandPriorityMiddle;
END_VAR

Name

Typ

Beschreibung

bStart

BOOL

Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert und der Befehl versendet.

dwAddr

DWORD

Herstellercode (0-15), Adresse eines Teilnehmers (0-15), Bitfeld (16 Bit) für die Gruppenadressierung oder Slave-Id (32 Bit Key-Id). Wird ein Sammelruf (Broadcast) versendet, so hat dieser Eingang keine Bedeutung.

eAddrType

E_SMIAddrType

Legt fest, ob der Eingang dwAddr als Herstellercode, Adresse eines Teilnehmers oder zur Gruppenadressierung ausgewertet werden soll. Eine Adressierung per Slave-Id (eAddrType = eSMIAddrTypeSlaveId) ist nicht zulässig.

dwAddrOption

DWORD

Reserviert für zukünftige Erweiterungen

eCommandPriority

E_SMICommandPriority

Priorität (hoch, mittel oder niedrig), mit der der Befehl von der SPS-Bibliothek abgearbeitet wird.

FB_SMIDiagAll 3: Ein-/Ausgänge

VAR_IN_OUT
  stCommandBuffer : ST_SMICommandBuffer;
END_VAR

Name

Typ

Beschreibung

stCommandBuffer

ST_SMICommandBuffer

Verweis auf die Struktur zur Kommunikation (Puffer) mit dem FB_KL6831KL6841Communication()-Baustein

FB_SMIDiagAll 4: Ausgänge

VAR_OUTPUT
  bBusy          : BOOL;
  bError         : BOOL;
  udiErrorId     : UDINT;
  eResDrivesUp   : E_SMIDiagResDrivesUp;
  eResDrivesDown : E_SMIDiagResDrivesDown;
  eResIsStopped  : E_SMIDiagResIsStopped;
  eResWithError  : E_SMIDiagResWithError;
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).

eResDrivesUp

E_SMIDiagResDrivesUp

Mindestens ein Motor fährt hoch / Kein Motor fährt hoch / Der Wert ist undefiniert

eResDrivesDown

E_SMIDiagResDrivesDown

Mindestens ein Motor fährt runter. / Kein Motor fährt runter. / Der Wert ist undefiniert.

eResIsStopped

E_SMIDiagResIsStopped

Mindestens ein Motor ist gestoppt. / Kein Motor ist gestoppt. / Der Wert ist undefiniert.

eResWithError

E_SMIDiagResWithError

Mindestens ein Motor ist in Störung. / Kein Motor ist in Störung. / Der Wert ist undefiniert.

Beispiele

Alle Antriebe sind gestoppt:

Ausgänge

Bedeutung

eResDrivesUp = eSMIDiagResNoMotorDrivesUp

Kein Antrieb fährt hoch

eResDrivesDown = eSMIDiagResNoMotorDrivesDown

Kein Antrieb fährt runter

eResIsStopped = eSMIDiagResAtLeastOneMotorIsStopped

Mindestens ein Antrieb ist gestoppt

eResWithError = eSMIDiagResNoMotorWithError

Kein Antrieb mit Motorfehler

Alle Antriebe fahren hoch:

Ausgänge

Bedeutung

eResDrivesUp = eSMIDiagResAtLeastOneMotorDrivesUp

Mindestens ein Antrieb fährt hoch

eResDrivesDown = eSMIDiagResNoMotorDrivesDown

Kein Antrieb fährt runter

eResIsStopped = eSMIDiagResNoMotorIsStopped

Kein Antrieb ist gestoppt

eResWithError = eSMIDiagResNoMotorWithError

Kein Antrieb mit Motorfehler

Ein Antrieb ist gestoppt und ein Antrieb fährt hoch:

Ausgänge

Bedeutung

eResDrivesUp = eSMIDiagResAtLeastOneMotorDrivesUp

Mindestens ein Antrieb fährt hoch

eResDrivesDown = eSMIDiagResNoMotorDrivesDown

Kein Antrieb fährt runter

eResIsStopped = eSMIDiagResAtLeastOneMotorIsStopped

Mindestens ein Antrieb ist gestoppt

eResWithError = eSMIDiagResNoMotorWithError

Kein Antrieb mit Motorfehler

Ein Antrieb ist gestoppt, ein Antrieb fährt hoch und ein Antrieb fährt runter:

Ausgänge

Bedeutung

eResDrivesUp = eSMIDiagResAtLeastOneMotorDrivesUp

Mindestens ein Antrieb fährt hoch

eResDrivesDown = eSMIDiagResAtLeastOneMotorDrivesDown

Mindestens ein Antrieb fährt runter

eResIsStopped = eSMIDiagResAtLeastOneMotorIsStopped

Mindestens ein Antrieb ist gestoppt

eResWithError = eSMIDiagResNoMotorWithError

Kein Antrieb mit Motorfehler

Voraussetzungen

Entwicklungsumgebung

Einzubindende SPS-Bibliothek

TwinCAT ab v3.1.4020.14

Tc2_SMI ab 3.3.5.0