Headerfile for ethercatmain.c. More...
Go to the source code of this file.
Data Structures | |
struct | PACKED |
SDO structure, not to be confused with EcSDOserviceT. More... | |
struct | PACKED |
SDO structure, not to be confused with EcSDOserviceT. More... | |
struct | ec_slavet |
for list of ethercat slaves detected More... | |
struct | ec_groupt |
for list of ethercat slave groups More... | |
struct | ec_eepromFMMUt |
SII FMMU structure. More... | |
struct | ec_eepromSMt |
SII SM structure. More... | |
struct | ec_eepromPDOt |
record to store rxPDO and txPDO table from eeprom More... | |
struct | PACKED |
SDO structure, not to be confused with EcSDOserviceT. More... | |
struct | PACKED |
SDO structure, not to be confused with EcSDOserviceT. More... | |
Defines | |
#define | EC_MAXELIST 64 |
#define | EC_MAXNAME 36 |
#define | EC_MAXSLAVE 200 |
#define | EC_MAXGROUP 8 |
#define | EC_MAXIOSEGMENTS 64 |
#define | EC_MAXMBX 0x3ff |
#define | EC_MAXEEPDO 0x200 |
#define | EC_MAXSM 8 |
#define | EC_MAXFMMU 4 |
#define | ECT_MBXPROT_AOE 0x0001 |
#define | ECT_MBXPROT_EOE 0x0002 |
#define | ECT_MBXPROT_COE 0x0004 |
#define | ECT_MBXPROT_FOE 0x0008 |
#define | ECT_MBXPROT_SOE 0x0010 |
#define | ECT_MBXPROT_VOE 0x0020 |
#define | ECT_COEDET_SDO 0x01 |
#define | ECT_COEDET_SDOINFO 0x02 |
#define | ECT_COEDET_PDOASSIGN 0x04 |
#define | ECT_COEDET_PDOCONFIG 0x08 |
#define | ECT_COEDET_UPLOAD 0x10 |
#define | ECT_COEDET_SDOCA 0x20 |
#define | EC_SMENABLEMASK 0xfffeffff |
Typedefs | |
typedef struct PACKED | ec_smt |
record for sync manager | |
typedef struct PACKED | ec_state_status |
typedef uint8 | ec_mbxbuft [EC_MAXMBX+1] |
mailbox buffer array | |
typedef struct PACKED | ec_mbxheadert |
standard ethercat mailbox header | |
typedef struct PACKED | ec_alstatust |
ALstatus and ALstatus code. | |
Functions | |
__attribute__ ((__packed__)) typedef struct PACKED | |
max. | |
void | ec_pusherror (const ec_errort *Ec) |
Pushes an error on the error list. | |
boolean | ec_poperror (ec_errort *Ec) |
Pops an error from the list. | |
boolean | ec_iserror (void) |
Check if error list has entries. | |
void | ec_packeterror (uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode) |
Report packet error. | |
int | ec_init (const char *ifname) |
Initialise lib in single NIC mode. | |
int | ec_init_redundant (const char *ifname, const char *if2name) |
Initialise lib in redundant NIC mode. | |
void | ec_close (void) |
Close lib. | |
uint8 | ec_siigetbyte (uint16 slave, uint16 address) |
Read one byte from slave EEPROM via cache. | |
int16 | ec_siifind (uint16 slave, uint16 cat) |
Find SII section header in slave EEPROM. | |
void | ec_siistring (char *str, uint16 slave, uint16 Sn) |
Get string from SII string section in slave EEPROM. | |
uint16 | ec_siiFMMU (uint16 slave, ec_eepromFMMUt *FMMU) |
Get FMMU data from SII FMMU section in slave EEPROM. | |
uint16 | ec_siiSM (uint16 slave, ec_eepromSMt *SM) |
Get SM data from SII SM section in slave EEPROM. | |
uint16 | ec_siiSMnext (uint16 slave, ec_eepromSMt *SM, uint16 n) |
Get next SM data from SII SM section in slave EEPROM. | |
int | ec_siiPDO (uint16 slave, ec_eepromPDOt *PDO, uint8 t) |
Get PDO data from SII PDO section in slave EEPROM. | |
int | ec_readstate (void) |
Read all slave states in ec_slave. | |
int | ec_writestate (uint16 slave) |
Write slave state, if slave = 0 then write to all slaves. | |
uint16 | ec_statecheck (uint16 slave, uint16 reqstate, int timeout) |
Check actual slave state. | |
uint8 | ec_nextmbxcnt (uint8 cnt) |
Get index of next mailbox counter value. | |
void | ec_clearmbx (ec_mbxbuft *Mbx) |
Clear mailbox buffer. | |
int | ec_mbxempty (uint16 slave, int timeout) |
Check if IN mailbox of slave is empty. | |
int | ec_mbxsend (uint16 slave, ec_mbxbuft *mbx, int timeout) |
Write IN mailbox to slave. | |
int | ec_mbxreceive (uint16 slave, ec_mbxbuft *mbx, int timeout) |
Read OUT mailbox from slave. | |
void | ec_esidump (uint16 slave, uint8 *esibuf, uint8 test) |
Dump complete EEPROM data from slave in buffer. | |
uint32 | ec_readeeprom (uint16 slave, uint16 eeproma, int timeout) |
Read EEPROM from slave bypassing cache. | |
int | ec_writeeeprom (uint16 slave, uint16 eeproma, uint16 data, int timeout) |
Write EEPROM to slave bypassing cache. | |
int | ec_eeprom2master (uint16 slave) |
Set eeprom control to master. | |
int | ec_eeprom2pdi (uint16 slave) |
Set eeprom control to PDI. | |
uint64 | ec_readeepromAP (uint16 aiadr, uint16 eeproma, int timeout) |
Read EEPROM from slave bypassing cache. | |
int | ec_writeeepromAP (uint16 aiadr, uint16 eeproma, uint16 data, int timeout) |
Write EEPROM to slave bypassing cache. | |
uint64 | ec_readeepromFP (uint16 configadr, uint16 eeproma, int timeout) |
Read EEPROM from slave bypassing cache. | |
int | ec_writeeepromFP (uint16 configadr, uint16 eeproma, uint16 data, int timeout) |
Write EEPROM to slave bypassing cache. | |
void | ec_readeeprom1 (uint16 slave, uint16 eeproma) |
Read EEPROM from slave bypassing cache. | |
uint32 | ec_readeeprom2 (uint16 slave, int timeout) |
Read EEPROM from slave bypassing cache. | |
int | ec_send_processdata_group (uint8 group) |
Transmit processdata to slaves. | |
int | ec_receive_processdata_group (uint8 group, int timeout) |
Receive processdata from slaves. | |
int | ec_send_processdata (void) |
int | ec_receive_processdata (int timeout) |
Variables | |
ec_fmmut | |
ec_slavet | ec_slave [EC_MAXSLAVE] |
main slave data structure array | |
int | ec_slavecount |
number of slaves found by configuration function | |
ec_groupt | ec_group [EC_MAXGROUP] |
slave group structure | |
boolean | EcatError |
Global variable TRUE if error available in error stack. | |
uint16 | ec_DCtO |
int64 | ec_DCtime |
Headerfile for ethercatmain.c.
Definition in file ethercatmain.h.
#define EC_MAXEEPDO 0x200 |
#define EC_MAXELIST 64 |
#define EC_MAXFMMU 4 |
#define EC_MAXGROUP 8 |
#define EC_MAXIOSEGMENTS 64 |
#define EC_MAXMBX 0x3ff |
#define EC_MAXNAME 36 |
#define EC_MAXSLAVE 200 |
#define EC_MAXSM 8 |
#define EC_SMENABLEMASK 0xfffeffff |
Definition at line 116 of file ethercatmain.h.
#define ECT_COEDET_PDOASSIGN 0x04 |
Definition at line 111 of file ethercatmain.h.
#define ECT_COEDET_PDOCONFIG 0x08 |
Definition at line 112 of file ethercatmain.h.
#define ECT_COEDET_SDO 0x01 |
Definition at line 109 of file ethercatmain.h.
#define ECT_COEDET_SDOCA 0x20 |
Definition at line 114 of file ethercatmain.h.
#define ECT_COEDET_SDOINFO 0x02 |
Definition at line 110 of file ethercatmain.h.
#define ECT_COEDET_UPLOAD 0x10 |
Definition at line 113 of file ethercatmain.h.
#define ECT_MBXPROT_AOE 0x0001 |
Definition at line 102 of file ethercatmain.h.
#define ECT_MBXPROT_COE 0x0004 |
Definition at line 104 of file ethercatmain.h.
#define ECT_MBXPROT_EOE 0x0002 |
Definition at line 103 of file ethercatmain.h.
#define ECT_MBXPROT_FOE 0x0008 |
Definition at line 105 of file ethercatmain.h.
#define ECT_MBXPROT_SOE 0x0010 |
Definition at line 106 of file ethercatmain.h.
#define ECT_MBXPROT_VOE 0x0020 |
Definition at line 107 of file ethercatmain.h.
typedef struct PACKED ec_alstatust |
ALstatus and ALstatus code.
typedef uint8 ec_mbxbuft[EC_MAXMBX+1] |
mailbox buffer array
Definition at line 321 of file ethercatmain.h.
typedef struct PACKED ec_mbxheadert |
standard ethercat mailbox header
typedef struct PACKED ec_state_status |
__attribute__ | ( | (__packed__) | ) |
max.
etries in EtherCAT error list max. length of readable name in slavelist and Object Description List max. number of slaves in array max. number of groups max. number of IO segments per group max. mailbox size max. eeprom PDO entries max. SM used max. FMMU used record for FMMU
Definition at line 50 of file ethercatmain.h.
void ec_clearmbx | ( | ec_mbxbuft * | Mbx | ) |
Clear mailbox buffer.
[out] | Mbx | = Mailbox buffer to clear |
Definition at line 684 of file ethercatmain.c.
void ec_close | ( | void | ) |
Close lib.
Definition at line 259 of file ethercatmain.c.
int ec_eeprom2master | ( | uint16 | slave | ) |
Set eeprom control to master.
Only if set to PDI.
[in] | slave | = Slave number |
Definition at line 905 of file ethercatmain.c.
int ec_eeprom2pdi | ( | uint16 | slave | ) |
Set eeprom control to PDI.
Only if set to master.
[in] | slave | = Slave number |
Definition at line 937 of file ethercatmain.c.
Dump complete EEPROM data from slave in buffer.
[in] | slave | = Slave number |
[out] | esibuf | = EEPROM data buffer, make sure it is big enough. |
Definition at line 840 of file ethercatmain.c.
int ec_init | ( | const char * | ifname | ) |
Initialise lib in single NIC mode.
[in] | ifname | = Dev name, f.e. "eth0" |
Definition at line 230 of file ethercatmain.c.
int ec_init_redundant | ( | const char * | ifname, | |
const char * | if2name | |||
) |
Initialise lib in redundant NIC mode.
[in] | ifname | = Primary Dev name, f.e. "eth0" |
[in] | if2name | = Secondary Dev name, f.e. "eth1" |
Definition at line 240 of file ethercatmain.c.
boolean ec_iserror | ( | void | ) |
Check if error list has entries.
Definition at line 173 of file ethercatmain.c.
int ec_mbxempty | ( | uint16 | slave, | |
int | timeout | |||
) |
Check if IN mailbox of slave is empty.
[in] | slave | = Slave number |
[in] | timeout | = Timeout in us |
Definition at line 694 of file ethercatmain.c.
int ec_mbxreceive | ( | uint16 | slave, | |
ec_mbxbuft * | mbx, | |||
int | timeout | |||
) |
Read OUT mailbox from slave.
Supports Mailbox Link Layer with repeat requests.
[in] | slave | = Slave number |
[out] | mbx | = Mailbox data |
[in] | timeout | = Timeout in us |
Definition at line 754 of file ethercatmain.c.
int ec_mbxsend | ( | uint16 | slave, | |
ec_mbxbuft * | mbx, | |||
int | timeout | |||
) |
Write IN mailbox to slave.
[in] | slave | = Slave number |
[out] | mbx | = Mailbox data |
[in] | timeout | = Timeout in us |
Definition at line 724 of file ethercatmain.c.
Get index of next mailbox counter value.
Used for Mailbox Link Layer.
[in] | cnt | = Mailbox counter value [0..7] |
Definition at line 673 of file ethercatmain.c.
Report packet error.
[in] | Slave | = Slave number |
[in] | Index | = Index that generated error |
[in] | SubIdx | = Subindex that generated error |
[in] | ErrorCode | = Error code |
Definition at line 185 of file ethercatmain.c.
boolean ec_poperror | ( | ec_errort * | Ec | ) |
Pops an error from the list.
[out] | Ec | = Struct describing the error. |
Definition at line 153 of file ethercatmain.c.
void ec_pusherror | ( | const ec_errort * | Ec | ) |
Pushes an error on the error list.
[in] | Ec | Struct describing the error. |
Definition at line 134 of file ethercatmain.c.
Read EEPROM from slave bypassing cache.
[in] | slave | = Slave number |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | timeout | = Timeout in us. |
Definition at line 875 of file ethercatmain.c.
Read EEPROM from slave bypassing cache.
Parallel read step 1, make request to slave.
[in] | slave | = Slave number |
[in] | eeproma | = (WORD) Address in the EEPROM |
Definition at line 1283 of file ethercatmain.c.
Read EEPROM from slave bypassing cache.
Parallel read step 2, actual read from slave.
[in] | slave | = Slave number |
[in] | timeout | = Timeout in us. |
Definition at line 1313 of file ethercatmain.c.
Read EEPROM from slave bypassing cache.
APRD method.
[in] | aiadr | = auto increment address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | timeout | = Timeout in us. |
Definition at line 985 of file ethercatmain.c.
Read EEPROM from slave bypassing cache.
FPRD method.
[in] | configadr | = configured address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | timeout | = Timeout in us. |
Definition at line 1146 of file ethercatmain.c.
int ec_readstate | ( | void | ) |
Read all slave states in ec_slave.
Definition at line 576 of file ethercatmain.c.
int ec_receive_processdata | ( | int | timeout | ) |
Definition at line 1555 of file ethercatmain.c.
int ec_receive_processdata_group | ( | uint8 | group, | |
int | timeout | |||
) |
Receive processdata from slaves.
Second part from ec_send_processdata(). Received datagrams are recombined with the processdata with help from the stack. If a datagram contains input processdata it copies it to the processdata structure.
[in] | timeout | = Timeout in us. |
Definition at line 1507 of file ethercatmain.c.
int ec_send_processdata | ( | void | ) |
Definition at line 1550 of file ethercatmain.c.
int ec_send_processdata_group | ( | uint8 | group | ) |
Transmit processdata to slaves.
Uses LRW, or LRD/LWR if LRW is not allowed (blockLRW). Both the input and output processdata are transmitted. The outputs with the actual data, the inputs have a placeholder. The inputs are gathered with the receive processdata function. In contrast to the base LRW function this function is non-blocking. If the processdata does not fit in one datagram, multiple are used. In order to recombine the slave response, a stack is used.
Definition at line 1378 of file ethercatmain.c.
Find SII section header in slave EEPROM.
[in] | slave | = slave number |
[in] | cat | = section category |
Definition at line 339 of file ethercatmain.c.
uint16 ec_siiFMMU | ( | uint16 | slave, | |
ec_eepromFMMUt * | FMMU | |||
) |
Get FMMU data from SII FMMU section in slave EEPROM.
[in] | slave | = slave number |
[out] | FMMU | = FMMU struct from SII, max. 4 FMMU's |
Definition at line 415 of file ethercatmain.c.
Read one byte from slave EEPROM via cache.
If the cache location is empty then a read request is made to the slave. Depending on the slave capabillities the request is 4 or 8 bytes.
[in] | slave | = slave number |
[in] | address | = eeprom address in bytes (slave uses words) |
Definition at line 271 of file ethercatmain.c.
int ec_siiPDO | ( | uint16 | slave, | |
ec_eepromPDOt * | PDO, | |||
uint8 | t | |||
) |
Get PDO data from SII PDO section in slave EEPROM.
[in] | slave | = slave number |
[out] | PDO | = PDO struct from SII |
[in] | t | = 0=RXPDO 1=TXPDO |
Definition at line 512 of file ethercatmain.c.
uint16 ec_siiSM | ( | uint16 | slave, | |
ec_eepromSMt * | SM | |||
) |
Get SM data from SII SM section in slave EEPROM.
[in] | slave | = slave number |
[out] | SM | = first SM struct from SII |
Definition at line 450 of file ethercatmain.c.
uint16 ec_siiSMnext | ( | uint16 | slave, | |
ec_eepromSMt * | SM, | |||
uint16 | n | |||
) |
Get next SM data from SII SM section in slave EEPROM.
[in] | slave | = slave number |
[out] | SM | = first SM struct from SII |
[in] | n | = SM number |
Definition at line 483 of file ethercatmain.c.
Get string from SII string section in slave EEPROM.
[out] | str | = requested string, 0x00 if not found |
[in] | slave | = slave number |
[in] | Sn | = string number |
Definition at line 374 of file ethercatmain.c.
Check actual slave state.
This is a blocking function.
[in] | slave | = Slave number, 0 = all slaves |
[in] | reqstate | = Requested state |
[in] | timeout | = Timout value in us |
Definition at line 630 of file ethercatmain.c.
Write EEPROM to slave bypassing cache.
[in] | slave | = Slave number |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | data | = 16bit data |
[in] | timeout | = Timeout in us. |
Definition at line 891 of file ethercatmain.c.
Write EEPROM to slave bypassing cache.
APWR method.
[in] | aiadr | = configured address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | data | = 16bit data |
[in] | timeout | = Timeout in us. |
Definition at line 1062 of file ethercatmain.c.
Write EEPROM to slave bypassing cache.
FPWR method.
[in] | configadr | = configured address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | data | = 16bit data |
[in] | timeout | = Timeout in us. |
Definition at line 1223 of file ethercatmain.c.
int ec_writestate | ( | uint16 | slave | ) |
Write slave state, if slave = 0 then write to all slaves.
The function does not check if the actual state is changed.
[in] | slave | = Slave number, 0 = master |
Definition at line 606 of file ethercatmain.c.
Definition at line 128 of file ethercatmain.c.
Definition at line 126 of file ethercatmain.c.
Definition at line 85 of file ethercatmain.h.
slave group structure
Definition at line 112 of file ethercatmain.c.
main slave data structure array
main slave data structure array
Each slave found on the network gets its own record. ec_slave[0] is reserved for the master. Structure gets filled in by the configuration function ec_config().
Definition at line 108 of file ethercatmain.c.
int ec_slavecount |
number of slaves found by configuration function
Definition at line 110 of file ethercatmain.c.
boolean EcatError |
Global variable TRUE if error available in error stack.
Definition at line 124 of file ethercatmain.c.