fp@39: /****************************************************************************** fp@0: * fp@54: * m a s t e r . h fp@0: * fp@0: * Struktur für einen EtherCAT-Master. fp@0: * fp@39: * $Id$ fp@0: * fp@39: *****************************************************************************/ fp@0: fp@0: #ifndef _EC_MASTER_H_ fp@0: #define _EC_MASTER_H_ fp@0: fp@54: #include "device.h" fp@54: #include "slave.h" fp@54: #include "command.h" fp@54: #include "domain.h" fp@0: fp@39: /*****************************************************************************/ fp@0: fp@0: /** fp@0: EtherCAT-Master fp@0: fp@0: Verwaltet die EtherCAT-Slaves und kommuniziert mit fp@0: dem zugewiesenen EtherCAT-Gerät. fp@0: */ fp@0: fp@55: struct ec_master fp@0: { fp@54: ec_slave_t *bus_slaves; /**< Array von Slaves auf dem Bus */ fp@52: unsigned int bus_slaves_count; /**< Anzahl Slaves auf dem Bus */ fp@54: ec_device_t device; /**< EtherCAT-Gerät */ fp@54: unsigned int device_registered; /**< Ein Geraet hat sich registriert. */ fp@0: unsigned char command_index; /**< Aktueller Kommando-Index */ fp@54: unsigned char tx_data[EC_FRAME_SIZE]; /**< Statischer Speicher fp@54: für zu sendende Daten */ fp@0: unsigned int tx_data_length; /**< Länge der Daten im Sendespeicher */ fp@54: unsigned char rx_data[EC_FRAME_SIZE]; /**< Statische Speicher für fp@54: eine Kopie des Rx-Buffers fp@54: im EtherCAT-Gerät */ fp@19: unsigned int rx_data_length; /**< Länge der Daten im Empfangsspeicher */ fp@54: ec_domain_t domains[EC_MAX_DOMAINS]; /** Prozessdatendomänen */ fp@42: unsigned int domain_count; fp@2: int debug_level; /**< Debug-Level im Master-Code */ fp@47: unsigned int bus_time; /**< Letzte Bus-Zeit in Mikrosekunden */ fp@48: unsigned int frames_lost; /**< Anzahl verlorene Frames */ fp@48: unsigned long t_lost_output; /*<< Timer-Ticks bei der letzten Ausgabe von fp@48: verlorenen Frames */ fp@55: }; fp@0: fp@39: /*****************************************************************************/ fp@0: fp@52: // Private Methods fp@52: fp@0: // Master creation and deletion fp@54: void ec_master_init(ec_master_t *); fp@54: void ec_master_clear(ec_master_t *); fp@56: void ec_master_reset(ec_master_t *); fp@0: fp@27: // Registration of devices fp@54: int ec_master_open(ec_master_t *); fp@54: void ec_master_close(ec_master_t *); fp@17: fp@0: // Slave management fp@54: int ec_scan_for_slaves(ec_master_t *); 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: */