FB_SMISendSMICommand
Dieser Baustein dient zum allgemeinen Senden eines SMI-Kommandos. Hierzu muss der genaue Aufbau eines SMI-Befehls und die Funktionsweise der KL6831/KL6841 bekannt sein. Der Einsatz dieses Bausteins ist nur notwendig, wenn ein SMI-Befehl versendet werden soll, der nicht durch die anderen SPS-Bausteine abgedeckt wird.
VAR_INPUT
bStart : BOOL;
dwAddr : DWORD := 0;
eAddrType : E_SMIAddrType := eSMIAddrTypeAddress;
dwAddrOption : DWORD := 0;
eCommandPriority : E_SMICommandPriority := eSMICommandPriorityMiddle;
eCommandType : E_SMICommandType := eSMICommandTypeWrite;
eResponseFormat : E_SMIResponseFormat := eSMIResponseFormatDiagnosis;
arrIdentificationBytes : ARRAY [0..2] OF BYTE;
arrParameters : ARRAY [0..2] OF DWORD;
bSuppressResponseBuffer : BOOL := FALSE;
dwOptions : DWORD := 0;
bStart: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.
dwAddr: 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, zur Gruppenadressierung oder als Slave-Id ausgewertet werden soll.
dwAddrOption: Wird das SMI-Gerät per Slave-Id adressiert (eAddrType = eSMIAddrTypeSlaveId), so muß über diesen Eingang der Herstellercode angegeben werden.
eCommandPriority: Priorität (hoch, mittel oder niedrig), mit der der Befehl von der SPS-Bibliothek abgearbeitet wird.
eCommandType: Kommandoart: Schreiben/Lesen. Dieser Parameter beeinflusst das Bit 5 vom Startbyte des SMI-Telegramms.
eResponseFormat: Antwortformat: Diagnose-Sonderformat/Standard. Dieser Parameter beeinflusst das Bit 6 vom Startbyte des SMI-Telegramms.
arrIdentificationBytes: Ein SMI-Telegramm kann aus bis zu 3 Blöcken bestehen. Jeder Block besitzt ein Kennungsbyte. Über dieses Array werden die drei Kennungsbytes definiert.
arrParameters: Ein SMI-Telegramm kann aus bis zu 3 Blöcken bestehen. Jeder Block besitzt bis zu vier Wertebytes. Über dieses Array werden die Wertebytes der einzelnen Blöcke definiert.
bSuppressResponseBuffer: Wird dieser Eingang auf TRUE gesetzt, so wird der interne Software-Puffer nicht mit den Antworten des Bausteins FB_KL6831KL6841Communication() gefüllt.
dwOptions: reserviert für zukünftige Erweiterungen.
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
udiErrorId : UDINT;
arrResponseData : ARRAY [0..7] OF BYTE;
byResponseDataLength : BYTE;
byResponseIdentificationByte : BYTE;
bBusy: Bei der Aktivierung des Bausteins wird der Ausgang gesetzt und bleibt so lange aktiv bis der Befehl abgearbeitet wurde.
bError: 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 Bausteins über den Eingang bStart wird der Ausgang wieder auf FALSE zurückgesetzt.
udiErrorId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls. Wird durch das erneute Aktivieren des Bausteins über den Eingang bStart wieder auf 0 zurückgesetzt. Siehe Fehlercodes.
arrResponseData: Die empfangenen Daten von den SMI-Geräten.
byResponseDataLength: Die Länge der empfangenen Daten, in Bytes.
byResponseIdentificationByte: Das empfangene Kennungsbyte.
VAR_IN_OUT
stCommandBuffer : ST_SMICommandBuffer;
stCommandBuffer: Verweis auf die Struktur zur Kommunikation (Puffer) mit dem FB_KL6831KL6841Communication()-Baustein.
Voraussetzungen
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken |
---|---|---|
TwinCAT 2.11 R3/x64 ab Build 2238 | PC/CX, BX oder BC | TcSMI-Bibliothek ab V1.0.0 |