13 |
13 |
14 #include "types.h" |
14 #include "types.h" |
15 |
15 |
16 /*****************************************************************************/ |
16 /*****************************************************************************/ |
17 |
17 |
18 // ec_slave_t ist in EtherCAT_rt.h ... |
18 /** |
|
19 FMMU-Konfiguration. |
|
20 */ |
|
21 |
|
22 typedef struct |
|
23 { |
|
24 const ec_domain_t *domain; |
|
25 const ec_sync_t *sync; |
|
26 uint32_t logical_start_address; |
|
27 } |
|
28 ec_fmmu_t; |
19 |
29 |
20 /*****************************************************************************/ |
30 /*****************************************************************************/ |
21 |
31 |
22 // Slave construction and deletion |
32 /** |
23 void ec_slave_init(ec_slave_t *); |
33 EtherCAT-Slave |
|
34 */ |
|
35 |
|
36 struct ec_slave |
|
37 { |
|
38 ec_master_t *master; /**< EtherCAT-Master, zu dem der Slave gehört. */ |
|
39 |
|
40 // Addresses |
|
41 uint16_t ring_position; /**< Position des Slaves im Bus */ |
|
42 uint16_t station_address; /**< Konfigurierte Slave-Adresse */ |
|
43 |
|
44 // Base data |
|
45 uint8_t base_type; /**< Slave-Typ */ |
|
46 uint8_t base_revision; /**< Revision */ |
|
47 uint16_t base_build; /**< Build-Nummer */ |
|
48 uint16_t base_fmmu_count; /**< Anzahl unterstützter FMMUs */ |
|
49 uint16_t base_sync_count; /**< Anzahl unterstützter Sync-Manager */ |
|
50 |
|
51 // Slave information interface |
|
52 uint32_t sii_vendor_id; /**< Identifikationsnummer des Herstellers */ |
|
53 uint32_t sii_product_code; /**< Herstellerspezifischer Produktcode */ |
|
54 uint32_t sii_revision_number; /**< Revisionsnummer */ |
|
55 uint32_t sii_serial_number; /**< Seriennummer der Klemme */ |
|
56 |
|
57 const ec_slave_type_t *type; /**< Zeiger auf die Beschreibung |
|
58 des Slave-Typs */ |
|
59 |
|
60 uint8_t registered; /**< Der Slave wurde registriert */ |
|
61 |
|
62 ec_fmmu_t fmmus[EC_MAX_FMMUS]; /**< FMMU-Konfigurationen */ |
|
63 uint8_t fmmu_count; /**< Wieviele FMMUs schon benutzt sind. */ |
|
64 }; |
|
65 |
|
66 /*****************************************************************************/ |
|
67 |
|
68 // Slave construction/destruction |
|
69 void ec_slave_init(ec_slave_t *, ec_master_t *); |
|
70 void ec_slave_clear(ec_slave_t *); |
|
71 |
|
72 // Slave control |
|
73 int ec_slave_fetch(ec_slave_t *); |
|
74 int ec_slave_sii_read(ec_slave_t *, unsigned short, unsigned int *); |
|
75 int ec_slave_state_change(ec_slave_t *, uint8_t); |
|
76 int ec_slave_set_fmmu(ec_slave_t *, const ec_domain_t *, const ec_sync_t *); |
|
77 |
|
78 // Misc |
|
79 void ec_slave_print(const ec_slave_t *); |
24 |
80 |
25 /*****************************************************************************/ |
81 /*****************************************************************************/ |
26 |
82 |
27 #endif |
83 #endif |
28 |
84 |
29 /* Emacs-Konfiguration |
85 /* Emacs-Konfiguration |
30 ;;; Local Variables: *** |
86 ;;; Local Variables: *** |
31 ;;; c-basic-offset:2 *** |
87 ;;; c-basic-offset:4 *** |
32 ;;; End: *** |
88 ;;; End: *** |
33 */ |
89 */ |