master/master.c
changeset 91 0120d6214948
parent 90 044e97bce4bd
child 94 fa8e9f520589
equal deleted inserted replaced
90:044e97bce4bd 91:0120d6214948
   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))) {