DriveParamRead

PLCopen motion icon Pipe Network motion icon

 Function BlockClosed A function block groups an algorithm and a set of private data. It has inputs and outputs. - Reads a drive parameter by sending an ASCII command to a drive.

Inputs

Input

Data Type

Range

Unit

Default

Description

Execute

BOOL

0, 1

N/A

No default

On the rising edgeClosed A rising edge is the transition of a digital signal from low to high. It is also called positive edge of Execute, a drive parameter is read.

  • The function block processes only one request at a time.
  • If Execute is toggled quickly so that another rising edge occurs before the function block has completed, the function block does not issue a second read command.

Drive

INT

No range

N/A

No default

The address of the drive where data is read.

  • The first node usually has the value 1001.
  • The second node usually has the value 1002.

Alternately, use the members of the EtherCATClosed ***EtherCAT is an open, high-performance Ethernet-based fieldbus system. The development goal of EtherCAT was to apply Ethernet to automation applications which require short data update times (also called cycle times) with low communication jitter (for synchronization purposes) and low hardware costs structure to specify a drive's address to Create Variables.
creating an EtherCAT variable

Param

STRING

No range

N/A

No default

The parameter to read.

Outputs

Output

Data Type

Range

Unit

Description

Done

BOOL

No range

N/A

Indicates whether this function block has completed without error.

Error

BOOL

No range

N/A

Indicates whether this function block call has completed with error.

ErrorID

DINT

No range

N/A

The DriveParamRead error result if Error is TRUE.

Upon success, Error is set to 0 (zero).

See the EtherCAT Error Codes for more information.

Value

LREAL

No range

N/A

The value of the drive parameter.

Value is only set when the function block has successfully completed.

Units

STRING

No range

N/A

The value of the drive parameter.

Value is only set when the function block has successfully completed.

Remarks

Use this function block to read drive parameters that are not supported by other function blocks.

Examples include:

  • Motor temperature
  • Drive bus voltage
  • Present drive limit settings
  • Present regeneration loading
  • Drive display
  • Fault history
  • It takes multiple cycles to complete this function block.
  • Typically only one DriveParamRead or DriveParamWrite function should be active for each axis at one time.
  • If executing this function block continuously or if multiple times is required, add code that waits for this function block to complete (Done bit = 1) before executing it again.
  • See EtherCAT Function Blocks That Work With Drive Parameters for information about function blocks that are not supported by ML and MC function blocks.

DriveParamRead

Figure 7-187: DriveParamRead

EtherCAT Error Codes

List of EtherCAT Error Codes

Error Code

Value dec (hex)

Description

ECERR_OK

0

The SDO call succeeded

ECERR_DEVICE_ERROR

1792 (0x700)

EtherCAT device is not accessible

ECERR_DEVICE_INVALIDCMD

1794 (0x702)

Invalid mailbox command

ECERR_DEVICE_INVALIDINDEX

1795 (0x703)

An invalid value for the Index input was specified

ECERR_DEVICE_INVALIDACCESS

1796 (0x704)

Reading of the variable is not permitted

ECERR_DEVICE_INVALIDSIZE

1797 (0x705)

An invalid size for the parameter was specified

ECERR_DEVICE_INVALIDDATA

1798 (0x706)

Invalid parameter value(s) in SDO index and/or sub-index

ECERR_DEVICE_NOTREADY

1799 (0x707)

Device is not in a ready state, network is not in operational

ECERR_DEVICE_BUSY

1800 (0x708)

Device is not available to respond

ECERR_DEVICE_INVALIDCONTEXT

1801 (0x709)

Device responded with an illegal error code, indicating the command is not allowed under the present conditions

ECERR_DEVICE_NOMEMORY

1802 (0x70A)

EtherCAT mailbox is out of memory or device is out of disk space

ECERR_DEVICE_INVALIDPARM

1803 (0x70B)

EtherCAT mailbox request was not valid

ECERR_DEVICE_NOTFOUND

1804 (0x70C)

EtherCAT device not found

ECERR_DEVICE_SYNTAX

1805 (0x70D)

An unexpected error occurred

ECERR_DEVICE_INVALIDSTATE

1810 (0x712)

The EtherCAT device is in an invalid state

ECERR_DEVICE_TIMEOUT

1817 (0x719)

The EtherCAT device failed to respond, timing out

ECERR_DEVICE_INSERTMAILBOX

1826 (0x722)

Error while inserting the mailbox command into internal FIFO

ECERR_DEVICE_INVALIDOFFSET

1827 (0x723)

An invalid value for the SubIndex input was specified

ECERR_DEVICE_UNKNOWNMAILBOXCMD

1828 (0x724)

The master sent an unknown mailbox command to the slave

ECERR_DEVICE_ACCESSDENIED

1829 (0x725)

Device responded with an invalid access error code, indicating the command is not allowed

ECERR_DEVICE_INVALIDADDR

1832 (0x728)

Can’t send a mailbox command to the specified slave

ECERR_DEVICE_NOT_A_FSOE_MASTER

1836 (0x72c)

Device is not a FSoE master.

ECERR_DEVICE_PARAM_ACCESS_ERROR

1920 (0x780)

Unknown error occurred while accessing parameter

ECERR_DEVICE_PARAM_NOT_FOUND

1921 (0x781)

Parameter was not found

ECERR_DEVICE_PARAM_NOT_INTEGER

1922 (0x782)

Parameter is a floating-point value. Integer value required.

ECERR_DEVICE_VALUE_IS_NEGATIVE

1923 (0x783)

No negative values allowed. Value specified was negative.

ECERR_DEVICE_VALUE_OUT_OF_RANGE

1924 (0x784)

Value is out of data-range

ECERR_DEVICE_VALUE_GREATER_THAN_MAX

1925 (0x785)

Value bigger than maximum

ECERR_DEVICE_VALUE_LOWER_THAN_MIN

1926 (0x786)

Value lower than minimum

ECERR_CLIENT_ERROR

2048 (0x800)

Error in Mailbox response to a previously sent mailbox command

ECERR_CLIENT_TIMEOUT

2049 (0x801)

The SDO command timed out

ECERR_CLIENT_ INVALIDPARM

2050 (0x802)

An invalid value was specified

ECERR_CLIENT_ INVALIDSIZE

2051 (0x803)

An invalid value for the size input was specified

FBD Language

FFLD Language

IL Language

Not available.

ST Language

(* Read PL.KP on first AKD Drive on EtherCAT network *)
      
(* The code continually calls the FB (without re-executing it) until the first execution is done, then reads the returned value from the drive and reset the FB *)

IF ReadPropGain then
Inst_DriveParamRead1( 1, 1001, 'PL.KP' );
End_If;

On Inst_DriveParamRead1.Done do
Inst_DriveParamRead1( 0, 1001, 'PL.KP' );
PositionProportionalGain := Inst_DriveParamRead1.Value; (* Reads the returned value from the drive *)
ReadPropGain := 0; (* Reset the FB *)
End_DO;

See Also

DriveParamWrite