fp@0: /**************************************************************** fp@0: * fp@0: * e c _ s l a v e . h fp@0: * fp@0: * Struktur für einen EtherCAT-Slave. fp@0: * fp@0: * $Date$ fp@0: * $Author$ fp@0: * fp@0: ***************************************************************/ fp@0: fp@0: #ifndef _EC_SLAVE_H_ fp@0: #define _EC_SLAVE_H_ fp@0: fp@0: #include "ec_types.h" fp@0: fp@0: /***************************************************************/ fp@0: fp@0: /** fp@0: EtherCAT-Slave fp@5: fp@5: Achtung: Bei Änderungen dieser Struktur immer das Define fp@5: ECAT_INIT_SLAVE anpassen! fp@0: */ fp@0: fp@0: typedef struct fp@0: { fp@0: // Base data fp@0: unsigned char type; /**< Slave-Typ */ fp@0: unsigned char revision; /**< Revision */ fp@0: unsigned short build; /**< Build-Nummer */ fp@0: fp@0: // Addresses fp@0: short ring_position; /**< (Negative) Position des Slaves im Bus */ fp@0: unsigned short station_address; /**< Konfigurierte Slave-Adresse */ fp@0: fp@0: // Slave information interface fp@0: unsigned int vendor_id; /**< Identifikationsnummer des Herstellers */ fp@0: unsigned int product_code; /**< Herstellerspezifischer Produktcode */ fp@0: unsigned int revision_number; /**< Revisionsnummer */ fp@5: unsigned int serial_number; /**< Seriennummer der Klemme */ fp@0: fp@0: const EtherCAT_slave_desc_t *desc; /**< Zeiger auf die Beschreibung fp@0: des Slave-Typs */ fp@0: fp@0: unsigned int logical_address0; /**< Konfigurierte, logische adresse */ fp@0: fp@0: EtherCAT_state_t current_state; /**< Aktueller Zustand */ fp@0: EtherCAT_state_t requested_state; /**< Angeforderter Zustand */ fp@0: fp@0: unsigned char *process_data; /**< Zeiger auf den Speicherbereich fp@0: im Prozessdatenspeicher des Masters */ fp@0: } fp@0: EtherCAT_slave_t; fp@0: fp@5: #define ECAT_INIT_SLAVE(TYPE) {0, 0, 0, 0, 0, 0, 0, 0, 0, \ fp@0: TYPE, 0, ECAT_STATE_UNKNOWN, \ fp@0: ECAT_STATE_UNKNOWN, NULL} fp@0: fp@0: /***************************************************************/ fp@0: fp@0: // Slave construction and deletion fp@0: void EtherCAT_slave_init(EtherCAT_slave_t *); fp@0: void EtherCAT_slave_clear(EtherCAT_slave_t *); fp@0: fp@0: int EtherCAT_read_value(EtherCAT_slave_t *, unsigned int); fp@0: void EtherCAT_write_value(EtherCAT_slave_t *, unsigned int, int); fp@0: fp@0: /***************************************************************/ fp@0: fp@0: #endif