fp@0: /**************************************************************** fp@0: * fp@0: * e c _ t y p e s . h fp@0: * fp@0: * EtherCAT-Slave-Typen. fp@0: * fp@0: * $Date: 2005-09-07 17:50:50 +0200 (Mit, 07 Sep 2005) $ fp@0: * $Author: fp $ fp@0: * fp@0: ***************************************************************/ fp@0: fp@0: #ifndef _EC_TYPES_H_ fp@0: #define _EC_TYPES_H_ fp@0: fp@0: /** fp@0: Typ eines EtherCAT-Slaves. fp@0: fp@0: Dieser Typ muss für die Konfiguration bekannt sein. Der fp@0: Master entscheidet danach, ober bspw. Mailboxes konfigurieren, fp@0: oder Sync-Manager setzen soll. fp@0: */ fp@0: fp@0: typedef enum fp@0: { fp@0: ECAT_ST_SIMPLE, ECAT_ST_MAILBOX, ECAT_ST_SIMPLE_NOSYNC fp@0: } fp@0: EtherCAT_slave_type_t; fp@0: fp@0: /***************************************************************/ fp@0: fp@0: /** fp@0: Beschreibung eines EtherCAT-Slave-Typs. fp@0: fp@0: Diese Beschreibung dient zur Konfiguration einer bestimmten fp@0: Slave-Art. Sie enthält die Konfigurationsdaten für die fp@0: Slave-internen Sync-Manager und FMMU's. fp@0: */ fp@0: fp@0: typedef struct slave_desc fp@0: { fp@0: const char *vendor_name; /**< Name des Herstellers */ fp@0: const char *product_name; /**< Name des Slaves-Typs */ fp@0: const char *product_desc; /**< Genauere Beschreibung des Slave-Typs */ fp@0: fp@0: const EtherCAT_slave_type_t type; /**< Art des Slave-Typs */ fp@0: fp@0: const unsigned char *sm0; /**< Konfigurationsdaten des fp@0: ersten Sync-Managers */ fp@0: const unsigned char *sm1; /**< Konfigurationsdaten des fp@0: zweiten Sync-Managers */ fp@0: const unsigned char *sm2; /**< Konfigurationsdaten des fp@0: dritten Sync-Managers */ fp@0: const unsigned char *sm3; /**< Konfigurationsdaten des fp@0: vierten Sync-Managers */ fp@0: fp@0: const unsigned char *fmmu0; /**< Konfigurationsdaten fp@0: der ersten FMMU */ fp@0: fp@0: const unsigned int data_length; /**< Länge der Prozessdaten in Bytes */ fp@0: const unsigned int channels; /**< Anzahl der Kanäle */ fp@0: fp@0: int (*read) (unsigned char *, unsigned int); /**< Funktion zum Dekodieren fp@0: und Lesen der Kanaldaten */ fp@0: void (*write) (unsigned char *, unsigned int, int); /**< Funktion zum Kodieren fp@0: und Schreiben der fp@0: Kanaldaten */ fp@0: } fp@0: EtherCAT_slave_desc_t; fp@0: fp@0: /***************************************************************/ fp@0: fp@0: /** fp@0: Identifikation eines Slave-Typs. fp@0: fp@0: Diese Struktur wird zur 1:n-Zuordnung von Hersteller- und fp@0: Produktcodes zu den einzelnen Slave-Typen verwendet. fp@0: */ fp@0: fp@0: struct slave_ident fp@0: { fp@0: const unsigned int vendor_id; /**< Hersteller-Code */ fp@0: const unsigned int product_code; /**< Herstellerspezifischer Produktcode */ fp@0: const EtherCAT_slave_desc_t *desc; /**< Zeiger auf den dazugehörigen fp@0: Slave-Typ */ fp@0: }; fp@0: fp@0: extern struct slave_ident slave_idents[]; /**< Statisches Array der fp@0: Slave-Identifikationen */ fp@0: extern unsigned int slave_idents_count; /**< Anzahl der bekannten Slave- fp@0: Identifikationen */ fp@0: fp@0: /***************************************************************/ fp@0: fp@0: extern EtherCAT_slave_desc_t Beckhoff_EK1100[]; fp@0: extern EtherCAT_slave_desc_t Beckhoff_EL1014[]; fp@0: extern EtherCAT_slave_desc_t Beckhoff_EL2004[]; fp@0: extern EtherCAT_slave_desc_t Beckhoff_EL3102[]; fp@0: extern EtherCAT_slave_desc_t Beckhoff_EL3162[]; fp@0: extern EtherCAT_slave_desc_t Beckhoff_EL4102[]; fp@35: extern EtherCAT_slave_desc_t Beckhoff_EL4132[]; fp@0: extern EtherCAT_slave_desc_t Beckhoff_EL5001[]; fp@0: fp@0: /***************************************************************/ fp@0: fp@0: #endif