equal
deleted
inserted
replaced
110 /*****************************************************************************/ |
110 /*****************************************************************************/ |
111 |
111 |
112 /** |
112 /** |
113 Öffnet das EtherCAT-Geraet des Masters. |
113 Öffnet das EtherCAT-Geraet des Masters. |
114 |
114 |
115 \return 0, wenn alles o.k., < 0, wenn kein Gerät registriert wurde oder |
115 \return 0 wenn alles ok, < 0 wenn kein Gerät registriert wurde oder |
116 es nicht geoeffnet werden konnte. |
116 es nicht geoeffnet werden konnte. |
117 */ |
117 */ |
118 |
118 |
119 int ec_master_open(ec_master_t *master /**< Der EtherCAT-Master */) |
119 int ec_master_open(ec_master_t *master /**< Der EtherCAT-Master */) |
120 { |
120 { |
121 if (!master->device_registered) { |
121 if (!master->device_registered) { |
149 } |
149 } |
150 |
150 |
151 /*****************************************************************************/ |
151 /*****************************************************************************/ |
152 |
152 |
153 /** |
153 /** |
154 Durchsucht den Bus nach Slaves. |
154 Durchsucht den EtherCAT-Bus nach Slaves. |
155 |
155 |
156 @return 0 bei Erfolg, sonst < 0 |
156 Erstellt ein Array mit allen Slave-Informationen die für den |
|
157 weiteren Betrieb notwendig sind. |
|
158 |
|
159 \return 0 bei Erfolg, sonst < 0 |
157 */ |
160 */ |
158 |
161 |
159 int ec_scan_for_slaves(ec_master_t *master /**< EtherCAT-Master */) |
162 int ec_scan_for_slaves(ec_master_t *master /**< EtherCAT-Master */) |
160 { |
163 { |
161 ec_frame_t frame; |
164 ec_frame_t frame; |
232 } |
235 } |
233 |
236 |
234 /*****************************************************************************/ |
237 /*****************************************************************************/ |
235 |
238 |
236 /** |
239 /** |
237 Gibt von Zeit zu Zeit die Anzahl verlorener Frames aus. |
240 Gibt die Anzahl verlorener Frames aus. |
|
241 |
|
242 Die Ausgabe erfolgt gesammelt höchstens einmal pro Sekunde. |
238 */ |
243 */ |
239 |
244 |
240 void ec_output_lost_frames(ec_master_t *master /**< EtherCAT-Master */) |
245 void ec_output_lost_frames(ec_master_t *master /**< EtherCAT-Master */) |
241 { |
246 { |
242 unsigned long int t; |
247 unsigned long int t; |
424 |
429 |
425 /** |
430 /** |
426 Konfiguriert alle Slaves und setzt den Operational-Zustand. |
431 Konfiguriert alle Slaves und setzt den Operational-Zustand. |
427 |
432 |
428 Führt die komplette Konfiguration und Aktivierunge aller registrierten |
433 Führt die komplette Konfiguration und Aktivierunge aller registrierten |
429 Slaves durch. Setzt Sync-Manager und FMMU's, führt die entsprechenden |
434 Slaves durch. Setzt Sync-Manager und FMMUs, führt die entsprechenden |
430 Zustandsübergänge durch, bis der Slave betriebsbereit ist. |
435 Zustandsübergänge durch, bis der Slave betriebsbereit ist. |
431 |
436 |
432 \return 0 bei Erfolg, sonst < 0 |
437 \return 0 bei Erfolg, sonst < 0 |
433 */ |
438 */ |
434 |
439 |
478 type = slave->type; |
483 type = slave->type; |
479 |
484 |
480 // Check and reset CRC fault counters |
485 // Check and reset CRC fault counters |
481 ec_slave_check_crc(slave); |
486 ec_slave_check_crc(slave); |
482 |
487 |
483 // Resetting FMMU's |
488 // Resetting FMMUs |
484 if (slave->base_fmmu_count) { |
489 if (slave->base_fmmu_count) { |
485 memset(data, 0x00, EC_FMMU_SIZE * slave->base_fmmu_count); |
490 memset(data, 0x00, EC_FMMU_SIZE * slave->base_fmmu_count); |
486 ec_frame_init_npwr(&frame, master, slave->station_address, 0x0600, |
491 ec_frame_init_npwr(&frame, master, slave->station_address, 0x0600, |
487 EC_FMMU_SIZE * slave->base_fmmu_count, data); |
492 EC_FMMU_SIZE * slave->base_fmmu_count, data); |
488 if (unlikely(ec_frame_send_receive(&frame))) { |
493 if (unlikely(ec_frame_send_receive(&frame))) { |