Classes | Macros | Typedefs | Functions | Variables
ethercatmain.c File Reference

Main EtherCAT functions. More...

#include <stdio.h>
#include <string.h>
#include "osal.h"
#include "oshw.h"
#include "ethercattype.h"
#include "ethercatbase.h"
#include "ethercatmain.h"
Include dependency graph for ethercatmain.c:

Go to the source code of this file.

Classes

struct  PACKED
 
struct  PACKED
 
struct  PACKED
 

Macros

#define EC_LOCALDELAY   200
 

Typedefs

typedef PACKED_BEGIN struct PACKED ec_eepromt
 
typedef PACKED_END PACKED_BEGIN struct PACKED ec_emcyt
 
typedef PACKED_END PACKED_BEGIN struct PACKED ec_mbxerrort
 

Functions

void ec_clearmbx (ec_mbxbuft *Mbx)
 
void ec_close (void)
 
int ec_eeprom2master (uint16 slave)
 
int ec_eeprom2pdi (uint16 slave)
 
uint16 ec_eeprom_waitnotbusyAP (uint16 aiadr, uint16 *estat, int timeout)
 
uint16 ec_eeprom_waitnotbusyFP (uint16 configadr, uint16 *estat, int timeout)
 
void ec_esidump (uint16 slave, uint8 *esibuf)
 
ec_adaptertec_find_adapters (void)
 
void ec_free_adapters (ec_adaptert *adapter)
 
int ec_init (char *ifname)
 
int ec_init_redundant (char *ifname, char *if2name)
 
boolean ec_iserror (void)
 
static void ec_mbxemergencyerror (uint16 Slave, uint16 ErrorCode, uint16 ErrorReg, uint8 b1, uint16 w1, uint16 w2)
 
int ec_mbxempty (uint16 slave, int timeout)
 
static void ec_mbxerror (uint16 Slave, uint16 Detail)
 
int ec_mbxreceive (uint16 slave, ec_mbxbuft *mbx, int timeout)
 
int ec_mbxsend (uint16 slave, ec_mbxbuft *mbx, int timeout)
 
uint8 ec_nextmbxcnt (uint8 cnt)
 
void ec_packeterror (uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode)
 
boolean ec_poperror (ec_errort *Ec)
 
void ec_pusherror (const ec_errort *Ec)
 
uint32 ec_readeeprom (uint16 slave, uint16 eeproma, int timeout)
 
void ec_readeeprom1 (uint16 slave, uint16 eeproma)
 
uint32 ec_readeeprom2 (uint16 slave, int timeout)
 
uint64 ec_readeepromAP (uint16 aiadr, uint16 eeproma, int timeout)
 
uint64 ec_readeepromFP (uint16 configadr, uint16 eeproma, int timeout)
 
int ec_readstate (void)
 
int ec_receive_processdata (int timeout)
 
int ec_receive_processdata_group (uint8 group, int timeout)
 
int ec_send_processdata (void)
 
int ec_send_processdata_group (uint8 group)
 
int16 ec_siifind (uint16 slave, uint16 cat)
 
uint16 ec_siiFMMU (uint16 slave, ec_eepromFMMUt *FMMU)
 
uint8 ec_siigetbyte (uint16 slave, uint16 address)
 
int ec_siiPDO (uint16 slave, ec_eepromPDOt *PDO, uint8 t)
 
uint16 ec_siiSM (uint16 slave, ec_eepromSMt *SM)
 
uint16 ec_siiSMnext (uint16 slave, ec_eepromSMt *SM, uint16 n)
 
void ec_siistring (char *str, uint16 slave, uint16 Sn)
 
uint16 ec_statecheck (uint16 slave, uint16 reqstate, int timeout)
 
int ec_writeeeprom (uint16 slave, uint16 eeproma, uint16 data, int timeout)
 
int ec_writeeepromAP (uint16 aiadr, uint16 eeproma, uint16 data, int timeout)
 
int ec_writeeepromFP (uint16 configadr, uint16 eeproma, uint16 data, int timeout)
 
int ec_writestate (uint16 slave)
 
void ecx_close (ecx_contextt *context)
 
int ecx_eeprom2master (ecx_contextt *context, uint16 slave)
 
int ecx_eeprom2pdi (ecx_contextt *context, uint16 slave)
 
uint16 ecx_eeprom_waitnotbusyAP (ecx_contextt *context, uint16 aiadr, uint16 *estat, int timeout)
 
uint16 ecx_eeprom_waitnotbusyFP (ecx_contextt *context, uint16 configadr, uint16 *estat, int timeout)
 
void ecx_esidump (ecx_contextt *context, uint16 slave, uint8 *esibuf)
 
int ecx_init (ecx_contextt *context, char *ifname)
 
int ecx_init_redundant (ecx_contextt *context, ecx_redportt *redport, char *ifname, char *if2name)
 
boolean ecx_iserror (ecx_contextt *context)
 
static void ecx_mbxemergencyerror (ecx_contextt *context, uint16 Slave, uint16 ErrorCode, uint16 ErrorReg, uint8 b1, uint16 w1, uint16 w2)
 
int ecx_mbxempty (ecx_contextt *context, uint16 slave, int timeout)
 
static void ecx_mbxerror (ecx_contextt *context, uint16 Slave, uint16 Detail)
 
int ecx_mbxreceive (ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout)
 
int ecx_mbxsend (ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout)
 
void ecx_packeterror (ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode)
 
boolean ecx_poperror (ecx_contextt *context, ec_errort *Ec)
 
static int ecx_pullindex (ecx_contextt *context)
 
void ecx_pusherror (ecx_contextt *context, const ec_errort *Ec)
 
static void ecx_pushindex (ecx_contextt *context, uint8 idx, void *data, uint16 length)
 
uint32 ecx_readeeprom (ecx_contextt *context, uint16 slave, uint16 eeproma, int timeout)
 
void ecx_readeeprom1 (ecx_contextt *context, uint16 slave, uint16 eeproma)
 
uint32 ecx_readeeprom2 (ecx_contextt *context, uint16 slave, int timeout)
 
uint64 ecx_readeepromAP (ecx_contextt *context, uint16 aiadr, uint16 eeproma, int timeout)
 
uint64 ecx_readeepromFP (ecx_contextt *context, uint16 configadr, uint16 eeproma, int timeout)
 
int ecx_readstate (ecx_contextt *context)
 
int ecx_receive_processdata (ecx_contextt *context, int timeout)
 
int ecx_receive_processdata_group (ecx_contextt *context, uint8 group, int timeout)
 
int ecx_send_processdata (ecx_contextt *context)
 
int ecx_send_processdata_group (ecx_contextt *context, uint8 group)
 
int16 ecx_siifind (ecx_contextt *context, uint16 slave, uint16 cat)
 
uint16 ecx_siiFMMU (ecx_contextt *context, uint16 slave, ec_eepromFMMUt *FMMU)
 
uint8 ecx_siigetbyte (ecx_contextt *context, uint16 slave, uint16 address)
 
int ecx_siiPDO (ecx_contextt *context, uint16 slave, ec_eepromPDOt *PDO, uint8 t)
 
uint16 ecx_siiSM (ecx_contextt *context, uint16 slave, ec_eepromSMt *SM)
 
uint16 ecx_siiSMnext (ecx_contextt *context, uint16 slave, ec_eepromSMt *SM, uint16 n)
 
void ecx_siistring (ecx_contextt *context, char *str, uint16 slave, uint16 Sn)
 
uint16 ecx_statecheck (ecx_contextt *context, uint16 slave, uint16 reqstate, int timeout)
 
int ecx_writeeeprom (ecx_contextt *context, uint16 slave, uint16 eeproma, uint16 data, int timeout)
 
int ecx_writeeepromAP (ecx_contextt *context, uint16 aiadr, uint16 eeproma, uint16 data, int timeout)
 
int ecx_writeeepromFP (ecx_contextt *context, uint16 configadr, uint16 eeproma, uint16 data, int timeout)
 
int ecx_writestate (ecx_contextt *context, uint16 slave)
 

Variables

int64 ec_DCtime
 
static ec_eringt ec_elist
 
static ec_eepromFMMUt ec_FMMU
 
ec_groupt ec_group [EC_MAXGROUP]
 
static ec_idxstackT ec_idxstack
 
static ec_PDOassignt ec_PDOassign
 
static ec_PDOdesct ec_PDOdesc
 
PACKED_END ec_slavet ec_slave [EC_MAXSLAVE]
 
int ec_slavecount
 
static ec_eepromSMt ec_SM
 
static ec_SMcommtypet ec_SMcommtype
 
boolean EcatError = FALSE
 
ecx_contextt ecx_context
 
ecx_portt ecx_port
 
ecx_redportt ecx_redport
 
static uint8 esibuf [EC_MAXEEPBUF]
 
static uint32 esimap [EC_MAXEEPBITMAP]
 

Detailed Description

Main EtherCAT functions.

Initialisation, state set and read, mailbox primitives, EEPROM primitives, SII reading and processdata exchange.

Defines ec_slave[]. All slave information is put in this structure. Needed for most user interaction with slaves.

Definition in file ethercatmain.c.

Macro Definition Documentation

#define EC_LOCALDELAY   200

delay in us for eeprom ready loop

Definition at line 63 of file ethercatmain.c.

Typedef Documentation

typedef PACKED_BEGIN struct PACKED ec_eepromt

record for ethercat eeprom communications

typedef PACKED_END PACKED_BEGIN struct PACKED ec_emcyt

emergency request structure

typedef PACKED_END PACKED_BEGIN struct PACKED ec_mbxerrort

mailbox error structure

Function Documentation

void ec_clearmbx ( ec_mbxbuft Mbx)

Clear mailbox buffer.

Parameters
[out]Mbx= Mailbox buffer to clear

Definition at line 832 of file ethercatmain.c.

void ec_close ( void  )

Definition at line 1852 of file ethercatmain.c.

int ec_eeprom2master ( uint16  slave)

Definition at line 1937 of file ethercatmain.c.

int ec_eeprom2pdi ( uint16  slave)

Definition at line 1942 of file ethercatmain.c.

uint16 ec_eeprom_waitnotbusyAP ( uint16  aiadr,
uint16 estat,
int  timeout 
)

Definition at line 1947 of file ethercatmain.c.

uint16 ec_eeprom_waitnotbusyFP ( uint16  configadr,
uint16 estat,
int  timeout 
)

Definition at line 1962 of file ethercatmain.c.

void ec_esidump ( uint16  slave,
uint8 esibuf 
)

Definition at line 1922 of file ethercatmain.c.

ec_adaptert* ec_find_adapters ( void  )

Create list over available network adapters.

Returns
First element in list over available network adapters.

Definition at line 165 of file ethercatmain.c.

void ec_free_adapters ( ec_adaptert adapter)

Free dynamically allocated list over available network adapters.

Parameters
[in]adapter= Struct holding adapter name, description and pointer to next.

Definition at line 178 of file ethercatmain.c.

int ec_init ( char *  ifname)

Definition at line 1842 of file ethercatmain.c.

int ec_init_redundant ( char *  ifname,
char *  if2name 
)

Definition at line 1847 of file ethercatmain.c.

boolean ec_iserror ( void  )

Definition at line 1821 of file ethercatmain.c.

static void ec_mbxemergencyerror ( uint16  Slave,
uint16  ErrorCode,
uint16  ErrorReg,
uint8  b1,
uint16  w1,
uint16  w2 
)
static

Definition at line 1836 of file ethercatmain.c.

int ec_mbxempty ( uint16  slave,
int  timeout 
)

Definition at line 1907 of file ethercatmain.c.

static void ec_mbxerror ( uint16  Slave,
uint16  Detail 
)
static

Definition at line 1831 of file ethercatmain.c.

int ec_mbxreceive ( uint16  slave,
ec_mbxbuft mbx,
int  timeout 
)

Definition at line 1917 of file ethercatmain.c.

int ec_mbxsend ( uint16  slave,
ec_mbxbuft mbx,
int  timeout 
)

Definition at line 1912 of file ethercatmain.c.

uint8 ec_nextmbxcnt ( uint8  cnt)

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

Definition at line 818 of file ethercatmain.c.

void ec_packeterror ( uint16  Slave,
uint16  Index,
uint8  SubIdx,
uint16  ErrorCode 
)

Definition at line 1826 of file ethercatmain.c.

boolean ec_poperror ( ec_errort Ec)

Definition at line 1816 of file ethercatmain.c.

void ec_pusherror ( const ec_errort Ec)

Definition at line 1811 of file ethercatmain.c.

uint32 ec_readeeprom ( uint16  slave,
uint16  eeproma,
int  timeout 
)

Definition at line 1927 of file ethercatmain.c.

void ec_readeeprom1 ( uint16  slave,
uint16  eeproma 
)

Definition at line 1977 of file ethercatmain.c.

uint32 ec_readeeprom2 ( uint16  slave,
int  timeout 
)

Definition at line 1982 of file ethercatmain.c.

uint64 ec_readeepromAP ( uint16  aiadr,
uint16  eeproma,
int  timeout 
)

Definition at line 1952 of file ethercatmain.c.

uint64 ec_readeepromFP ( uint16  configadr,
uint16  eeproma,
int  timeout 
)

Definition at line 1967 of file ethercatmain.c.

int ec_readstate ( void  )

Definition at line 1892 of file ethercatmain.c.

int ec_receive_processdata ( int  timeout)

Definition at line 2002 of file ethercatmain.c.

int ec_receive_processdata_group ( uint8  group,
int  timeout 
)

Definition at line 1992 of file ethercatmain.c.

int ec_send_processdata ( void  )

Definition at line 1997 of file ethercatmain.c.

int ec_send_processdata_group ( uint8  group)

Definition at line 1987 of file ethercatmain.c.

int16 ec_siifind ( uint16  slave,
uint16  cat 
)

Definition at line 1862 of file ethercatmain.c.

uint16 ec_siiFMMU ( uint16  slave,
ec_eepromFMMUt FMMU 
)

Definition at line 1872 of file ethercatmain.c.

uint8 ec_siigetbyte ( uint16  slave,
uint16  address 
)

Definition at line 1857 of file ethercatmain.c.

int ec_siiPDO ( uint16  slave,
ec_eepromPDOt PDO,
uint8  t 
)

Definition at line 1887 of file ethercatmain.c.

uint16 ec_siiSM ( uint16  slave,
ec_eepromSMt SM 
)

Definition at line 1877 of file ethercatmain.c.

uint16 ec_siiSMnext ( uint16  slave,
ec_eepromSMt SM,
uint16  n 
)

Definition at line 1882 of file ethercatmain.c.

void ec_siistring ( char *  str,
uint16  slave,
uint16  Sn 
)

Definition at line 1867 of file ethercatmain.c.

uint16 ec_statecheck ( uint16  slave,
uint16  reqstate,
int  timeout 
)

Definition at line 1902 of file ethercatmain.c.

int ec_writeeeprom ( uint16  slave,
uint16  eeproma,
uint16  data,
int  timeout 
)

Definition at line 1932 of file ethercatmain.c.

int ec_writeeepromAP ( uint16  aiadr,
uint16  eeproma,
uint16  data,
int  timeout 
)

Definition at line 1957 of file ethercatmain.c.

int ec_writeeepromFP ( uint16  configadr,
uint16  eeproma,
uint16  data,
int  timeout 
)

Definition at line 1972 of file ethercatmain.c.

int ec_writestate ( uint16  slave)

Definition at line 1897 of file ethercatmain.c.

void ecx_close ( ecx_contextt context)

Close lib.

Parameters
[in]context= context struct

Definition at line 352 of file ethercatmain.c.

int ecx_eeprom2master ( ecx_contextt context,
uint16  slave 
)

Set eeprom control to master. Only if set to PDI.

Parameters
[in]context= context struct
[in]slave= Slave number
Returns
>0 if OK

Definition at line 1078 of file ethercatmain.c.

int ecx_eeprom2pdi ( ecx_contextt context,
uint16  slave 
)

Set eeprom control to PDI. Only if set to master.

Parameters
[in]context= context struct
[in]slave= Slave number
Returns
>0 if OK

Definition at line 1111 of file ethercatmain.c.

uint16 ecx_eeprom_waitnotbusyAP ( ecx_contextt context,
uint16  aiadr,
uint16 estat,
int  timeout 
)

Definition at line 1132 of file ethercatmain.c.

uint16 ecx_eeprom_waitnotbusyFP ( ecx_contextt context,
uint16  configadr,
uint16 estat,
int  timeout 
)

Definition at line 1300 of file ethercatmain.c.

void ecx_esidump ( ecx_contextt context,
uint16  slave,
uint8 esibuf 
)

Dump complete EEPROM data from slave in buffer.

Parameters
[in]context= context struct
[in]slave= Slave number
[out]esibuf= EEPROM data buffer, make sure it is big enough.

Definition at line 1003 of file ethercatmain.c.

int ecx_init ( ecx_contextt context,
char *  ifname 
)

Initialise lib in single NIC mode

Parameters
[in]context= context struct
[in]ifname= Dev name, f.e. "eth0"
Returns
>0 if OK

Definition at line 319 of file ethercatmain.c.

int ecx_init_redundant ( ecx_contextt context,
ecx_redportt redport,
char *  ifname,
char *  if2name 
)

Initialise lib in redundant NIC mode

Parameters
[in]context= context struct
[in]redport= pointer to redport, redundant port data
[in]ifname= Primary Dev name, f.e. "eth0"
[in]if2name= Secondary Dev name, f.e. "eth1"
Returns
>0 if OK

Definition at line 331 of file ethercatmain.c.

boolean ecx_iserror ( ecx_contextt context)

Check if error list has entries.

Parameters
[in]context= context struct
Returns
TRUE if error list contains entries.

Definition at line 240 of file ethercatmain.c.

static void ecx_mbxemergencyerror ( ecx_contextt context,
uint16  Slave,
uint16  ErrorCode,
uint16  ErrorReg,
uint8  b1,
uint16  w1,
uint16  w2 
)
static

Report Mailbox Emergency Error

Parameters
[in]context= context struct
[in]Slave= Slave number
[in]ErrorCode= Following EtherCAT specification
[in]ErrorReg
[in]b1
[in]w1
[in]w2

Definition at line 296 of file ethercatmain.c.

int ecx_mbxempty ( ecx_contextt context,
uint16  slave,
int  timeout 
)

Check if IN mailbox of slave is empty.

Parameters
[in]context= context struct
[in]slave= Slave number
[in]timeout= Timeout in us
Returns
>0 is success

Definition at line 843 of file ethercatmain.c.

static void ecx_mbxerror ( ecx_contextt context,
uint16  Slave,
uint16  Detail 
)
static

Report Mailbox Error

Parameters
[in]context= context struct
[in]Slave= Slave number
[in]Detail= Following EtherCAT specification

Definition at line 273 of file ethercatmain.c.

int ecx_mbxreceive ( ecx_contextt context,
uint16  slave,
ec_mbxbuft mbx,
int  timeout 
)

Read OUT mailbox from slave. Supports Mailbox Link Layer with repeat requests.

Parameters
[in]context= context struct
[in]slave= Slave number
[out]mbx= Mailbox data
[in]timeout= Timeout in us
Returns
Work counter (>0 is success)

Definition at line 911 of file ethercatmain.c.

int ecx_mbxsend ( ecx_contextt context,
uint16  slave,
ec_mbxbuft mbx,
int  timeout 
)

Write IN mailbox to slave.

Parameters
[in]context= context struct
[in]slave= Slave number
[out]mbx= Mailbox data
[in]timeout= Timeout in us
Returns
Work counter (>0 is success)

Definition at line 878 of file ethercatmain.c.

void ecx_packeterror ( ecx_contextt context,
uint16  Slave,
uint16  Index,
uint8  SubIdx,
uint16  ErrorCode 
)

Report packet error

Parameters
[in]context= context struct
[in]Slave= Slave number
[in]Index= Index that generated error
[in]SubIdx= Subindex that generated error
[in]ErrorCode= Error code

Definition at line 253 of file ethercatmain.c.

boolean ecx_poperror ( ecx_contextt context,
ec_errort Ec 
)

Pops an error from the list.

Parameters
[in]context= context struct
[out]Ec= Struct describing the error.
Returns
TRUE if an error was popped.

Definition at line 214 of file ethercatmain.c.

static int ecx_pullindex ( ecx_contextt context)
static

Pull index of segmented LRD/LWR/LRW combination.

Parameters
[in]context= context struct
Returns
Stack location, -1 if stack is empty.

Definition at line 1547 of file ethercatmain.c.

void ecx_pusherror ( ecx_contextt context,
const ec_errort Ec 
)

Pushes an error on the error list.

Parameters
[in]context= context struct
[in]Ecpointer describing the error.

Definition at line 188 of file ethercatmain.c.

static void ecx_pushindex ( ecx_contextt context,
uint8  idx,
void *  data,
uint16  length 
)
static

Push index of segmented LRD/LWR/LRW combination.

Parameters
[in]context= context struct
[in]idx= Used datagram index.
[in]data= Pointer to process data segment.
[in]length= Length of data segment in bytes.

Definition at line 1532 of file ethercatmain.c.

uint32 ecx_readeeprom ( ecx_contextt context,
uint16  slave,
uint16  eeproma,
int  timeout 
)

Read EEPROM from slave bypassing cache.

Parameters
[in]context= context struct
[in]slave= Slave number
[in]eeproma= (WORD) Address in the EEPROM
[in]timeout= Timeout in us.
Returns
EEPROM data 32bit

Definition at line 1046 of file ethercatmain.c.

void ecx_readeeprom1 ( ecx_contextt context,
uint16  slave,
uint16  eeproma 
)

Read EEPROM from slave bypassing cache. Parallel read step 1, make request to slave.

Parameters
[in]context= context struct
[in]slave= Slave number
[in]eeproma= (WORD) Address in the EEPROM

Definition at line 1472 of file ethercatmain.c.

uint32 ecx_readeeprom2 ( ecx_contextt context,
uint16  slave,
int  timeout 
)

Read EEPROM from slave bypassing cache. Parallel read step 2, actual read from slave.

Parameters
[in]context= context struct
[in]slave= Slave number
[in]timeout= Timeout in us.
Returns
EEPROM data 32bit

Definition at line 1505 of file ethercatmain.c.

uint64 ecx_readeepromAP ( ecx_contextt context,
uint16  aiadr,
uint16  eeproma,
int  timeout 
)

Read EEPROM from slave bypassing cache. APRD method.

Parameters
[in]context= context struct
[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

Definition at line 1163 of file ethercatmain.c.

uint64 ecx_readeepromFP ( ecx_contextt context,
uint16  configadr,
uint16  eeproma,
int  timeout 
)

Read EEPROM from slave bypassing cache. FPRD method.

Parameters
[in]context= context struct
[in]configadr= configured address of slave
[in]eeproma= (WORD) Address in the EEPROM
[in]timeout= Timeout in us.
Returns
EEPROM data 64bit or 32bit

Definition at line 1331 of file ethercatmain.c.

int ecx_readstate ( ecx_contextt context)

Read all slave states in ec_slave.

Parameters
[in]context= context struct
Returns
lowest state found

Definition at line 714 of file ethercatmain.c.

int ecx_receive_processdata ( ecx_contextt context,
int  timeout 
)

Definition at line 1805 of file ethercatmain.c.

int ecx_receive_processdata_group ( ecx_contextt context,
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]context= context struct
[in]group= group number
[in]timeout= Timeout in us.
Returns
Work counter.

Definition at line 1732 of file ethercatmain.c.

int ecx_send_processdata ( ecx_contextt context)

Definition at line 1800 of file ethercatmain.c.

int ecx_send_processdata_group ( ecx_contextt context,
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.

Parameters
[in]context= context struct
[in]group= group number
Returns
>0 if processdata is transmitted.

Definition at line 1571 of file ethercatmain.c.

int16 ecx_siifind ( ecx_contextt context,
uint16  slave,
uint16  cat 
)

Find SII section header in slave EEPROM.

Parameters
[in]context= context struct
[in]slave= slave number
[in]cat= section category
Returns
byte address of section at section length entry, if not available then 0

Definition at line 434 of file ethercatmain.c.

uint16 ecx_siiFMMU ( ecx_contextt context,
uint16  slave,
ec_eepromFMMUt FMMU 
)

Get FMMU data from SII FMMU section in slave EEPROM.

Parameters
[in]context= context struct
[in]slave= slave number
[out]FMMU= FMMU struct from SII, max. 4 FMMU's
Returns
number of FMMU's defined in section

Definition at line 532 of file ethercatmain.c.

uint8 ecx_siigetbyte ( ecx_contextt context,
uint16  slave,
uint16  address 
)

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]context= context struct
[in]slave= slave number
[in]address= eeprom address in bytes (slave uses words)
Returns
requested byte, if not available then 0xff

Definition at line 365 of file ethercatmain.c.

int ecx_siiPDO ( ecx_contextt context,
uint16  slave,
ec_eepromPDOt PDO,
uint8  t 
)

Get PDO data from SII PDO section in slave EEPROM.

Parameters
[in]context= context struct
[in]slave= slave number
[out]PDO= PDO struct from SII
[in]t= 0=RXPDO 1=TXPDO
Returns
mapping size in bits of PDO

Definition at line 643 of file ethercatmain.c.

uint16 ecx_siiSM ( ecx_contextt context,
uint16  slave,
ec_eepromSMt SM 
)

Get SM data from SII SM section in slave EEPROM.

Parameters
[in]context= context struct
[in]slave= slave number
[out]SM= first SM struct from SII
Returns
number of SM's defined in section

Definition at line 572 of file ethercatmain.c.

uint16 ecx_siiSMnext ( ecx_contextt context,
uint16  slave,
ec_eepromSMt SM,
uint16  n 
)

Get next SM data from SII SM section in slave EEPROM.

Parameters
[in]context= context struct
[in]slave= slave number
[out]SM= first SM struct from SII
[in]n= SM number
Returns
>0 if OK

Definition at line 609 of file ethercatmain.c.

void ecx_siistring ( ecx_contextt context,
char *  str,
uint16  slave,
uint16  Sn 
)

Get string from SII string section in slave EEPROM.

Parameters
[in]context= context struct
[out]str= requested string, 0x00 if not found
[in]slave= slave number
[in]Sn= string number

Definition at line 474 of file ethercatmain.c.

uint16 ecx_statecheck ( ecx_contextt context,
uint16  slave,
uint16  reqstate,
int  timeout 
)

Check actual slave state. This is a blocking function.

Parameters
[in]context= context struct
[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.

Definition at line 773 of file ethercatmain.c.

int ecx_writeeeprom ( ecx_contextt context,
uint16  slave,
uint16  eeproma,
uint16  data,
int  timeout 
)

Write EEPROM to slave bypassing cache.

Parameters
[in]context= context struct
[in]slave= Slave number
[in]eeproma= (WORD) Address in the EEPROM
[in]data= 16bit data
[in]timeout= Timeout in us.
Returns
>0 if OK

Definition at line 1064 of file ethercatmain.c.

int ecx_writeeepromAP ( ecx_contextt context,
uint16  aiadr,
uint16  eeproma,
uint16  data,
int  timeout 
)

Write EEPROM to slave bypassing cache. APWR method.

Parameters
[in]context= context struct
[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

Definition at line 1243 of file ethercatmain.c.

int ecx_writeeepromFP ( ecx_contextt context,
uint16  configadr,
uint16  eeproma,
uint16  data,
int  timeout 
)

Write EEPROM to slave bypassing cache. FPWR method.

Parameters
[in]context= context struct
[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

Definition at line 1411 of file ethercatmain.c.

int ecx_writestate ( ecx_contextt context,
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]context= context struct
[in]slave= Slave number, 0 = master
Returns
0

Definition at line 747 of file ethercatmain.c.

Variable Documentation

int64 ec_DCtime

Definition at line 132 of file ethercatmain.c.

ec_eringt ec_elist
static

current slave for EEPROM cache buffer

Definition at line 115 of file ethercatmain.c.

ec_eepromFMMUt ec_FMMU
static

buffer for EEPROM FMMU data

Definition at line 128 of file ethercatmain.c.

slave group structure

Definition at line 108 of file ethercatmain.c.

ec_idxstackT ec_idxstack
static

Definition at line 116 of file ethercatmain.c.

ec_PDOassignt ec_PDOassign
static

PDO assign struct to store data of one slave

Definition at line 121 of file ethercatmain.c.

ec_PDOdesct ec_PDOdesc
static

PDO description struct to store data of one slave

Definition at line 123 of file ethercatmain.c.

PACKED_END ec_slavet ec_slave[EC_MAXSLAVE]

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().

Definition at line 104 of file ethercatmain.c.

int ec_slavecount

number of slaves found on the network

Definition at line 106 of file ethercatmain.c.

ec_eepromSMt ec_SM
static

buffer for EEPROM SM data

Definition at line 126 of file ethercatmain.c.

ec_SMcommtypet ec_SMcommtype
static

SyncManager Communication Type struct to store data of one slave

Definition at line 119 of file ethercatmain.c.

boolean EcatError = FALSE

Global variable TRUE if error available in error stack

Definition at line 130 of file ethercatmain.c.

ecx_contextt ecx_context
Initial value:
= {
&ec_slave[0],
&ec_group[0],
&esibuf[0],
&esimap[0],
0,
0,
0,
&ec_SM,
}
ec_groupt ec_group[EC_MAXGROUP]
Definition: ethercatmain.c:108
#define EC_MAXGROUP
Definition: ethercatmain.h:62
static ec_PDOdesct ec_PDOdesc
Definition: ethercatmain.c:123
PACKED_END ec_slavet ec_slave[EC_MAXSLAVE]
Definition: ethercatmain.c:104
static ec_SMcommtypet ec_SMcommtype
Definition: ethercatmain.c:119
int64 ec_DCtime
Definition: ethercatmain.c:132
static ec_PDOassignt ec_PDOassign
Definition: ethercatmain.c:121
static ec_eepromFMMUt ec_FMMU
Definition: ethercatmain.c:128
ecx_portt ecx_port
Definition: ethercatmain.c:134
static uint8 esibuf[EC_MAXEEPBUF]
Definition: ethercatmain.c:111
boolean EcatError
Definition: ethercatmain.c:130
static uint32 esimap[EC_MAXEEPBITMAP]
Definition: ethercatmain.c:113
static ec_eepromSMt ec_SM
Definition: ethercatmain.c:126
static ec_idxstackT ec_idxstack
Definition: ethercatmain.c:116
#define EC_MAXSLAVE
Definition: ethercatmain.h:60
int ec_slavecount
Definition: ethercatmain.c:106
static ec_eringt ec_elist
Definition: ethercatmain.c:115

Definition at line 137 of file ethercatmain.c.

ecx_portt ecx_port

Definition at line 134 of file ethercatmain.c.

ecx_redportt ecx_redport

Definition at line 135 of file ethercatmain.c.

uint8 esibuf[EC_MAXEEPBUF]
static

cache for EEPROM read functions

Definition at line 111 of file ethercatmain.c.

uint32 esimap[EC_MAXEEPBITMAP]
static

bitmap for filled cache buffer bytes

Definition at line 113 of file ethercatmain.c.



soem
Author(s): Arthur Ketels and M.J.G. van den Molengraft
autogenerated on Sat Jun 8 2019 18:02:17