CAN over EtherCAT (CoE) module. More...
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <unistd.h>
#include <youbot_driver/soem/ethercattype.h>
#include <youbot_driver/soem/nicdrv.h>
#include <youbot_driver/soem/ethercatbase.h>
#include <youbot_driver/soem/ethercatmain.h>
#include <youbot_driver/soem/ethercatcoe.h>
Go to the source code of this file.
Classes | |
struct | PACKED |
struct | PACKED |
struct | PACKED |
struct | PACKED |
struct | PACKED |
Typedefs | |
typedef struct PACKED | ec_PDOassignt |
typedef struct PACKED | ec_PDOdesct |
typedef struct PACKED | ec_SDOservicet |
typedef struct PACKED | ec_SDOt |
typedef struct PACKED | ec_SMcommtypet |
Functions | |
int | ec_readODdescription (uint16 Item, ec_ODlistt *pODlist) |
int | ec_readODlist (uint16 Slave, ec_ODlistt *pODlist) |
int | ec_readOE (uint16 Item, ec_ODlistt *pODlist, ec_OElistt *pOElist) |
static int | ec_readOEsingle (uint16 Item, uint8 SubI, ec_ODlistt *pODlist, ec_OElistt *pOElist) |
int | ec_readPDOassign (uint16 Slave, uint16 PDOassign) |
int | ec_readPDOassignCA (uint16 Slave, uint16 PDOassign) |
int | ec_readPDOmap (uint16 Slave, int *Osize, int *Isize) |
int | ec_readPDOmapCA (uint16 Slave, int *Osize, int *Isize) |
int | ec_RxPDO (uint16 Slave, uint16 RxPDOnumber, int psize, void *p) |
void | ec_SDOerror (uint16 Slave, uint16 Index, uint8 SubIdx, int32 AbortCode) |
static void | ec_SDOinfoerror (uint16 Slave, uint16 Index, uint8 SubIdx, int32 AbortCode) |
int | ec_SDOread (uint16 slave, uint16 index, uint8 subindex, boolean CA, int *psize, void *p, int timeout) |
int | ec_SDOwrite (uint16 Slave, uint16 Index, uint8 SubIndex, boolean CA, int psize, void *p, int Timeout) |
int | ec_TxPDO (uint16 slave, uint16 TxPDOnumber, int *psize, void *p, int timeout) |
Variables | |
static ec_PDOassignt | ec_PDOassign |
static ec_PDOdesct | ec_PDOdesc |
static ec_SMcommtypet | ec_SMcommtype |
CAN over EtherCAT (CoE) module.
SDO read / write and SDO service functions
Definition in file ethercatcoe.c.
typedef struct PACKED ec_PDOassignt |
SDO assign structure for CA
typedef struct PACKED ec_PDOdesct |
SDO description structure for CA
typedef struct PACKED ec_SDOservicet |
SDO service structure
typedef struct PACKED ec_SMcommtypet |
SyncManager Communication Type structure for CA
int ec_readODdescription | ( | uint16 | Item, |
ec_ODlistt * | pODlist | ||
) |
CoE read Object Description. Adds textual description to object indexes.
[in] | Item | = Item number in ODlist. |
[in,out] | pODlist | = referencing Object Description list. |
Definition at line 1021 of file ethercatcoe.c.
int ec_readODlist | ( | uint16 | Slave, |
ec_ODlistt * | pODlist | ||
) |
CoE read Object Description List.
[in] | Slave | = Slave number. |
[out] | pODlist | = resulting Object Description list. |
Definition at line 916 of file ethercatcoe.c.
int ec_readOE | ( | uint16 | Item, |
ec_ODlistt * | pODlist, | ||
ec_OElistt * | pOElist | ||
) |
CoE read SDO service object entry.
[in] | Item | = Item in ODlist. |
[in] | pODlist | = Object description list for reference. |
[out] | pOElist | = resulting object entry structure. |
Definition at line 1177 of file ethercatcoe.c.
static int ec_readOEsingle | ( | uint16 | Item, |
uint8 | SubI, | ||
ec_ODlistt * | pODlist, | ||
ec_OElistt * | pOElist | ||
) | [static] |
CoE read SDO service object entry, single subindex. Used in ec_readOE().
[in] | Item | = Item in ODlist. |
[in] | SubI | = Subindex of item in ODlist. |
[in] | pODlist | = Object description list for reference. |
[out] | pOElist | = resulting object entry structure. |
Definition at line 1098 of file ethercatcoe.c.
int ec_readPDOassign | ( | uint16 | Slave, |
uint16 | PDOassign | ||
) |
Read PDO assign structure
Definition at line 639 of file ethercatcoe.c.
int ec_readPDOassignCA | ( | uint16 | Slave, |
uint16 | PDOassign | ||
) |
Read PDO assign structure in Complete Access mode
Definition at line 701 of file ethercatcoe.c.
int ec_readPDOmap | ( | uint16 | Slave, |
int * | Osize, | ||
int * | Isize | ||
) |
CoE read PDO mapping.
CANopen has standard indexes defined for PDO mapping. This function tries to read them and collect a full input and output mapping size of designated slave.
Principal structure in slave:
1C00:00 is number of SM defined
1C00:01 SM0 type -> 1C10
1C00:02 SM1 type -> 1C11
1C00:03 SM2 type -> 1C12
1C00:04 SM4 type -> 1C13
Type 0 = unused, 1 = mailbox in, 2 = mailbox out, 3 = outputs (RxPDO), 4 = inputs (TxPDO).
1C12:00 is number of PDO's defined for SM2
1C12:01 PDO assign SDO #1 -> f.e. 1A00
1C12:02 PDO assign SDO #2 -> f.e. 1A04\
1A00:00 is number of object defined for this PDO
1A00:01 object mapping #1, f.e. 60100710 (SDO 6010 SI 07 bitlength 0x10)
[in] | Slave | = Slave number |
[out] | Osize | = Size in bits of output mapping (rxPDO) found |
[out] | Isize | = Size in bits of input mapping (txPDO) found |
Definition at line 766 of file ethercatcoe.c.
int ec_readPDOmapCA | ( | uint16 | Slave, |
int * | Osize, | ||
int * | Isize | ||
) |
CoE read PDO mapping in Complete Access mode (CA).
CANopen has standard indexes defined for PDO mapping. This function tries to read them and collect a full input and output mapping size of designated slave. Slave has to support CA, otherwise use ec_readPDOmap().
[in] | Slave | = Slave number |
[out] | Osize | = Size in bits of output mapping (rxPDO) found |
[out] | Isize | = Size in bits of input mapping (txPDO) found |
Definition at line 846 of file ethercatcoe.c.
CoE RxPDO write, blocking.
A RxPDO download request is issued.
[in] | Slave | = Slave number |
[in] | RxPDOnumber | = Related RxPDO number |
[in] | psize | = Size in bytes of PDO buffer. |
[out] | p | = Pointer to PDO buffer |
Definition at line 528 of file ethercatcoe.c.
void ec_SDOerror | ( | uint16 | Slave, |
uint16 | Index, | ||
uint8 | SubIdx, | ||
int32 | AbortCode | ||
) |
Report SDO error.
[in] | Slave | = Slave number |
[in] | Index | = Index that generated error |
[in] | SubIdx | = Subindex that generated error |
[in] | AbortCode | = Abortcode, see EtherCAT documentation for list |
Definition at line 133 of file ethercatcoe.c.
static void ec_SDOinfoerror | ( | uint16 | Slave, |
uint16 | Index, | ||
uint8 | SubIdx, | ||
int32 | AbortCode | ||
) | [static] |
Report SDO info error
[in] | Slave | = Slave number |
[in] | Index | = Index that generated error |
[in] | SubIdx | = Subindex that generated error |
[in] | AbortCode | = Abortcode, see EtherCAT documentation for list |
Definition at line 154 of file ethercatcoe.c.
int ec_SDOread | ( | uint16 | slave, |
uint16 | index, | ||
uint8 | subindex, | ||
boolean | CA, | ||
int * | psize, | ||
void * | p, | ||
int | timeout | ||
) |
CoE SDO read, blocking. Single subindex or Complete Access.
Only a "normal" upload request is issued. If the requested parameter is <= 4bytes then a "expedited" response is returned, otherwise a "normal" response. If a "normal" response is larger than the mailbox size then the response is segmented. The function will combine all segments and copy them to the parameter buffer.
[in] | slave | = Slave number |
[in] | index | = Index to read |
[in] | subindex | = Subindex to read, must be 0 or 1 if CA is used. |
[in] | CA | = FALSE = single subindex. TRUE = Complete Access, all subindexes read. |
[in,out] | psize | = Size in bytes of parameter buffer, returns bytes read from SDO. |
[out] | p | = Pointer to parameter buffer |
[in] | timeout | = Timeout in us, standard is EC_TIMEOUTRXM |
Definition at line 183 of file ethercatcoe.c.
int ec_SDOwrite | ( | uint16 | Slave, |
uint16 | Index, | ||
uint8 | SubIndex, | ||
boolean | CA, | ||
int | psize, | ||
void * | p, | ||
int | Timeout | ||
) |
CoE SDO write, blocking. Single subindex or Complete Access.
Only a "normal" download request is issued. If the paramater is larger than the mailbox size then the download is segmented. The function will split the parameter data in segments and send them to the slave one by one.
[in] | Slave | = Slave number |
[in] | Index | = Index to write |
[in] | SubIndex | = Subindex to write, must be 0 or 1 if CA is used. |
[in] | CA | = FALSE = single subindex. TRUE = Complete Access, all subindexes written. |
[in] | psize | = Size in bytes of parameter buffer. |
[out] | p | = Pointer to parameter buffer |
[in] | Timeout | = Timeout in us, standard is EC_TIMEOUTRXM |
Definition at line 379 of file ethercatcoe.c.
CoE TxPDO read remote request, blocking.
A RxPDO download request is issued.
[in] | slave | = Slave number |
[in] | TxPDOnumber | = Related TxPDO number |
[in,out] | psize | = Size in bytes of PDO buffer, returns bytes read from PDO. |
[out] | p | = Pointer to PDO buffer |
[in] | timeout | = Timeout in us, standard is EC_TIMEOUTRXM |
Definition at line 572 of file ethercatcoe.c.
ec_PDOassignt ec_PDOassign [static] |
PDO assign struct to store data of one slave
Definition at line 122 of file ethercatcoe.c.
ec_PDOdesct ec_PDOdesc [static] |
PDO description struct to store data of one slave
Definition at line 124 of file ethercatcoe.c.
ec_SMcommtypet ec_SMcommtype [static] |
SyncManager Communication Type struct to store data of one slave
Definition at line 120 of file ethercatcoe.c.