AdditionalIDNListMDT

Allgemeines

Typ

EF Custom

Offline bearbeitbar

Ja

Geräte, die folgende Parameter unterstützen:

Lexium LXM52 Drive, Lexium LXM52 Linear Drive,

Lexium LXM62 Drive, Lexium LXM62 Linear Drive,

Lexium ILM62 Drive Module,

Lexium LXM62 Power Supply

Tracebar

Nein

Funktionsbeschreibung

Der Parameter definiert eine Liste von Sercos-IDNs, die zusätzlich in den Echtzeitkanal vom PacDrive Controller in den Antrieb übertragen werden sollen. Die Parameter (Masterdaten) werden beim nächsten Sercos-Phasenhochlauf in den Echtzeitkanal eingefügt.

Der Standardwert beträgt ''. Es sind keine zusätzlichen Masterdaten im Echtzeitkanal konfiguriert.

Siehe auch Sercos Zyklischer Datenaustausch.

Folgende IDNs können in diesem Echtzeitkanal konfiguriert werden:

Echtzeitparameter

Anwenderparameter

 

IDN

Länge

Datentyp

Parametername

Einheit

Gerät

P-0-1069.0.0

2 Byte

INT

UserRefCurrentFeedForward

mA

Antrieb

P-0-1064.0.1

4 Byte

UDINT

ControllerStopDec

Einheit/s2

Antrieb

P-0-1064.0.2

4 Byte

UDINT

ControllerStopJerk

Einheit/s3

Antrieb

P-0-18.0.0

2 Byte

UINT

OverloadDetectionCurrent

mA

Antrieb

P-0-1.0.0

4 Byte

UDINT

TrackingDeviationLimit

Einheit

Antrieb

Die Parameter werden nicht mit Anwendereinheiten übertragen. Um die Formatierung zu bestimmen, müssen die Umrechnungsparameter mit der entsprechenden Sercos IDN (siehe Tabelle unten) einmalig gelesen werden.

Für Anwenderparameter

IDN

Länge

Datentyp

Konvertierungsparameter

Umrechungsfaktor

UserRefCurrentFeedForward

P-0-1052.0.0

2 Byte

UINT

CurrentConversionFactorRTB

1000/CurrentConversionFactorRTB

ControllerStopDec

P-0-1011.0.0

2 Byte

UINT

AccelerationConversionFactor

100000 * 2pi / (FeedConstant * (GearIn / GearOut) * AccelerationConversionFactor)

ControllerStopJerk

P-0-1071.0.0

2 Byte

UINT

JerkConversionFactor

100 * 2pi / (FeedConstant * (GearIn / GearOut) * JerkConversionFactor)

OverloadDetectionCurrent

P-0-1052.0.0

2 Byte

UINT

CurrentConversionFactorRTB

1000/CurrentConversionFactorRTB

TrackingDeviationLimit

524288/(FeedConstant*GearIn/GearOut)

Um einen internen Echtzeitparameter in den entsprechenden Anwenderparameter zu konvertieren, muss der Echtzeitparameter mit dem zugehörigen Umrechnungsfaktor multipliziert werden.

RealTimeParameter = UserParameter * ConversionFactor

Die Parameter werden in der gewünschten Reihenfolge und Anzahl durch Semikolon (Strichpunkt) getrennt in einen String geschrieben.

Die maximale Anzahl von Parametern, die mit AdditionalIDNListAT und AdditionalIDN­ListMDT konfiguriert werden dürfen, ist für Standard-Antriebe 6 und für sicherheitsgerichtete Antriebe 3. Wenn die Anzahl an erlaubten zusätzlichen Echtzeitparametern überschritten ist, dann erscheint die Diagnosemeldung 8508 Sercos Hochlauf nicht möglich mit der ExtDiagMsg C_SP4=20028 beim nächsten Sercos Phasenhochlauf.

Beispiel: Bei einem Standard-Antrieb ist es erlaubt, maximal 4 weitere Parameter mit Addition­alIDNListMDT zu parametrieren, wenn 2 Parameter bereits mit AddtionalIDNListAT konfiguriert wurden.

Beispiel: P-0-1069.0.0

Für das Schreiben der jeweiligen Parameter werden Funktionsbausteine eingesetzt.

HINWEIS: Die zugehörigen Parameter der Konfiguration werden nicht auf die zusätzlich konfigurierten Echtzeitdaten abgebildet. Der Zugriff auf diese Daten wird im Kapitel AdditionalID­NListMDTAdr erläutert.

HINWEIS: Durch die Konfiguration von zusätzlichen Daten im Echtzeitkanal wird die maximale Anzahl an Sercos Teilnehmern reduziert.

HINWEIS: Durch die Konfiguration der Parameter UserDefinedStopDeceleration bzw. UserDefinedStopJerk im Echtzeitkanal wird die Funktion der ControllerStopDec bzw. ControllerStopJerk deaktiviert. Der Programmierer ist somit dafür verantwortlich, dass ein definiertes Stillsetzen des Antriebs weiterhin möglich ist.

Danger_Color.gifGEFAHR

ANTRIEB BEWEGT SICH BEIM STILLSETZEN ODER ANTRIEB KANN NICHT STILLGESETZT WERDEN

oKonfigurierte Daten müssen geschrieben werden und mit den Anlagendaten übereinstimmen.

oBei der Inbetriebnahme dürfen sich keine Personen im Betriebsbereich aufhalten.

Die Nichtbeachtung dieser Anweisungen führt zu Tod oder schweren Verletzungen.

HINWEIS: Während der Antrieb mit einem benutzerdefinierten Stopp angehalten wird, werden neue Parameter UserDefinedStopDeceleration bzw. UserDefinedStopJerk, die über den Echtzeitkanal übertragen werden, ignoriert.

Beispiel

Schritt

Aktion

1

Setzen Sie den Parameter AdditionalIDNListMDT auf P-0-1069.0.0;P-0-1064.0.1;P-0-1064.0.2.

2

Setzen Sie den Sercos-Bus in die Phase 4.

Ergebnis: Die Länge der konfigurierten Parameter wird im Parameter AdditionalIDNListMDTLength angegeben.

3

Berechnen Sie die Adressen einmal, um die Echtzeitdaten zu schreiben.

piAdditionalMDTDataAdr1 : POINTER TO INT;
pulAdditionalMDTDataAdr2 : POINTER TO UDINT;
pulAdditionalMDTDataAdr3 : POINTER TO UDINT;
piAdditionalMDTDataAdr1 := DRV_Lexium62.AdditionalIDNListMD­TAdr;
pulAdditionalMDTDataAdr2 := DRV_Lexium62.AdditionalIDNListMD­TAdr + 2;
pulAdditionalMDTDataAdr3 := DRV_Lexium62.AdditionalIDNListMD­TAdr + 2 + 4;

4

Sercos IDN P-0-1052.0.0 mit FC_SercosReadServiceData() einmalig lesen und rCurrentConversionFactor berechnen.

lResult: DINT;
uiReadDataLen: UINT;
uiMaxReadDataLen: UINT;
iCurrentConversionFactor: INT;
rCurrentConversionFactor: LREAL;
lResult := FC_SercosReadServiceData(Axis_1.stLogicalAddress,
     16#8000 + 1052,
     5,
     ADR(iCurrentConversionFactor),
     2,
     uiReadDataLen,
     uiMaxReadDataLen);
rCurrentConversionFactor := INT_TO_REAL(iCurrentConversionFac­tor) / 1000.0

5

Sercos IDN P-0-1011.0.0 mit FC_SercosReadServiceData() einmalig lesen und rAccelerationConversionFactor berechnen.

lResult: DINT;
uiReadDataLen: UINT;
uiMaxReadDataLen: UINT;
iAccelerationConversionFactor: INT;
rAccelerationConversionFactor: LREAL;
lResult := FC_SercosReadServiceData(Axis_1.stLogicalAddress,
     16#8000 + 1011,
     5,
     ADR(iAccelerationConversionFactor),
     2,
     uiReadDataLen,
     uiMaxReadDataLen);
     rAccelerationConversionFactor := INT_TO_REAL(iAccelera­tionConversionFactor) / 100000.0;

6

Sercos IDN P-0-1071.0.0 mit FC_SercosReadServiceData() einmalig lesen und rJerkConversionFactor berechnen.

lResult: DINT;
uiReadDataLen: UINT;
uiMaxReadDataLen: UINT;
iCurrentConversionFactor: INT;
rCurrentConversionFactor: LREAL;
lResult := FC_SercosReadServiceData(Axis_1.stLogicalAddress,
     16#8000 + 1071,
     5,
     ADR(iJerkConversionFactor),
     2,
     uiReadDataLen,
     uiMaxReadDataLen);
rJerkConversionFactor := INT_TO_REAL(iJerkConversionFactor) / 100.0;

7

Berechnen Sie den internen Parameter FeedConstant.

rIntFeedConstant := DRV_Lexium62.FeedConstant * DRV_Lexi­um62.GearIn / DRV_Lexium62.GearOut;

8

In einer zyklischen Task (extern ereignisgesteuert mit MDT_WRITE_ACCESS) die zusätzlich konfigurierten Echtzeitdaten schreiben und auf gewünschte Einheit normieren. Die berechneten Adressen, die berechneten Umrechnungsfaktoren und die interne FeedConstant müssen übergeben werden. Die Variablen rUserRefCurrentFeedForward, rUserDefinedStopDeceleration und rUserDefinedStopJerk müssen auf die gewünschten Werte gesetzt werden. Sie können in jedem Sercos-Zyklus geändert werden.

piAdditionalMDTDataAdr1 : POINTER TO INT;
pulAdditionalMDTDataAdr2 : POINTER TO UDINT;
pulAdditionalMDTDataAdr3 : POINTER TO UDINT;
rCurrentConversionFactor: REAL;
rAccelerationConversionFactor: REAL;
rJerkConversionFactor: REAL;
rUserRefCurrentFeedForward: REAL; (* in mArms *)
iUserRefCurrentFeedForward: INT;
rUserDefinedStopDeceleration : REAL; (* in Unis/s^2 *)
ulUserDefinedStopDeceleration : UDINT;
rUserDefinedStopJerk: REAL; (* in Units/s^3 *)
ulUserDefinedStopJerk: UDINT;
PI: REAL := 3.14152;
IF piAdditionalMDTDataAdr1 <> 0 THEN
  iUserRefCurrentFeedForward := REAL_TO_INT(rUserRefCurrent­FeedForward /
  rCurrentConversionFactor);
  piAdditionalMDTDataAdr1^ := iUserRefCurrentFeedForward;
END_IF
IF pulAdditionalMDTDataAdr2 <> 0 THEN ulUserDefinedStopDecel­eration := REAL_TO_UDINT(rUserDefinedStopDeceleration * 2.0*PI / (rIntFeedConstant * rAccelerationConversionFactor));
  pulAdditionalMDTDataAdr2^ := ulUserDefinedStopDeceleration;
END_IF
IF pulAdditionalMDTDataAdr3 <> 0 THEN
   ulUserDefinedStopJerk := REAL_TO_UDINT(rUserDefinedStopJerk * 2.0*PI / (rIntFeedConstant * rJerkConversionFactor));
  pulAdditionalMDTDataAdr3^ := ulUserDefinedStopJerk;
END_IF

9

Starten Sie das Programm.