FB_SMIDiagAll
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:
- Die Bedingung trifft auf mindestens einen Antrieb zu.
- Die Bedingung trifft auf keinen Antrieb zu.
- Die Bedingung konnte nicht ermittelt werden.
Weiter unten werden hierzu einige Beispiele erläutert.
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 | 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 | Priorität (hoch, mittel oder niedrig), mit der der Befehl von der SPS-Bibliothek abgearbeitet wird. |
Ein-/Ausgänge
VAR_IN_OUT
stCommandBuffer : ST_SMICommandBuffer;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
stCommandBuffer | Verweis auf die Struktur zur Kommunikation (Puffer) mit dem FB_KL6831KL6841Communication()-Baustein |
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 | Mindestens ein Motor fährt hoch / Kein Motor fährt hoch / Der Wert ist undefiniert | |
eResDrivesDown | Mindestens ein Motor fährt runter. / Kein Motor fährt runter. / Der Wert ist undefiniert. | |
eResIsStopped | Mindestens ein Motor ist gestoppt. / Kein Motor ist gestoppt. / Der Wert ist undefiniert. | |
eResWithError | 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 |