fp@39: /****************************************************************************** fp@0: * fp@54: * s l a v e . h fp@0: * fp@0: * Struktur für einen EtherCAT-Slave. fp@0: * fp@39: * $Id$ fp@0: * fp@39: *****************************************************************************/ fp@0: fp@0: #ifndef _EC_SLAVE_H_ fp@0: #define _EC_SLAVE_H_ fp@0: fp@54: #include "types.h" fp@0: fp@39: /*****************************************************************************/ 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@54: const ec_slave_desc_t *desc; /**< Zeiger auf die Beschreibung fp@0: des Slave-Typs */ fp@0: fp@42: unsigned int logical_address; /**< Konfigurierte, logische adresse */ fp@0: fp@54: ec_slave_state_t current_state; /**< Aktueller Zustand */ fp@54: ec_slave_state_t requested_state; /**< Angeforderter Zustand */ fp@0: fp@0: unsigned char *process_data; /**< Zeiger auf den Speicherbereich fp@42: innerhalb eines Prozessdatenobjekts */ fp@42: unsigned int domain; /**< Prozessdatendomäne */ fp@42: int error_reported; /**< Ein Zugriffsfehler wurde bereits gemeldet */ fp@0: } fp@54: ec_slave_t; fp@0: fp@54: #define EC_INIT_SLAVE(TYPE, DOMAIN) {0, 0, 0, 0, 0, 0, 0, 0, 0, \ fp@42: TYPE, 0, ECAT_STATE_UNKNOWN, \ fp@54: EC_STATE_UNKNOWN, NULL, DOMAIN, 0} fp@0: fp@39: /*****************************************************************************/ fp@0: fp@0: // Slave construction and deletion fp@54: void ec_slave_init(ec_slave_t *); fp@0: fp@54: #if 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@54: #endif fp@0: fp@39: /*****************************************************************************/ fp@0: fp@0: #endif fp@42: fp@42: /* Emacs-Konfiguration fp@42: ;;; Local Variables: *** fp@42: ;;; c-basic-offset:2 *** fp@42: ;;; End: *** fp@42: */