1 /****************************************************************************** |
|
2 * |
|
3 * e c _ s l a v e . h |
|
4 * |
|
5 * Struktur für einen EtherCAT-Slave. |
|
6 * |
|
7 * $Id$ |
|
8 * |
|
9 *****************************************************************************/ |
|
10 |
|
11 #ifndef _EC_SLAVE_H_ |
|
12 #define _EC_SLAVE_H_ |
|
13 |
|
14 #include "ec_types.h" |
|
15 |
|
16 /*****************************************************************************/ |
|
17 |
|
18 /** |
|
19 EtherCAT-Slave |
|
20 |
|
21 Achtung: Bei Änderungen dieser Struktur immer das Define |
|
22 ECAT_INIT_SLAVE anpassen! |
|
23 */ |
|
24 |
|
25 typedef struct |
|
26 { |
|
27 // Base data |
|
28 unsigned char type; /**< Slave-Typ */ |
|
29 unsigned char revision; /**< Revision */ |
|
30 unsigned short build; /**< Build-Nummer */ |
|
31 |
|
32 // Addresses |
|
33 short ring_position; /**< (Negative) Position des Slaves im Bus */ |
|
34 unsigned short station_address; /**< Konfigurierte Slave-Adresse */ |
|
35 |
|
36 // Slave information interface |
|
37 unsigned int vendor_id; /**< Identifikationsnummer des Herstellers */ |
|
38 unsigned int product_code; /**< Herstellerspezifischer Produktcode */ |
|
39 unsigned int revision_number; /**< Revisionsnummer */ |
|
40 unsigned int serial_number; /**< Seriennummer der Klemme */ |
|
41 |
|
42 const EtherCAT_slave_desc_t *desc; /**< Zeiger auf die Beschreibung |
|
43 des Slave-Typs */ |
|
44 |
|
45 unsigned int logical_address; /**< Konfigurierte, logische adresse */ |
|
46 |
|
47 EtherCAT_state_t current_state; /**< Aktueller Zustand */ |
|
48 EtherCAT_state_t requested_state; /**< Angeforderter Zustand */ |
|
49 |
|
50 unsigned char *process_data; /**< Zeiger auf den Speicherbereich |
|
51 innerhalb eines Prozessdatenobjekts */ |
|
52 unsigned int domain; /**< Prozessdatendomäne */ |
|
53 int error_reported; /**< Ein Zugriffsfehler wurde bereits gemeldet */ |
|
54 } |
|
55 EtherCAT_slave_t; |
|
56 |
|
57 #define ECAT_INIT_SLAVE(TYPE, DOMAIN) {0, 0, 0, 0, 0, 0, 0, 0, 0, \ |
|
58 TYPE, 0, ECAT_STATE_UNKNOWN, \ |
|
59 ECAT_STATE_UNKNOWN, NULL, DOMAIN, 0} |
|
60 |
|
61 /*****************************************************************************/ |
|
62 |
|
63 // Slave construction and deletion |
|
64 void EtherCAT_slave_init(EtherCAT_slave_t *); |
|
65 |
|
66 int EtherCAT_read_value(EtherCAT_slave_t *, unsigned int); |
|
67 void EtherCAT_write_value(EtherCAT_slave_t *, unsigned int, int); |
|
68 |
|
69 /*****************************************************************************/ |
|
70 |
|
71 #endif |
|
72 |
|
73 /* Emacs-Konfiguration |
|
74 ;;; Local Variables: *** |
|
75 ;;; c-basic-offset:2 *** |
|
76 ;;; End: *** |
|
77 */ |
|