drivers/ec_types.h
changeset 0 05c992bf5847
child 23 39364fbcd069
equal deleted inserted replaced
-1:000000000000 0:05c992bf5847
       
     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