DriveParamRead
Function Block - Reads a drive parameter by sending an ASCII command to a drive.
Inputs
|
Input |
Data Type |
Range |
Unit |
Default |
Description |
|---|---|---|---|---|---|
|
Execute |
BOOL |
FALSE, TRUE |
N/A |
No default |
On the rising edge of Execute, a drive parameter is read.
|
|
Drive |
INT |
-32768 to +32767 |
N/A |
No default |
The address of the drive where data is read.
|
|
Param |
STRING |
No range |
N/A |
No default |
The parameter to read. |
Outputs
|
Output |
Data Type |
Range |
Unit |
Description |
|---|---|---|---|---|
|
Done |
BOOL |
FALSE, TRUE |
N/A |
Indicates whether this function block has completed without error. |
|
Error |
BOOL |
FALSE, TRUE |
N/A |
Indicates whether this function block has completed with error. |
|
ErrorID |
DINT |
No range |
N/A |
The DriveParamRead error result if Error is TRUE.
|
|
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
Notes
- This function block uses and reserves the EtherCAT SDO Channel.
- The SDO Channel remains reserved until the done output is TRUE.
- This FB should be called at each cycle until either the Done or Error output is TRUE.
- If it is not called at each cycle, the rest of SDO communication (e.g., the AKD GUI Views) is blocked.
- Using this FB in SFC P0 or P1 steps is not recommended because these steps are executed only once.
- If this FB is used in P0 or P1, then it must be used in an SFC N step to ensure the FB completes.
Usage
Use this function block to read drive parameters that are not supported by other function blocks.
Examples include:
- Drive bus voltage
- Drive display
- Fault history
- Motor temperature
- Present drive limit settings
- Present regeneration loading
- 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 (e.g., Done bit = 1) before executing it again.
- See stats about the Execution Time.
- See EtherCAT Function Blocks that Work with Drive Parameters about function blocks not supported by ML and MC function blocks.
Figure 1: DriveParamRead
Error Codes
|
Value Dec (hex) |
Error Code |
Description |
|---|---|---|
|
0 |
ECERR_OK |
The SDO call succeeded. |
|
1000 (0x3E8) |
ECERR_DEVICE_ACTION_IS_INVALID |
The requested Device Action is invalid. |
|
1003 (0x3EB) |
ECERR_DEVICE_ACTION_MINIMUM_ONE_NODE_REQD |
A minimum of one device must be present in the EtherCAT network. |
|
1004 (0x3EC) |
ECERR_DEVICE_ACTION_MINIMUM_ONE_DC_NODE_REQD |
A minimum of one Distributed clock capable device must be present in the EtherCAT network. |
|
107 = 0x6B |
The size of the connections is too small.
|
|
|
1792 (0x700) |
ECERR_DEVICE_ERROR |
EtherCAT device is not accessible. |
|
1794 (0x702) |
ECERR_DEVICE_INVALIDCMD |
Invalid mailbox command. |
|
1795 (0x703) |
ECERR_DEVICE_INVALIDINDEX |
An invalid value for the Index input was specified. |
|
1796 (0x704) |
ECERR_DEVICE_INVALIDACCESS |
Reading of the variable is not permitted. |
|
1797 (0x705) |
ECERR_DEVICE_INVALIDSIZE |
An invalid size for the parameter was specified. |
|
1798 (0x706) |
ECERR_DEVICE_INVALIDDATA |
Invalid parameter value(s) in SDO index and/or sub-index. |
|
1799 (0x707) |
ECERR_DEVICE_NOTREADY |
Device is not in a ready state. The network is not in operational. |
|
1800 (0x708) |
ECERR_DEVICE_BUSY |
Device is not available to respond. |
|
1801 (0x709) |
ECERR_DEVICE_INVALIDCONTEXT |
Device responded with an illegal error code, indicating the command is not allowed under the present conditions. |
|
1802 (0x70A) |
ECERR_DEVICE_NOMEMORY |
EtherCAT mailbox is out of memory or device is out of disk space. |
|
1803 (0x70B) |
ECERR_DEVICE_INVALIDPARM |
EtherCAT mailbox request was not valid. |
|
1804 (0x70C) |
ECERR_DEVICE_NOTFOUND |
EtherCAT device not found. |
|
1805 (0x70D) |
ECERR_DEVICE_SYNTAX |
An unexpected error occurred. |
|
1810 (0x712) |
ECERR_DEVICE_INVALIDSTATE |
The EtherCAT device is in an invalid state. |
|
1817 (0x719) |
ECERR_DEVICE_TIMEOUT |
|
|
1826 (0x722) |
ECERR_DEVICE_INSERTMAILBOX |
Error while inserting the mailbox command into internal FIFO. |
|
1827 (0x723) |
ECERR_DEVICE_INVALIDOFFSET |
An invalid value for the SubIndex input was specified. |
|
1828 (0x724) |
ECERR_DEVICE_UNKNOWNMAILBOXCMD |
The master sent an unknown mailbox command to the slave. |
|
1829 (0x725) |
ECERR_DEVICE_ACCESSDENIED |
Device responded with an invalid access error code, indicating the command is not allowed. |
|
1832 (0x728) |
ECERR_DEVICE_INVALIDADDR |
The specified EtherCAT node address is invalid. |
|
1836 (0x72c) |
ECERR_DEVICE_NOT_A_FSOE_MASTER |
Device is not a FSoE master. |
|
1837 (0x072D) |
ECERR_DEVICE_DISCONNECTED |
The EtherCAT device is disconnected. |
|
1920 (0x780) |
ECERR_DEVICE_PARAM_ACCESS_ERROR |
Unknown error occurred while accessing parameter. |
|
1921 (0x781) |
ECERR_DEVICE_PARAM_NOT_FOUND |
Parameter was not found. |
|
1922 (0x782) |
ECERR_DEVICE_PARAM_NOT_INTEGER |
Parameter is a floating-point value. Integer value required. |
|
1923 (0x783) |
ECERR_DEVICE_VALUE_IS_NEGATIVE |
No negative values allowed. Value specified was negative. |
|
1924 (0x784) |
ECERR_DEVICE_VALUE_OUT_OF_RANGE |
Value is out of data-range. |
|
1925 (0x785) |
ECERR_DEVICE_VALUE_GREATER_THAN_MAX |
Value bigger than maximum. |
|
1926 (0x786) |
ECERR_DEVICE_VALUE_LOWER_THAN_MIN |
Value lower than minimum. |
|
2048 (0x800) |
ECERR_CLIENT_ERROR |
Error in Mailbox response to a previously sent mailbox command. |
|
2049 (0x801) |
ECERR_CLIENT_TIMEOUT |
The SDO command timed out. |
|
2050 (0x802) |
ECERR_CLIENT_ INVALIDPARM |
An invalid value was specified. |
|
2051 (0x803) |
ECERR_CLIENT_ INVALIDSIZE |
An invalid value for the size input was specified. |
FBD Language Example
FFLD Language Example
IL Language Example
Not available.
ST Language Example
(* 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









