12 /*****************************************************************************/ |
12 /*****************************************************************************/ |
13 |
13 |
14 struct ec_master; |
14 struct ec_master; |
15 typedef struct ec_master ec_master_t; |
15 typedef struct ec_master ec_master_t; |
16 |
16 |
|
17 struct ec_slave_type; |
|
18 typedef struct ec_slave_type ec_slave_type_t; |
|
19 |
|
20 struct ec_slave; |
|
21 typedef struct ec_slave ec_slave_t; |
|
22 |
17 /*****************************************************************************/ |
23 /*****************************************************************************/ |
18 |
24 |
19 ec_master_t *EtherCAT_rt_request_master(unsigned int master_index); |
25 ec_master_t *EtherCAT_rt_request_master(unsigned int master_index); |
20 |
26 |
21 void EtherCAT_rt_release_master(ec_master_t *master); |
27 void EtherCAT_rt_release_master(ec_master_t *master); |
22 |
28 |
23 void *EtherCAT_rt_register_slave(ec_master_t *master, unsigned int slave_index, |
29 ec_slave_t *EtherCAT_rt_register_slave(ec_master_t *master, |
24 const char *vendor_name, |
30 unsigned int slave_index, |
25 const char *product_name); |
31 const char *vendor_name, |
|
32 const char *product_name, |
|
33 unsigned int domain); |
26 |
34 |
27 int EtherCAT_rt_activate_slaves(ec_master_t *master); |
35 int EtherCAT_rt_activate_slaves(ec_master_t *master); |
28 |
36 |
29 int EtherCAT_rt_deactivate_slaves(ec_master_t *master); |
37 int EtherCAT_rt_deactivate_slaves(ec_master_t *master); |
30 |
38 |
31 int EtherCAT_rt_domain_cycle(ec_master_t *master, unsigned int domain, |
39 int EtherCAT_rt_exchange_io(ec_master_t *master, unsigned int domain, |
32 unsigned int timeout_us); |
40 unsigned int timeout_us); |
|
41 |
|
42 /*****************************************************************************/ |
|
43 |
|
44 /** |
|
45 EtherCAT-Slave |
|
46 */ |
|
47 |
|
48 struct ec_slave |
|
49 { |
|
50 // Base data |
|
51 unsigned char base_type; /**< Slave-Typ */ |
|
52 unsigned char base_revision; /**< Revision */ |
|
53 unsigned short base_build; /**< Build-Nummer */ |
|
54 |
|
55 // Addresses |
|
56 short ring_position; /**< (Negative) Position des Slaves im Bus */ |
|
57 unsigned short station_address; /**< Konfigurierte Slave-Adresse */ |
|
58 |
|
59 // Slave information interface |
|
60 unsigned int sii_vendor_id; /**< Identifikationsnummer des Herstellers */ |
|
61 unsigned int sii_product_code; /**< Herstellerspezifischer Produktcode */ |
|
62 unsigned int sii_revision_number; /**< Revisionsnummer */ |
|
63 unsigned int sii_serial_number; /**< Seriennummer der Klemme */ |
|
64 |
|
65 const ec_slave_type_t *type; /**< Zeiger auf die Beschreibung |
|
66 des Slave-Typs */ |
|
67 |
|
68 unsigned int logical_address; /**< Konfigurierte, logische Adresse */ |
|
69 |
|
70 void *process_data; /**< Zeiger auf den Speicherbereich |
|
71 innerhalb eines Prozessdatenobjekts */ |
|
72 void *private_data; /**< Zeiger auf privaten Datenbereich */ |
|
73 int (*configure)(ec_slave_t *); /**< Zeiger auf die Funktion zur |
|
74 Konfiguration */ |
|
75 |
|
76 unsigned char registered; /**< Der Slave wurde registriert */ |
|
77 |
|
78 unsigned int domain; /**< Prozessdatendomäne */ |
|
79 |
|
80 int error_reported; /**< Ein Zugriffsfehler wurde bereits gemeldet */ |
|
81 }; |
33 |
82 |
34 /*****************************************************************************/ |
83 /*****************************************************************************/ |
35 |
84 |
36 #endif |
85 #endif |