144#include <asm/byteorder.h>
145#include <linux/types.h>
146#include <linux/time.h>
152#include <netinet/in.h>
161#define ECRT_VER_MAJOR 1
165#define ECRT_VER_MINOR 6
169#define ECRT_VERSION(a, b) (((a) << 8) + (b))
173#define ECRT_VERSION_MAGIC ECRT_VERSION(ECRT_VER_MAJOR, ECRT_VER_MINOR)
184#define EC_HAVE_REDUNDANCY
190#define EC_HAVE_EMERGENCY
198#define EC_HAVE_REG_ACCESS
202#define EC_HAVE_SELECT_REF_CLOCK
206#define EC_HAVE_REF_CLOCK_TIME
210#define EC_HAVE_REG_BY_POS
214#define EC_HAVE_SYNC_TO
226#define EC_HAVE_SOE_REQUESTS
231#define EC_HAVE_SCAN_PROGRESS
239#define EC_HAVE_SET_IP
243#define EC_HAVE_STATE_TIMEOUT
250# if defined(ethercat_EXPORTS) && !defined(__KERNEL__)
251# define EC_PUBLIC_API __attribute__ ((visibility ("default")))
253# define EC_PUBLIC_API
267#define EC_MAX_SYNC_MANAGERS 16
273#define EC_MAX_STRING_LENGTH 64
276#define EC_MAX_PORTS 4
286#define EC_TIMEVAL2NANO(TV) \
287 (((TV).tv_sec - 946684800ULL) * 1000000000ULL + (TV).tv_usec * 1000ULL)
293#define EC_COE_EMERGENCY_MSG_SIZE 8
656 unsigned int master_index
675 unsigned int master_index
740 void (*send_cb)(
void *),
741 void (*receive_cb)(
void *),
803 uint32_t product_code
868 uint16_t slave_position,
887 uint16_t slave_position,
906 uint16_t slave_position,
924 uint16_t slave_position,
947 uint16_t slave_position,
969 uint16_t slave_position,
989 uint16_t slave_position,
1010 uint16_t slave_position,
1013 const uint8_t *data,
1015 uint16_t *error_code
1031 uint16_t slave_position,
1037 size_t *result_size,
1038 uint16_t *error_code
1098 size_t send_interval
1177 unsigned int dev_idx,
1373 uint16_t watchdog_divider,
1378 uint16_t watchdog_intervals
1434 uint16_t entry_index,
1436 uint8_t entry_subindex,
1438 uint8_t entry_bit_length
1534 unsigned int n_syncs,
1562 uint16_t entry_index,
1563 uint8_t entry_subindex,
1565 unsigned int *bit_position
1587 unsigned int pdo_pos,
1588 unsigned int entry_pos,
1590 unsigned int *bit_position
1613 uint16_t assign_activate,
1614 uint32_t sync0_cycle,
1615 int32_t sync0_shift,
1616 uint32_t sync1_cycle,
1651 const uint8_t *data,
1670 uint8_t sdo_subindex,
1689 uint8_t sdo_subindex,
1708 uint8_t sdo_subindex,
1730 const uint8_t *data,
1938 const uint8_t *data,
1987 const unsigned char *mac_address
2025 struct in_addr ip_address
2049 struct in_addr subnet_mask
2073 struct in_addr gateway_address
2098 struct in_addr dns_address
2142 unsigned int timeout_ms
2594 uint16_t vendor_type
2614 uint32_t *vendor_id,
2615 uint16_t *vendor_type
2855#define EC_READ_BIT(DATA, POS) ((*((uint8_t *) (DATA)) >> (POS)) & 0x01)
2863#define EC_WRITE_BIT(DATA, POS, VAL) \
2865 if (VAL) *((uint8_t *) (DATA)) |= (1 << (POS)); \
2866 else *((uint8_t *) (DATA)) &= ~(1 << (POS)); \
2875#if __BYTE_ORDER == __LITTLE_ENDIAN
2877#define le16_to_cpu(x) x
2878#define le32_to_cpu(x) x
2879#define le64_to_cpu(x) x
2881#define cpu_to_le16(x) x
2882#define cpu_to_le32(x) x
2883#define cpu_to_le64(x) x
2885#elif __BYTE_ORDER == __BIG_ENDIAN
2889 (((uint16_t)(x) & 0x00ffU) << 8) | \
2890 (((uint16_t)(x) & 0xff00U) >> 8) ))
2893 (((uint32_t)(x) & 0x000000ffUL) << 24) | \
2894 (((uint32_t)(x) & 0x0000ff00UL) << 8) | \
2895 (((uint32_t)(x) & 0x00ff0000UL) >> 8) | \
2896 (((uint32_t)(x) & 0xff000000UL) >> 24) ))
2899 (((uint64_t)(x) & 0x00000000000000ffULL) << 56) | \
2900 (((uint64_t)(x) & 0x000000000000ff00ULL) << 40) | \
2901 (((uint64_t)(x) & 0x0000000000ff0000ULL) << 24) | \
2902 (((uint64_t)(x) & 0x00000000ff000000ULL) << 8) | \
2903 (((uint64_t)(x) & 0x000000ff00000000ULL) >> 8) | \
2904 (((uint64_t)(x) & 0x0000ff0000000000ULL) >> 24) | \
2905 (((uint64_t)(x) & 0x00ff000000000000ULL) >> 40) | \
2906 (((uint64_t)(x) & 0xff00000000000000ULL) >> 56) ))
2908#define le16_to_cpu(x) swap16(x)
2909#define le32_to_cpu(x) swap32(x)
2910#define le64_to_cpu(x) swap64(x)
2912#define cpu_to_le16(x) swap16(x)
2913#define cpu_to_le32(x) swap32(x)
2914#define cpu_to_le64(x) swap64(x)
2918#define le16_to_cpup(x) le16_to_cpu(*((uint16_t *)(x)))
2919#define le32_to_cpup(x) le32_to_cpu(*((uint32_t *)(x)))
2920#define le64_to_cpup(x) le64_to_cpu(*((uint64_t *)(x)))
2932#define EC_READ_U8(DATA) \
2933 ((uint8_t) *((uint8_t *) (DATA)))
2940#define EC_READ_S8(DATA) \
2941 ((int8_t) *((uint8_t *) (DATA)))
2948#define EC_READ_U16(DATA) \
2949 ((uint16_t) le16_to_cpup((void *) (DATA)))
2956#define EC_READ_S16(DATA) \
2957 ((int16_t) le16_to_cpup((void *) (DATA)))
2964#define EC_READ_U32(DATA) \
2965 ((uint32_t) le32_to_cpup((void *) (DATA)))
2972#define EC_READ_S32(DATA) \
2973 ((int32_t) le32_to_cpup((void *) (DATA)))
2980#define EC_READ_U64(DATA) \
2981 ((uint64_t) le64_to_cpup((void *) (DATA)))
2988#define EC_READ_S64(DATA) \
2989 ((int64_t) le64_to_cpup((void *) (DATA)))
3011#define EC_READ_REAL(DATA) ecrt_read_real(DATA)
3027#define EC_READ_LREAL(DATA) ecrt_read_lreal(DATA)
3040#define EC_WRITE_U8(DATA, VAL) \
3042 *((uint8_t *)(DATA)) = ((uint8_t) (VAL)); \
3050#define EC_WRITE_S8(DATA, VAL) EC_WRITE_U8(DATA, VAL)
3057#define EC_WRITE_U16(DATA, VAL) \
3059 *((uint16_t *) (DATA)) = cpu_to_le16((uint16_t) (VAL)); \
3067#define EC_WRITE_S16(DATA, VAL) EC_WRITE_U16(DATA, VAL)
3074#define EC_WRITE_U32(DATA, VAL) \
3076 *((uint32_t *) (DATA)) = cpu_to_le32((uint32_t) (VAL)); \
3084#define EC_WRITE_S32(DATA, VAL) EC_WRITE_U32(DATA, VAL)
3091#define EC_WRITE_U64(DATA, VAL) \
3093 *((uint64_t *) (DATA)) = cpu_to_le64((uint64_t) (VAL)); \
3101#define EC_WRITE_S64(DATA, VAL) EC_WRITE_U64(DATA, VAL)
3123#define EC_WRITE_REAL(DATA, VAL) ecrt_write_real(DATA, VAL)
3132EC_PUBLIC_API void ecrt_write_lreal(
void *data,
double value);
3139#define EC_WRITE_LREAL(DATA, VAL) ecrt_write_lreal(DATA, VAL)
EC_PUBLIC_API int ecrt_slave_config_pdos(ec_slave_config_t *sc, unsigned int n_syncs, const ec_sync_info_t syncs[])
Specify a complete PDO configuration.
ec_wc_state_t
Domain working counter interpretation.
EC_PUBLIC_API int ecrt_sdo_request_read(ec_sdo_request_t *req)
Schedule an SDO read operation.
EC_PUBLIC_API uint8_t * ecrt_reg_request_data(const ec_reg_request_t *req)
Access to the register request's data.
struct ec_soe_request ec_soe_request_t
EC_PUBLIC_API int ecrt_slave_config_emerg_clear(ec_slave_config_t *sc)
Clears CoE emergency ring buffer and the overrun counter.
EC_PUBLIC_API int ecrt_soe_request_write(ec_soe_request_t *req)
Schedule an SoE IDN write operation.
EC_PUBLIC_API int ecrt_reg_request_write(ec_reg_request_t *req, uint16_t address, size_t size)
Schedule an register write operation.
EC_PUBLIC_API void ecrt_release_master(ec_master_t *master)
Releases a requested EtherCAT master.
EC_PUBLIC_API int ecrt_master_sdo_download_complete(ec_master_t *master, uint16_t slave_position, uint16_t index, const uint8_t *data, size_t data_size, uint32_t *abort_code)
Executes an SDO download request to write data to a slave via complete access.
EC_PUBLIC_API int ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout)
Set the timeout for an SDO request.
EC_PUBLIC_API int ecrt_slave_config_sync_manager(ec_slave_config_t *sc, uint8_t sync_index, ec_direction_t direction, ec_watchdog_mode_t watchdog_mode)
Configure a sync manager.
EC_PUBLIC_API int ecrt_master_read_idn(ec_master_t *master, uint16_t slave_position, uint8_t drive_no, uint16_t idn, uint8_t *target, size_t target_size, size_t *result_size, uint16_t *error_code)
Executes an SoE read request.
ec_slave_port_desc_t
EtherCAT slave port descriptor.
EC_PUBLIC_API int ecrt_domain_process(ec_domain_t *domain)
Determines the states of the domain's datagrams.
EC_PUBLIC_API int ecrt_soe_request_idn(ec_soe_request_t *req, uint8_t drive_no, uint16_t idn)
Set the request's drive and Sercos ID numbers.
ec_al_state_t
Application-layer state.
#define EC_MAX_PORTS
Maximum number of slave ports.
EC_PUBLIC_API int ecrt_master_sync_reference_clock_to(ec_master_t *master, uint64_t sync_time)
Queues the DC reference clock drift compensation datagram for sending.
EC_PUBLIC_API size_t ecrt_domain_size(const ec_domain_t *domain)
Returns the current size of the domain's process data.
EC_PUBLIC_API uint8_t * ecrt_voe_handler_data(const ec_voe_handler_t *voe)
Access to the VoE handler's data.
EC_PUBLIC_API ec_sdo_request_t * ecrt_slave_config_create_sdo_request(ec_slave_config_t *sc, uint16_t index, uint8_t subindex, size_t size)
Create an SDO request to exchange SDOs during realtime operation.
EC_PUBLIC_API int ecrt_master_write_idn(ec_master_t *master, uint16_t slave_position, uint8_t drive_no, uint16_t idn, const uint8_t *data, size_t data_size, uint16_t *error_code)
Executes an SoE write request.
EC_PUBLIC_API int ecrt_slave_config_reg_pdo_entry_pos(ec_slave_config_t *sc, uint8_t sync_index, unsigned int pdo_pos, unsigned int entry_pos, ec_domain_t *domain, unsigned int *bit_position)
Registers a PDO entry using its position.
EC_PUBLIC_API int ecrt_slave_config_watchdog(ec_slave_config_t *sc, uint16_t watchdog_divider, uint16_t watchdog_intervals)
Configure a slave's watchdog times.
EC_PUBLIC_API int ecrt_master_scan_progress(ec_master_t *master, ec_master_scan_progress_t *progress)
Obtains network scan progress information.
EC_PUBLIC_API uint32_t ecrt_master_sync_monitor_process(const ec_master_t *master)
Processes the DC synchrony monitoring datagram.
EC_PUBLIC_API ec_request_state_t ecrt_soe_request_state(const ec_soe_request_t *req)
Get the current state of the SoE request.
EC_PUBLIC_API int ecrt_master_state(const ec_master_t *master, ec_master_state_t *state)
Reads the current master state.
EC_PUBLIC_API ec_soe_request_t * ecrt_slave_config_create_soe_request(ec_slave_config_t *sc, uint8_t drive_no, uint16_t idn, size_t size)
Create an SoE request to exchange SoE IDNs during realtime operation.
EC_PUBLIC_API int ecrt_slave_config_idn(ec_slave_config_t *sc, uint8_t drive_no, uint16_t idn, ec_al_state_t state, const uint8_t *data, size_t size)
Add an SoE IDN configuration.
EC_PUBLIC_API int ecrt_slave_config_eoe_subnet_mask(ec_slave_config_t *sc, struct in_addr subnet_mask)
Sets the subnet mask for Ethernet-over-EtherCAT (EoE) operation.
EC_PUBLIC_API int ecrt_slave_config_sdo32(ec_slave_config_t *sc, uint16_t sdo_index, uint8_t sdo_subindex, uint32_t value)
Add a configuration value for a 32-bit SDO.
EC_PUBLIC_API int ecrt_master_sync_slave_clocks(ec_master_t *master)
Queues the DC clock drift compensation datagram for sending.
EC_PUBLIC_API int ecrt_master_sdo_upload(ec_master_t *master, uint16_t slave_position, uint16_t index, uint8_t subindex, uint8_t *target, size_t target_size, size_t *result_size, uint32_t *abort_code)
Executes an SDO upload request to read data from a slave.
EC_PUBLIC_API int ecrt_slave_config_emerg_overruns(const ec_slave_config_t *sc)
Read the number of CoE emergency overruns.
EC_PUBLIC_API size_t ecrt_soe_request_data_size(const ec_soe_request_t *req)
Returns the current IDN data size.
EC_PUBLIC_API int ecrt_master_receive(ec_master_t *master)
Fetches received frames from the hardware and processes the datagrams.
EC_PUBLIC_API size_t ecrt_sdo_request_data_size(const ec_sdo_request_t *req)
Returns the current SDO data size.
struct ec_voe_handler ec_voe_handler_t
EC_PUBLIC_API ec_domain_t * ecrt_master_create_domain(ec_master_t *master)
Creates a new process data domain.
EC_PUBLIC_API int ecrt_slave_config_state(const ec_slave_config_t *sc, ec_slave_config_state_t *state)
Outputs the state of the slave configuration.
EC_PUBLIC_API int ecrt_master_select_reference_clock(ec_master_t *master, ec_slave_config_t *sc)
Selects the reference clock for distributed clocks.
EC_PUBLIC_API ec_voe_handler_t * ecrt_slave_config_create_voe_handler(ec_slave_config_t *sc, size_t size)
Create an VoE handler to exchange vendor-specific data during realtime operation.
EC_PUBLIC_API int ecrt_slave_config_pdo_assign_clear(ec_slave_config_t *sc, uint8_t sync_index)
Clear a sync manager's PDO assignment.
EC_PUBLIC_API unsigned int ecrt_version_magic(void)
Returns the version magic of the realtime interface.
struct ec_sdo_request ec_sdo_request_t
EC_PUBLIC_API int ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate, uint32_t sync0_cycle, int32_t sync0_shift, uint32_t sync1_cycle, int32_t sync1_shift)
Configure distributed clocks.
EC_PUBLIC_API int ecrt_slave_config_flag(ec_slave_config_t *sc, const char *key, int32_t value)
Adds a feature flag to a slave configuration.
struct ec_master ec_master_t
EC_PUBLIC_API int ecrt_domain_queue(ec_domain_t *domain)
(Re-)queues all domain datagrams in the master's datagram queue.
EC_PUBLIC_API ec_master_t * ecrt_request_master(unsigned int master_index)
Requests an EtherCAT master for realtime operation.
EC_PUBLIC_API int ecrt_slave_config_eoe_default_gateway(ec_slave_config_t *sc, struct in_addr gateway_address)
Sets the gateway address for Ethernet-over-EtherCAT (EoE) operation.
void ecrt_master_callbacks(ec_master_t *master, void(*send_cb)(void *), void(*receive_cb)(void *), void *cb_data)
Sets the locking callbacks.
EC_PUBLIC_API int ecrt_slave_config_pdo_mapping_add(ec_slave_config_t *sc, uint16_t pdo_index, uint16_t entry_index, uint8_t entry_subindex, uint8_t entry_bit_length)
Add a PDO entry to the given PDO's mapping.
EC_PUBLIC_API uint8_t * ecrt_soe_request_data(const ec_soe_request_t *req)
Access to the SoE request's data.
EC_PUBLIC_API int ecrt_master_application_time(ec_master_t *master, uint64_t app_time)
Sets the application time.
EC_PUBLIC_API int ecrt_voe_handler_read(ec_voe_handler_t *voe)
Start a VoE read operation.
EC_PUBLIC_API uint8_t * ecrt_sdo_request_data(const ec_sdo_request_t *req)
Access to the SDO request's data.
EC_PUBLIC_API int ecrt_master_send(ec_master_t *master)
Sends all datagrams in the queue.
ec_direction_t
Direction type for PDO assignment functions.
EC_PUBLIC_API int ecrt_slave_config_sdo(ec_slave_config_t *sc, uint16_t index, uint8_t subindex, const uint8_t *data, size_t size)
Add an SDO configuration.
EC_PUBLIC_API int ecrt_domain_state(const ec_domain_t *domain, ec_domain_state_t *state)
Reads the state of a domain.
EC_PUBLIC_API int ecrt_master_link_state(const ec_master_t *master, unsigned int dev_idx, ec_master_link_state_t *state)
Reads the current state of a redundant link.
EC_PUBLIC_API int ecrt_voe_handler_received_header(const ec_voe_handler_t *voe, uint32_t *vendor_id, uint16_t *vendor_type)
Reads the header data of a received VoE message.
struct ec_domain ec_domain_t
struct ec_slave_config ec_slave_config_t
struct ec_reg_request ec_reg_request_t
#define EC_PUBLIC_API
Symbol visibility control macro.
EC_PUBLIC_API int ecrt_master_reference_clock_time(const ec_master_t *master, uint32_t *time)
Get the lower 32 bit of the reference clock system time.
EC_PUBLIC_API ec_request_state_t ecrt_reg_request_state(const ec_reg_request_t *req)
Get the current state of the register request.
EC_PUBLIC_API size_t ecrt_voe_handler_data_size(const ec_voe_handler_t *voe)
Returns the current data size.
int ecrt_master_send_ext(ec_master_t *master)
Sends non-application datagrams.
EC_PUBLIC_API int ecrt_slave_config_reg_pdo_entry(ec_slave_config_t *sc, uint16_t entry_index, uint8_t entry_subindex, ec_domain_t *domain, unsigned int *bit_position)
Registers a PDO entry for process data exchange in a domain.
EC_PUBLIC_API int ecrt_master_sync_reference_clock(ec_master_t *master)
Queues the DC reference clock drift compensation datagram for sending.
EC_PUBLIC_API int ecrt_voe_handler_write(ec_voe_handler_t *voe, size_t size)
Start a VoE write operation.
EC_PUBLIC_API int ecrt_slave_config_eoe_mac_address(ec_slave_config_t *sc, const unsigned char *mac_address)
Sets the link/MAC address for Ethernet-over-EtherCAT (EoE) operation.
EC_PUBLIC_API int ecrt_sdo_request_write(ec_sdo_request_t *req)
Schedule an SDO write operation.
EC_PUBLIC_API int ecrt_master(ec_master_t *master, ec_master_info_t *master_info)
Obtains master information.
EC_PUBLIC_API int ecrt_voe_handler_send_header(ec_voe_handler_t *voe, uint32_t vendor_id, uint16_t vendor_type)
Sets the VoE header for future send operations.
EC_PUBLIC_API int ecrt_slave_config_complete_sdo(ec_slave_config_t *sc, uint16_t index, const uint8_t *data, size_t size)
Add configuration data for a complete SDO.
EC_PUBLIC_API int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position, ec_slave_info_t *slave_info)
Obtains slave information.
ec_watchdog_mode_t
Watchdog mode for sync manager configuration.
EC_PUBLIC_API int ecrt_voe_handler_read_nosync(ec_voe_handler_t *voe)
Start a VoE read operation without querying the sync manager status.
EC_PUBLIC_API int ecrt_reg_request_read(ec_reg_request_t *req, uint16_t address, size_t size)
Schedule a register read operation.
EC_PUBLIC_API int ecrt_master_activate(ec_master_t *master)
Finishes the configuration phase and prepares for cyclic operation.
EC_PUBLIC_API int ecrt_slave_config_eoe_ip_address(ec_slave_config_t *sc, struct in_addr ip_address)
Sets the IP address for Ethernet-over-EtherCAT (EoE) operation.
EC_PUBLIC_API int ecrt_slave_config_eoe_dns_address(ec_slave_config_t *sc, struct in_addr dns_address)
Sets the IPv4 address of the DNS server for Ethernet-over-EtherCAT (EoE) operation.
void ecrt_domain_external_memory(ec_domain_t *domain, uint8_t *memory)
Provide external memory to store the domain's process data.
EC_PUBLIC_API uint8_t * ecrt_domain_data(const ec_domain_t *domain)
Returns the domain's process data.
EC_PUBLIC_API int ecrt_slave_config_eoe_hostname(ec_slave_config_t *sc, const char *name)
Sets the host name for Ethernet-over-EtherCAT (EoE) operation.
EC_PUBLIC_API int ecrt_slave_config_pdo_mapping_clear(ec_slave_config_t *sc, uint16_t pdo_index)
Clear the mapping of a given PDO.
EC_PUBLIC_API int ecrt_slave_config_sdo8(ec_slave_config_t *sc, uint16_t sdo_index, uint8_t sdo_subindex, uint8_t value)
Add a configuration value for an 8-bit SDO.
EC_PUBLIC_API int ecrt_master_set_send_interval(ec_master_t *master, size_t send_interval)
Set interval between calls to ecrt_master_send().
EC_PUBLIC_API ec_request_state_t ecrt_voe_handler_execute(ec_voe_handler_t *voe)
Execute the handler.
EC_PUBLIC_API ec_reg_request_t * ecrt_slave_config_create_reg_request(ec_slave_config_t *sc, size_t size)
Create a register request to exchange EtherCAT register contents during realtime operation.
EC_PUBLIC_API ec_request_state_t ecrt_sdo_request_state(const ec_sdo_request_t *req)
Get the current state of the SDO request.
EC_PUBLIC_API int ecrt_master_deactivate(ec_master_t *master)
Deactivates the master.
EC_PUBLIC_API int ecrt_master_sync_monitor_queue(ec_master_t *master)
Queues the DC synchrony monitoring datagram for sending.
EC_PUBLIC_API int ecrt_slave_config_sdo16(ec_slave_config_t *sc, uint16_t sdo_index, uint8_t sdo_subindex, uint16_t value)
Add a configuration value for a 16-bit SDO.
EC_PUBLIC_API int ecrt_master_reset(ec_master_t *master)
Retry configuring slaves.
EC_PUBLIC_API int ecrt_master_sdo_download(ec_master_t *master, uint16_t slave_position, uint16_t index, uint8_t subindex, const uint8_t *data, size_t data_size, uint32_t *abort_code)
Executes an SDO download request to write data to a slave.
#define EC_MAX_STRING_LENGTH
Maximum string length.
EC_PUBLIC_API int ecrt_slave_config_pdo_assign_add(ec_slave_config_t *sc, uint8_t sync_index, uint16_t index)
Add a PDO to a sync manager's PDO assignment.
EC_PUBLIC_API int ecrt_domain_reg_pdo_entry_list(ec_domain_t *domain, const ec_pdo_entry_reg_t *pdo_entry_regs)
Registers a bunch of PDO entries for a domain.
ec_request_state_t
Request state.
EC_PUBLIC_API ec_slave_config_t * ecrt_master_slave_config(ec_master_t *master, uint16_t alias, uint16_t position, uint32_t vendor_id, uint32_t product_code)
Obtains a slave configuration.
EC_PUBLIC_API int ecrt_soe_request_read(ec_soe_request_t *req)
Schedule an SoE IDN read operation.
EC_PUBLIC_API int ecrt_sdo_request_index(ec_sdo_request_t *req, uint16_t index, uint8_t subindex)
Set the SDO index and subindex.
EC_PUBLIC_API int ecrt_soe_request_timeout(ec_soe_request_t *req, uint32_t timeout)
Set the timeout for an SoE request.
EC_PUBLIC_API int ecrt_slave_config_state_timeout(ec_slave_config_t *sc, ec_al_state_t from_state, ec_al_state_t to_state, unsigned int timeout_ms)
Sets the application-layer state transition timeout in ms.
EC_PUBLIC_API int ecrt_slave_config_emerg_pop(ec_slave_config_t *sc, uint8_t *target)
Read and remove one record from the CoE emergency ring buffer.
EC_PUBLIC_API int ecrt_slave_config_emerg_size(ec_slave_config_t *sc, size_t elements)
Set the size of the CoE emergency ring buffer.
@ EC_WC_COMPLETE
All registered process data were exchanged.
@ EC_WC_ZERO
No registered process data were exchanged.
@ EC_WC_INCOMPLETE
Some of the registered process data were exchanged.
@ EC_PORT_MII
Port is a MII.
@ EC_PORT_NOT_CONFIGURED
Port is not configured.
@ EC_PORT_NOT_IMPLEMENTED
Port is not implemented.
@ EC_PORT_EBUS
Port is an E-Bus.
@ EC_AL_STATE_OP
Operational.
@ EC_AL_STATE_PREOP
Pre-operational.
@ EC_AL_STATE_SAFEOP
Safe-operational.
@ EC_DIR_INVALID
Invalid direction.
@ EC_DIR_COUNT
Number of directions.
@ EC_DIR_INPUT
Values read by the master.
@ EC_DIR_OUTPUT
Values written by the master.
@ EC_WD_DEFAULT
Use the default setting of the sync manager.
@ EC_WD_DISABLE
Disable the watchdog.
@ EC_WD_ENABLE
Enable the watchdog.
@ EC_REQUEST_ERROR
Request processing failed.
@ EC_REQUEST_UNUSED
Not requested.
@ EC_REQUEST_SUCCESS
Request was processed successfully.
@ EC_REQUEST_BUSY
Request is being processed.
ec_wc_state_t wc_state
Working counter interpretation.
unsigned int working_counter
Value of the last working counter.
unsigned int redundancy_active
Redundant link is in use.
unsigned int slave_count
Number of slaves in the network.
uint64_t app_time
Application time.
uint8_t scan_busy
true, while the master is scanning the network.
unsigned int link_up
true, if the network link is up.
unsigned int link_up
true, if the given Ethernet link is up.
unsigned int al_states
Application-layer states of the slaves on the given link.
unsigned int slaves_responding
Sum of responding slaves on the given link.
Master scan progress information.
unsigned int slave_count
Number of slaves detected.
unsigned int scan_index
Index of the slave that is currently scanned.
unsigned int al_states
Application-layer states of all slaves.
unsigned int slaves_responding
Sum of responding slaves on all Ethernet devices.
unsigned int link_up
true, if at least one Ethernet link is up.
PDO entry configuration information.
uint8_t subindex
PDO entry subindex.
uint8_t bit_length
Size of the PDO entry in bit.
uint16_t index
PDO entry index.
List record type for PDO entry mass-registration.
uint32_t product_code
Slave product code.
unsigned int * offset
Pointer to a variable to store the PDO entry's (byte-)offset in the process data.
unsigned int * bit_position
Pointer to a variable to store a bit position (0-7) within the offset.
uint8_t subindex
PDO entry subindex.
uint16_t index
PDO entry index.
uint16_t alias
Slave alias address.
uint32_t vendor_id
Slave vendor ID.
uint16_t position
Slave position.
PDO configuration information.
unsigned int n_entries
Number of PDO entries in entries to map.
ec_pdo_entry_info_t const * entries
Array of PDO entries to map.
Slave configuration state.
unsigned int online
The slave is online.
unsigned int operational
The slave was brought into OP state using the specified configuration.
unsigned int al_state
The application-layer state of the slave.
EtherCAT slave configuration.
uint32_t delay_to_next_dc
Delay [ns] to next DC slave.
uint32_t revision_number
Revision-Number stored on the slave.
uint8_t error_flag
Error flag for that slave.
int16_t current_on_ebus
Used current in mA.
uint16_t position
Offset of the slave in the ring.
uint16_t next_slave
Ring position of next DC slave on that port.
uint8_t al_state
Current state of the slave.
uint32_t product_code
Product-Code stored on the slave.
ec_slave_port_link_t link
Port link state.
uint32_t vendor_id
Vendor-ID stored on the slave.
uint16_t alias
The slaves alias if not equal to 0.
uint32_t serial_number
Serial-Number stored on the slave.
ec_slave_port_desc_t desc
Physical port type.
char name[EC_MAX_STRING_LENGTH]
Name of the slave.
uint16_t sdo_count
Number of SDOs.
uint8_t sync_count
Number of sync managers.
uint32_t receive_time
Receive time on DC transmission delay measurement.
EtherCAT slave port information.
uint8_t signal_detected
Detected signal on RX port.
uint8_t link_up
Link detected.
uint8_t loop_closed
Loop closed.
Sercos-over-EtherCAT request.
Sync manager configuration information.
unsigned int n_pdos
Number of PDOs in pdos.
ec_direction_t dir
Sync manager direction.
uint8_t index
Sync manager index.
ec_pdo_info_t const * pdos
Array with PDOs to assign.
ec_watchdog_mode_t watchdog_mode
Watchdog mode.
Vendor specific over EtherCAT handler.