EasyCAT LAB - EtherCAT master legacy example
Dependencies: SOEM SPI_STMPE610 SPI_TFT_ILI9341 TFT_fonts
The EasyCAT LAB is a complete educational and experimental EtherCAT® system, composed of one master and two slaves .
- It is provided as a kit by AB&T Tecnologie Informatiche, to allow everybody to have an educational EtherCAT® system up and running in a matter of minutes.
- This repository contains a demo software for the EtherCAT® master, that runs on the Nucleo STM32F767ZI board.
- It uses the SOEM (Simple Open EtherCAT® Master) library by rt-labs, that has been ported in the ecosystem by AB&T Tecnologie Informatiche.
- The slaves are based on the EasyCAT SHIELD and the Arduino UNO.
Diff: config.h
- Revision:
- 0:7077d8f28b3e
- Child:
- 2:7d4fd6354015
diff -r 000000000000 -r 7077d8f28b3e config.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config.h Tue Jun 11 10:19:08 2019 +0000 @@ -0,0 +1,144 @@ +#ifndef config_H +#define config_H + +#include "ethercat.h" + + +//------------------------------------------------------------------------------ + +#define LAB_1 1 +#define LAB_2 2 + +/* +#define EK1100 3 +#define EL2004 4 +#define EL1014 5 +*/ + +#define SLAVE_NUM 2 +//#define SLAVE_NUM 5 + +//------------------------------------------------------------------------------ + + +#define IO_MAP_SIZE 256 + + + +//------------------------------------------------------------------------------ + +typedef struct __attribute__((__packed__)) +{ + uint8_t Alarm; +}out_LAB_1t; + +typedef struct __attribute__((__packed__)) +{ + float Temperature; +}in_LAB_1t; + +//------------------------------------------------------------------------------ + +typedef struct __attribute__((__packed__)) +{ + uint8_t Segments; +}out_LAB_2t; + +typedef struct __attribute__((__packed__)) +{ + uint16_t Potentiometer; + uint8_t Buttons; +}in_LAB_2t; + +/* +//------------------------------------------------------------------------------ + +typedef struct __attribute__((__packed__)) +{ + uint8_t Out_0:1; + uint8_t Out_1:1; + uint8_t Out_2:1; + uint8_t Out_3:1; + uint8_t PAD:4; +}out_EL2004t; + +//------------------------------------------------------------------------------ + +typedef struct __attribute__((__packed__)) +{ + uint8_t In_0:1; + uint8_t In_1:1; + uint8_t In_2:1; + uint8_t In_3:1; + uint8_t PAD:4; +}in_EL1014t; + + +//------------------------------------------------------------------------------ +*/ + +out_LAB_1t *out_LAB_1; +in_LAB_1t *in_LAB_1; + +out_LAB_2t *out_LAB_2; +in_LAB_2t *in_LAB_2; + +/* +out_EL2004t *out_EL2004; + +in_EL1014t *in_EL1014; +*/ + +//------------------------------------------------------------------------------ + +char IOmap[IO_MAP_SIZE]; +char IOmapSafe[IO_MAP_SIZE]; + + +void MapLocalStructures (void) +{ + out_LAB_1 = (out_LAB_1t*)((char *)ec_slave[LAB_1].outputs - &IOmap[0] + &IOmapSafe[0]); + in_LAB_1 = (in_LAB_1t*)((char *)ec_slave[LAB_1].inputs - &IOmap[0] + &IOmapSafe[0]); + + out_LAB_2 = (out_LAB_2t*)((char *)ec_slave[LAB_2].outputs - &IOmap[0] + &IOmapSafe[0]); + in_LAB_2 = (in_LAB_2t*)((char *)ec_slave[LAB_2].inputs - &IOmap[0] + &IOmapSafe[0]); + +/* + out_EL2004 = (out_EL2004t*)((char *)ec_slave[EL2004].outputs - &IOmap[0] + &IOmapSafe[0]); + + in_EL1014 = (in_EL1014t*)((char *)ec_slave[EL1014].inputs - &IOmap[0] + &IOmapSafe[0]); +*/ +} + + + +//------------------------------------------------------------------------------ + +uint32_t network_configuration(void) +{ + + if (ec_slavecount != SLAVE_NUM) // check if the number of slaves matches what we expect + return 0; + + if (strcmp(ec_slave[LAB_1].name,"LAB_1")) // verify slave by slave that the slave names are correct + return 0; + + else if (strcmp(ec_slave[LAB_2].name,"LAB_2")) + return 0; + +/* + else if (strcmp(ec_slave[EK1100].name,"EK1100")) + return 0; + + else if (strcmp(ec_slave[EL2004].name,"EL2004")) + return 0; + + else if (strcmp(ec_slave[EL1014].name,"EL1014")) + return 0; +*/ + + return 1; +} + + +#endif \ No newline at end of file