diff --git a/app/MDK-ARM/app.uvguix.h_zha b/app/MDK-ARM/app.uvguix.h_zha
index cc1ae30..fcf398f 100644
--- a/app/MDK-ARM/app.uvguix.h_zha
+++ b/app/MDK-ARM/app.uvguix.h_zha
@@ -530,7 +530,7 @@
0
16
- 03000000960200008D060000D5020000
+ 03000000960200008D060000A7030000
16
@@ -1150,7 +1150,7 @@
0
16
- 0300000066000000F501000034030000
+ 0300000066000000F501000062020000
16
@@ -1170,7 +1170,7 @@
0
16
- 03000000960200008D060000D5020000
+ 03000000960200008D060000A7030000
16
@@ -1190,7 +1190,7 @@
0
16
- 03000000960200008D060000D5020000
+ 03000000960200008D060000A7030000
16
@@ -1250,7 +1250,7 @@
0
16
- 03000000960200008D060000D5020000
+ 03000000960200008D060000A7030000
16
@@ -1270,7 +1270,7 @@
0
16
- 03000000960200008D060000D5020000
+ 03000000960200008D060000A7030000
16
@@ -1799,14 +1799,14 @@
3312
- 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000D9000000DC040000DD000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D600000066000000DC040000F0000000D60000004F000000DC040000D90000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000013020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000A04000066000000DC0400002A0200000A0400004F000000DC0400001302000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF80100004F000000FC0100007B0200000100000002000010040000000100000030FDFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F801000064030000000000004F000000F80100007B0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000FF010000DC0400000302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000001A020000DC040000B80200000000000003020000DC040000A102000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000302000072020000A102000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000007B020000900600007F0200000100000001000010040000000100000007FDFFFF6D000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006803000090060000D7030000000000007F02000090060000C00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
+ 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000D9000000DC040000DD000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D600000066000000DC040000F0000000D60000004F000000DC040000D90000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000013020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000A04000066000000DC0400002A0200000A0400004F000000DC0400001302000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF80100004F000000FC0100007B0200000100000002000010040000000100000030FDFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F801000092020000000000004F000000F80100007B0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000FF010000DC0400000302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000001A020000DC040000B80200000000000003020000DC040000A102000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000302000072020000A102000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000007B020000900600007F0200000100000001000010040000000100000007FDFFFF6D000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000009602000090060000D7030000000000007F02000090060000C00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
59392
File
2537
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
1423
@@ -1822,7 +1822,7 @@
Build
966
- 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000036170709600000000000000010003617070000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+ 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000036170709600000000000000010003617070000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
583
@@ -1838,7 +1838,7 @@
Debug
2373
- 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+ 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
898
@@ -3651,9 +3651,9 @@
..\..\src\umain.cpp
- 23
+ 9
127
- 154
+ 155
1
0
@@ -3670,7 +3670,7 @@
..\..\src\lncubator_temperature_control_service.hpp
0
- 17
+ 26
55
1
diff --git a/dep/libiflytop_micro b/dep/libiflytop_micro
index 0e0fbea..cffbfd7 160000
--- a/dep/libiflytop_micro
+++ b/dep/libiflytop_micro
@@ -1 +1 @@
-Subproject commit 0e0fbea74859e71d34d2ccf6169b0da763fb95a4
+Subproject commit cffbfd7402411697415c57cc1dae7ce82d197827
diff --git a/src/board/hardware.cpp b/src/board/hardware.cpp
index 6edc82f..51e3cb2 100644
--- a/src/board/hardware.cpp
+++ b/src/board/hardware.cpp
@@ -335,8 +335,8 @@ void Hardware::tmc_init() {
#endif
m_tmc.tmc4361motor1.initialize(MOTOR_1_TMC4361A_CHANNEL, TMC4361A::IC_TMC2160, tmc4361aconfig);
- m_tmc.tmc4361motor1.setMaximumAcceleration(300000);
- m_tmc.tmc4361motor1.setMaximumDeceleration(300000);
+ m_tmc.tmc4361motor1.setMaximumAcceleration(REG_MOTOR_CTRL_ACCELERATION);
+ m_tmc.tmc4361motor1.setMaximumDeceleration(REG_MOTOR_CTRL_DECELERATION);
HAL_Delay(100);
// 使能电机
@@ -348,9 +348,8 @@ void Hardware::tmc_init() {
if (ic4361Version != 2) {
ZLOGE(TAG, "TMC4361 or TMC2160 is not normal");
}
- m_tmc.tmc4361motor1.rotate(300000);
-
#if TEST_TMC_ENCODER_DIRECTION
+ m_tmc.tmc4361motor1.rotate(300000);
while (true) {
HAL_Delay(100);
ZLOGI(TAG, "TMC4361A: XACTUAL:%d ENC_POS:%d DIFF:%d", //
diff --git a/src/board/project_board.hpp b/src/board/project_board.hpp
index 3940bc7..93fceaf 100644
--- a/src/board/project_board.hpp
+++ b/src/board/project_board.hpp
@@ -59,23 +59,23 @@ typedef enum {
0x1029 温度传感器4-数值
#endif
-#define REG_REBOOT_FLAG 0x0000 // 重启标识
-#define REG_EXCEPTION_FLAG 0x0100 // 异常标志位
-#define REG_TEMPERATURE_CTRL_KP 0x1000 // 温度控制PID:P (单位0.01)
-#define REG_TEMPERATURE_CTRL_KI 0x1001 // 温度控制PID:I (单位0.01)
-#define REG_TEMPERATURE_CTRL_KD 0x1002 // 温度控制PID:D (单位0.01)
-#define REG_TEMPERATURE_CTRL_ERROR_LIMIT 0x1003 // 积分数值限制
-#define REG_TEMPERATURE_CTRL_MAX_OUTPUT 0x1004 // PID输出上限
-#define REG_TEMPERATURE_CTRL_MIN_OUTPUT 0x1005 // PID输出下限
-#define REG_TEMPERATURE_CTRL_MAIN_FAN_SPEED_AUTO 0x1006 // 自动控温时主风扇风速
-#define REG_TEMPERATURE_CTRL_SUB_FAN_SPEED_AUTO 0x1007 // 自动控温时次风扇风速
+#define REG_REBOOT_FLAG 0x0000 // 重启标识
+#define REG_EXCEPTION_FLAG 0x0100 // 异常标志位
+#define REG_TEMPERATURE_CTRL_KP 0x1000 // 温度控制PID:P (单位0.01)
+#define REG_TEMPERATURE_CTRL_KI 0x1001 // 温度控制PID:I (单位0.01)
+#define REG_TEMPERATURE_CTRL_KD 0x1002 // 温度控制PID:D (单位0.01)
+#define REG_TEMPERATURE_CTRL_ERROR_LIMIT 0x1003 // 积分数值限制
+#define REG_TEMPERATURE_CTRL_MAX_OUTPUT 0x1004 // PID输出上限
+#define REG_TEMPERATURE_CTRL_MIN_OUTPUT 0x1005 // PID输出下限
+#define REG_TEMPERATURE_CTRL_MAIN_FAN_SPEED_AUTO 0x1006 // 自动控温时主风扇风速
+#define REG_TEMPERATURE_CTRL_SUB_FAN_SPEED_AUTO 0x1007 // 自动控温时次风扇风速
-#define REG_TEMPERATURE_CTRL_TARGET_TEMPERATURE 0x1011 // 控温区域-目标温度
-#define REG_TEMPERATURE_CTRL_MODE 0x1012 // 控温区域-控制模式
-#define REG_TEMPERATURE_CTRL_MANUAL_HEAT_PWM 0x1013 // 手动控制加热片PWM数值
-#define REG_TEMPERATURE_CTRL_MANUAL_MAIN_FAN_PWM 0x1014 // 手动控制主风扇PWM数值
-#define REG_TEMPERATURE_CTRL_MANUAL_SUB_FAN_PWM 0x1015 // 手动控制次风扇PWM数值
-#define REG_TEMPERATURE_CTRL_DUMPVALUE 0x1016 // 是否打印PID调试信息
+#define REG_TEMPERATURE_CTRL_TARGET_TEMPERATURE 0x1011 // 控温区域-目标温度
+#define REG_TEMPERATURE_CTRL_MODE 0x1012 // 控温区域-控制模式
+#define REG_TEMPERATURE_CTRL_MANUAL_HEAT_PWM 0x1013 // 手动控制加热片PWM数值
+#define REG_TEMPERATURE_CTRL_MANUAL_MAIN_FAN_PWM 0x1014 // 手动控制主风扇PWM数值
+#define REG_TEMPERATURE_CTRL_MANUAL_SUB_FAN_PWM 0x1015 // 手动控制次风扇PWM数值
+#define REG_TEMPERATURE_CTRL_DUMPVALUE 0x1016 // 是否打印PID调试信息
#define REG_TEMPERATURE_CTRL_MAIN_FAN_SPEED 0x1021 // 控温区域-散热区大风扇转速
#define REG_TEMPERATURE_CTRL_SUB_FAN_SPEED 0x1022 // 控温区域-散热区小风扇转速
@@ -87,6 +87,24 @@ typedef enum {
#define REG_TEMPERATURE_CTRL_SENSOR3_TEMPERATURE 0x1028 // 温度传感器3-数值
#define REG_TEMPERATURE_CTRL_SENSOR4_TEMPERATURE 0x1029 // 温度传感器4-数值
+#define REG_MOTOR_CTRL_TARGET_POSITION1 0x2001 // 设置相对于入口目标位置(转到第几个子仓位,从0开始)
+#define REG_MOTOR_CTRL_TARGET_POSITION2 0x2002 // 设置相对于出口目标位置(转到第几个子仓位,从0开始)
+#define REG_MOTOR_CTRL_BACK_TO_HOME 0x2003 // BackToHome,写1触发动作
+#define REG_MOTOR_CTRL_ROATE_PULSE 0x2004 // 转多少个脉冲(正数为顺时针转,负数为逆时针转)
+#define REG_MOTOR_CTRL_STOP 0x2005 // 停止电机运动
+#define REG_MOTOR_CTRL_CALIBRATE_POSITION 0x2006 // 设置当前位置为0号子仓位对其入口
+#define REG_MOTOR_CTRL_MAX_SPEED 0x2010 // 最高转速
+#define REG_MOTOR_CTRL_ENTRY_POSITION 0x2011 // 入口相对于零点的位置(出口相对于零点位置,出口位置会自己计算出来)
+#define REG_MOTOR_CTRL_EXIT_POSITION 0x2012 // 出口相对于零点的位置
+#define REG_MOTOR_CTRL_ACCELERATION 0x2013 // 加速度
+#define REG_MOTOR_CTRL_DECELERATION 0x2014 // 减速度
+#define REG_MOTOR_CTRL_CURRENT_POSITION1 0x2021 // 当前位置(相对于入口处于第几个子仓位)
+#define REG_MOTOR_CTRL_CURRENT_POSITION2 0x2022 // 当前位置(相对于出口口处于第几个子仓位)
+#define REG_MOTOR_CTRL_CURRENT_POSITION3 0x2023 // 当前位置(相对于零点,单位是脉冲数)
+#define REG_MOTOR_CTRL_CURRENT_POSITION4 0x2024 // 当前位置(单位是脉冲)
+#define REG_MOTOR_CTRL_CURRENT_ACTION 0x2025 // 当前正在执行的动作
+#define REG_MOTOR_CTRL_CURRENT_STATE 0x2026 // 当前动作是否完成 0:空闲,1:正在执行,2:执行完成
+
/*******************************************************************************
* 温度控制相关常数 *
*******************************************************************************/
@@ -101,3 +119,13 @@ typedef enum {
#define TEMPERATURE_CTRL_MIN_OUTPUT (-50) // 限制制冷功率,如果出现制冷的时候,反而制热了,则增大这个值
#define TEMPERATURE_CTRL_DUMPVALUE (false) // 是否打印PID调试信息
+
+/*******************************************************************************
+ * 孵育区转盘相关常数 *
+ *******************************************************************************/
+#define ONECIRCLE_USTEP_NUM (256 * 200 * 150) // 256:步长,200:电机分辨率,150:减速比
+#define REG_MOTOR_CTRL_MAX_SPEED_DEFAULT (500000) // 500kpps
+#define SUB_POSITION_NUM (20) // 子仓位数量
+#define ONE_SUB_POSITION_WIDTH ((ONECIRCLE_USTEP_NUM) / SUB_POSITION_NUM) //
+#define REG_MOTOR_CTRL_ACCELERATION_DEFAULT 300000
+#define REG_MOTOR_CTRL_DECELERATION_DEFAULT 300000
\ No newline at end of file
diff --git a/src/lncubator_rotating_control_service.cpp b/src/lncubator_rotating_control_service.cpp
index 5292204..11d9027 100644
--- a/src/lncubator_rotating_control_service.cpp
+++ b/src/lncubator_rotating_control_service.cpp
@@ -5,32 +5,45 @@ using namespace iflytop;
#define UPDATE_ZERO_POSITION_ALWAYS 1
-const uint32_t LncubatorRotatingControlService::mc_onecircle_ustep_num = (256 * 200 * 150);
-const uint32_t LncubatorRotatingControlService::mc_default_velocity = 500000; // 500kpps
-const uint32_t LncubatorRotatingControlService::mc_one_sub_position_width = (256 * 200 * 50) / 20;
-
LncubatorRotatingControlService::LncubatorRotatingControlService() {
m_hardware = NULL;
m_motor = NULL;
m_os = NULL;
- m_workfinished = false;
+ m_workfinished = true;
m_dowhat = kidle;
- m_maxVelocity = mc_default_velocity;
+ m_maxVelocity = 0;
m_inletPosition = 0;
- m_outletPosition = m_inletPosition + mc_one_sub_position_width / 2;
+ m_outletPosition = computeOutletPosition(m_inletPosition);
m_jobStep = 0;
m_hasCalibratedHomePosition = false;
}
+
+int32_t LncubatorRotatingControlService::computeOutletPosition(int32_t inletPosition) {
+ int32_t outletPosition = normalizePosition(inletPosition + ONECIRCLE_USTEP_NUM / 2);
+ return outletPosition;
+}
+
LncubatorRotatingControlService::~LncubatorRotatingControlService() {}
+int32_t LncubatorRotatingControlService::getVelocity() { return m_maxVelocity; }
+int32_t LncubatorRotatingControlService::getInletPosition() { return m_inletPosition; }
+int32_t LncubatorRotatingControlService::getOutletPosition() { return m_outletPosition; }
+
+void LncubatorRotatingControlService::setInletPosition(int32_t inletPosition) {
+ m_inletPosition = inletPosition;
+ m_outletPosition = computeOutletPosition(m_inletPosition);
+}
+void LncubatorRotatingControlService::setoutletPosition(int32_t outletPosition) { //
+ m_outletPosition = outletPosition;
+}
void LncubatorRotatingControlService::initialize(Hardware* hardware) { //
m_hardware = hardware;
m_motor = m_hardware->tmc_get_motor1();
m_os = m_hardware;
- m_workfinished = false;
+ m_workfinished = true;
m_dowhat = kidle;
- m_maxVelocity = mc_default_velocity;
+ m_maxVelocity = 0;
m_inletPosition = 0;
- m_outletPosition = m_inletPosition + mc_one_sub_position_width / 2;
+ m_outletPosition = computeOutletPosition(m_inletPosition);
/**
* @brief 电机必须工作在位置模式
@@ -44,13 +57,40 @@ void LncubatorRotatingControlService::setVelocity(int32_t velocityMax) { m_maxVe
void LncubatorRotatingControlService::registerListener(LncubatorRotatingControlServiceListener* listener) { //
m_listener = listener;
}
+
+int32_t LncubatorRotatingControlService::getPositionPulse() {
+ int32_t position = tmc_getPosition();
+ return position;
+}
+
+int32_t LncubatorRotatingControlService::computePositionIndex(int32_t position) { //
+ position = normalizePosition(position);
+ int index = position / ONE_SUB_POSITION_WIDTH;
+ int remainder = position % ONE_SUB_POSITION_WIDTH;
+ if (remainder > ONE_SUB_POSITION_WIDTH / 2) {
+ index++;
+ }
+ return normalizeIndex(index);
+}
+
+int32_t LncubatorRotatingControlService::getPositionIndex(refpoint_t refpoint) {
+ int32_t position = tmc_getPosition();
+ if (refpoint == REFPOINT_TYPE_INLET) {
+ return computePositionIndex(position - m_inletPosition);
+ } else if (refpoint == REFPOINT_TYPE_OUTLET) {
+ return computePositionIndex(position - m_outletPosition);
+ }
+ return 0;
+}
void LncubatorRotatingControlService::calibrationPosition(refpoint_t refpoint) {
/**
* @brief 此时是孵育船1对其了入口
*/
if (refpoint == REFPOINT_TYPE_INLET) {
m_inletPosition = tmc_getPosition();
- m_outletPosition = normalizePosition(m_inletPosition + mc_onecircle_ustep_num / 2);
+ m_outletPosition = computeOutletPosition(m_inletPosition);
+ } else if (refpoint == REFPOINT_TYPE_INLET) {
+ m_outletPosition = tmc_getPosition();
}
}
/*******************************************************************************
@@ -66,18 +106,35 @@ void LncubatorRotatingControlService::tmc_roateToPosition(int32_t position, uint
}
int32_t LncubatorRotatingControlService::normalizePosition(int32_t position) {
while (true) {
- if (position > mc_onecircle_ustep_num)
- position = position - mc_onecircle_ustep_num;
+ if (position >= ONECIRCLE_USTEP_NUM)
+ position = position - ONECIRCLE_USTEP_NUM;
else if (position < 0)
- position = position + mc_onecircle_ustep_num;
+ position = position + ONECIRCLE_USTEP_NUM;
else
break;
}
return position;
}
-void LncubatorRotatingControlService::tmc_moveBy(int32_t relativePosition, uint32_t velocity) { m_motor->moveBy(relativePosition, velocity); }
-bool LncubatorRotatingControlService::hardware_isHomeRefSwitchTriggered() { return m_hardware->tmc_home_ref_switch_get_state(); }
+int32_t LncubatorRotatingControlService::normalizeIndex(int32_t index) {
+ while (true) {
+ if (index >= SUB_POSITION_NUM)
+ index = index - SUB_POSITION_NUM;
+ else if (index < 0)
+ index = index + SUB_POSITION_NUM;
+ else
+ break;
+ }
+ return index;
+}
+void LncubatorRotatingControlService::tmc_moveBy( //
+ int32_t relativePosition, uint32_t velocity) { //
+ m_motor->moveBy(relativePosition, velocity);
+}
+
+bool LncubatorRotatingControlService::hardware_isHomeRefSwitchTriggered() { //
+ return m_hardware->tmc_home_ref_switch_get_state();
+}
/*******************************************************************************
* JobBasic *
@@ -115,6 +172,7 @@ void LncubatorRotatingControlService::changeState(dowhat_t tostate) {
m_workfinished = true;
} else {
m_workfinished = false;
+ if (m_listener) m_listener->LncubatorRotatingControlService_startWorking(tostate);
}
}
@@ -138,7 +196,7 @@ void LncubatorRotatingControlService::doRotateToHomeJobStep1() {
*/
ZLOGI(TAG, "doRotateToHomeJobStep1, rotate to +10 degree,leave from home");
m_jobStep = 1;
- tmc_moveBy(mc_onecircle_ustep_num / 36, m_maxVelocity); // 此时处于零点位置,先顺时针转10度
+ tmc_moveBy(ONECIRCLE_USTEP_NUM / 10, m_maxVelocity); // 此时处于零点位置,先顺时针转10度
}
void LncubatorRotatingControlService::doRotateToHomeJobStep2() {
/**
@@ -146,7 +204,7 @@ void LncubatorRotatingControlService::doRotateToHomeJobStep2() {
*/
ZLOGI(TAG, "doRotateToHomeJobStep2, rotate to home");
m_jobStep = 2;
- tmc_moveBy(-mc_onecircle_ustep_num, m_maxVelocity);
+ tmc_moveBy(-ONECIRCLE_USTEP_NUM, m_maxVelocity);
}
void LncubatorRotatingControlService::doRotateToHomeJob(interevent_t event) {
if (event == kPeriodicJobEvent) {
@@ -179,10 +237,10 @@ void LncubatorRotatingControlService::moveToSubPosition(refpoint_t refpoint, int
changeState(kmoveSubPositionJob);
// 出口
if (refpoint == REFPOINT_TYPE_OUTLET) {
- int32_t targetPosition = m_outletPosition + positionIndex * mc_one_sub_position_width;
+ int32_t targetPosition = m_outletPosition + positionIndex * ONE_SUB_POSITION_WIDTH;
tmc_roateToPosition(targetPosition, m_maxVelocity);
} else if (refpoint == REFPOINT_TYPE_INLET) {
- int32_t targetPosition = m_inletPosition + positionIndex * mc_one_sub_position_width;
+ int32_t targetPosition = m_inletPosition + positionIndex * ONE_SUB_POSITION_WIDTH;
tmc_roateToPosition(targetPosition, m_maxVelocity);
} else {
ZLOGE(TAG, "refpoint error");
@@ -210,8 +268,8 @@ void LncubatorRotatingControlService::moveBy(int32_t pluseCount) {
position += pluseCount;
if (position <= 0) {
position = 0;
- } else if (position > mc_onecircle_ustep_num) {
- position = mc_onecircle_ustep_num;
+ } else if (position > ONECIRCLE_USTEP_NUM) {
+ position = ONECIRCLE_USTEP_NUM;
}
tmc_roateToPosition(position, m_maxVelocity);
}
diff --git a/src/lncubator_rotating_control_service.hpp b/src/lncubator_rotating_control_service.hpp
index 8adc0b3..a7967b6 100644
--- a/src/lncubator_rotating_control_service.hpp
+++ b/src/lncubator_rotating_control_service.hpp
@@ -30,6 +30,7 @@ class LncubatorRotatingControlServiceListener {
virtual void LncubatorRotatingControlService_onMoveToHomeJobFinished() = 0;
virtual void LncubatorRotatingControlService_onMoveSubPositionJobFinished() = 0;
virtual void LncubatorRotatingControlService_onMoveByJobFinished() = 0;
+ virtual void LncubatorRotatingControlService_startWorking(int32_t dowhat) = 0;
};
class LncubatorRotatingControlService : public HardwareListener, //
@@ -40,20 +41,14 @@ class LncubatorRotatingControlService : public HardwareListener, //
REFPOINT_TYPE_INLET, // 入口
REFPOINT_TYPE_ZERO, // 零点
} refpoint_t;
- /*******************************************************************************
- * 常量配置 *
- *******************************************************************************/
- static const uint32_t mc_onecircle_ustep_num;
- static const uint32_t mc_default_velocity;
- static const uint32_t mc_one_sub_position_width;
-
- private:
typedef enum {
kidle,
kmoveSubPositionJob,
kmoveToHomeJob,
kmoveByJob,
} dowhat_t;
+
+ private:
typedef enum {
kPeriodicJobEvent,
kHomeSwitchTriggeredEvent,
@@ -88,10 +83,17 @@ class LncubatorRotatingControlService : public HardwareListener, //
void periodicJob();
void setVelocity(int32_t velocityMax);
- void setInletPositionAndOutletPosition(int32_t inletPosition, int32_t outletPosition);
- int32_t getVelocity() { return m_maxVelocity; }
- int32_t getInletPosition() { return m_inletPosition; }
- int32_t getOutletPosition() { return m_outletPosition; }
+ int32_t getVelocity();
+ void setInletPosition(int32_t inletPosition);
+ int32_t getInletPosition();
+ void setoutletPosition(int32_t outletPosition);
+
+ int32_t getOutletPosition();
+ int32_t getPositionPulse();
+ int32_t getPositionIndex(refpoint_t refpoint);
+
+ bool isWorkFinished() { return m_workfinished; }
+ dowhat_t getDoWhat() { return m_dowhat; }
void moveToHome();
void moveBy(int32_t pluseCount);
@@ -104,7 +106,6 @@ class LncubatorRotatingControlService : public HardwareListener, //
* @param positionIndex 第几个位置
*/
void calibrationPosition(refpoint_t refpoint);
-
/*******************************************************************************
* OVERRIDE HardwareListener *
*******************************************************************************/
@@ -119,7 +120,6 @@ class LncubatorRotatingControlService : public HardwareListener, //
void doRotateToHomeJob(interevent_t event);
void doRotateToHomeJobStep1();
void doRotateToHomeJobStep2();
-
void doMoveToSubPositionJob(interevent_t event);
void doMoveByJob(interevent_t event);
void changeState(dowhat_t state);
@@ -129,6 +129,9 @@ class LncubatorRotatingControlService : public HardwareListener, //
void tmc_roateToPosition(int32_t position, uint32_t velocity);
void tmc_moveBy(int32_t relativePosition, uint32_t velocity);
int32_t normalizePosition(int32_t position);
+ int32_t normalizeIndex(int32_t index);
+ int32_t computePositionIndex(int32_t position);
+ int32_t computeOutletPosition(int32_t inletPosition);
bool hardware_isHomeRefSwitchTriggered();
};
diff --git a/src/umain.cpp b/src/umain.cpp
index 912c78a..51b4def 100644
--- a/src/umain.cpp
+++ b/src/umain.cpp
@@ -6,6 +6,8 @@
#include "libtrinamic/src/ic/tmc2160.hpp"
#include "libtrinamic\src\ic\tmc4361A.hpp"
//
+#include
+
#include "board/hardware.hpp"
#include "i2c.h"
#include "libiflytop_micro\stm32\basic\zsignal.hpp"
@@ -15,14 +17,14 @@
#include "lncubator_temperature_control_service.hpp"
#define TAG "main"
-#define ACTIVE_REG(reg, mask, initval) IflytopCanProtocolStackProcesser::activeReg(&IflytopCanStackConfig, reg, mask, initval)
-#define UPDATE_REG(reg, value, periodms) \
- { \
- static uint32_t lastReportTicket = 0; \
- if (m_hardware.hasPassedMS(lastReportTicket) > periodms) { \
- lastReportTicket = m_hardware.getTicket(); \
- m_protocolStack.writeRegValue(reg, value, false); \
- } \
+#define ACTIVE_REG(reg, mask, initval) IflytopCanProtocolStackProcesser::activeReg(&IflytopCanStackConfig, reg, mask, (initval))
+#define UPDATE_REG(reg, value, periodms) \
+ { \
+ static uint32_t lastReportTicket = 0; \
+ if (m_hardware.hasPassedMS(lastReportTicket) > (periodms + random(3))) { \
+ lastReportTicket = m_hardware.getTicket(); \
+ m_protocolStack.writeRegValue(reg, value, false); \
+ } \
}
using namespace iflytop;
@@ -51,6 +53,7 @@ class Main : public HardwareListener, //
virtual void LncubatorRotatingControlService_onMoveToHomeJobFinished();
virtual void LncubatorRotatingControlService_onMoveSubPositionJobFinished();
virtual void LncubatorRotatingControlService_onMoveByJobFinished();
+ virtual void LncubatorRotatingControlService_startWorking(int32_t dowhat);
/*******************************************************************************
* override HardwareListener *
@@ -67,9 +70,14 @@ class Main : public HardwareListener, //
virtual icps::error_t IflytopCanProtocolStack_onHostRegisterReadEvent( //
icps::Reg_t *reg, int32_t &value);
- virtual void IflytopCanProtocolStack_onRegisterValueAutoReportEvent(icps::Reg_t *reg, int32_t &value);
+ virtual void IflytopCanProtocolStack_onRegisterValueAutoReportEvent(icps::Reg_t *reg, int32_t &value);
};
+int random(int max) {
+ // TODO:使用STM32的随机数功能生成随机数
+ return 0 % max;
+}
+
/*******************************************************************************
* CODE IMPL *
*******************************************************************************/
@@ -139,6 +147,53 @@ icps::error_t Main::IflytopCanProtocolStack_onHostRegisterWriteEvent( //
} else if (reg->add == REG_TEMPERATURE_CTRL_DUMPVALUE) {
m_tempCtrl.setDumpValue((bool)newvalue);
}
+ // 赋予转盘控制
+ else if (reg->add == REG_MOTOR_CTRL_TARGET_POSITION1) {
+ if (m_rotatingCtrl.isWorkFinished()) {
+ m_rotatingCtrl.moveToSubPosition(m_rotatingCtrl.REFPOINT_TYPE_INLET, newvalue);
+ } else {
+ return icps::kDeviceBusy;
+ }
+ newvalue = 0;
+ } else if (reg->add == REG_MOTOR_CTRL_TARGET_POSITION2) {
+ if (m_rotatingCtrl.isWorkFinished()) {
+ m_rotatingCtrl.moveToSubPosition(m_rotatingCtrl.REFPOINT_TYPE_INLET, newvalue);
+ } else {
+ return icps::kDeviceBusy;
+ }
+ newvalue = 0;
+ } else if (reg->add == REG_MOTOR_CTRL_BACK_TO_HOME) {
+ if (m_rotatingCtrl.isWorkFinished()) {
+ m_rotatingCtrl.moveToHome();
+ } else {
+ return icps::kDeviceBusy;
+ }
+ } else if (reg->add == REG_MOTOR_CTRL_ROATE_PULSE) {
+ if (m_rotatingCtrl.getDoWhat() == m_rotatingCtrl.kmoveByJob || //
+ m_rotatingCtrl.getDoWhat() == m_rotatingCtrl.kidle) {
+ m_rotatingCtrl.moveBy(newvalue);
+ } else {
+ return icps::kDeviceBusy;
+ }
+ } else if (reg->add == REG_MOTOR_CTRL_STOP) {
+ m_rotatingCtrl.stop();
+ } else if (reg->add == REG_MOTOR_CTRL_CALIBRATE_POSITION) {
+ if (newvalue == 0) {
+ m_rotatingCtrl.calibrationPosition(m_rotatingCtrl.REFPOINT_TYPE_INLET);
+ } else if (newvalue == 1) {
+ m_rotatingCtrl.calibrationPosition(m_rotatingCtrl.REFPOINT_TYPE_OUTLET);
+ }
+ } else if (reg->add == REG_MOTOR_CTRL_MAX_SPEED) {
+ m_rotatingCtrl.setVelocity(newvalue);
+ } else if (reg->add == REG_MOTOR_CTRL_ENTRY_POSITION) {
+ m_rotatingCtrl.setInletPosition(newvalue);
+ } else if (reg->add == REG_MOTOR_CTRL_EXIT_POSITION) {
+ m_rotatingCtrl.setoutletPosition(newvalue);
+ } else if (reg->add == REG_MOTOR_CTRL_ACCELERATION) {
+ m_hardware.tmc_get_motor1()->setMaximumAcceleration(newvalue);
+ } else if (reg->add == REG_MOTOR_CTRL_DECELERATION) {
+ m_hardware.tmc_get_motor1()->setMaximumDeceleration(newvalue);
+ }
return icps::kSuccess;
}
@@ -183,14 +238,47 @@ void Main::initializeIflytopCanProtocolStackProcesser() {
ACTIVE_REG(REG_TEMPERATURE_CTRL_SENSOR2_TEMPERATURE /* */, icps::kr, 0);
ACTIVE_REG(REG_TEMPERATURE_CTRL_SENSOR3_TEMPERATURE /* */, icps::kr, 0);
ACTIVE_REG(REG_TEMPERATURE_CTRL_SENSOR4_TEMPERATURE /* */, icps::kr, 0);
+
+ /*******************************************************************************
+ * 孵育区转盘控制 *
+ *******************************************************************************/
+ ACTIVE_REG(REG_MOTOR_CTRL_TARGET_POSITION1 /* */, icps::kw, 0);
+ ACTIVE_REG(REG_MOTOR_CTRL_TARGET_POSITION2 /* */, icps::kw, 0);
+ ACTIVE_REG(REG_MOTOR_CTRL_BACK_TO_HOME /* */, icps::kw, 0);
+ ACTIVE_REG(REG_MOTOR_CTRL_ROATE_PULSE /* */, icps::kw, 0);
+ ACTIVE_REG(REG_MOTOR_CTRL_CALIBRATE_POSITION /* */, icps::kw, 0);
+
+ ACTIVE_REG(REG_MOTOR_CTRL_MAX_SPEED /* */, icps::kwr, REG_MOTOR_CTRL_MAX_SPEED_DEFAULT);
+ ACTIVE_REG(REG_MOTOR_CTRL_ENTRY_POSITION /* */, icps::kwr, 0);
+ ACTIVE_REG(REG_MOTOR_CTRL_EXIT_POSITION /* */, icps::kwr, ONECIRCLE_USTEP_NUM / 2);
+ ACTIVE_REG(REG_MOTOR_CTRL_ACCELERATION /* */, icps::kwr, REG_MOTOR_CTRL_ACCELERATION_DEFAULT);
+ ACTIVE_REG(REG_MOTOR_CTRL_DECELERATION /* */, icps::kwr, REG_MOTOR_CTRL_DECELERATION_DEFAULT);
+
+ ACTIVE_REG(REG_MOTOR_CTRL_CURRENT_POSITION1 /* */, icps::kr, 0);
+ ACTIVE_REG(REG_MOTOR_CTRL_CURRENT_POSITION2 /* */, icps::kr, SUB_POSITION_NUM / 2);
+ ACTIVE_REG(REG_MOTOR_CTRL_CURRENT_POSITION3 /* */, icps::kr, 0);
+ ACTIVE_REG(REG_MOTOR_CTRL_CURRENT_POSITION4 /* */, icps::kr, 0);
+ ACTIVE_REG(REG_MOTOR_CTRL_CURRENT_ACTION /* */, icps::kr, 0);
+ ACTIVE_REG(REG_MOTOR_CTRL_CURRENT_STATE /* */, icps::kr, 0);
}
void Main::LncubatorRotatingControlService_onException(exception_id_t exception) {}
-void Main::LncubatorRotatingControlService_onMoveToHomeJobFinished() {}
-void Main::LncubatorRotatingControlService_onMoveSubPositionJobFinished() {}
-void Main::LncubatorRotatingControlService_onMoveByJobFinished() {}
+void Main::LncubatorRotatingControlService_onMoveToHomeJobFinished() { //
+ m_protocolStack.writeRegValue(REG_MOTOR_CTRL_CURRENT_STATE, 1, false);
+}
+void Main::LncubatorRotatingControlService_onMoveSubPositionJobFinished() { //
+ m_protocolStack.writeRegValue(REG_MOTOR_CTRL_CURRENT_STATE, 1, false);
+}
+void Main::LncubatorRotatingControlService_onMoveByJobFinished() { //
+ m_protocolStack.writeRegValue(REG_MOTOR_CTRL_CURRENT_STATE, 1, false);
+}
+void Main::LncubatorRotatingControlService_startWorking(int32_t dowhat) { //
+ m_protocolStack.writeRegValue(REG_MOTOR_CTRL_CURRENT_STATE, 0, false);
+ m_protocolStack.writeRegValue(REG_MOTOR_CTRL_CURRENT_ACTION, dowhat, false);
+}
void Main::updateRegList() { //
+
UPDATE_REG(REG_TEMPERATURE_CTRL_MAIN_FAN_SPEED, m_hardware.fanReadState4(), 1000);
UPDATE_REG(REG_TEMPERATURE_CTRL_SUB_FAN_SPEED, m_hardware.fanReadState0to3(), 1000);
UPDATE_REG(REG_TEMPERATURE_CTRL_HEAT_TEMPERATURE, 0, 1000);
@@ -200,6 +288,13 @@ void Main::updateRegList() { //
UPDATE_REG(REG_TEMPERATURE_CTRL_SENSOR2_TEMPERATURE, m_hardware.temperature_get_temp(1) * 100, 1000);
UPDATE_REG(REG_TEMPERATURE_CTRL_SENSOR3_TEMPERATURE, m_hardware.temperature_get_temp(2) * 100, 1000);
UPDATE_REG(REG_TEMPERATURE_CTRL_SENSOR4_TEMPERATURE, m_hardware.temperature_get_temp(3) * 100, 1000);
+
+ UPDATE_REG(REG_MOTOR_CTRL_CURRENT_POSITION1, m_rotatingCtrl.getPositionIndex(m_rotatingCtrl.REFPOINT_TYPE_INLET), 100);
+ UPDATE_REG(REG_MOTOR_CTRL_CURRENT_POSITION2, m_rotatingCtrl.getPositionIndex(m_rotatingCtrl.REFPOINT_TYPE_OUTLET), 100);
+ // UPDATE_REG(REG_MOTOR_CTRL_CURRENT_POSITION3, m_rotatingCtrl.getPositionIndex(m_rotatingCtrl.REFPOINT_TYPE_HOME), 100);
+ UPDATE_REG(REG_MOTOR_CTRL_CURRENT_POSITION4, m_rotatingCtrl.getPositionPulse(), 100);
+ UPDATE_REG(REG_MOTOR_CTRL_CURRENT_ACTION, m_rotatingCtrl.getDoWhat(), 33);
+ UPDATE_REG(REG_MOTOR_CTRL_CURRENT_STATE, m_rotatingCtrl.isWorkFinished(), 33);
}
void Main::main(int argc, char const *argv[]) {
@@ -223,6 +318,8 @@ void Main::main(int argc, char const *argv[]) {
// 初始化转盘控制器
m_rotatingCtrl.initialize(&m_hardware);
m_rotatingCtrl.registerListener(this);
+ m_rotatingCtrl.setVelocity(m_protocolStack.readRegValue(REG_MOTOR_CTRL_MAX_SPEED));
+ m_rotatingCtrl.setInletPosition(m_protocolStack.readRegValue(REG_MOTOR_CTRL_ENTRY_POSITION));
while (true) {
m_hardware.periodicJob();