//--------------------------------------------------------------- // // e c _ s l a v e . h // // $LastChangedDate$ // $Author$ // //--------------------------------------------------------------- #define SIMPLE 0 #define MAILBOX 1 //--------------------------------------------------------------- typedef struct slave_desc EtherCAT_slave_desc_t; typedef struct { // Base data unsigned char type; unsigned char revision; unsigned short build; // Addresses short ring_position; unsigned short station_address; // Slave information interface unsigned int vendor_id; unsigned int product_code; unsigned int revision_number; const EtherCAT_slave_desc_t *desc; unsigned int logical_address0; unsigned int current_state; unsigned int requested_state; unsigned char *process_data; } EtherCAT_slave_t; #define ECAT_INIT_SLAVE(TYPE) {0, 0, 0, 0, 0, 0, 0, 0, TYPE, 0, 0, 0, NULL} //--------------------------------------------------------------- // Slave construction and deletion void EtherCAT_slave_init(EtherCAT_slave_t *); void EtherCAT_slave_clear(EtherCAT_slave_t *); // Debug void EtherCAT_slave_print(EtherCAT_slave_t *); //--------------------------------------------------------------- typedef struct slave_desc { const char *vendor_name; const char *product_name; const char *product_desc; const int type; const unsigned char *sm0; const unsigned char *sm1; const unsigned char *sm2; const unsigned char *sm3; const unsigned char *fmmu0; const unsigned int data_length; } EtherCAT_slave_desc_t; extern EtherCAT_slave_desc_t Beckhoff_EK1100[]; extern EtherCAT_slave_desc_t Beckhoff_EL1014[]; extern EtherCAT_slave_desc_t Beckhoff_EL2004[]; extern EtherCAT_slave_desc_t Beckhoff_EL3102[]; extern EtherCAT_slave_desc_t Beckhoff_EL3162[]; extern EtherCAT_slave_desc_t Beckhoff_EL4102[]; extern EtherCAT_slave_desc_t Beckhoff_EL5001[]; //--------------------------------------------------------------- struct slave_ident { const unsigned int vendor_id; const unsigned int product_code; const EtherCAT_slave_desc_t *desc; }; extern struct slave_ident slave_idents[]; extern unsigned int slave_idents_count; //---------------------------------------------------------------