Function BlockDriveParamReadPLCopen motion iconPipe Network motion icon

Description

This function block reads a drive parameter by sending an ASCII command to a drive.

See EtherCAT Function Blocks That Work With Drive Parameters for information about function blocks which work with drive parameters that are not supported by ML and MC function blocks.

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 multiple times is required, add code that waits for this function block to complete (Done bit = 1) before executing it again, as shown in the example below.

See also some stats about the Execution Time.

DriveParamRead

Figure 7-187: DriveParamRead

Arguments

Input

Execute

Description

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 only handles 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.

Data type

BOOL

Range

0, 1

Unit

N/A

Default

Drive

Description

The address of the drive from which data is read.

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

Alternately, you can use the members of the EtherCAT structure to specify a drive's address when you create the variable.


creating an EtherCAT variable

Data type

INT

Range

Unit

N/A

Default

Param

Description

The parameter to read.

Data type

STRING

Range

Unit

N/A

Default

Output

Done

Description

Indicates whether the DriveParamRead function block has completed without error.

Data type

BOOL

Unit

N/A

Error

Description

Indicates whether the DriveParamRead function block call has completed with error:

Data type

BOOL

Unit

N/A

ErrorID

Description

The DriveParamRead error result if Error is TRUE (see list of Error Codes in table below). Upon success, Error is set to zero.

Data type

DINT

Unit

N/A

Value

Description

The value of the drive parameter. Value is only set when the function block has successfully completed.

Data type

LREAL

Unit

N/A

Units

Description

The units of the drive parameter. Value is only set when the function block has successfully completed.

Data type

STRING

Unit

N/A

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

Table 7-45: List of EtherCAT Error Codes

Usage

Use this FB to read drive parameters that are not supported by other function blocks. Examples would be motor temperature, drive bus voltage, Present drive limit settings, present regen loading, drive display, and fault history.

Related Functions

DriveParamWrite

Example

Structured Text

(* 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;

FBD

FFLD