FB_EcGetAllSlaveAddr
The FB_EcGetAllSlaveAddr
function block allows the addresses of all the slaves connected to the master to be read. When the call is successful, the buffer passed in the parameter pAddrBuf contains the addresses of all the slaves as an array of UINTs.
Inputs
VAR_INPUT
sNetId : T_AmsNetId;
pAddrBuf : POINTER TO ARRAY[0..EC_MAX_SLAVES] OF UINT;
cbBufLen : UDINT
bExecute : BOOL;
tTimeout : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR
Name | Type | Description |
---|---|---|
sNetId | T_AmsNetId | String containing the AMS network ID of the EtherCAT master device. (Type: T_AmsNetId) |
pAddrBuf | POINTER TO ARRAY [0..EC_MAX_SLAVES] OF UINT | Address of an array of UINTs into which the addresses of the individual slaves are to be written. |
cbBufLen | UDINT | Maximum available buffer size (in bytes) for the data to be read. |
bExecute | BOOL | The function block is activated by a positive edge at this input. |
tTimeout | TIME | Maximum time allowed for the execution of the function block. |
Outputs
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
nSlaves : UINT;
END_VAR
Name | Type | Description |
---|---|---|
bBusy | BOOL | This output is set when the function block is activated, and remains set until a feedback is received. |
bError | BOOL | This output is set after the bBusy output has been reset when an error occurs in the transmission of the command. |
nErrId | UDINT | Supplies the ADS error code associated with the most recently executed command if the bError output is set. Error 1798 (0x706) indicates a null pointer at the buffer address. Error 1797 (0x705) indicates inadequate buffer size. |
nSlaves | UINT | The number of slaves connected to the master. |
Example of an implementation in ST:
PROGRAM TEST_GetAllSlaveAddresses
VAR
fbGetAllSlaveAddr : FB_EcGetAllSlaveAddr;
sNetId : T_AmsNetId := '172.16.2.131.2.1';
bExecute : BOOL;
slaveAddresses : ARRAY[0..255] OF UINT;
nSlaves : UINT := 0;
bError : BOOL;
nErrId : UDINT;
END_VAR
fbGetAllSlaveAddr(sNetId:= sNetId,pAddrBuf := ADR(slaveAddresses), cbBufLen:= SIZEOF(slaveAddresses), bExecute:=bExecute);
nSlaves := fbGetAllSlaveAddr.nSlaves;
bError := fbGetAllSlaveAddr.bError;
nErrId := fbGetAllSlaveAddr.nErrId;
Requirements
Development environment | Target platform | PLC libraries to include |
---|---|---|
TwinCAT v3.1.0 | PC or CX (x86, x64, ARM) | Tc2_EtherCAT |