Improve tutorial and documentation

This commit is contained in:
Albert Hofkamp 2017-02-09 08:51:34 +01:00
parent cfd5adfdcd
commit 6c37e949e0
6 changed files with 20 additions and 16 deletions

View File

@ -38,7 +38,7 @@ have a dedicated NIC selected in the nicdrv.c. It returns >0 if succeeded.
\code \code
/* initialise SOEM, bind socket to ifname */ /* initialise SOEM, bind socket to ifname */
if (ec_init(ifname)) if (ec_init(ifname) > 0)
\endcode \endcode
@ -120,8 +120,10 @@ That is the primary key to detect errors.
\code \code
char IOmap[128]; char IOmap[128];
int usedmem;
... ...
ec_config_map(&IOmap); usedmem = ec_config_map(&IOmap);
if (usedmem <= sizeof(IOmap))
... ...
\endcode \endcode
@ -258,7 +260,7 @@ if( inOP && ((wkc < expectedWKC) || ec_group[currentgroup].docheckstate))
ec_slave[slave].state = EC_STATE_OPERATIONAL; ec_slave[slave].state = EC_STATE_OPERATIONAL;
ec_writestate(slave); ec_writestate(slave);
} }
else if(ec_slave[slave].state > 0) else if(ec_slave[slave].state > EC_STATE_NONE)
{ {
if (ec_reconfig_slave(slave, EC_TIMEOUTMON)) if (ec_reconfig_slave(slave, EC_TIMEOUTMON))
{ {
@ -270,7 +272,7 @@ if( inOP && ((wkc < expectedWKC) || ec_group[currentgroup].docheckstate))
{ {
/* re-check state */ /* re-check state */
ec_statecheck(slave, EC_STATE_OPERATIONAL, EC_TIMEOUTRET); ec_statecheck(slave, EC_STATE_OPERATIONAL, EC_TIMEOUTRET);
if (!ec_slave[slave].state) if (ec_slave[slave].state == EC_STATE_NONE)
{ {
ec_slave[slave].islost = TRUE; ec_slave[slave].islost = TRUE;
printf("ERROR : slave %d lost\n",slave); printf("ERROR : slave %d lost\n",slave);
@ -279,7 +281,7 @@ if( inOP && ((wkc < expectedWKC) || ec_group[currentgroup].docheckstate))
} }
if (ec_slave[slave].islost) if (ec_slave[slave].islost)
{ {
if(!ec_slave[slave].state) if(ec_slave[slave].state == EC_STATE_NONE)
{ {
if (ec_recover_slave(slave, EC_TIMEOUTMON)) if (ec_recover_slave(slave, EC_TIMEOUTMON))
{ {

View File

@ -259,7 +259,7 @@ typedef struct
uint8 group; uint8 group;
/** first unused FMMU */ /** first unused FMMU */
uint8 FMMUunused; uint8 FMMUunused;
/** TRUE is slave is not responding at all */ /** Boolean for tracking whether the slave is (not) responding, not used/set by the SOEM library */
boolean islost; boolean islost;
/** registered configuration function PO->SO */ /** registered configuration function PO->SO */
int (*PO2SOconfig)(uint16 slave); int (*PO2SOconfig)(uint16 slave);

View File

@ -179,12 +179,14 @@ typedef enum
/** Possible EtherCAT slave states */ /** Possible EtherCAT slave states */
typedef enum typedef enum
{ {
/** No valid state. */
EC_STATE_NONE = 0x00,
/** Init state*/ /** Init state*/
EC_STATE_INIT = 0x01, EC_STATE_INIT = 0x01,
/** Pre-operational. */ /** Pre-operational. */
EC_STATE_PRE_OP = 0x02, EC_STATE_PRE_OP = 0x02,
/** Boot state*/ /** Boot state*/
EC_STATE_BOOT = 0x03, EC_STATE_BOOT = 0x03,
/** Safe-operational. */ /** Safe-operational. */
EC_STATE_SAFE_OP = 0x04, EC_STATE_SAFE_OP = 0x04,
/** Operational */ /** Operational */

View File

@ -257,7 +257,7 @@ OSAL_THREAD_FUNC ecatcheck( void *ptr )
ec_slave[slave].state = EC_STATE_OPERATIONAL; ec_slave[slave].state = EC_STATE_OPERATIONAL;
ec_writestate(slave); ec_writestate(slave);
} }
else if(ec_slave[slave].state > 0) else if(ec_slave[slave].state > EC_STATE_NONE)
{ {
if (ec_reconfig_slave(slave, EC_TIMEOUTMON)) if (ec_reconfig_slave(slave, EC_TIMEOUTMON))
{ {
@ -269,7 +269,7 @@ OSAL_THREAD_FUNC ecatcheck( void *ptr )
{ {
/* re-check state */ /* re-check state */
ec_statecheck(slave, EC_STATE_OPERATIONAL, EC_TIMEOUTRET); ec_statecheck(slave, EC_STATE_OPERATIONAL, EC_TIMEOUTRET);
if (!ec_slave[slave].state) if (ec_slave[slave].state == EC_STATE_NONE)
{ {
ec_slave[slave].islost = TRUE; ec_slave[slave].islost = TRUE;
printf("ERROR : slave %d lost\n",slave); printf("ERROR : slave %d lost\n",slave);
@ -278,7 +278,7 @@ OSAL_THREAD_FUNC ecatcheck( void *ptr )
} }
if (ec_slave[slave].islost) if (ec_slave[slave].islost)
{ {
if(!ec_slave[slave].state) if(ec_slave[slave].state == EC_STATE_NONE)
{ {
if (ec_recover_slave(slave, EC_TIMEOUTMON)) if (ec_recover_slave(slave, EC_TIMEOUTMON))
{ {

View File

@ -176,7 +176,7 @@ OSAL_THREAD_FUNC ecatcheck( void *ptr )
ec_slave[slave].state = EC_STATE_OPERATIONAL; ec_slave[slave].state = EC_STATE_OPERATIONAL;
ec_writestate(slave); ec_writestate(slave);
} }
else if(ec_slave[slave].state > 0) else if(ec_slave[slave].state > EC_STATE_NONE)
{ {
if (ec_reconfig_slave(slave, EC_TIMEOUTMON)) if (ec_reconfig_slave(slave, EC_TIMEOUTMON))
{ {
@ -188,7 +188,7 @@ OSAL_THREAD_FUNC ecatcheck( void *ptr )
{ {
/* re-check state */ /* re-check state */
ec_statecheck(slave, EC_STATE_OPERATIONAL, EC_TIMEOUTRET); ec_statecheck(slave, EC_STATE_OPERATIONAL, EC_TIMEOUTRET);
if (!ec_slave[slave].state) if (ec_slave[slave].state == EC_STATE_NONE)
{ {
ec_slave[slave].islost = TRUE; ec_slave[slave].islost = TRUE;
printf("ERROR : slave %d lost\n",slave); printf("ERROR : slave %d lost\n",slave);
@ -197,7 +197,7 @@ OSAL_THREAD_FUNC ecatcheck( void *ptr )
} }
if (ec_slave[slave].islost) if (ec_slave[slave].islost)
{ {
if(!ec_slave[slave].state) if(ec_slave[slave].state == EC_STATE_NONE)
{ {
if (ec_recover_slave(slave, EC_TIMEOUTMON)) if (ec_recover_slave(slave, EC_TIMEOUTMON))
{ {

View File

@ -295,7 +295,7 @@ OSAL_THREAD_FUNC ecatcheck(void *lpParam)
ec_slave[slave].state = EC_STATE_OPERATIONAL; ec_slave[slave].state = EC_STATE_OPERATIONAL;
ec_writestate(slave); ec_writestate(slave);
} }
else if(ec_slave[slave].state > 0) else if(ec_slave[slave].state > EC_STATE_NONE)
{ {
if (ec_reconfig_slave(slave, EC_TIMEOUTMON)) if (ec_reconfig_slave(slave, EC_TIMEOUTMON))
{ {
@ -307,7 +307,7 @@ OSAL_THREAD_FUNC ecatcheck(void *lpParam)
{ {
/* re-check state */ /* re-check state */
ec_statecheck(slave, EC_STATE_OPERATIONAL, EC_TIMEOUTRET); ec_statecheck(slave, EC_STATE_OPERATIONAL, EC_TIMEOUTRET);
if (!ec_slave[slave].state) if (ec_slave[slave].state == EC_STATE_NONE)
{ {
ec_slave[slave].islost = TRUE; ec_slave[slave].islost = TRUE;
printf("ERROR : slave %d lost\n",slave); printf("ERROR : slave %d lost\n",slave);
@ -316,7 +316,7 @@ OSAL_THREAD_FUNC ecatcheck(void *lpParam)
} }
if (ec_slave[slave].islost) if (ec_slave[slave].islost)
{ {
if(!ec_slave[slave].state) if(ec_slave[slave].state == EC_STATE_NONE)
{ {
if (ec_recover_slave(slave, EC_TIMEOUTMON)) if (ec_recover_slave(slave, EC_TIMEOUTMON))
{ {