SOES implementation i.c.w. ET1100 (Beckhoff ASIC)

Dependencies:   KL25Z_ClockControl MODSERIAL mbed

Fork of EtherCAT-XbusMaster by First Last

Revision:
15:b8d72679e644
Parent:
12:cac4e7c2bd0f
Child:
16:bfc7ea6bd1af
--- a/EtherCAT/objectlist.h	Tue Mar 03 12:17:15 2015 +0000
+++ b/EtherCAT/objectlist.h	Tue Mar 03 14:51:37 2015 +0000
@@ -119,8 +119,9 @@
 /*End of subindexes for Identity Object*/
 _ac acNameMO[]="Mapped object";
 _ac acName1600[]="Receive PDO mapping";
-_ac acName1A00[]="Transmit PDO mapping - CoP";
-_ac acName1A10[]="Transmit PDO mapping - Raw";
+_ac acName1A00[]="Transmit PDO mapping - First IMU";
+_ac acName1A01[]="Transmit PDO mapping - Second IMU";
+_ac acName1A02[]="Transmit PDO mapping - Third IMU";
 _ac acName1C00[]="Sync Manager Communication type";
 /*Subindexes for Sync Manager Communication type*/
 _ac acName1C00_01[]="Communications type SM0";
@@ -133,19 +134,21 @@
 _ac acName1C12[]="Sync Manager 2 PDO Assignment";
 _ac acName1C13[]="Sync Manager 3 PDO Assignment";
 _ac acNameNOE[]="Number of entries";
-_ac acName6000[]="Centre of Pressure";
+_ac acName6000[]="First IMU";
 /*Subindexes for Digital Inputs*/
-_ac acName6000_01[]="Centre of Pressure X";
-_ac acName6000_02[]="Centre of Pressure Y";
-_ac acName6000_03[]="Ground Reaction Force";
+_ac acName6000_01[]="Accelerometer X";
+_ac acName6000_02[]="Accelerometer Y";
+_ac acName6000_03[]="Accelerometer Z";
+_ac acName6000_01[]="Gyroscope X";
+_ac acName6000_02[]="Gyroscope Y";
+_ac acName6000_03[]="Gyroscope Z";
+_ac acName6000_01[]="Magnetometer X";
+_ac acName6000_02[]="Magnetometer Y";
+_ac acName6000_03[]="Magnetometer Z";
+_ac acName6000_01[]="Temperature";
 /*End of subindexes for Digital Inputs*/
-_ac acName6001[]="Raw Sensor Inputs";
-/*Subindexes for Analog inputs*/
-_ac acName6001_01[]="Raw FrontLeft";
-_ac acName6001_02[]="Raw FrontRight";
-_ac acName6001_03[]="Raw BackLeft";
-_ac acName6001_04[]="Raw BackRight";
-_ac acName6001_05[]="Timestamp";
+_ac acName6001[]="Second IMU";
+_ac acName6002[]="Third IMU";
 /*End of subindexes for Analog inputs*/
 _ac acName7000[]="Outputs";
 /*Subindexes of Outputs*/
@@ -191,19 +194,47 @@
   {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x70000108}       //First Object, pointing to object 7001:01
 };
 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],0x60000120},       //First Object, pointing to object  6000:01
-  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000220},       //Second Object, pointing to object 6000:02      //..
-  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000320},
+{{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x0A},               //Number of TxPDOs
+  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000110},       //First Object, pointing to object  6000:01
+  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000210},       //Second Object, pointing to object 6000:02      //..
+  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000310},
+  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000410},
+  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000510},
+  {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000610},
+  {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000710},
+  {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000810},
+  {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000910},
+  {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000A10}
 };
-const _objd SDO1A10[]=                                              //Second TxPDO module
-{{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 SDO1A01[]=                                              //TxPDO mapping (objects from slave to master)
+{{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x0A},               //Number of TxPDOs
+  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010110},       //First Object, pointing to object  6001:01
+  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010210},       //Second Object, pointing to object 6001:02      //..
+  {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],0x60010910},
+  {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010A10}
 };
+
+const _objd SDO1A02[]=                                              //TxPDO mapping (objects from slave to master)
+{{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x0A},               //Number of TxPDOs
+  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020110},       //First Object, pointing to object  6002:01
+  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020210},       //Second Object, pointing to object 6002:02      //..
+  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020310},
+  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020410},
+  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020510},
+  {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020610},
+  {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020710},
+  {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020810},
+  {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020910},
+  {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020A10}
+};
+
 const _objd SDO1C00[]=                                              //Sync Manager
 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x04},               //Number of used Sync Manager channels
   {0x01,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C00_01[0],0x01},          //Sync Manager 0: Mailbox Receive (master->slave)
@@ -220,16 +251,54 @@
   {0x01,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1600}           //Send objects in index 0x1600
 };
 const _objd SDO1C13[]=                                              //TxPDO Assign objects ; CHANGEABLE, thus 'RWpre' mode
-{{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x02},               //Number of Entries
+{{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x03},               //Number of Entries
   {0x01,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A00},            //Send objects in index 0x1A00
-  {0x02,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A10}             //Send objects in index 0x1A10
+  {0x02,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A01},             //Send objects in index 0x1A10
+  {0x03,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A02}, 
 };
+
 const _objd SDO6000[]=                                                      //TxPDO module
-{{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x03},                     //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
-  {0x03,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_03[0],0,&(Rb.grf)}
+{{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x0A},                     //Number of elements
+  {0x01,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_01[0],0,&(Rb.first.acc[0])},//6000:01 is acc X
+  {0x02,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_02[0],0,&(Rb.first.acc[1])},//6000:02 is acc Y
+  {0x03,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_03[0],0,&(Rb.first.acc[2])},//6000:03 is acc Z
+  {0x04,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_04[0],0,&(Rb.first.gyr[0])},//6000:04 is gyr X
+  {0x05,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_05[0],0,&(Rb.first.gyr[1])},//6000:05 is gyr Y
+  {0x06,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_06[0],0,&(Rb.first.gyr[2])},//6000:06 is gyr Z
+  {0x07,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_07[0],0,&(Rb.first.mag[0])},//6000:07 is mag X
+  {0x08,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_08[0],0,&(Rb.first.mag[1])},//6000:08 is mag Y
+  {0x09,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_09[0],0,&(Rb.first.mag[2])},//6000:09 is mag Z
+  {0x0A,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_0A[0],0,&(Rb.first.temp)}   //6000:0A is imu temperature
 };
+
+const _objd SDO6001[]=                                                      //TxPDO module
+{{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x0A},                     //Number of elements
+  {0x01,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_01[0],0,&(Rb.second.acc[0])},//6001:01 is acc X
+  {0x02,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_02[0],0,&(Rb.second.acc[1])},//6001:02 is acc Y
+  {0x03,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_03[0],0,&(Rb.second.acc[2])},//6001:03 is acc Z
+  {0x04,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_04[0],0,&(Rb.second.gyr[0])},//6001:04 is gyr X
+  {0x05,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_05[0],0,&(Rb.second.gyr[1])},//6001:05 is gyr Y
+  {0x06,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_06[0],0,&(Rb.second.gyr[2])},//6001:06 is gyr Z
+  {0x07,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_07[0],0,&(Rb.second.mag[0])},//6001:07 is mag X
+  {0x08,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_08[0],0,&(Rb.second.mag[1])},//6001:08 is mag Y
+  {0x09,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_09[0],0,&(Rb.second.mag[2])},//6001:09 is mag Z
+  {0x0A,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_0A[0],0,&(Rb.second.temp)}   //6001:0A is imu temperature
+};
+
+const _objd SDO6002[]=                                                      //TxPDO module
+{{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x0A},                     //Number of elements
+  {0x01,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_01[0],0,&(Rb.third.acc[0])},//6002:01 is acc X
+  {0x02,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_02[0],0,&(Rb.third.acc[1])},//6002:02 is acc Y
+  {0x03,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_03[0],0,&(Rb.third.acc[2])},//6002:03 is acc Z
+  {0x04,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_04[0],0,&(Rb.third.gyr[0])},//6002:04 is gyr X
+  {0x05,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_05[0],0,&(Rb.third.gyr[1])},//6002:05 is gyr Y
+  {0x06,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_06[0],0,&(Rb.third.gyr[2])},//6002:06 is gyr Z
+  {0x07,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_07[0],0,&(Rb.third.mag[0])},//6002:07 is mag X
+  {0x08,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_08[0],0,&(Rb.third.mag[1])},//6002:08 is mag Y
+  {0x09,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_09[0],0,&(Rb.third.mag[2])},//6002:09 is mag Z
+  {0x0A,DTYPE_SIGNED16  ,16,ATYPE_R,&acName6000_0A[0],0,&(Rb.third.temp)}   //6002:0A is imu temperature
+};
+
 //TODO: Comments
 const _objd SDO6001[]=                                                      //TxPDO module
 {{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x05},                     //Number of elements
@@ -256,15 +325,17 @@
   {0x100A,OTYPE_VAR     , 0,0,&acName100A[0],&SDO100A[0]},      //Software Version
   {0x1018,OTYPE_RECORD  , 4,0,&acName1018[0],&SDO1018[0]},      //Identity
   {0x1600,OTYPE_RECORD  , 0x01,0,&acName1600[0],&SDO1600[0]},   //RxPDO mapping
-  {0x1A00,OTYPE_RECORD  , 0x03,0,&acName1A00[0],&SDO1A00[0]},   //TxPDO mapping
-  {0x1A10,OTYPE_RECORD  , 0x05,0,&acName1A10[0],&SDO1A10[0]},   //TxPDO mapping
+  {0x1A00,OTYPE_RECORD  , 10,0,&acName1A00[0],&SDO1A00[0]},   //TxPDO mapping
+  {0x1A01,OTYPE_RECORD  , 10,0,&acName1A01[0],&SDO1A01[0]},   //TxPDO mapping
+  {0x1A02,OTYPE_RECORD  , 10,0,&acName1A02[0],&SDO1A02[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   , 0x05,0,&acName6001[0],&SDO6001[0]},   //TxPDO module
+  {0x1C13,OTYPE_ARRAY   , 3,0,&acName1C13[0],&SDO1C13[0]},      //TxPDO objects
+  {0x6000,OTYPE_ARRAY   , 10,0,&acName6000[0],&SDO6000[0]},   //TxPDO module
+  {0x6001,OTYPE_ARRAY   , 10,0,&acName6001[0],&SDO6001[0]},   //TxPDO module
+  {0x6002,OTYPE_ARRAY   , 10,0,&acName6002[0],&SDO6002[0]},   //TxPDO module
   {0x7000,OTYPE_ARRAY   , 0x01,0,&acName7000[0],&SDO7000[0]},   //RxPDO module
   {0x8000,OTYPE_ARRAY   , 0x01,0,&acName8000[0],&SDO8000[0]},   //RxPDO module
   {0xffff,0xff,0xff,0xff,nil,nil}