include/EtherCAT_rt.h
changeset 55 059a9e712aa7
parent 54 7506e67dd122
child 56 36d1fa37f5e1
equal deleted inserted replaced
54:7506e67dd122 55:059a9e712aa7
    12 /*****************************************************************************/
    12 /*****************************************************************************/
    13 
    13 
    14 struct ec_master;
    14 struct ec_master;
    15 typedef struct ec_master ec_master_t;
    15 typedef struct ec_master ec_master_t;
    16 
    16 
       
    17 struct ec_slave_type;
       
    18 typedef struct ec_slave_type ec_slave_type_t;
       
    19 
       
    20 struct ec_slave;
       
    21 typedef struct ec_slave ec_slave_t;
       
    22 
    17 /*****************************************************************************/
    23 /*****************************************************************************/
    18 
    24 
    19 ec_master_t *EtherCAT_rt_request_master(unsigned int master_index);
    25 ec_master_t *EtherCAT_rt_request_master(unsigned int master_index);
    20 
    26 
    21 void EtherCAT_rt_release_master(ec_master_t *master);
    27 void EtherCAT_rt_release_master(ec_master_t *master);
    22 
    28 
    23 void *EtherCAT_rt_register_slave(ec_master_t *master, unsigned int slave_index,
    29 ec_slave_t *EtherCAT_rt_register_slave(ec_master_t *master,
    24                                  const char *vendor_name,
    30                                        unsigned int slave_index,
    25                                  const char *product_name);
    31                                        const char *vendor_name,
       
    32                                        const char *product_name,
       
    33                                        unsigned int domain);
    26 
    34 
    27 int EtherCAT_rt_activate_slaves(ec_master_t *master);
    35 int EtherCAT_rt_activate_slaves(ec_master_t *master);
    28 
    36 
    29 int EtherCAT_rt_deactivate_slaves(ec_master_t *master);
    37 int EtherCAT_rt_deactivate_slaves(ec_master_t *master);
    30 
    38 
    31 int EtherCAT_rt_domain_cycle(ec_master_t *master, unsigned int domain,
    39 int EtherCAT_rt_exchange_io(ec_master_t *master, unsigned int domain,
    32                              unsigned int timeout_us);
    40                             unsigned int timeout_us);
       
    41 
       
    42 /*****************************************************************************/
       
    43 
       
    44 /**
       
    45    EtherCAT-Slave
       
    46 */
       
    47 
       
    48 struct ec_slave
       
    49 {
       
    50     // Base data
       
    51     unsigned char base_type; /**< Slave-Typ */
       
    52     unsigned char base_revision; /**< Revision */
       
    53     unsigned short base_build; /**< Build-Nummer */
       
    54 
       
    55     // Addresses
       
    56     short ring_position; /**< (Negative) Position des Slaves im Bus */
       
    57     unsigned short station_address; /**< Konfigurierte Slave-Adresse */
       
    58 
       
    59     // Slave information interface
       
    60     unsigned int sii_vendor_id; /**< Identifikationsnummer des Herstellers */
       
    61     unsigned int sii_product_code; /**< Herstellerspezifischer Produktcode */
       
    62     unsigned int sii_revision_number; /**< Revisionsnummer */
       
    63     unsigned int sii_serial_number; /**< Seriennummer der Klemme */
       
    64 
       
    65     const ec_slave_type_t *type; /**< Zeiger auf die Beschreibung
       
    66                                     des Slave-Typs */
       
    67 
       
    68     unsigned int logical_address; /**< Konfigurierte, logische Adresse */
       
    69 
       
    70     void *process_data; /**< Zeiger auf den Speicherbereich
       
    71                            innerhalb eines Prozessdatenobjekts */
       
    72     void *private_data; /**< Zeiger auf privaten Datenbereich */
       
    73     int (*configure)(ec_slave_t *); /**< Zeiger auf die Funktion zur
       
    74                                      Konfiguration */
       
    75 
       
    76     unsigned char registered; /**< Der Slave wurde registriert */
       
    77 
       
    78     unsigned int domain; /**< Prozessdatendomäne */
       
    79 
       
    80     int error_reported; /**< Ein Zugriffsfehler wurde bereits gemeldet */
       
    81 };
    33 
    82 
    34 /*****************************************************************************/
    83 /*****************************************************************************/
    35 
    84 
    36 #endif
    85 #endif