Headerfile for ethercatmain.c.
More...
Functions |
void | ec_pusherror (const ec_errort *Ec) |
boolean | ec_poperror (ec_errort *Ec) |
boolean | ec_iserror (void) |
void | ec_packeterror (uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode) |
int | ec_init (const char *ifname) |
int | ec_init_redundant (const char *ifname, const char *if2name) |
void | ec_close (void) |
uint8 | ec_siigetbyte (uint16 slave, uint16 address) |
int16 | ec_siifind (uint16 slave, uint16 cat) |
void | ec_siistring (char *str, uint16 slave, uint16 Sn) |
uint16 | ec_siiFMMU (uint16 slave, ec_eepromFMMUt *FMMU) |
uint16 | ec_siiSM (uint16 slave, ec_eepromSMt *SM) |
uint16 | ec_siiSMnext (uint16 slave, ec_eepromSMt *SM, uint16 n) |
int | ec_siiPDO (uint16 slave, ec_eepromPDOt *PDO, uint8 t) |
int | ec_readstate (void) |
int | ec_writestate (uint16 slave) |
uint16 | ec_statecheck (uint16 slave, uint16 reqstate, int timeout) |
uint8 | ec_nextmbxcnt (uint8 cnt) |
void | ec_clearmbx (ec_mbxbuft *Mbx) |
int | ec_mbxempty (uint16 slave, int timeout) |
int | ec_mbxsend (uint16 slave, ec_mbxbuft *mbx, int timeout) |
int | ec_mbxreceive (uint16 slave, ec_mbxbuft *mbx, int timeout) |
void | ec_esidump (uint16 slave, uint8 *esibuf, uint8 test) |
uint32 | ec_readeeprom (uint16 slave, uint16 eeproma, int timeout) |
int | ec_writeeeprom (uint16 slave, uint16 eeproma, uint16 data, int timeout) |
int | ec_eeprom2master (uint16 slave) |
int | ec_eeprom2pdi (uint16 slave) |
uint64 | ec_readeepromAP (uint16 aiadr, uint16 eeproma, int timeout) |
int | ec_writeeepromAP (uint16 aiadr, uint16 eeproma, uint16 data, int timeout) |
uint64 | ec_readeepromFP (uint16 configadr, uint16 eeproma, int timeout) |
int | ec_writeeepromFP (uint16 configadr, uint16 eeproma, uint16 data, int timeout) |
void | ec_readeeprom1 (uint16 slave, uint16 eeproma) |
uint32 | ec_readeeprom2 (uint16 slave, int timeout) |
int | ec_send_processdata_group (uint8 group) |
int | ec_receive_processdata_group (uint8 group, int timeout) |
int | ec_send_processdata (void) |
int | ec_receive_processdata (int timeout) |
Detailed Description
Headerfile for ethercatmain.c.
Macro Definition Documentation
#define EC_MAXEEPDO 0x200 |
max. etries in EtherCAT error list
#define EC_MAXIOSEGMENTS 64 |
max. number of IO segments per group
max. length of readable name in slavelist and Object Description List
max. number of slaves in array
#define EC_SMENABLEMASK 0xfffeffff |
#define ECT_COEDET_PDOASSIGN 0x04 |
#define ECT_COEDET_PDOCONFIG 0x08 |
#define ECT_COEDET_SDO 0x01 |
#define ECT_COEDET_SDOCA 0x20 |
#define ECT_COEDET_SDOINFO 0x02 |
#define ECT_COEDET_UPLOAD 0x10 |
#define ECT_MBXPROT_AOE 0x0001 |
#define ECT_MBXPROT_COE 0x0004 |
#define ECT_MBXPROT_EOE 0x0002 |
#define ECT_MBXPROT_FOE 0x0008 |
#define ECT_MBXPROT_SOE 0x0010 |
#define ECT_MBXPROT_VOE 0x0020 |
#define PACKED __attribute__((__packed__)) |
Typedef Documentation
Function Documentation
Clear mailbox buffer.
- Parameters:
-
[out] | Mbx | = Mailbox buffer to clear |
int ec_eeprom2master |
( |
uint16 |
slave | ) |
|
Set eeprom control to master. Only if set to PDI.
- Parameters:
-
- Returns:
- >0 if OK
int ec_eeprom2pdi |
( |
uint16 |
slave | ) |
|
Set eeprom control to PDI. Only if set to master.
- Parameters:
-
- Returns:
- >0 if OK
Dump complete EEPROM data from slave in buffer.
- Parameters:
-
[in] | slave | = Slave number |
[out] | esibuf | = EEPROM data buffer, make sure it is big enough. |
int ec_init |
( |
const char * |
ifname | ) |
|
Initialise lib in single NIC mode
- Parameters:
-
[in] | ifname | = Dev name, f.e. "eth0" |
- Returns:
- >0 if OK
int ec_init_redundant |
( |
const char * |
ifname, |
|
|
const char * |
if2name |
|
) |
| |
Initialise lib in redundant NIC mode
- Parameters:
-
[in] | ifname | = Primary Dev name, f.e. "eth0" |
[in] | if2name | = Secondary Dev name, f.e. "eth1" |
- Returns:
- >0 if OK
Check if error list has entries.
- Returns:
- TRUE if error list contains entries.
int ec_mbxempty |
( |
uint16 |
slave, |
|
|
int |
timeout |
|
) |
| |
Check if IN mailbox of slave is empty.
- Parameters:
-
[in] | slave | = Slave number |
[in] | timeout | = Timeout in us |
- Returns:
- >0 is success
Read OUT mailbox from slave. Supports Mailbox Link Layer with repeat requests.
- Parameters:
-
[in] | slave | = Slave number |
[out] | mbx | = Mailbox data |
[in] | timeout | = Timeout in us |
- Returns:
- Work counter (>0 is success)
Write IN mailbox to slave.
- Parameters:
-
[in] | slave | = Slave number |
[out] | mbx | = Mailbox data |
[in] | timeout | = Timeout in us |
- Returns:
- Work counter (>0 is success)
Get index of next mailbox counter value. Used for Mailbox Link Layer.
- Parameters:
-
[in] | cnt | = Mailbox counter value [0..7] |
- Returns:
- next mailbox counter value
Report packet error
- Parameters:
-
[in] | Slave | = Slave number |
[in] | Index | = Index that generated error |
[in] | SubIdx | = Subindex that generated error |
[in] | ErrorCode | = Error code |
Pops an error from the list.
- Parameters:
-
[out] | Ec | = Struct describing the error. |
- Returns:
- TRUE if an error was popped.
Pushes an error on the error list.
- Parameters:
-
[in] | Ec | Struct describing the error. |
Read EEPROM from slave bypassing cache.
- Parameters:
-
[in] | slave | = Slave number |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | timeout | = Timeout in us. |
- Returns:
- EEPROM data 32bit
Read EEPROM from slave bypassing cache. Parallel read step 1, make request to slave.
- Parameters:
-
[in] | slave | = Slave number |
[in] | eeproma | = (WORD) Address in the EEPROM |
Read EEPROM from slave bypassing cache. Parallel read step 2, actual read from slave.
- Parameters:
-
[in] | slave | = Slave number |
[in] | timeout | = Timeout in us. |
- Returns:
- EEPROM data 32bit
Read EEPROM from slave bypassing cache. APRD method.
- Parameters:
-
[in] | aiadr | = auto increment address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | timeout | = Timeout in us. |
- Returns:
- EEPROM data 64bit or 32bit
Read EEPROM from slave bypassing cache. FPRD method.
- Parameters:
-
[in] | configadr | = configured address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | timeout | = Timeout in us. |
- Returns:
- EEPROM data 64bit or 32bit
int ec_readstate |
( |
void |
| ) |
|
Read all slave states in ec_slave.
- Returns:
- lowest state found
int ec_receive_processdata |
( |
int |
timeout | ) |
|
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.
- Parameters:
-
[in] | timeout | = Timeout in us. |
- Returns:
- Work counter.
int ec_send_processdata |
( |
void |
| ) |
|
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.
- Returns:
- >0 if processdata is transmitted.
Find SII section header in slave EEPROM.
- Parameters:
-
[in] | slave | = slave number |
[in] | cat | = section category |
- Returns:
- byte address of section at section length entry, if not available then 0
Get FMMU data from SII FMMU section in slave EEPROM.
- Parameters:
-
[in] | slave | = slave number |
[out] | FMMU | = FMMU struct from SII, max. 4 FMMU's |
- Returns:
- number of FMMU's defined in section
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.
- Parameters:
-
[in] | slave | = slave number |
[in] | address | = eeprom address in bytes (slave uses words) |
- Returns:
- requested byte, if not available then 0xff
Get PDO data from SII PDO section in slave EEPROM.
- Parameters:
-
[in] | slave | = slave number |
[out] | PDO | = PDO struct from SII |
[in] | t | = 0=RXPDO 1=TXPDO |
- Returns:
- mapping size in bits of PDO
Get SM data from SII SM section in slave EEPROM.
- Parameters:
-
[in] | slave | = slave number |
[out] | SM | = first SM struct from SII |
- Returns:
- number of SM's defined in section
Get next SM data from SII SM section in slave EEPROM.
- Parameters:
-
[in] | slave | = slave number |
[out] | SM | = first SM struct from SII |
[in] | n | = SM number |
- Returns:
- >0 if OK
Get string from SII string section in slave EEPROM.
- Parameters:
-
[out] | str | = requested string, 0x00 if not found |
[in] | slave | = slave number |
[in] | Sn | = string number |
Check actual slave state. This is a blocking function.
- Parameters:
-
[in] | slave | = Slave number, 0 = all slaves |
[in] | reqstate | = Requested state |
[in] | timeout | = Timout value in us |
- Returns:
- Requested state, or found state after timeout.
Write EEPROM to slave bypassing cache.
- Parameters:
-
[in] | slave | = Slave number |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | data | = 16bit data |
[in] | timeout | = Timeout in us. |
- Returns:
- >0 if OK
Write EEPROM to slave bypassing cache. APWR method.
- Parameters:
-
[in] | aiadr | = configured address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | data | = 16bit data |
[in] | timeout | = Timeout in us. |
- Returns:
- >0 if OK
Write EEPROM to slave bypassing cache. FPWR method.
- Parameters:
-
[in] | configadr | = configured address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | data | = 16bit data |
[in] | timeout | = Timeout in us. |
- Returns:
- >0 if OK
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.
- Parameters:
-
[in] | slave | = Slave number, 0 = master |
- Returns:
- 0
Variable Documentation
main slave data structure array
Main slave data 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().
number of slaves found by configuration function
number of slaves found on the network
Global variable TRUE if error available in error stack