drivers/ec_master.h
author Florian Pose <fp@igh-essen.com>
Fri, 13 Jan 2006 15:39:38 +0000
changeset 52 c0405659a74a
parent 48 7e75772ea28c
permissions -rw-r--r--
Neues Interface.
39
6965c23a6826 likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents: 33
diff changeset
     1
/******************************************************************************
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
 *
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
 *  e c _ m a s t e r . h
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
 *
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
 *  Struktur für einen EtherCAT-Master.
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     6
 *
39
6965c23a6826 likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents: 33
diff changeset
     7
 *  $Id$
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
 *
39
6965c23a6826 likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents: 33
diff changeset
     9
 *****************************************************************************/
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
#ifndef _EC_MASTER_H_
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
#define _EC_MASTER_H_
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    13
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
#include "ec_device.h"
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    15
#include "ec_slave.h"
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
#include "ec_command.h"
42
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    17
#include "ec_domain.h"
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
39
6965c23a6826 likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents: 33
diff changeset
    19
/*****************************************************************************/
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    20
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    21
/**
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    22
   EtherCAT-Master
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    23
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    24
   Verwaltet die EtherCAT-Slaves und kommuniziert mit
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
   dem zugewiesenen EtherCAT-Gerät.
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    26
*/
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    27
42
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    28
struct EtherCAT_master
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    29
{
52
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    30
  EtherCAT_slave_t *bus_slaves; /**< Array von Slaves auf dem Bus */
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    31
  unsigned int bus_slaves_count; /**< Anzahl Slaves auf dem Bus */
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
  EtherCAT_device_t *dev; /**< Zeiger auf das zugewiesene EtherCAT-Gerät */
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
  unsigned char command_index; /**< Aktueller Kommando-Index */
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    34
  unsigned char tx_data[ECAT_FRAME_BUFFER_SIZE]; /**< Statischer Speicher
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    35
                                                    für zu sendende Daten */
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    36
  unsigned int tx_data_length; /**< Länge der Daten im Sendespeicher */
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    37
  unsigned char rx_data[ECAT_FRAME_BUFFER_SIZE]; /**< Statische Speicher für
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    38
                                                    eine Kopie des Rx-Buffers
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
                                                    im EtherCAT-Gerät */
19
a51289e6cb2d Warten beim Empfangen der Prozessdaten, Bugfix und kleinere Verbesserungen.
Florian Pose <fp@igh-essen.com>
parents: 17
diff changeset
    40
  unsigned int rx_data_length; /**< Länge der Daten im Empfangsspeicher */
42
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    41
  EtherCAT_domain_t domains[ECAT_MAX_DOMAINS]; /** Prozessdatendomänen */
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    42
  unsigned int domain_count;
2
b0a7a4745bf9 ?nderungen an no_rtai r110:110 in drivers gemergt.
Florian Pose <fp@igh-essen.com>
parents: 0
diff changeset
    43
  int debug_level; /**< Debug-Level im Master-Code */
47
ad5f969f263b Prozessdatentimeout, Buszeit und weniger Klemmen.
Florian Pose <fp@igh-essen.com>
parents: 42
diff changeset
    44
  unsigned int bus_time; /**< Letzte Bus-Zeit in Mikrosekunden */
48
7e75772ea28c Sinnvolle Meldung verlorener Frames, Zustand antwortender Slaves.
Florian Pose <fp@igh-essen.com>
parents: 47
diff changeset
    45
  unsigned int frames_lost; /**< Anzahl verlorene Frames */
7e75772ea28c Sinnvolle Meldung verlorener Frames, Zustand antwortender Slaves.
Florian Pose <fp@igh-essen.com>
parents: 47
diff changeset
    46
  unsigned long t_lost_output; /*<< Timer-Ticks bei der letzten Ausgabe von
7e75772ea28c Sinnvolle Meldung verlorener Frames, Zustand antwortender Slaves.
Florian Pose <fp@igh-essen.com>
parents: 47
diff changeset
    47
                                 verlorenen Frames */
42
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    48
};
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    49
39
6965c23a6826 likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents: 33
diff changeset
    50
/*****************************************************************************/
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    51
52
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    52
// Public methods
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    53
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    54
void *EtherCAT_register_slave(EtherCAT_master_t *, unsigned int,
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    55
                              const char *, const char *, unsigned int);
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    56
int EtherCAT_activate_slave(EtherCAT_master_t *, EtherCAT_slave_t *);
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    57
int EtherCAT_deactivate_slave(EtherCAT_master_t *, EtherCAT_slave_t *);
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    58
int EtherCAT_process_data_cycle(EtherCAT_master_t *, unsigned int,
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    59
                                unsigned int);
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    60
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    61
// Private Methods
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    62
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    63
// Master creation and deletion
27
d75ef6b46e33 EtherCAT-Master in eigenes Modul ausgelagert.
Florian Pose <fp@igh-essen.com>
parents: 19
diff changeset
    64
void EtherCAT_master_init(EtherCAT_master_t *);
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    65
void EtherCAT_master_clear(EtherCAT_master_t *);
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    66
27
d75ef6b46e33 EtherCAT-Master in eigenes Modul ausgelagert.
Florian Pose <fp@igh-essen.com>
parents: 19
diff changeset
    67
// Registration of devices
33
f4171b8aadf8 Master-Reservierung und Use-Count f?r NIC-Treiber.
Florian Pose <fp@igh-essen.com>
parents: 27
diff changeset
    68
int EtherCAT_master_open(EtherCAT_master_t *, EtherCAT_device_t *);
f4171b8aadf8 Master-Reservierung und Use-Count f?r NIC-Treiber.
Florian Pose <fp@igh-essen.com>
parents: 27
diff changeset
    69
void EtherCAT_master_close(EtherCAT_master_t *, EtherCAT_device_t *);
27
d75ef6b46e33 EtherCAT-Master in eigenes Modul ausgelagert.
Florian Pose <fp@igh-essen.com>
parents: 19
diff changeset
    70
17
1b5aea4d5147 Code zum Senden/Empfangen mehrerer Kommandos in einem Frame vorerst ganz entfernt.
Florian Pose <fp@igh-essen.com>
parents: 14
diff changeset
    71
// Sending and receiving
1b5aea4d5147 Code zum Senden/Empfangen mehrerer Kommandos in einem Frame vorerst ganz entfernt.
Florian Pose <fp@igh-essen.com>
parents: 14
diff changeset
    72
int EtherCAT_simple_send_receive(EtherCAT_master_t *, EtherCAT_command_t *);
1b5aea4d5147 Code zum Senden/Empfangen mehrerer Kommandos in einem Frame vorerst ganz entfernt.
Florian Pose <fp@igh-essen.com>
parents: 14
diff changeset
    73
int EtherCAT_simple_send(EtherCAT_master_t *, EtherCAT_command_t *);
1b5aea4d5147 Code zum Senden/Empfangen mehrerer Kommandos in einem Frame vorerst ganz entfernt.
Florian Pose <fp@igh-essen.com>
parents: 14
diff changeset
    74
int EtherCAT_simple_receive(EtherCAT_master_t *, EtherCAT_command_t *);
1b5aea4d5147 Code zum Senden/Empfangen mehrerer Kommandos in einem Frame vorerst ganz entfernt.
Florian Pose <fp@igh-essen.com>
parents: 14
diff changeset
    75
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    76
// Slave management
52
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    77
int EtherCAT_scan_for_slaves(EtherCAT_master_t *);
42
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    78
int EtherCAT_read_slave_information(EtherCAT_master_t *, unsigned short int,
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    79
                                    unsigned short int, unsigned int *);
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    80
int EtherCAT_state_change(EtherCAT_master_t *, EtherCAT_slave_t *,
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    81
                          unsigned char);
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    82
52
c0405659a74a Neues Interface.
Florian Pose <fp@igh-essen.com>
parents: 48
diff changeset
    83
// Misc.
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    84
19
a51289e6cb2d Warten beim Empfangen der Prozessdaten, Bugfix und kleinere Verbesserungen.
Florian Pose <fp@igh-essen.com>
parents: 17
diff changeset
    85
void output_debug_data(const EtherCAT_master_t *);
48
7e75772ea28c Sinnvolle Meldung verlorener Frames, Zustand antwortender Slaves.
Florian Pose <fp@igh-essen.com>
parents: 47
diff changeset
    86
void ecat_output_lost_frames(EtherCAT_master_t *);
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    87
39
6965c23a6826 likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents: 33
diff changeset
    88
/*****************************************************************************/
0
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    89
05c992bf5847 trunk, tags und branches
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    90
#endif
42
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    91
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    92
/* Emacs-Konfiguration
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    93
;;; Local Variables: ***
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    94
;;; c-basic-offset:2 ***
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    95
;;; End: ***
a22a202d0f42 Domains, Warten beim Senden, 10kHz.
Florian Pose <fp@igh-essen.com>
parents: 39
diff changeset
    96
*/