Hi,

I am still facing a problem:

I would like to use ecrt_master_sdo_upload and ecrt_master_sdo_download
but I did not know how to get the absolute slave position (param #2)

ecrt.h says:

/** Executes an SDO download request to write data to a slave.
 *
 * This request is processed by the master state machine. This method blocks,
 * until the request has been processed and may not be called in realtime
 * context.
 *
 * \retval  0 Success.
 * \retval <0 Error code.
 */
int ecrt_master_sdo_download(
        ec_master_t *master, /**< EtherCAT master. */
        uint16_t slave_position, /**< Slave position. */
        uint16_t index, /**< Index of the SDO. */
        uint8_t subindex, /**< Subindex of the SDO. */
        uint8_t *data, /**< Data buffer to download. */
        size_t data_size, /**< Size of the data buffer. */
        uint32_t *abort_code /**< Abort code of the SDO download. */
        );


I have tried to iterate over slaves info with ecrt_master_get_slave() to fill ec_slave_info_t but indeed ec_slave_info_t contains the relative slave position when the slave alias is not null.

I have also studied the source code of the 'ethercat slaves' tool (in tool/CommandSlaves.cpp) but it uses functions that are not exported in ecrt.h

Finally, does someone have an idea ?

otherwise I will be forced to parse the output of 'ethercat slaves' to get absolute slave position. (very ugly)

best regards,
--
Sebastien BLANCHET
_______________________________________________
etherlab-users mailing list
etherlab-users@etherlab.org
http://lists.etherlab.org/mailman/listinfo/etherlab-users

Reply via email to