Ver Fonte

增加大牙盘参数转换,目前未测试正确性。

Dail há 1 ano atrás
pai
commit
93439ea313

BIN
.vs/ConsoleApp2/v17/.suo


+ 374 - 229
Program.cs

@@ -80,7 +80,7 @@ namespace ConsoleApp2
         static string CmdCode_To_CmdSave(byte[] Code)
         {
             string result = "";
-            byte[] input = new byte[47];
+            byte[] input = new byte[100];
             UInt32 crc_rel = 0;
             ushort DataLen = 0;
             input[0] = 0x55; input[1] = 0xAA; input[2] = 0x07; input[3] = 0x51; input[4] = 0x16;
@@ -164,21 +164,19 @@ namespace ConsoleApp2
                     fs.Close();
                     //建立字典,存放并获取每个命令的行号
                     Dictionary<string, int> DicRowNum = new Dictionary<string, int>();
+                    DicRowNum.Add("[型号]", 0);
+                    DicRowNum.Add("[SN号]", 0);
                     DicRowNum.Add("[校验码]", 0);
                     DicRowNum.Add("[自定义1]", 0);
                     DicRowNum.Add("[自定义2]", 0);
                     DicRowNum.Add("[自定义3]", 0);
-                    DicRowNum.Add("[用户参数1]", 0);
-                    DicRowNum.Add("[马达参数]", 0);
-                    DicRowNum.Add("[型号]", 0);
-                    DicRowNum.Add("[SN号]", 0);
                     DicRowNum.Add("[生产信息]", 0);
-                    DicRowNum.Add("[单力矩标定系数]", 0);
-                    DicRowNum.Add("[启动值]", 0);
-                    DicRowNum.Add("[用户参数2]", 0);
-                    DicRowNum.Add("[三力矩标定系数1]", 0);
-                    DicRowNum.Add("[三力矩标定系数2]", 0);
-                    DicRowNum.Add("[三力矩标定系数3]", 0);
+                    DicRowNum.Add("[马达信息]", 0);
+                    DicRowNum.Add("[整车参数]", 0);
+                    DicRowNum.Add("[力矩传感器参数]", 0);
+                    DicRowNum.Add("[其它传感器参数]", 0);
+                    DicRowNum.Add("[助力参数]", 0);
+
                     Dictionary<string, int> __dict = new Dictionary<string, int>(DicRowNum);
                     foreach (KeyValuePair<string, int> item in __dict)
                     {
@@ -188,7 +186,7 @@ namespace ConsoleApp2
                             {
                                 DicRowNum[item.Key] = arrText.IndexOf(cmd);
                                 break;
-                            }
+                            }                            
                         }
                     }
                     //开始遍历,转换每条指令对应的数据
@@ -206,9 +204,36 @@ namespace ConsoleApp2
                             {
                                 //写入命令功能
                                 file.WriteLine(index);
-                                var CmdCode = new byte[34];
+                                var CmdCode = new byte[100];
+                                Array.Clear(CmdCode, 0, CmdCode.Length);
                                 switch (index)
                                 {
+                                    case "[型号]":
+                                        {
+                                            CmdCode[0] = 0x22;
+                                            CmdCode[1] = 0x10;
+                                            string ModeString = arrText[rowNum + 1].ToString().Split(',')[1];
+                                            for (ushort i = 0; i < ((ModeString.Length > 16) ? 16 : ModeString.Length); i++)
+                                            {
+                                                CmdCode[2 + i] = (byte)ModeString[i];
+                                            }
+                                            //写入文件
+                                            file.WriteLine(CmdCode_To_CmdSave(CmdCode));
+                                            break;
+                                        }
+                                    case "[SN号]":
+                                        {
+                                            CmdCode[0] = 0x23;
+                                            CmdCode[1] = 0x10;
+                                            string SnString = arrText[rowNum + 1].ToString().Split(',')[1];
+                                            for (ushort i = 0; i < ((SnString.Length > 16) ? 16 : SnString.Length); i++)
+                                            {
+                                                CmdCode[2 + i] = (byte)SnString[i];
+                                            }
+                                            //写入文件
+                                            file.WriteLine(CmdCode_To_CmdSave(CmdCode));
+                                            break;
+                                        }
                                     case "[校验码]":
                                         {
                                             CmdCode[0] = 0x11;
@@ -218,6 +243,7 @@ namespace ConsoleApp2
                                             {
                                                 CmdCode[2 + i] = (byte)KeyString[i];
                                             }
+                                            //写入文件
                                             file.WriteLine(CmdCode_To_CmdSave(CmdCode));
                                             break;
                                         }
@@ -230,6 +256,7 @@ namespace ConsoleApp2
                                             {
                                                 CmdCode[2 + i] = (byte)UserInfo1String[i];
                                             }
+                                            //写入文件
                                             file.WriteLine(CmdCode_To_CmdSave(CmdCode));
                                             break;
                                         }
@@ -242,6 +269,7 @@ namespace ConsoleApp2
                                             {
                                                 CmdCode[2 + i] = (byte)UserInfo1String[i];
                                             }
+                                            //写入文件
                                             file.WriteLine(CmdCode_To_CmdSave(CmdCode));
                                             break;
                                         }
@@ -254,137 +282,7 @@ namespace ConsoleApp2
                                             {
                                                 CmdCode[2 + i] = (byte)UserInfo1String[i];
                                             }
-                                            file.WriteLine(CmdCode_To_CmdSave(CmdCode));
-                                            break;
-                                        }
-                                    case "[用户参数1]":
-                                        {
-                                            CmdCode[0] = 0x1B;
-                                            CmdCode[1] = 0x20;
-                                            ushort DataTemp;
-                                            //指拨模式
-                                            CmdCode[2] = Convert.ToByte(arrText[rowNum + 1].ToString().Split(',')[1]);
-                                            //启动模式
-                                            CmdCode[3] = Convert.ToByte(arrText[rowNum + 2].ToString().Split(',')[1]);
-                                            //停机时间
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 3].ToString().Split(',')[1]);
-                                            CmdCode[4] = (byte)(DataTemp & 0xFF);
-                                            CmdCode[5] = (byte)(DataTemp >> 8);
-                                            //限速
-                                            CmdCode[6] = Convert.ToByte(arrText[rowNum + 4].ToString().Split(',')[1]);
-                                            //下降速度
-                                            CmdCode[7] = Convert.ToByte(arrText[rowNum + 5].ToString().Split(',')[1]);
-                                            //前飞
-                                            CmdCode[8] = Convert.ToByte(arrText[rowNum + 6].ToString().Split(',')[1]);
-                                            //后飞
-                                            CmdCode[9] = Convert.ToByte(arrText[rowNum + 7].ToString().Split(',')[1]);
-                                            //限流
-                                            CmdCode[10] = Convert.ToByte(arrText[rowNum + 8].ToString().Split(',')[1]);
-                                            //温度预警
-                                            CmdCode[11] = (byte)(Convert.ToByte(arrText[rowNum + 9].ToString().Split(',')[1]) + 40);
-                                            //温度保护
-                                            CmdCode[12] = (byte)(Convert.ToByte(arrText[rowNum + 10].ToString().Split(',')[1]) + 40);
-                                            //无PBU
-                                            CmdCode[13] = Convert.ToByte(arrText[rowNum + 11].ToString().Split(',')[1]);
-                                            //轮胎周长
-                                            CmdCode[14] = Convert.ToByte(arrText[rowNum + 12].ToString().Split(',')[1]);
-                                            //电机系列号
-                                            CmdCode[15] = Convert.ToByte(arrText[rowNum + 13].ToString().Split(',')[1]);
-                                            //ECO助力增益
-                                            CmdCode[16] = Convert.ToByte(arrText[rowNum + 14].ToString().Split(',')[1]);
-                                            //ECO加速
-                                            CmdCode[17] = Convert.ToByte(arrText[rowNum + 15].ToString().Split(',')[1]);
-                                            //NORM助力增益
-                                            CmdCode[18] = Convert.ToByte(arrText[rowNum + 16].ToString().Split(',')[1]);
-                                            //NORM加速
-                                            CmdCode[19] = Convert.ToByte(arrText[rowNum + 17].ToString().Split(',')[1]);
-                                            //SPORT助力增益
-                                            CmdCode[20] = Convert.ToByte(arrText[rowNum + 18].ToString().Split(',')[1]);
-                                            //SPORT加速
-                                            CmdCode[21] = Convert.ToByte(arrText[rowNum + 19].ToString().Split(',')[1]);
-                                            //TURBO助力增益
-                                            CmdCode[22] = Convert.ToByte(arrText[rowNum + 20].ToString().Split(',')[1]);
-                                            //TURBO加速
-                                            CmdCode[23] = Convert.ToByte(arrText[rowNum + 21].ToString().Split(',')[1]);
-                                            //SMART助力增益
-                                            CmdCode[24] = Convert.ToByte(arrText[rowNum + 22].ToString().Split(',')[1]);
-                                            //SMART加速
-                                            CmdCode[25] = Convert.ToByte(arrText[rowNum + 23].ToString().Split(',')[1]);
-                                            //速度传感器信号个数
-                                            CmdCode[26] = Convert.ToByte(arrText[rowNum + 24].ToString().Split(',')[1]);
-                                            //踏频启动信号个数
-                                            CmdCode[27] = Convert.ToByte(arrText[rowNum + 25].ToString().Split(',')[1]);
-                                            //速度传感器
-                                            CmdCode[28] = Convert.ToByte(arrText[rowNum + 26].ToString().Split(',')[1]);
-                                            //周长微调
-                                            CmdCode[29] = (byte)Convert.ToInt16(arrText[rowNum + 27].ToString().Split(',')[1]);
-                                            //低压保护阈值
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 28].ToString().Split(',')[1]);
-                                            CmdCode[30] = (byte)(DataTemp & 0xFF);
-                                            CmdCode[31] = (byte)(DataTemp >> 8);
-                                            //推行限速
-                                            DataTemp = Convert.ToByte(arrText[rowNum + 29].ToString().Split(',')[1]);
-                                            CmdCode[32] = (byte)Convert.ToByte(DataTemp);
-                                            //推行马达转速
-                                            CmdCode[33] = (byte)Convert.ToByte(arrText[rowNum + 30].ToString().Split(',')[1]);
-                                            file.WriteLine(CmdCode_To_CmdSave(CmdCode));
-                                            break;
-                                        }
-                                    case "[马达参数]":
-                                        {
-                                            CmdCode[0] = 0x1D;
-                                            CmdCode[1] = 0x10;
-                                            ushort DataTemp;
-                                            //额定功率
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
-                                            CmdCode[2] = (byte)(DataTemp & 0xFF);
-                                            CmdCode[3] = (byte)(DataTemp >> 8);
-                                            //额定转速
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 2].ToString().Split(',')[1]);
-                                            CmdCode[4] = (byte)(DataTemp & 0xFF);
-                                            CmdCode[5] = (byte)(DataTemp >> 8);
-                                            //定子电阻
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 3].ToString().Split(',')[1]);
-                                            CmdCode[6] = (byte)(DataTemp & 0xFF);
-                                            CmdCode[7] = (byte)(DataTemp >> 8);
-                                            //Lq
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 4].ToString().Split(',')[1]);
-                                            CmdCode[8] = (byte)(DataTemp & 0xFF);
-                                            CmdCode[9] = (byte)(DataTemp >> 8);
-                                            //Ld
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 5].ToString().Split(',')[1]);
-                                            CmdCode[10] = (byte)(DataTemp & 0xFF);
-                                            CmdCode[11] = (byte)(DataTemp >> 8);
-                                            //反电动势
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 6].ToString().Split(',')[1]);
-                                            CmdCode[12] = (byte)(DataTemp & 0xFF);
-                                            CmdCode[13] = (byte)(DataTemp >> 8);
-                                            //额定电压
-                                            CmdCode[14] = Convert.ToByte(arrText[rowNum + 7].ToString().Split(',')[1]);
-                                            file.WriteLine(CmdCode_To_CmdSave(CmdCode));
-                                            break;
-                                        }
-                                    case "[型号]":
-                                        {
-                                            CmdCode[0] = 0x22;
-                                            CmdCode[1] = 0x10;
-                                            string ModeString = arrText[rowNum + 1].ToString().Split(',')[1];
-                                            for (ushort i = 0; i < ((ModeString.Length > 16) ? 16 : ModeString.Length); i++)
-                                            {
-                                                CmdCode[2 + i] = (byte)ModeString[i];
-                                            }
-                                            file.WriteLine(CmdCode_To_CmdSave(CmdCode));
-                                            break;
-                                        }
-                                    case "[SN号]":
-                                        {
-                                            CmdCode[0] = 0x23;
-                                            CmdCode[1] = 0x10;
-                                            string SnString = arrText[rowNum + 1].ToString().Split(',')[1];
-                                            for (ushort i = 0; i < ((SnString.Length > 16) ? 16 : SnString.Length); i++)
-                                            {
-                                                CmdCode[2 + i] = (byte)SnString[i];
-                                            }
+                                            //写入文件
                                             file.WriteLine(CmdCode_To_CmdSave(CmdCode));
                                             break;
                                         }
@@ -407,105 +305,358 @@ namespace ConsoleApp2
                                             {
                                                 CmdCode[18 + i] = (byte)MAC_Info[i];
                                             }
+                                            //写入文件
                                             file.WriteLine(CmdCode_To_CmdSave(CmdCode));
                                             break;
                                         }
-                                    case "[单力矩标定系数]":
-                                        {
-                                            CmdCode[0] = 0x2A;
-                                            CmdCode[1] = 0x01;
-                                            ushort DataTemp;
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
-                                            CmdCode[2] = (byte)DataTemp;
-                                            file.WriteLine(CmdCode_To_CmdSave(CmdCode));
-                                            break;
-                                        }
-                                    case "[启动值]":
+                                    case "[马达信息]":
                                         {
-                                            CmdCode[0] = 0x2B;
-                                            CmdCode[1] = 0x02;
-                                            ushort DataTemp;
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
-                                            CmdCode[2] = (byte)(DataTemp);
-                                            CmdCode[3] = (byte)(DataTemp >> 8);
+                                            CmdCode[0] = 0x3B;
+                                            CmdCode[1] = 0x28;
+                                            ushort uDataTemp;
+                                            short sDataTemp;
+                                            //存储标志
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
+                                            CmdCode[2] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[3] = (byte)(uDataTemp >> 8);
+                                            //极对数
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 2].ToString().Split(',')[1]);
+                                            CmdCode[4] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[5] = (byte)(uDataTemp >> 8);
+                                            //电阻
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 3].ToString().Split(',')[1]);
+                                            CmdCode[6] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[7] = (byte)(uDataTemp >> 8);
+                                            //d轴电感
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 4].ToString().Split(',')[1]);
+                                            CmdCode[8] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[9] = (byte)(uDataTemp >> 8);
+                                            //q轴电感
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 5].ToString().Split(',')[1]);
+                                            CmdCode[10] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[11] = (byte)(uDataTemp >> 8);
+                                            //永磁体磁链
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 6].ToString().Split(',')[1]);
+                                            CmdCode[12] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[13] = (byte)(uDataTemp >> 8);
+                                            //Id最大值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 7].ToString().Split(',')[1]);
+                                            CmdCode[14] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[15] = (byte)(uDataTemp >> 8);
+                                            //Id最小值
+                                            sDataTemp = Convert.ToInt16(arrText[rowNum + 8].ToString().Split(',')[1]);
+                                            CmdCode[16] = (byte)(sDataTemp & 0xFF);
+                                            CmdCode[17] = (byte)(sDataTemp >> 8);
+                                            //额定转速
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 9].ToString().Split(',')[1]);
+                                            CmdCode[18] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[19] = (byte)(uDataTemp >> 8);
+                                            //额定功率
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 10].ToString().Split(',')[1]);
+                                            CmdCode[20] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[21] = (byte)(uDataTemp >> 8);
+                                            //额定电流
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 11].ToString().Split(',')[1]);
+                                            CmdCode[22] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[23] = (byte)(uDataTemp >> 8);
+                                            //额定电压
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 12].ToString().Split(',')[1]);
+                                            CmdCode[24] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[25] = (byte)(uDataTemp >> 8);
+                                            //惯量
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 13].ToString().Split(',')[1]);
+                                            CmdCode[26] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[27] = (byte)(uDataTemp >> 8);
+                                            //最大转矩
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 14].ToString().Split(',')[1]);
+                                            CmdCode[28] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[29] = (byte)(uDataTemp >> 8);
+                                            //写入文件
                                             file.WriteLine(CmdCode_To_CmdSave(CmdCode));
                                             break;
                                         }
-                                    case "[用户参数2]":
+                                    case "[整车参数]":
                                         {
-                                            CmdCode[0] = 0x31;
-                                            CmdCode[1] = 0x20;
-                                            short DataTemp_Int16;
-                                            ushort DataTemp_UInt16;
-                                            sbyte DataTemp_Int8;
-                                            //俯仰角零偏
-                                            DataTemp_Int16 = (short)(decimal.Parse(arrText[rowNum + 1].ToString().Split(',')[1]) * 10);
-                                            CmdCode[2] = (byte)(DataTemp_Int16 & 0xFF);
-                                            CmdCode[3] = (byte)(DataTemp_Int16 >> 8);
-                                            //横滚角零偏
-                                            DataTemp_Int16 = (short)(decimal.Parse(arrText[rowNum + 2].ToString().Split(',')[1]) * 10);
-                                            CmdCode[4] = (byte)(DataTemp_Int16 & 0xFF);
-                                            CmdCode[5] = (byte)(DataTemp_Int16 >> 8);
-                                            //支持姿态传感器
-                                            CmdCode[6] = Convert.ToByte(arrText[rowNum + 3].ToString().Split(',')[1]);
-                                            //尾灯模式
-                                            CmdCode[7] = Convert.ToByte(arrText[rowNum + 4].ToString().Split(',')[1]);
-                                            //前灯电压
-                                            CmdCode[8] = Convert.ToByte(arrText[rowNum + 5].ToString().Split(',')[1]);
-                                            //尾灯电压
-                                            CmdCode[9] = Convert.ToByte(arrText[rowNum + 6].ToString().Split(',')[1]);                                            
-                                            //超速报警阈值
-                                            DataTemp_UInt16 = Convert.ToUInt16(arrText[rowNum + 7].ToString().Split(',')[1]);
-                                            CmdCode[10] = (byte)(DataTemp_UInt16 & 0xFF);
-                                            CmdCode[11] = (byte)(DataTemp_UInt16 >> 8);
-                                            //尾灯控制脉宽
-                                            DataTemp_UInt16 = Convert.ToUInt16(arrText[rowNum + 8].ToString().Split(',')[1]);
-                                            CmdCode[12] = (byte)(DataTemp_UInt16 & 0xFF);
-                                            CmdCode[13] = (byte)(DataTemp_UInt16 >> 8);
-                                            //尾灯控制周期
-                                            DataTemp_UInt16 = Convert.ToUInt16(arrText[rowNum + 9].ToString().Split(',')[1]);
-                                            CmdCode[14] = (byte)(DataTemp_UInt16 & 0xFF);
-                                            CmdCode[15] = (byte)(DataTemp_UInt16 >> 8);
-                                            //限速起始偏移
-                                            DataTemp_Int8 = Convert.ToSByte(arrText[rowNum + 10].ToString().Split(',')[1]);
-                                            CmdCode[16] = (byte)DataTemp_Int8;
-                                            //限速起始偏移
-                                            DataTemp_Int8 = Convert.ToSByte(arrText[rowNum + 11].ToString().Split(',')[1]);
-                                            CmdCode[17] = (byte)DataTemp_Int8;
+                                            CmdCode[0] = 0x3D;
+                                            CmdCode[1] = 0x1C;
+                                            ushort uDataTemp;
+                                            short sDataTemp;
+                                            //存储标志
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
+                                            CmdCode[2] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[3] = (byte)(uDataTemp >> 8);
+                                            //轮胎周长
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 2].ToString().Split(',')[1]);
+                                            CmdCode[4] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[5] = (byte)(uDataTemp >> 8);
+                                            //电控传动比
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 3].ToString().Split(',')[1]);
+                                            CmdCode[6] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[7] = (byte)(uDataTemp >> 8);
+                                            //助力最大限速
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 4].ToString().Split(',')[1]);
+                                            CmdCode[8] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[9] = (byte)(uDataTemp >> 8);
+                                            //推行限速
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 5].ToString().Split(',')[1]);
+                                            CmdCode[10] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[11] = (byte)(uDataTemp >> 8);
+                                            //前牙盘
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 6].ToString().Split(',')[1]);
+                                            CmdCode[12] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[13] = (byte)(uDataTemp >> 8);
+                                            //后牙盘
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 7].ToString().Split(',')[1]);
+                                            CmdCode[14] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[15] = (byte)(uDataTemp >> 8);
+                                            //助力方案1
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 8].ToString().Split(',')[1]);
+                                            CmdCode[16] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[17] = (byte)(uDataTemp >> 8);
+                                            //助力方案2
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 9].ToString().Split(',')[1]);
+                                            CmdCode[18] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[19] = (byte)(uDataTemp >> 8);
+                                            //前后灯参数
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 10].ToString().Split(',')[1]);
+                                            CmdCode[20] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[21] = (byte)(uDataTemp >> 8);
+                                            //周长微调
+                                            sDataTemp = Convert.ToInt16(arrText[rowNum + 11].ToString().Split(',')[1]);
+                                            CmdCode[22] = (byte)(sDataTemp & 0xFF);
+                                            CmdCode[23] = (byte)(sDataTemp >> 8);
+                                            //启动模式
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 12].ToString().Split(',')[1]);
+                                            CmdCode[24] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[25] = (byte)(uDataTemp >> 8);
+                                            //开关机时间
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 13].ToString().Split(',')[1]);
+                                            CmdCode[26] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[27] = (byte)(uDataTemp >> 8);
+                                            //写入文件
                                             file.WriteLine(CmdCode_To_CmdSave(CmdCode));
                                             break;
                                         }
-                                    case "[三力矩标定系数1]":
+                                    case "[力矩传感器参数]":
                                         {
-                                            CmdCode[0] = 0x34;
-                                            CmdCode[1] = 0x02;
-                                            CmdCode[2] = 0x01;
-                                            ushort DataTemp;
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
-                                            CmdCode[3] = (byte)DataTemp;
+                                            CmdCode[0] = 0x47;
+                                            CmdCode[1] = 0x2E;
+                                            ushort uDataTemp;
+                                            short sDataTemp;
+                                            //存储标志
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
+                                            CmdCode[2] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[3] = (byte)(uDataTemp >> 8);
+                                            //出厂零点
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 2].ToString().Split(',')[1]);
+                                            CmdCode[4] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[5] = (byte)(uDataTemp >> 8);
+                                            //历史零点1
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 3].ToString().Split(',')[1]);
+                                            CmdCode[6] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[7] = (byte)(uDataTemp >> 8);
+                                            //历史零点2
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 4].ToString().Split(',')[1]);
+                                            CmdCode[8] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[9] = (byte)(uDataTemp >> 8);
+                                            //历史零点3
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 5].ToString().Split(',')[1]);
+                                            CmdCode[10] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[11] = (byte)(uDataTemp >> 8);
+                                            //最大零点
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 6].ToString().Split(',')[1]);
+                                            CmdCode[12] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[13] = (byte)(uDataTemp >> 8);
+                                            //最大转矩
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 7].ToString().Split(',')[1]);
+                                            CmdCode[14] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[15] = (byte)(uDataTemp >> 8);
+                                            //第一阶段加载值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 8].ToString().Split(',')[1]);
+                                            CmdCode[16] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[17] = (byte)(uDataTemp >> 8);
+                                            //第一阶段采集值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 9].ToString().Split(',')[1]);
+                                            CmdCode[18] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[19] = (byte)(uDataTemp >> 8);
+                                            //第二阶段加载值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 10].ToString().Split(',')[1]);
+                                            CmdCode[20] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[21] = (byte)(uDataTemp >> 8);
+                                            //第二阶段采集值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 11].ToString().Split(',')[1]);
+                                            CmdCode[22] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[23] = (byte)(uDataTemp >> 8);
+                                            //第三阶段加载值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 12].ToString().Split(',')[1]);
+                                            CmdCode[24] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[25] = (byte)(uDataTemp >> 8);
+                                            //第三阶段采集值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 13].ToString().Split(',')[1]);
+                                            CmdCode[26] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[27] = (byte)(uDataTemp >> 8);
+                                            //第四阶段加载值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 14].ToString().Split(',')[1]);
+                                            CmdCode[28] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[29] = (byte)(uDataTemp >> 8);
+                                            //第四阶段采集值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 15].ToString().Split(',')[1]);
+                                            CmdCode[30] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[31] = (byte)(uDataTemp >> 8);
+                                            //写入文件
                                             file.WriteLine(CmdCode_To_CmdSave(CmdCode));
                                             break;
                                         }
-                                    case "[三力矩标定系数2]":
+                                    case "[其它传感器参数]":
                                         {
-                                            CmdCode[0] = 0x34;
-                                            CmdCode[1] = 0x02;
-                                            CmdCode[2] = 0x02;
-                                            ushort DataTemp;
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
-                                            CmdCode[3] = (byte)DataTemp;
+                                            CmdCode[0] = 0x42;
+                                            CmdCode[1] = 0x0E;
+                                            ushort uDataTemp;
+                                            short sDataTemp;
+                                            //存储标志
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
+                                            CmdCode[2] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[3] = (byte)(uDataTemp >> 8);
+                                            //踏频一圈脉冲数
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 2].ToString().Split(',')[1]);
+                                            CmdCode[4] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[5] = (byte)(uDataTemp >> 8);
+                                            //车速一圈脉冲数
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 3].ToString().Split(',')[1]);
+                                            CmdCode[6] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[7] = (byte)(uDataTemp >> 8);
+                                            //写入文件
                                             file.WriteLine(CmdCode_To_CmdSave(CmdCode));
                                             break;
                                         }
-                                    case "[三力矩标定系数3]":
+                                    case "[助力参数]":
                                         {
-                                            CmdCode[0] = 0x34;
-                                            CmdCode[1] = 0x02;
-                                            CmdCode[2] = 0x03;
-                                            ushort DataTemp;
-                                            DataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
-                                            CmdCode[3] = (byte)DataTemp;
-                                            file.WriteLine(CmdCode_To_CmdSave(CmdCode));
+                                            CmdCode[0] = 0x44;
+                                            CmdCode[1] = 0x50;
+                                            ushort uDataTemp;
+                                            short sDataTemp;
+                                            //存储标志
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 1].ToString().Split(',')[1]);
+                                            CmdCode[2] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[3] = (byte)(uDataTemp >> 8);
+                                            //空
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 2].ToString().Split(',')[1]);
+                                            CmdCode[4] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[5] = (byte)(uDataTemp >> 8);
+                                            //零速启动增益
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 3].ToString().Split(',')[1]);
+                                            CmdCode[6] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[7] = (byte)(uDataTemp >> 8);
+                                            //巡航启动增益
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 4].ToString().Split(',')[1]);
+                                            CmdCode[8] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[9] = (byte)(uDataTemp >> 8);
+                                            //助力启动阈值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 85].ToString().Split(',')[1]);
+                                            CmdCode[46] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[47] = (byte)(uDataTemp >> 8);
+                                            //助力停止阈值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 86].ToString().Split(',')[1]);
+                                            CmdCode[48] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[49] = (byte)(uDataTemp >> 8);
+                                            //启动时电流增长阶梯
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 87].ToString().Split(',')[1]);
+                                            CmdCode[50] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[51] = (byte)(uDataTemp >> 8);
+                                            //启动踏频脉冲数
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 88].ToString().Split(',')[1]);
+                                            CmdCode[52] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[53] = (byte)(uDataTemp >> 8);
+                                            //转矩滤波脉冲数
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 89].ToString().Split(',')[1]);
+                                            CmdCode[54] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[55] = (byte)(uDataTemp >> 8);
+                                            //待速转速
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 90].ToString().Split(',')[1]);
+                                            CmdCode[56] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[57] = (byte)(uDataTemp >> 8);
+                                            //待速最大电流
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 91].ToString().Split(',')[1]);
+                                            CmdCode[58] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[59] = (byte)(uDataTemp >> 8);
+                                            //限速启动阈值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 92].ToString().Split(',')[1]);
+                                            CmdCode[60] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[61] = (byte)(uDataTemp >> 8);
+                                            //限速停止阈值
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 93].ToString().Split(',')[1]);
+                                            CmdCode[62] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[63] = (byte)(uDataTemp >> 8);
+                                            //踏频占比
+                                            uDataTemp = Convert.ToUInt16(arrText[rowNum + 94].ToString().Split(',')[1]);
+                                            CmdCode[64] = (byte)(uDataTemp & 0xFF);
+                                            CmdCode[65] = (byte)(uDataTemp >> 8);
+                                            //转矩曲线1-15,踏频曲线1-5,按照前5条同时写力矩和踏频,后9条写力矩和踏频5
+                                            for (ushort i = 1; i <= 15; i++)
+                                            {
+                                                Int32 Data32;
+                                                //转矩曲线编号
+                                                uDataTemp = (ushort)(i);
+                                                CmdCode[10] = (byte)(uDataTemp & 0xFF);
+                                                CmdCode[11] = (byte)(uDataTemp >> 8);
+                                                //踏频曲线编号
+                                                uDataTemp = (ushort)(i <= 5 ? i : 5);
+                                                CmdCode[12] = (byte)(uDataTemp & 0xFF);
+                                                CmdCode[13] = (byte)(uDataTemp >> 8);
+                                                //转矩曲线a
+                                                Data32 = Convert.ToInt32(arrText[rowNum + (4 * i + 1)].ToString().Split(',')[1]);
+                                                CmdCode[14] = (byte)(Data32 & 0xFF);
+                                                CmdCode[15] = (byte)(uDataTemp >> 8);
+                                                CmdCode[16] = (byte)(uDataTemp >> 16);
+                                                CmdCode[17] = (byte)(uDataTemp >> 24);
+                                                //转矩曲线b
+                                                Data32 = Convert.ToInt32(arrText[rowNum + (4 * i + 2)].ToString().Split(',')[1]);
+                                                CmdCode[18] = (byte)(Data32 & 0xFF);
+                                                CmdCode[19] = (byte)(uDataTemp >> 8);
+                                                CmdCode[20] = (byte)(uDataTemp >> 16);
+                                                CmdCode[21] = (byte)(uDataTemp >> 24);
+                                                //转矩曲线c
+                                                Data32 = Convert.ToInt32(arrText[rowNum + (4 * i + 3)].ToString().Split(',')[1]);
+                                                CmdCode[22] = (byte)(Data32 & 0xFF);
+                                                CmdCode[23] = (byte)(uDataTemp >> 8);
+                                                CmdCode[24] = (byte)(uDataTemp >> 16);
+                                                CmdCode[25] = (byte)(uDataTemp >> 24);
+                                                //转矩曲线d
+                                                Data32 = Convert.ToInt32(arrText[rowNum + (4 * i + 4)].ToString().Split(',')[1]);
+                                                CmdCode[26] = (byte)(Data32 & 0xFF);
+                                                CmdCode[27] = (byte)(uDataTemp >> 8);
+                                                CmdCode[28] = (byte)(uDataTemp >> 16);
+                                                CmdCode[29] = (byte)(uDataTemp >> 24);
+                                                if (i <= 5)
+                                                {
+                                                    //踏频曲线a
+                                                    Data32 = Convert.ToInt32(arrText[rowNum + (4 * i + 61)].ToString().Split(',')[1]);
+                                                    CmdCode[30] = (byte)(Data32 & 0xFF);
+                                                    CmdCode[31] = (byte)(uDataTemp >> 8);
+                                                    CmdCode[32] = (byte)(uDataTemp >> 16);
+                                                    CmdCode[33] = (byte)(uDataTemp >> 24);
+                                                    //踏频曲线b
+                                                    Data32 = Convert.ToInt32(arrText[rowNum + (4 * i + 62)].ToString().Split(',')[1]);
+                                                    CmdCode[34] = (byte)(Data32 & 0xFF);
+                                                    CmdCode[35] = (byte)(uDataTemp >> 8);
+                                                    CmdCode[36] = (byte)(uDataTemp >> 16);
+                                                    CmdCode[37] = (byte)(uDataTemp >> 24);
+                                                    //踏频曲线c
+                                                    Data32 = Convert.ToInt32(arrText[rowNum + (4 * i + 63)].ToString().Split(',')[1]);
+                                                    CmdCode[38] = (byte)(Data32 & 0xFF);
+                                                    CmdCode[39] = (byte)(uDataTemp >> 8);
+                                                    CmdCode[40] = (byte)(uDataTemp >> 16);
+                                                    CmdCode[41] = (byte)(uDataTemp >> 24);
+                                                    //踏频曲线d
+                                                    Data32 = Convert.ToInt32(arrText[rowNum + (4 * i + 64)].ToString().Split(',')[1]);
+                                                    CmdCode[42] = (byte)(Data32 & 0xFF);
+                                                    CmdCode[43] = (byte)(uDataTemp >> 8);
+                                                    CmdCode[44] = (byte)(uDataTemp >> 16);
+                                                    CmdCode[45] = (byte)(uDataTemp >> 24);
+                                                }
+                                                //写入文件
+                                                file.WriteLine(CmdCode_To_CmdSave(CmdCode));
+                                            }
                                             break;
                                         }
                                     default: break;
@@ -513,12 +664,6 @@ namespace ConsoleApp2
                             }
                         }
                     }
-
-
-
-
-
-
                 }
 
             }

BIN
bin/Debug/ConsoleApp2.exe


BIN
bin/Debug/ConsoleApp2.pdb


+ 174 - 0
bin/Debug/模板_大牙盘.src

@@ -0,0 +1,174 @@
+#说明
+#0表示命令无效,1开启该命令的参数写入
+
+[型号],1
+电机型号,PG 8010
+
+[SN号],1
+电机SN,M220202A0001A
+
+[校验码],1
+校验码,MOTINOVA
+
+[自定义1],1
+自定义字符串1,1111
+
+[自定义2],1
+自定义字符串2,2222
+
+[自定义3],1
+自定义字符串3,3333
+
+[生产信息],1
+生产商,TTIUM
+生产地,WUHAN
+生产日期,20220101
+
+[马达信息],1
+存储标志,1
+极对数,7
+电阻,100
+d轴电感,100
+q轴电感,100
+永磁体磁链,5000
+Id最大值,100
+Id最最小,-100
+额定转速,5000
+额定功率,250
+额定电流,15
+额定电压,36
+惯量,300
+最大转矩,35
+
+[整车参数],1
+存储标志,1
+轮胎周长,219
+电控传动比,35
+助力最大限速,25
+推行模式限速,6
+前牙盘,38
+后牙盘,11
+助力方案1,341
+助力方案2,682
+前后灯参数,6
+周长微调,0
+启动模式,2
+开关机时间,15
+
+[力矩传感器参数],1
+存储标志,1
+出厂零点,600
+历史零点1,0
+历史零点2,0
+历史零点3,0
+最新零点,600
+最大转矩,900
+第一阶段加载值,240
+第一阶段采集值,1000
+第二阶段加载值,480
+第二阶段采集值,1600
+第三阶段加载值,720
+第三阶段采集值,2200
+第四阶段加载值,960
+第四阶段采集值,2800
+
+[其它传感器参数],1
+存储标志,1
+踏频一圈脉冲数,32
+车速一圈脉冲数,1
+
+[助力参数],1
+存储标志,1
+空,0
+零速启动增益,4096
+巡航启动增益,4096
+转矩曲线1a,0
+转矩曲线1b,0
+转矩曲线1c,0
+转矩曲线1d,0
+转矩曲线2a,0
+转矩曲线2b,0
+转矩曲线2c,0
+转矩曲线2d,0
+转矩曲线3a,0
+转矩曲线3b,0
+转矩曲线3c,0
+转矩曲线3d,0
+转矩曲线4a,0
+转矩曲线4b,0
+转矩曲线4c,0
+转矩曲线4d,0
+转矩曲线5a,0
+转矩曲线5b,0
+转矩曲线5c,0
+转矩曲线5d,0
+转矩曲线6a,0
+转矩曲线6b,0
+转矩曲线6c,0
+转矩曲线6d,0
+转矩曲线7a,0
+转矩曲线7b,0
+转矩曲线7c,0
+转矩曲线7d,0
+转矩曲线8a,0
+转矩曲线8b,0
+转矩曲线8c,0
+转矩曲线8d,0
+转矩曲线9a,0
+转矩曲线9b,0
+转矩曲线9c,0
+转矩曲线9d,0
+转矩曲线10a,0
+转矩曲线10b,0
+转矩曲线10c,0
+转矩曲线10d,0
+转矩曲线11a,0
+转矩曲线11b,0
+转矩曲线11c,0
+转矩曲线11d,0
+转矩曲线12a,0
+转矩曲线12b,0
+转矩曲线12c,0
+转矩曲线12d,0
+转矩曲线13a,0
+转矩曲线13b,0
+转矩曲线13c,0
+转矩曲线13d,0
+转矩曲线14a,0
+转矩曲线14b,0
+转矩曲线14c,0
+转矩曲线14d,0
+转矩曲线15a,0
+转矩曲线15b,0
+转矩曲线15c,0
+转矩曲线15d,0
+踏频曲线1a,0
+踏频曲线1b,0
+踏频曲线1c,0
+踏频曲线1d,0
+踏频曲线2a,0
+踏频曲线2b,0
+踏频曲线2c,0
+踏频曲线2d,0
+踏频曲线3a,0
+踏频曲线3b,0
+踏频曲线3c,0
+踏频曲线3d,0
+踏频曲线4a,0
+踏频曲线4b,0
+踏频曲线4c,0
+踏频曲线4d,0
+踏频曲线5a,0
+踏频曲线5b,0
+踏频曲线5c,0
+踏频曲线5d,0
+助力启动阈值,80
+助力停止阈值,40
+启动时电流增长阶梯,20
+启动踏频脉冲数,32
+转矩滤波脉冲数,64
+待速转速,0
+待速最大电流,0
+车速限幅启动阈值,25
+车速限幅停止阈值,27
+踏频占比,0

BIN
obj/Debug/ConsoleApp2.exe


BIN
obj/Debug/ConsoleApp2.pdb