Klemme Beckhoff EL2032 hinzugef?gt.
/******************************************************************************
*
* Oeffentliche EtherCAT-Schnittstellen fuer Echtzeitprozesse.
*
* $Id$
*
*****************************************************************************/
#ifndef _ETHERCAT_RT_H_
#define _ETHERCAT_RT_H_
/*****************************************************************************/
struct ec_master;
typedef struct ec_master ec_master_t;
struct ec_slave_type;
typedef struct ec_slave_type ec_slave_type_t;
struct ec_slave;
typedef struct ec_slave ec_slave_t;
struct ec_slave_init;
typedef struct ec_slave_init ec_slave_init_t;
/*****************************************************************************/
ec_master_t *EtherCAT_rt_request_master(unsigned int master_index);
void EtherCAT_rt_release_master(ec_master_t *master);
ec_slave_t *EtherCAT_rt_register_slave(ec_master_t *master,
const char *address,
const char *vendor_name,
const char *product_name,
int domain);
int EtherCAT_rt_register_slave_list(ec_master_t *master,
const ec_slave_init_t *slaves,
unsigned int count);
int EtherCAT_rt_activate_slaves(ec_master_t *master);
int EtherCAT_rt_deactivate_slaves(ec_master_t *master);
int EtherCAT_rt_domain_xio(ec_master_t *master, unsigned int domain,
unsigned int timeout_us);
void EtherCAT_rt_debug_level(ec_master_t *master, int level);
int EtherCAT_rt_canopen_sdo_write(ec_master_t *master, ec_slave_t *slave,
unsigned int sdo_index,
unsigned char sdo_subindex,
unsigned int value, unsigned int size);
/*****************************************************************************/
/**
EtherCAT-Slave
*/
struct ec_slave
{
// Base data
unsigned char base_type; /**< Slave-Typ */
unsigned char base_revision; /**< Revision */
unsigned short base_build; /**< Build-Nummer */
// Addresses
short ring_position; /**< (Negative) Position des Slaves im Bus */
unsigned short station_address; /**< Konfigurierte Slave-Adresse */
// Slave information interface
unsigned int sii_vendor_id; /**< Identifikationsnummer des Herstellers */
unsigned int sii_product_code; /**< Herstellerspezifischer Produktcode */
unsigned int sii_revision_number; /**< Revisionsnummer */
unsigned int sii_serial_number; /**< Seriennummer der Klemme */
const ec_slave_type_t *type; /**< Zeiger auf die Beschreibung
des Slave-Typs */
unsigned int logical_address; /**< Konfigurierte, logische Adresse */
void *process_data; /**< Zeiger auf den Speicherbereich
innerhalb eines Prozessdatenobjekts */
void *private_data; /**< Zeiger auf privaten Datenbereich */
int (*configure)(ec_slave_t *); /**< Zeiger auf die Funktion zur
Konfiguration */
unsigned char registered; /**< Der Slave wurde registriert */
unsigned int domain; /**< Prozessdatendomäne */
int error_reported; /**< Ein Zugriffsfehler wurde bereits gemeldet */
};
/*****************************************************************************/
/**
Beschreibung eines EtherCAT-Slave-Typs.
Diese Beschreibung dient zur Konfiguration einer bestimmten
Slave-Art. Sie enthält die Konfigurationsdaten für die
Slave-internen Sync-Manager und FMMU's.
*/
struct ec_slave_init
{
ec_slave_t **slave_ptr; /**< Zeiger auf den Slave-Zeiger, der später auf
die Slave-Struktur zeigen soll. */
const char *address; /**< ASCII-kodierte Bus-Adresse des zu
registrierenden Slaves \sa ec_address */
const char *vendor_name; /**< Name des Herstellers */
const char *product_name; /**< Name des Slaves-Typs */
unsigned int domain; /**< Domäne, in der registriert werden soll. */
};
/*****************************************************************************/
#endif