user/ec_slave.h
branchkernel-2.4
changeset 1762 fd8b9ad48f88
parent 1761 d7ef8607e06f
child 1766 9e4d4306b641
equal deleted inserted replaced
1761:d7ef8607e06f 1762:fd8b9ad48f88
     1 //---------------------------------------------------------------
       
     2 //
       
     3 //  e c _ s l a v e . h
       
     4 //
       
     5 //  $LastChangedDate$
       
     6 //  $Author$
       
     7 //
       
     8 //---------------------------------------------------------------
       
     9 
       
    10 #define SIMPLE 0
       
    11 #define MAILBOX 1
       
    12 
       
    13 //---------------------------------------------------------------
       
    14 
       
    15 typedef struct slave_desc EtherCAT_slave_desc_t;
       
    16 
       
    17 typedef struct
       
    18 {
       
    19   // Base data
       
    20   unsigned char type;
       
    21   unsigned char revision;
       
    22   unsigned short build;
       
    23 
       
    24   // Addresses
       
    25   short ring_position;
       
    26   unsigned short station_address;
       
    27 
       
    28   // Slave information interface
       
    29   unsigned int vendor_id;
       
    30   unsigned int product_code;
       
    31   unsigned int revision_number;
       
    32 
       
    33   const EtherCAT_slave_desc_t *desc;
       
    34 
       
    35   unsigned int logical_address0;
       
    36 
       
    37   unsigned int current_state;
       
    38   unsigned int requested_state;
       
    39 
       
    40   unsigned char *process_data;
       
    41 }
       
    42 EtherCAT_slave_t;
       
    43 
       
    44 #define ECAT_INIT_SLAVE(TYPE) {0, 0, 0, 0, 0, 0, 0, 0, TYPE, 0, 0, 0, NULL}
       
    45 
       
    46 //---------------------------------------------------------------
       
    47 
       
    48 // Slave construction and deletion
       
    49 void EtherCAT_slave_init(EtherCAT_slave_t *);
       
    50 void EtherCAT_slave_clear(EtherCAT_slave_t *);
       
    51 
       
    52 // Debug
       
    53 void EtherCAT_slave_print(EtherCAT_slave_t *);
       
    54 
       
    55 //---------------------------------------------------------------
       
    56 
       
    57 typedef struct slave_desc
       
    58 {
       
    59   const char *vendor_name;
       
    60   const char *product_name;
       
    61   const char *product_desc;
       
    62 
       
    63   const int type;
       
    64 
       
    65   const unsigned char *sm0;
       
    66   const unsigned char *sm1;
       
    67   const unsigned char *sm2;
       
    68   const unsigned char *sm3;
       
    69 
       
    70   const unsigned char *fmmu0;
       
    71 
       
    72   const unsigned int data_length;
       
    73 }
       
    74 EtherCAT_slave_desc_t;
       
    75 
       
    76 extern EtherCAT_slave_desc_t Beckhoff_EK1100[];
       
    77 extern EtherCAT_slave_desc_t Beckhoff_EL1014[];
       
    78 extern EtherCAT_slave_desc_t Beckhoff_EL2004[];
       
    79 extern EtherCAT_slave_desc_t Beckhoff_EL3102[];
       
    80 extern EtherCAT_slave_desc_t Beckhoff_EL3162[];
       
    81 extern EtherCAT_slave_desc_t Beckhoff_EL4102[];
       
    82 extern EtherCAT_slave_desc_t Beckhoff_EL5001[];
       
    83 
       
    84 //---------------------------------------------------------------
       
    85 
       
    86 struct slave_ident
       
    87 {
       
    88   const unsigned int vendor_id;
       
    89   const unsigned int product_code;
       
    90   const EtherCAT_slave_desc_t *desc;
       
    91 };
       
    92 
       
    93 extern struct slave_ident slave_idents[];
       
    94 extern unsigned int slave_idents_count;
       
    95 
       
    96 //---------------------------------------------------------------