FB_Dpv1ReadPNET

FB_Dpv1ReadPNET 1:

Der Funktionsbaustein FB_Dpv1ReadPNET liest einen oder mehrere Parameter eines Sinamics Profidrive via DPV1 (Profidrive specification 3.1) via Profinet. Das DPV1 Lesetelegramm muss mit F_CreateDpv1ReadReqPkgPNET erstellt werden, bevor an bExecute eine steigende Flanke ansteht. Das DPV1 Antworttelegramm muss mit F_SplitDpv1ReadResPkgPNET ausgewertet werden, nach dem bBusy eine fallende Flanke anzeigt.

Die Ausführung dieses Funktionsbausteins benötigt einige Zeit, abhängig von der Anzahl der Parameter, die gelesen werden sollen. Der Funktionsbaustein sendet das DPV1 Telegramm und pollt nach einem Antworttelegramm.

FB_Dpv1ReadPNET 2: Eingänge

VAR_INPUT
    bExecute        : BOOL;(* drive access info *)
    aNetId          : T_AmsNetId; (* NetID of Profibus Master EL6631 *)
    iProfinetPort   : UINT; (* Port of ProfiDrive *)
    iDriveId        : USINT; (* 0..255 possible *)
    pDpv1ReqData    : POINTER TO ARRAY [1..iMAX_DPV1_SIZE_PNET_REQ] OF BYTE;
    iDpv1ReqDataLen : UDINT;
    pDpv1ResData    : POINTER TO ARRAY [1..iMAX_DPV1_SIZE_PNET_RES] OF BYTE;
    iDpv1ResDataLen : UDINT;
    tTmOut          : TIME;
END_VAR

Name

Typ

Beschreibung

bExecute

BOOL

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

aNetId

T_AmsNetID

Die Netzwerkadresse des Profibus Master Gerätes (siehe ADS-Tab des Profibus Master Gerätes in der I/O-Konfiguration im TwinCAT System)

iProfinetPort

UINT

Die Profinet Port-Nummer des Antriebs. Das ist eine Adresse für mehrere Achsen, spezifiziert im TwinCAT-System in der I/O-Konfiguration.

iDriveID

USINT

Die ID ist 1 für die ControllerUnit, 2 für das Antriebsobjekt A, 3 für das Antriebsobjekt B eines Doppel/Dreifach-Antriebs. Die Drive ID wird in der Starter Software gesetzt. 1..16 ist möglich.

pDpv1ReqData

POINTER TO ARRAY

Zeiger auf ein Array von 240 Bytes, das das DPV1 Lesetelegramm enthält. Dieses Telegramm muss von der Funktion F_CreateDpv1ReadReqPkg erstellt werden, bevor das DPV1 Lesen via bExecute aktiviert wird.

iDv1ReqDataLen

UDINT

Maximale Länge des DPV1 Datapuffer (240 bytes).

pDpv1ResData

POINTER TO ARRAY

Zeiger auf ein Array von 240 Bytes, das das DPV1 Leseantworttelegramm enthält. Dieses Telegramm muss von der Funktion F_SplitDpv1ReadResPkg ausgewertet werden nachdem auf bBusy eine negative Flanke erscheint.

iDpv1ResDataLen

UDINT

Maximale Länge des DPV1 Antwort-Datapuffers (240 bytes).

tTmOut

TIME

Maximale Zeit die bei der Ausführung des Kommandos nicht überschritten werden soll.

FB_Dpv1ReadPNET 3: Ein-/Ausgänge

VAR_OUTPUT
    iRequestRef : USINT; (* 1..127; 0: reserved *)
END_VAR

Name

Typ

Beschreibung

iRefRequest

USINT

Referenz, die mit jedem Telegramm automatisch hochgezählt wird. Die Referenz wird für die Zuordnung der Antworten auf die Schreib/Lese-Anforderungen benötigt.

FB_Dpv1ReadPNET 4: Ausgänge

VAR_OUTPUT
    bBusy        : BOOL;
    bError       : BOOL;
    bErrorValues : BOOL;
    iErrId       : UDINT;
    iErrorClass  : BYTE;
    iErrorCode   : BYTE;
END_VAR

Name

Typ

Beschreibung

bBusy

BOOL

Der Ausgang geht auf TRUE sobald der Funktionsbaustein via bExecute aktiviert wurde und bleibt so lange TRUE, wie der Baustein keine Antwort erhalten hat.

bError

BOOL

Bei Fehlern geht der Ausgang auf TRUE und bBusy auf FALSE.

bErrorValues

BOOL

Ist TRUE wenn der DPV1 Read nicht oder nur teilweise erfolgreich war. Die Fehlerursachen werden über die Fehler-ID geliefert (sowie Class und Code).

iErrId

UDINT

Liefert die ADS Fehlernummer oder funktionsbausteinspezifische Fehlernummern, wenn bError = TRUE.

iErrClass

BYTE

Profidrive Fehlerklasse

iErrCode

BYTE

Profidrive Fehlercode

Funktionbausteinspezifische Fehlercodes

Beschreibung

0x2

Falsche Antwortreferenz

0x3

DPV1 Read fehlerhaft oder teilweise fehlerhaft

0x4

Falsche Antwort-ID

other error IDs

Siehe ADS Fehlercodes

Fehlerklassen

Beschreibung

Fehlercode

0x0 - 0x9

Reserviert

-

0xA

Anwendungsfehler

0x0: Lesefehler
0x1: Schreibfehler 0x2: Modulfehler
0x3 - 0x7: reserviert
0x8: Versionskonflikt
0x9: nicht unterstützt
0xA - 0xF: benutzerabhängig

0xB

Zugriffsfehler

0x0: ungültiger Index (kein Datenblock DB47, Parameterzugriff wird nicht unterstützt)
0x1: Schreiblängenfehler
0x2: ungültiger Slot
0x3: Typkonflikt
0x4: ungültiger Bereich
0x5: Zustandskonflikt (Zugriff auf DB47 temporär nicht möglich wegen interner Prozesszustände)
0x6: Zugriff verweigert
0x7: ungültiger Bereich (Schreibfehler im DB47 Header) 0x8: ungültiger Parameter
0x9: ungültiger Typ
0xA - 0xF: benutzerabhängig

0xC

Resourcefehler

0x0: Lesekonflikt
0x1: Schreibkonflikt
0x2: Resource beschäftigt
0x3: Resource nicht erreichbar 0x4 - 0x7: reserviert
0x8 - 0xF: benutzerabhängig

0xD - 0xF

Benutzerdefinierte Fehler

-

Voraussetzungen

Entwicklungsumgebung

Zielplattform

IO Hardware

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86)

Beckhoff EL6632

Tc2_IoFunctions (IO)