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 .

/media/uploads/EasyCAT/easycat_lab.jpg

/media/uploads/EasyCAT/components.jpg

Revision:
0:7077d8f28b3e
Child:
2:7d4fd6354015
--- /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