EtherCAT slave that reads 3 Xsens IMU's connected to a Xbus Master

Dependencies:   MODSERIAL mbed KL25Z_ClockControl

Fork of EtherCAT by First Last

Revision:
4:bb72df6dce33
Parent:
3:3761315146ec
Child:
5:6d75f432a41f
--- a/EtherCAT/objectlist.h	Thu Dec 11 21:55:47 2014 +0000
+++ b/EtherCAT/objectlist.h	Thu Dec 11 22:31:10 2014 +0000
@@ -133,23 +133,18 @@
 _ac acName1C12[]="Sync Manager 2 PDO Assignment";
 _ac acName1C13[]="Sync Manager 3 PDO Assignment";
 _ac acNameNOE[]="Number of entries";
-_ac acName6000[]="Digital Inputs";
+_ac acName6000[]="Centre of Pressure";
 /*Subindexes for Digital Inputs*/
-_ac acName6000_01[]="Status";
-_ac acName6000_02[]="Counter";
-_ac acName6000_03[]="Digital inputs";
+_ac acName6000_01[]="Centre of Pressure X";
+_ac acName6000_02[]="Centre of Pressure Y";
 /*End of subindexes for Digital Inputs*/
-_ac acName6001[]="Analog Inputs";
+_ac acName6001[]="Raw Sensor Inputs";
 /*Subindexes for Analog inputs*/
 _ac acName6001_01[]="Analog 1";
 _ac acName6001_02[]="Analog 2";
 _ac acName6001_03[]="Analog 3";
 _ac acName6001_04[]="Analog 4";
-_ac acName6001_05[]="Analog 5";
-_ac acName6001_06[]="Analog 6";
-_ac acName6001_07[]="Analog 7";
-_ac acName6001_08[]="Analog 8";
-_ac acName6001_09[]="Timestamp";
+_ac acName6001_05[]="Timestamp";
 /*End of subindexes for Analog inputs*/
 _ac acName7000[]="Outputs";
 /*Subindexes of Outputs*/
@@ -196,22 +191,17 @@
   {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x70000208}       //Second Object, pointing to object 7001:02
 };
 const _objd SDO1A00[]=                                              //TxPDO mapping (objects from slave to master)
-{{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x03},               //Number of TxPDOs
-  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000108},       //First Object, pointing to object  6000:01
-  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000208},       //Second Object, pointing to object 6000:02
-  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000308}       //..
+{{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x02},               //Number of TxPDOs
+  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000120},       //First Object, pointing to object  6000:01
+  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000220},       //Second Object, pointing to object 6000:02      //..
 };
 const _objd SDO1A10[]=                                              //Second TxPDO module
-{{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x09},
-  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010110},
-  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010210},
-  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010310},
-  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010410},
-  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010510},
-  {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010610},
-  {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010710},
-  {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010810},
-  {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010920}
+{{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x05},
+  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010120},
+  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010220},
+  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010320},
+  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010420},
+  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010520}
 };
 const _objd SDO1C00[]=                                              //Sync Manager
 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x04},               //Number of used Sync Manager channels
@@ -234,22 +224,18 @@
   {0x02,DTYPE_UNSIGNED16,16,ATYPE_RWpre,&acNameMO[0],0x1A10}             //Send objects in index 0x1A10
 };
 const _objd SDO6000[]=                                                      //TxPDO module
-{{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x03},                     //Number of elements
-  {0x01,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acName6000_01[0],0,&(Rb.status)},      //6000:01 is status
-  {0x02,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acName6000_02[0],0,&(Rb.counter)},     //6000:02 is counter
-  {0x03,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acName6000_03[0],0,&(Rb.diginput)}     //6000:03 is digital inputs
+{{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x02},                     //Number of elements
+  {0x01,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_01[0],0,&(Rb.CoPx)},      //6000:01 is status
+  {0x02,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_02[0],0,&(Rb.CoPy)}     //6000:02 is counter
 };
+//TODO: Comments
 const _objd SDO6001[]=                                                      //TxPDO module
-{{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x09},                     //Number of elements
-  {0x01,DTYPE_INTEGER16  ,16,ATYPE_R,&acName6001_01[0],0,&(Rb.analog[0])},  //6001:1 is analog 0
-  {0x02,DTYPE_INTEGER16  ,16,ATYPE_R,&acName6001_02[0],0,&(Rb.analog[1])},  //6001:2 is analog 1
-  {0x03,DTYPE_INTEGER16  ,16,ATYPE_R,&acName6001_03[0],0,&(Rb.analog[2])},  //6001:3 is analog 2
-  {0x04,DTYPE_INTEGER16  ,16,ATYPE_R,&acName6001_04[0],0,&(Rb.analog[3])},  //6001:4 is analog 3
-  {0x05,DTYPE_INTEGER16  ,16,ATYPE_R,&acName6001_05[0],0,&(Rb.analog[4])},  //6001:5 is analog 4
-  {0x06,DTYPE_INTEGER16  ,16,ATYPE_R,&acName6001_06[0],0,&(Rb.analog[5])},  //6001:6 is analog 5
-  {0x07,DTYPE_INTEGER16  ,16,ATYPE_R,&acName6001_07[0],0,&(Rb.analog[6])},  //6001:7 is analog 6
-  {0x08,DTYPE_INTEGER16  ,16,ATYPE_R,&acName6001_08[0],0,&(Rb.analog[7])},  //6001:8 is analog 7
-  {0x09,DTYPE_UNSIGNED32 ,32,ATYPE_R,&acName6001_09[0],0,&(Rb.timestamp)}   //6001:9 is timestamp
+{{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x05},                     //Number of elements
+  {0x01,DTYPE_REAL32     ,32,ATYPE_R,&acName6001_01[0],0,&(Rb.FrontLeft)},  //6001:1 is analog 0
+  {0x02,DTYPE_REAL32     ,32,ATYPE_R,&acName6001_02[0],0,&(Rb.FrontRight)},  //6001:2 is analog 1
+  {0x03,DTYPE_REAL32     ,32,ATYPE_R,&acName6001_03[0],0,&(Rb.BackLeft)},  //6001:3 is analog 2
+  {0x04,DTYPE_REAL32     ,32,ATYPE_R,&acName6001_04[0],0,&(Rb.BackRight)},  //6001:4 is analog 
+  {0x05,DTYPE_UNSIGNED32 ,32,ATYPE_R,&acName6001_05[0],0,&(Rb.timestamp)}   //6001:9 is timestamp
 };
 const _objd SDO7000[]=                                                      //RxPDO module
 {{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x02},                     //Number of elements
@@ -269,15 +255,15 @@
   {0x100A,OTYPE_VAR     , 0,0,&acName100A[0],&SDO100A[0]},      //Software Version
   {0x1018,OTYPE_RECORD  , 4,0,&acName1018[0],&SDO1018[0]},      //Identity
   {0x1600,OTYPE_RECORD  , 0x02,0,&acName1600[0],&SDO1600[0]},   //RxPDO mapping
-  {0x1A00,OTYPE_RECORD  , 0x03,0,&acName1A00[0],&SDO1A00[0]},   //TxPDO mapping
-  {0x1A10,OTYPE_RECORD  , 0x09,0,&acName1A10[0],&SDO1A10[0]},   //TxPDO mapping
+  {0x1A00,OTYPE_RECORD  , 0x02,0,&acName1A00[0],&SDO1A00[0]},   //TxPDO mapping
+  {0x1A10,OTYPE_RECORD  , 0x05,0,&acName1A10[0],&SDO1A10[0]},   //TxPDO mapping
   {0x1C00,OTYPE_ARRAY   , 4,0,&acName1C00[0],&SDO1C00[0]},      //Sync Manager configuration
   {0x1C10,OTYPE_ARRAY   , 0,0,&acName1C10[0],&SDO1C10[0]},      //Sync Manager 0 PDO assignment
   {0x1C11,OTYPE_ARRAY   , 0,0,&acName1C11[0],&SDO1C11[0]},      //Sync Manager 1 PDO assignment
   {0x1C12,OTYPE_ARRAY   , 1,0,&acName1C12[0],&SDO1C12[0]},      //RxPDO objects
   {0x1C13,OTYPE_ARRAY   , 2,0,&acName1C13[0],&SDO1C13[0]},      //TxPDO objects
-  {0x6000,OTYPE_ARRAY   , 0x03,0,&acName6000[0],&SDO6000[0]},   //TxPDO module
-  {0x6001,OTYPE_ARRAY   , 0x09,0,&acName6001[0],&SDO6001[0]},   //TxPDO module
+  {0x6000,OTYPE_ARRAY   , 0x02,0,&acName6000[0],&SDO6000[0]},   //TxPDO module
+  {0x6001,OTYPE_ARRAY   , 0x05,0,&acName6001[0],&SDO6001[0]},   //TxPDO module
   {0x7000,OTYPE_ARRAY   , 0x02,0,&acName7000[0],&SDO7000[0]},   //RxPDO module
   {0x8000,OTYPE_ARRAY   , 0x02,0,&acName8000[0],&SDO8000[0]},   //RxPDO module
   {0xffff,0xff,0xff,0xff,nil,nil}