drivers/ec_slave.h
changeset 54 7506e67dd122
parent 53 6b3b8acb71b5
child 55 059a9e712aa7
equal deleted inserted replaced
53:6b3b8acb71b5 54:7506e67dd122
     1 /******************************************************************************
       
     2  *
       
     3  *  e c _ s l a v e . h
       
     4  *
       
     5  *  Struktur für einen EtherCAT-Slave.
       
     6  *
       
     7  *  $Id$
       
     8  *
       
     9  *****************************************************************************/
       
    10 
       
    11 #ifndef _EC_SLAVE_H_
       
    12 #define _EC_SLAVE_H_
       
    13 
       
    14 #include "ec_types.h"
       
    15 
       
    16 /*****************************************************************************/
       
    17 
       
    18 /**
       
    19    EtherCAT-Slave
       
    20 
       
    21    Achtung: Bei Änderungen dieser Struktur immer das Define
       
    22    ECAT_INIT_SLAVE anpassen!
       
    23 */
       
    24 
       
    25 typedef struct
       
    26 {
       
    27   // Base data
       
    28   unsigned char type; /**< Slave-Typ */
       
    29   unsigned char revision; /**< Revision */
       
    30   unsigned short build; /**< Build-Nummer */
       
    31 
       
    32   // Addresses
       
    33   short ring_position; /**< (Negative) Position des Slaves im Bus */
       
    34   unsigned short station_address; /**< Konfigurierte Slave-Adresse */
       
    35 
       
    36   // Slave information interface
       
    37   unsigned int vendor_id; /**< Identifikationsnummer des Herstellers */
       
    38   unsigned int product_code; /**< Herstellerspezifischer Produktcode */
       
    39   unsigned int revision_number; /**< Revisionsnummer */
       
    40   unsigned int serial_number; /**< Seriennummer der Klemme */
       
    41 
       
    42   const EtherCAT_slave_desc_t *desc; /**< Zeiger auf die Beschreibung
       
    43                                         des Slave-Typs */
       
    44 
       
    45   unsigned int logical_address; /**< Konfigurierte, logische adresse */
       
    46 
       
    47   EtherCAT_state_t current_state; /**< Aktueller Zustand */
       
    48   EtherCAT_state_t requested_state; /**< Angeforderter Zustand */
       
    49 
       
    50   unsigned char *process_data; /**< Zeiger auf den Speicherbereich
       
    51                                   innerhalb eines Prozessdatenobjekts */
       
    52   unsigned int domain; /**< Prozessdatendomäne */
       
    53   int error_reported; /**< Ein Zugriffsfehler wurde bereits gemeldet */
       
    54 }
       
    55 EtherCAT_slave_t;
       
    56 
       
    57 #define ECAT_INIT_SLAVE(TYPE, DOMAIN) {0, 0, 0, 0, 0, 0, 0, 0, 0, \
       
    58                                        TYPE, 0, ECAT_STATE_UNKNOWN, \
       
    59                                        ECAT_STATE_UNKNOWN, NULL, DOMAIN, 0}
       
    60 
       
    61 /*****************************************************************************/
       
    62 
       
    63 // Slave construction and deletion
       
    64 void EtherCAT_slave_init(EtherCAT_slave_t *);
       
    65 
       
    66 int EtherCAT_read_value(EtherCAT_slave_t *, unsigned int);
       
    67 void EtherCAT_write_value(EtherCAT_slave_t *, unsigned int, int);
       
    68 
       
    69 /*****************************************************************************/
       
    70 
       
    71 #endif
       
    72 
       
    73 /* Emacs-Konfiguration
       
    74 ;;; Local Variables: ***
       
    75 ;;; c-basic-offset:2 ***
       
    76 ;;; End: ***
       
    77 */