diff --git a/Firmware/lib/soes/MetalMusings_EaserCAT_2000.xml b/Firmware/lib/soes/MetalMusings_EaserCAT_2000.xml index 4428c6e..917deff 100755 --- a/Firmware/lib/soes/MetalMusings_EaserCAT_2000.xml +++ b/Firmware/lib/soes/MetalMusings_EaserCAT_2000.xml @@ -191,40 +191,6 @@ - - DT1604 - 144 - - 0 - Max SubIndex - USINT - 8 - 0 - - ro - - - - 1 - Enable1 - ULINT - 64 - 16 - - ro - - - - 2 - Padding 1 - ULINT - 64 - 80 - - ro - - - DT1A00 80 @@ -393,6 +359,102 @@ + + DT1A07 + 80 + + 0 + Max SubIndex + USINT + 8 + 0 + + ro + + + + 1 + D1 + ULINT + 64 + 16 + + ro + + + + + DT1A08 + 80 + + 0 + Max SubIndex + USINT + 8 + 0 + + ro + + + + 1 + D2 + ULINT + 64 + 16 + + ro + + + + + DT1A09 + 80 + + 0 + Max SubIndex + USINT + 8 + 0 + + ro + + + + 1 + D3 + ULINT + 64 + 16 + + ro + + + + + DT1A0A + 80 + + 0 + Max SubIndex + USINT + 8 + 0 + + ro + + + + 1 + D4 + ULINT + 64 + 16 + + ro + + + DT1C00ARR USINT @@ -428,15 +490,15 @@ DT1C12ARR UINT - 80 + 64 1 - 5 + 4 DT1C12 - 96 + 80 0 Max SubIndex @@ -450,7 +512,7 @@ Elements DT1C12ARR - 80 + 64 16 ro @@ -460,15 +522,15 @@ DT1C13ARR UINT - 112 + 176 1 - 7 + 11 DT1C13 - 128 + 192 0 Max SubIndex @@ -482,7 +544,7 @@ Elements DT1C13ARR - 112 + 176 16 ro @@ -647,10 +709,6 @@ INT 16 - - BOOL - 1 - @@ -848,35 +906,6 @@ ro - - #x1604 - Enable1 - DT1604 - 144 - - - Max SubIndex - - 2 - - - - Enable1 - - #x70040001 - - - - Padding 1 - - #x00000007 - - - - - ro - - #x1A00 EncPos @@ -1038,6 +1067,98 @@ ro + + #x1A07 + D1 + DT1A07 + 80 + + + Max SubIndex + + 1 + + + + D1 + + #x60070020 + + + + + ro + + + + #x1A08 + D2 + DT1A08 + 80 + + + Max SubIndex + + 1 + + + + D2 + + #x60080020 + + + + + ro + + + + #x1A09 + D3 + DT1A09 + 80 + + + Max SubIndex + + 1 + + + + D3 + + #x60090020 + + + + + ro + + + + #x1A0A + D4 + DT1A0A + 80 + + + Max SubIndex + + 1 + + + + D4 + + #x600A0020 + + + + + ro + + #x1C00 Sync Manager Communication Type @@ -1083,12 +1204,12 @@ #x1C12 Sync Manager 2 PDO Assignment DT1C12 - 96 + 80 Max SubIndex - 5 + 4 @@ -1115,12 +1236,6 @@ #x1603 - - PDO Mapping - - #x1604 - - ro @@ -1130,12 +1245,12 @@ #x1C13 Sync Manager 3 PDO Assignment DT1C13 - 128 + 192 Max SubIndex - 7 + 11 @@ -1180,6 +1295,30 @@ #x1A06 + + PDO Mapping + + #x1A07 + + + + PDO Mapping + + #x1A08 + + + + PDO Mapping + + #x1A09 + + + + PDO Mapping + + #x1A0A + + ro @@ -1296,6 +1435,58 @@ ro + + #x6007 + D1 + DINT + 32 + + 0 + + + ro + T + + + + #x6008 + D2 + DINT + 32 + + 0 + + + ro + T + + + + #x6009 + D3 + DINT + 32 + + 0 + + + ro + T + + + + #x600A + D4 + DINT + 32 + + 0 + + + ro + T + + #x7000 EncPosScale @@ -1380,19 +1571,6 @@ ro - - #x7004 - Enable1 - BOOL - 1 - - 0 - - - ro - R - - @@ -1461,22 +1639,6 @@ INT - - #x1604 - Enable1 - - #x7004 - #x0 - 1 - Enable1 - BOOL - - - 0 - 0 - 7 - - #x1A00 EncPos @@ -1554,6 +1716,50 @@ LREAL + + #x1A07 + D1 + + #x6007 + #x0 + 32 + D1 + DINT + + + + #x1A08 + D2 + + #x6008 + #x0 + 32 + D2 + DINT + + + + #x1A09 + D3 + + #x6009 + #x0 + 32 + D3 + DINT + + + + #x1A0A + D4 + + #x600A + #x0 + 32 + D4 + DINT + + @@ -1571,7 +1777,7 @@ 2048 - 80060344640000 + 8006034C640000 diff --git a/Firmware/lib/soes/ecat_options.h b/Firmware/lib/soes/ecat_options.h index 990fb28..bdea3f1 100755 --- a/Firmware/lib/soes/ecat_options.h +++ b/Firmware/lib/soes/ecat_options.h @@ -33,8 +33,8 @@ #define SM3_smc 0x20 #define SM3_act 1 -#define MAX_MAPPINGS_SM2 8 -#define MAX_MAPPINGS_SM3 7 +#define MAX_MAPPINGS_SM2 6 +#define MAX_MAPPINGS_SM3 11 #define MAX_RXPDO_SIZE 512 #define MAX_TXPDO_SIZE 512 diff --git a/Firmware/lib/soes/eeprom.bin b/Firmware/lib/soes/eeprom.bin index 47287ef..1156cd1 100755 Binary files a/Firmware/lib/soes/eeprom.bin and b/Firmware/lib/soes/eeprom.bin differ diff --git a/Firmware/lib/soes/eeprom.hex b/Firmware/lib/soes/eeprom.hex index 4291203..fd705c7 100755 --- a/Firmware/lib/soes/eeprom.hex +++ b/Firmware/lib/soes/eeprom.hex @@ -1,4 +1,4 @@ -:2000000080060344640000000000000000001400AA0A0000CCBCBB000200000001000000A1 +:200000008006034C64000000000000000000EC00AA0A0000CCBCBB000200000001000000C1 :20002000000000000000000000000000000000000010000200120002040000000000000096 :200040000000000000000000000000000000000000000000000000000000000000000000A0 :20006000000000000000000000000000000000000000000000000000000000000F00010070 diff --git a/Firmware/lib/soes/esi.json b/Firmware/lib/soes/esi.json index 3324c97..c330457 100755 --- a/Firmware/lib/soes/esi.json +++ b/Firmware/lib/soes/esi.json @@ -144,6 +144,50 @@ "pdo_mappings": [ "txpdo" ] + }, + "6007": { + "otype": "VAR", + "name": "D1", + "access": "RO", + "pdo_mappings": [ + "txpdo" + ], + "dtype": "INTEGER32", + "value": "0", + "data": "&Obj.D1" + }, + "6008": { + "otype": "VAR", + "name": "D2", + "access": "RO", + "pdo_mappings": [ + "txpdo" + ], + "dtype": "INTEGER32", + "value": "0", + "data": "&Obj.D2" + }, + "6009": { + "otype": "VAR", + "name": "D3", + "access": "RO", + "pdo_mappings": [ + "txpdo" + ], + "dtype": "INTEGER32", + "value": "0", + "data": "&Obj.D3" + }, + "600A": { + "otype": "VAR", + "name": "D4", + "access": "RO", + "pdo_mappings": [ + "txpdo" + ], + "dtype": "INTEGER32", + "value": "0", + "data": "&Obj.D4" } }, "rxpdo": { @@ -223,17 +267,6 @@ "rxpdo" ] }, - "7004": { - "otype": "VAR", - "name": "Enable1", - "access": "RO", - "pdo_mappings": [ - "rxpdo" - ], - "dtype": "BOOLEAN", - "value": "0", - "data": "&Obj.Enable1" - }, "60664": { "otype": "VAR", "name": "ActualPosition", diff --git a/Firmware/lib/soes/objectlist.c b/Firmware/lib/soes/objectlist.c index af63550..6603d45 100755 --- a/Firmware/lib/soes/objectlist.c +++ b/Firmware/lib/soes/objectlist.c @@ -27,10 +27,6 @@ static const char acName1603[] = "StepGenIn2"; static const char acName1603_00[] = "Max SubIndex"; static const char acName1603_01[] = "CommandedPosition"; static const char acName1603_02[] = "StepsPerMM"; -static const char acName1604[] = "Enable1"; -static const char acName1604_00[] = "Max SubIndex"; -static const char acName1604_01[] = "Enable1"; -static const char acName1604_02[] = "Padding 1"; static const char acName1A00[] = "EncPos"; static const char acName1A00_00[] = "Max SubIndex"; static const char acName1A00_01[] = "EncPos"; @@ -52,6 +48,18 @@ static const char acName1A05_01[] = "ActualPosition"; static const char acName1A06[] = "StepGenOut2"; static const char acName1A06_00[] = "Max SubIndex"; static const char acName1A06_01[] = "ActualPosition"; +static const char acName1A07[] = "D1"; +static const char acName1A07_00[] = "Max SubIndex"; +static const char acName1A07_01[] = "D1"; +static const char acName1A08[] = "D2"; +static const char acName1A08_00[] = "Max SubIndex"; +static const char acName1A08_01[] = "D2"; +static const char acName1A09[] = "D3"; +static const char acName1A09_00[] = "Max SubIndex"; +static const char acName1A09_01[] = "D3"; +static const char acName1A0A[] = "D4"; +static const char acName1A0A_00[] = "Max SubIndex"; +static const char acName1A0A_01[] = "D4"; static const char acName1C00[] = "Sync Manager Communication Type"; static const char acName1C00_00[] = "Max SubIndex"; static const char acName1C00_01[] = "Communications Type SM0"; @@ -64,7 +72,6 @@ static const char acName1C12_01[] = "PDO Mapping"; static const char acName1C12_02[] = "PDO Mapping"; static const char acName1C12_03[] = "PDO Mapping"; static const char acName1C12_04[] = "PDO Mapping"; -static const char acName1C12_05[] = "PDO Mapping"; static const char acName1C13[] = "Sync Manager 3 PDO Assignment"; static const char acName1C13_00[] = "Max SubIndex"; static const char acName1C13_01[] = "PDO Mapping"; @@ -74,6 +81,10 @@ static const char acName1C13_04[] = "PDO Mapping"; static const char acName1C13_05[] = "PDO Mapping"; static const char acName1C13_06[] = "PDO Mapping"; static const char acName1C13_07[] = "PDO Mapping"; +static const char acName1C13_08[] = "PDO Mapping"; +static const char acName1C13_09[] = "PDO Mapping"; +static const char acName1C13_10[] = "PDO Mapping"; +static const char acName1C13_11[] = "PDO Mapping"; static const char acName6000[] = "EncPos"; static const char acName6001[] = "EncFrequency"; static const char acName6002[] = "DiffT"; @@ -85,6 +96,10 @@ static const char acName6005_01[] = "ActualPosition"; static const char acName6006[] = "StepGenOut2"; static const char acName6006_00[] = "Max SubIndex"; static const char acName6006_01[] = "ActualPosition"; +static const char acName6007[] = "D1"; +static const char acName6008[] = "D2"; +static const char acName6009[] = "D3"; +static const char acName600A[] = "D4"; static const char acName7000[] = "EncPosScale"; static const char acName7001[] = "IndexLatchEnable"; static const char acName7002[] = "StepGenIn1"; @@ -95,7 +110,6 @@ static const char acName7003[] = "StepGenIn2"; static const char acName7003_00[] = "Max SubIndex"; static const char acName7003_01[] = "CommandedPosition"; static const char acName7003_02[] = "StepsPerMM"; -static const char acName7004[] = "Enable1"; const _objd SDO1000[] = { @@ -143,12 +157,6 @@ const _objd SDO1603[] = {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1603_01, 0x70030140, NULL}, {0x02, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1603_02, 0x70030210, NULL}, }; -const _objd SDO1604[] = -{ - {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1604_00, 2, NULL}, - {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1604_01, 0x70040001, NULL}, - {0x02, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1604_02, 0x00000007, NULL}, -}; const _objd SDO1A00[] = { {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A00_00, 1, NULL}, @@ -184,6 +192,26 @@ const _objd SDO1A06[] = {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A06_00, 1, NULL}, {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A06_01, 0x60060140, NULL}, }; +const _objd SDO1A07[] = +{ + {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A07_00, 1, NULL}, + {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A07_01, 0x60070020, NULL}, +}; +const _objd SDO1A08[] = +{ + {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A08_00, 1, NULL}, + {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A08_01, 0x60080020, NULL}, +}; +const _objd SDO1A09[] = +{ + {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A09_00, 1, NULL}, + {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A09_01, 0x60090020, NULL}, +}; +const _objd SDO1A0A[] = +{ + {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A0A_00, 1, NULL}, + {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A0A_01, 0x600A0020, NULL}, +}; const _objd SDO1C00[] = { {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C00_00, 4, NULL}, @@ -194,16 +222,15 @@ const _objd SDO1C00[] = }; const _objd SDO1C12[] = { - {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C12_00, 5, NULL}, + {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C12_00, 4, NULL}, {0x01, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_01, 0x1600, NULL}, {0x02, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_02, 0x1601, NULL}, {0x03, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_03, 0x1602, NULL}, {0x04, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_04, 0x1603, NULL}, - {0x05, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_05, 0x1604, NULL}, }; const _objd SDO1C13[] = { - {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C13_00, 7, NULL}, + {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C13_00, 11, NULL}, {0x01, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_01, 0x1A00, NULL}, {0x02, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_02, 0x1A01, NULL}, {0x03, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_03, 0x1A02, NULL}, @@ -211,6 +238,10 @@ const _objd SDO1C13[] = {0x05, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_05, 0x1A04, NULL}, {0x06, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_06, 0x1A05, NULL}, {0x07, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_07, 0x1A06, NULL}, + {0x08, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_08, 0x1A07, NULL}, + {0x09, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_09, 0x1A08, NULL}, + {0x10, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_10, 0x1A09, NULL}, + {0x11, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_11, 0x1A0A, NULL}, }; const _objd SDO6000[] = { @@ -242,6 +273,22 @@ const _objd SDO6006[] = {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName6006_00, 1, NULL}, {0x01, DTYPE_REAL64, 64, ATYPE_RO, acName6006_01, 0, &Obj.StepGenOut2.ActualPosition}, }; +const _objd SDO6007[] = +{ + {0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_TXPDO, acName6007, 0, &Obj.D1}, +}; +const _objd SDO6008[] = +{ + {0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_TXPDO, acName6008, 0, &Obj.D2}, +}; +const _objd SDO6009[] = +{ + {0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_TXPDO, acName6009, 0, &Obj.D3}, +}; +const _objd SDO600A[] = +{ + {0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_TXPDO, acName600A, 0, &Obj.D4}, +}; const _objd SDO7000[] = { {0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_RXPDO, acName7000, 0, &Obj.EncPosScale}, @@ -262,10 +309,6 @@ const _objd SDO7003[] = {0x01, DTYPE_REAL64, 64, ATYPE_RO, acName7003_01, 0, &Obj.StepGenIn2.CommandedPosition}, {0x02, DTYPE_INTEGER16, 16, ATYPE_RO, acName7003_02, 0, &Obj.StepGenIn2.StepsPerMM}, }; -const _objd SDO7004[] = -{ - {0x0, DTYPE_BOOLEAN, 1, ATYPE_RO | ATYPE_RXPDO, acName7004, 0, &Obj.Enable1}, -}; const _objectlist SDOobjects[] = { @@ -278,7 +321,6 @@ const _objectlist SDOobjects[] = {0x1601, OTYPE_RECORD, 1, 0, acName1601, SDO1601}, {0x1602, OTYPE_RECORD, 2, 0, acName1602, SDO1602}, {0x1603, OTYPE_RECORD, 2, 0, acName1603, SDO1603}, - {0x1604, OTYPE_RECORD, 2, 0, acName1604, SDO1604}, {0x1A00, OTYPE_RECORD, 1, 0, acName1A00, SDO1A00}, {0x1A01, OTYPE_RECORD, 1, 0, acName1A01, SDO1A01}, {0x1A02, OTYPE_RECORD, 1, 0, acName1A02, SDO1A02}, @@ -286,9 +328,13 @@ const _objectlist SDOobjects[] = {0x1A04, OTYPE_RECORD, 1, 0, acName1A04, SDO1A04}, {0x1A05, OTYPE_RECORD, 1, 0, acName1A05, SDO1A05}, {0x1A06, OTYPE_RECORD, 1, 0, acName1A06, SDO1A06}, + {0x1A07, OTYPE_RECORD, 1, 0, acName1A07, SDO1A07}, + {0x1A08, OTYPE_RECORD, 1, 0, acName1A08, SDO1A08}, + {0x1A09, OTYPE_RECORD, 1, 0, acName1A09, SDO1A09}, + {0x1A0A, OTYPE_RECORD, 1, 0, acName1A0A, SDO1A0A}, {0x1C00, OTYPE_ARRAY, 4, 0, acName1C00, SDO1C00}, - {0x1C12, OTYPE_ARRAY, 5, 0, acName1C12, SDO1C12}, - {0x1C13, OTYPE_ARRAY, 7, 0, acName1C13, SDO1C13}, + {0x1C12, OTYPE_ARRAY, 4, 0, acName1C12, SDO1C12}, + {0x1C13, OTYPE_ARRAY, 11, 0, acName1C13, SDO1C13}, {0x6000, OTYPE_VAR, 0, 0, acName6000, SDO6000}, {0x6001, OTYPE_VAR, 0, 0, acName6001, SDO6001}, {0x6002, OTYPE_VAR, 0, 0, acName6002, SDO6002}, @@ -296,10 +342,13 @@ const _objectlist SDOobjects[] = {0x6004, OTYPE_VAR, 0, 0, acName6004, SDO6004}, {0x6005, OTYPE_RECORD, 1, 0, acName6005, SDO6005}, {0x6006, OTYPE_RECORD, 1, 0, acName6006, SDO6006}, + {0x6007, OTYPE_VAR, 0, 0, acName6007, SDO6007}, + {0x6008, OTYPE_VAR, 0, 0, acName6008, SDO6008}, + {0x6009, OTYPE_VAR, 0, 0, acName6009, SDO6009}, + {0x600A, OTYPE_VAR, 0, 0, acName600A, SDO600A}, {0x7000, OTYPE_VAR, 0, 0, acName7000, SDO7000}, {0x7001, OTYPE_VAR, 0, 0, acName7001, SDO7001}, {0x7002, OTYPE_RECORD, 2, 0, acName7002, SDO7002}, {0x7003, OTYPE_RECORD, 2, 0, acName7003, SDO7003}, - {0x7004, OTYPE_VAR, 0, 0, acName7004, SDO7004}, {0xffff, 0xff, 0xff, 0xff, NULL, NULL} }; diff --git a/Firmware/lib/soes/utypes.h b/Firmware/lib/soes/utypes.h index cd93b85..97fcd62 100755 --- a/Firmware/lib/soes/utypes.h +++ b/Firmware/lib/soes/utypes.h @@ -26,6 +26,10 @@ typedef struct { double ActualPosition; } StepGenOut2; + int32_t D1; + int32_t D2; + int32_t D3; + int32_t D4; /* Outputs */ @@ -41,7 +45,6 @@ typedef struct double CommandedPosition; int16_t StepsPerMM; } StepGenIn2; - uint8_t Enable1; } _Objects;