|
1 /**************************************************************** |
|
2 * |
|
3 * e c _ t y p e s . h |
|
4 * |
|
5 * EtherCAT-Slave-Typen. |
|
6 * |
|
7 * $Date: 2005-09-07 17:50:50 +0200 (Mit, 07 Sep 2005) $ |
|
8 * $Author: fp $ |
|
9 * |
|
10 ***************************************************************/ |
|
11 |
|
12 #ifndef _EC_TYPES_H_ |
|
13 #define _EC_TYPES_H_ |
|
14 |
|
15 /** |
|
16 Typ eines EtherCAT-Slaves. |
|
17 |
|
18 Dieser Typ muss für die Konfiguration bekannt sein. Der |
|
19 Master entscheidet danach, ober bspw. Mailboxes konfigurieren, |
|
20 oder Sync-Manager setzen soll. |
|
21 */ |
|
22 |
|
23 typedef enum |
|
24 { |
|
25 ECAT_ST_SIMPLE, ECAT_ST_MAILBOX, ECAT_ST_SIMPLE_NOSYNC |
|
26 } |
|
27 EtherCAT_slave_type_t; |
|
28 |
|
29 /***************************************************************/ |
|
30 |
|
31 /** |
|
32 Beschreibung eines EtherCAT-Slave-Typs. |
|
33 |
|
34 Diese Beschreibung dient zur Konfiguration einer bestimmten |
|
35 Slave-Art. Sie enthält die Konfigurationsdaten für die |
|
36 Slave-internen Sync-Manager und FMMU's. |
|
37 */ |
|
38 |
|
39 typedef struct slave_desc |
|
40 { |
|
41 const char *vendor_name; /**< Name des Herstellers */ |
|
42 const char *product_name; /**< Name des Slaves-Typs */ |
|
43 const char *product_desc; /**< Genauere Beschreibung des Slave-Typs */ |
|
44 |
|
45 const EtherCAT_slave_type_t type; /**< Art des Slave-Typs */ |
|
46 |
|
47 const unsigned char *sm0; /**< Konfigurationsdaten des |
|
48 ersten Sync-Managers */ |
|
49 const unsigned char *sm1; /**< Konfigurationsdaten des |
|
50 zweiten Sync-Managers */ |
|
51 const unsigned char *sm2; /**< Konfigurationsdaten des |
|
52 dritten Sync-Managers */ |
|
53 const unsigned char *sm3; /**< Konfigurationsdaten des |
|
54 vierten Sync-Managers */ |
|
55 |
|
56 const unsigned char *fmmu0; /**< Konfigurationsdaten |
|
57 der ersten FMMU */ |
|
58 |
|
59 const unsigned int data_length; /**< Länge der Prozessdaten in Bytes */ |
|
60 const unsigned int channels; /**< Anzahl der Kanäle */ |
|
61 |
|
62 int (*read) (unsigned char *, unsigned int); /**< Funktion zum Dekodieren |
|
63 und Lesen der Kanaldaten */ |
|
64 void (*write) (unsigned char *, unsigned int, int); /**< Funktion zum Kodieren |
|
65 und Schreiben der |
|
66 Kanaldaten */ |
|
67 } |
|
68 EtherCAT_slave_desc_t; |
|
69 |
|
70 /***************************************************************/ |
|
71 |
|
72 /** |
|
73 Identifikation eines Slave-Typs. |
|
74 |
|
75 Diese Struktur wird zur 1:n-Zuordnung von Hersteller- und |
|
76 Produktcodes zu den einzelnen Slave-Typen verwendet. |
|
77 */ |
|
78 |
|
79 struct slave_ident |
|
80 { |
|
81 const unsigned int vendor_id; /**< Hersteller-Code */ |
|
82 const unsigned int product_code; /**< Herstellerspezifischer Produktcode */ |
|
83 const EtherCAT_slave_desc_t *desc; /**< Zeiger auf den dazugehörigen |
|
84 Slave-Typ */ |
|
85 }; |
|
86 |
|
87 extern struct slave_ident slave_idents[]; /**< Statisches Array der |
|
88 Slave-Identifikationen */ |
|
89 extern unsigned int slave_idents_count; /**< Anzahl der bekannten Slave- |
|
90 Identifikationen */ |
|
91 |
|
92 /***************************************************************/ |
|
93 |
|
94 extern EtherCAT_slave_desc_t Beckhoff_EK1100[]; |
|
95 extern EtherCAT_slave_desc_t Beckhoff_EL1014[]; |
|
96 extern EtherCAT_slave_desc_t Beckhoff_EL2004[]; |
|
97 extern EtherCAT_slave_desc_t Beckhoff_EL3102[]; |
|
98 extern EtherCAT_slave_desc_t Beckhoff_EL3162[]; |
|
99 extern EtherCAT_slave_desc_t Beckhoff_EL4102[]; |
|
100 extern EtherCAT_slave_desc_t Beckhoff_EL5001[]; |
|
101 |
|
102 /***************************************************************/ |
|
103 |
|
104 #endif |