DriveParamStrRead
Function Block - Reads a single 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 |
Executes the function block. |
Drive |
INT |
-32768 to +32767 |
N/A |
No default |
The address of the drive from which 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 DriveParamStrRead error result if Error is TRUE. Upon success, Error is set to 0 (zero). See Error Codes. |
Value |
STRING |
No range |
N/A |
The value of the drive parameter. Value is only set when the function block has successfully completed. |
Remarks
-
-
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.
- The value returned is the string response from the drive.
- See EtherCAT Function Blocks that Work with Drive Parameters about function blocks not supported by ML and MC function blocks.
-
- This differs from DriveParamRead because the drive response is not parsed.
DriveParamRead parses the drive response and returns the numeric value of the parameter and the units found that represent that parameter.
Since DriveParamStrRead returns the drive response directly, it can be used to read parameters that have string representations (e.g., the AKD2G’s AXIS#.FAULTMSG# parameters).
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
Figure 1: DriveParamStrRead
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
Not available.
FFLD Language Example
Not available.
IL Language Example
Not available.
ST Language Example
(* Read AXIS1.FAULTMSG1 on first AKD2G 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 ReadFaultMsg Then
Inst_DriveParamStrRead1(True, 1001, 'AXIS1.FAULTMSG1' );
End_If;
On Inst_DriveParamStrRead1 Do
FaultMsg := Inst_DriveParamStrRead1.Value; (* Reads the returned value from the drive *)
Inst_DriveParamStrRead1(False, 1001, 'AXIS1.FAULTMSG1');
ReadFaultMsg := False; (* Reset the FB *)
End_DO;
See Also