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.

VAR_INPUT

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

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

aNetId: Die Netzwerkadresse des Profibus Master Gerätes (siehe ADS-Tab des Profibus Master Gerätes in der I/O-Konfiguration im TwinCAT System, Typ: T_AmsNetID).

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

iDriveID: 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: 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: Maximale Länge des DPV1 Datapuffer (240 bytes).

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

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

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

VAR_OUTPUT

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

bBusy: 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: Bei Fehlern geht der Ausgang auf TRUE und bBusy auf FALSE.

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

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

nErrClass: Profidrive Fehlerklasse.

nErrCode: 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

-

VAR_IN_OUT

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

iRefRequest: 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.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

IO Hardware

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86)

Beckhoff EL6632

Tc2_IoFunctions (IO)