25 dem zugewiesenen EtherCAT-Gerät. |
25 dem zugewiesenen EtherCAT-Gerät. |
26 */ |
26 */ |
27 |
27 |
28 struct EtherCAT_master |
28 struct EtherCAT_master |
29 { |
29 { |
|
30 EtherCAT_slave_t *bus_slaves; /**< Array von Slaves auf dem Bus */ |
|
31 unsigned int bus_slaves_count; /**< Anzahl Slaves auf dem Bus */ |
30 EtherCAT_device_t *dev; /**< Zeiger auf das zugewiesene EtherCAT-Gerät */ |
32 EtherCAT_device_t *dev; /**< Zeiger auf das zugewiesene EtherCAT-Gerät */ |
31 unsigned char command_index; /**< Aktueller Kommando-Index */ |
33 unsigned char command_index; /**< Aktueller Kommando-Index */ |
32 unsigned char tx_data[ECAT_FRAME_BUFFER_SIZE]; /**< Statischer Speicher |
34 unsigned char tx_data[ECAT_FRAME_BUFFER_SIZE]; /**< Statischer Speicher |
33 für zu sendende Daten */ |
35 für zu sendende Daten */ |
34 unsigned int tx_data_length; /**< Länge der Daten im Sendespeicher */ |
36 unsigned int tx_data_length; /**< Länge der Daten im Sendespeicher */ |
45 verlorenen Frames */ |
47 verlorenen Frames */ |
46 }; |
48 }; |
47 |
49 |
48 /*****************************************************************************/ |
50 /*****************************************************************************/ |
49 |
51 |
|
52 // Public methods |
|
53 |
|
54 void *EtherCAT_register_slave(EtherCAT_master_t *, unsigned int, |
|
55 const char *, const char *, unsigned int); |
|
56 int EtherCAT_activate_slave(EtherCAT_master_t *, EtherCAT_slave_t *); |
|
57 int EtherCAT_deactivate_slave(EtherCAT_master_t *, EtherCAT_slave_t *); |
|
58 int EtherCAT_process_data_cycle(EtherCAT_master_t *, unsigned int, |
|
59 unsigned int); |
|
60 |
|
61 // Private Methods |
|
62 |
50 // Master creation and deletion |
63 // Master creation and deletion |
51 void EtherCAT_master_init(EtherCAT_master_t *); |
64 void EtherCAT_master_init(EtherCAT_master_t *); |
52 void EtherCAT_master_clear(EtherCAT_master_t *); |
65 void EtherCAT_master_clear(EtherCAT_master_t *); |
53 |
66 |
54 // Registration of devices |
67 // Registration of devices |
59 int EtherCAT_simple_send_receive(EtherCAT_master_t *, EtherCAT_command_t *); |
72 int EtherCAT_simple_send_receive(EtherCAT_master_t *, EtherCAT_command_t *); |
60 int EtherCAT_simple_send(EtherCAT_master_t *, EtherCAT_command_t *); |
73 int EtherCAT_simple_send(EtherCAT_master_t *, EtherCAT_command_t *); |
61 int EtherCAT_simple_receive(EtherCAT_master_t *, EtherCAT_command_t *); |
74 int EtherCAT_simple_receive(EtherCAT_master_t *, EtherCAT_command_t *); |
62 |
75 |
63 // Slave management |
76 // Slave management |
64 int EtherCAT_check_slaves(EtherCAT_master_t *, EtherCAT_slave_t *, |
77 int EtherCAT_scan_for_slaves(EtherCAT_master_t *); |
65 unsigned int); |
|
66 int EtherCAT_read_slave_information(EtherCAT_master_t *, unsigned short int, |
78 int EtherCAT_read_slave_information(EtherCAT_master_t *, unsigned short int, |
67 unsigned short int, unsigned int *); |
79 unsigned short int, unsigned int *); |
68 int EtherCAT_activate_slave(EtherCAT_master_t *, EtherCAT_slave_t *); |
|
69 int EtherCAT_deactivate_slave(EtherCAT_master_t *, EtherCAT_slave_t *); |
|
70 int EtherCAT_state_change(EtherCAT_master_t *, EtherCAT_slave_t *, |
80 int EtherCAT_state_change(EtherCAT_master_t *, EtherCAT_slave_t *, |
71 unsigned char); |
81 unsigned char); |
72 |
82 |
73 // Process data |
83 // Misc. |
74 int EtherCAT_process_data_cycle(EtherCAT_master_t *, unsigned int, |
|
75 unsigned int); |
|
76 |
84 |
77 // Private functions |
|
78 void output_debug_data(const EtherCAT_master_t *); |
85 void output_debug_data(const EtherCAT_master_t *); |
79 void ecat_output_lost_frames(EtherCAT_master_t *); |
86 void ecat_output_lost_frames(EtherCAT_master_t *); |
80 |
87 |
81 /*****************************************************************************/ |
88 /*****************************************************************************/ |
82 |
89 |