AdditionalIDNListMDT

General

Type

EF Custom

Offline editable

Yes

Devices supporting the parameter

Lexium LXM52 Drive, Lexium LXM52 Linear Drive,

Lexium LXM62 Drive, Lexium LXM62 Linear Drive,

Lexium ILM62 Drive Module,

Lexium LXM62 Power Supply

Traceable

No

Functional Description

The parameter defines a list of Sercos IDNs that are transmitted additionally into the real-time channel from the PacDrive controller to the drive. The parameters (master data) are inserted into the real-time channel during the next Sercos phase up.

The default value is ''. There are no additional master data configured in the real-time channel.

Also refer to Sercos Cyclic Data Exchange.

The following IDNs can be configured in this real-time channel.

Real-time parameter

User parameter

 

IDN

Length

Data type

Parameter name

Units

Device

P-0-1069.0.0

2 bytes

INT

UserRefCurrentFeedForward

mA

Drive

P-0-1064.0.1

4 bytes

UDINT

ControllerStopDec

Unit/s2

Drive

P-0-1064.0.2

4 bytes

UDINT

ControllerStopJerk

Unit/s3

Drive

P-0-0018.0.0

2 bytes

UINT

OverloadDetectionCurrent

mA

Drive

P-0-0001.0.0

4 bytes

UDINT

TrackingDeviationLimit

Unit

Drive

The parameters are not transferred with user units. The conversion parameters have to be read one-time with the corresponding Sercos IDN (see following table) to define the formatting.

For user parameter

IDN

Length

Data type

Conversion parameter

Conversion factor

UserRefCurrentFeedForward

P-0-1052.0.0

2 bytes

UINT

CurrentConversionFactorRTB

1000/CurrentConversionFactorRTB

ControllerStopDec

P-0-1011.0.0

2 bytes

UINT

AccelerationConversionFactor

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

ControllerStopJerk

P-0-1071.0.0

2 bytes

UINT

JerkConversionFactor

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

OverloadDetectionCurrent

P-0-1052.0.0

2 bytes

UINT

CurrentConversionFactorRTB

1000/CurrentConversionFactorRTB

TrackingDeviationLimit

524288/(FeedConstant*GearIn/GearOut)

To convert a user parameter to the corresponding real-time parameter, the user parameter has to be multiplied by the corresponding conversion factor.

RealTimeParameter = UserParameter * ConversionFactor

The parameters are written in a string separated by a semicolon in the desired sequence and number of entities.

The maximum number of parameters that can be configured by AdditionalIDNListAT and AdditionalIDNListMDT is 6 for standard drives and 3 for safety-related drives. When the number of allowed additional real-time parameters is exceeded, the diagnostic message 8508 Sercos run-up not possible with the ExtDiagMsg C_SP4=20028 is triggered during the Sercos phase-up.

Example: For a standard drive, it is allowed to parameterize a maximum of 4 further parameters by AdditionalIDNListMDT when 2 parameters already have been configured via AddtionalIDNListAT.

Example: P-0-1069.0.0

Function blocks are used to write the respective parameters.

NOTE: The corresponding parameters of the configuration are not mapped to the additionally configured real-time data. The access to this data is explained in the chapter AdditionalIDNListMDTAdr.
NOTE: By configuring additional data in the real-time channel, the maximum number of Sercos members are reduced.
NOTE: By configuring the parameter UserDefinedStopDeceleration or UserDefinedStopJerk in the real-time channel, the function of the parameters ControllerStopDec or ControllerStopJerk is deactivated. So in this case, the programmer himself is responsible that furthermore a controlled standstill is possible.
 DANGER
DRIVE MOVES DURING STANDSTILL OR DRIVE DOES NOT STOP
  • Configured data must be written and must conform to the equipment.
  • Ensure that no one is in the area of operation during the startup.
Failure to follow these instructions will result in death or serious injury.
NOTE: While the drive is shut down with a user-defined stop, new parameters UserDefinedStopDeceleration or UserDefinedStopJerk that are transferred via real-time channel are ignored.

Example

Target: The parameters UserRefCurrentFeedForward, UserDefinedStopDeceleration, and UserDefinedStopJerk must be configured in the real-time channel and be written to the drive correctly.

Step

Action

1

Set the parameter AdditionalIDNListMDT to P-0-1069.0.0;P-0-1064.0.1;P-0-1064.0.2.

2

Set Sercos bus into phase 4.

Result: The length of the configured parameters is indicated in the AdditionalIDNListMDTLength parameter.

3

Calculate once the addresses to write the real-time data.

piAdditionalMDTDataAdr1 : POINTER TO INT;
pulAdditionalMDTDataAdr2 : POINTER TO UDINT;
pulAdditionalMDTDataAdr3 : POINTER TO UDINT;
piAdditionalMDTDataAdr1 := DRV_Lexium62.AdditionalIDNListMDTAdr;
pulAdditionalMDTDataAdr2 := DRV_Lexium62.AdditionalIDNListMDTAdr + 2;
pulAdditionalMDTDataAdr3 := DRV_Lexium62.AdditionalIDNListMDTAdr + 2 + 4;

4

Read Sercos IDN P-0-1052.0.0 once using the FC_SercosReadServiceData() and calculate the rCurrentConversionFactor.

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(iCurrentConversionFactor) / 1000.0

5

Read Sercos IDN P-0-1011.0.0 once using the FC_SercosReadServiceData() and calculate the rAccelerationConversionFactor.

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(iAccelerationConversionFactor) / 100000.0;

6

Read Sercos IDN P-0-1071.0.0 once using the FC_SercosReadServiceData() and calculate the rJerkConversionFactor.

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

Calculate the internal FeedConstant.

rIntFeedConstant := DRV_Lexium62.FeedConstant * DRV_Lexium62.GearIn / DRV_Lexium62.GearOut;

8

Write the additional configured real-time data in a cyclic task (external event triggered with MDT_WRITE_ACCESS) and standardize the data to the desired unit. The calculated addresses, the calculated conversion factors, and the internal FeedConstant must be transferred. The variables rUserRefCurrentFeedForward, rUserDefinedStopDeceleration, rUserDefinedStopJerk must be set to the desired values. They can be modified every Sercos cycle.

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(rUserRefCurrentFeedForward /
   rCurrentConversionFactor);
   piAdditionalMDTDataAdr1^ := iUserRefCurrentFeedForward;
END_IF
IF pulAdditionalMDTDataAdr2 <> 0 THEN   ulUserDefinedStopDeceleration := 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

Start the program.