/// <summary> /// 发送命令给电控 /// 00备用,01转速,02转矩,03放电 /// </summary> /// <param name="scmSendData"></param> /// <returns></returns> public override List <ScmCanSendMsg> TransformEcuSendData(uint canIndex, Ecm_WorkMode cmdType, short data, uint motorIndex = 0) { List <ScmCanSendMsg> canSendDatas = new List <ScmCanSendMsg>(); Scm_TCU1 scmTcu1 = new Scm_TCU1(); ScmCanSendMsg canSendData = new ScmCanSendMsg(); canSendData.FeedBkMtclMode = cmdType; string strCmdDetail = string.Empty; //命令解析字符串信息 //电机转速模式设定 scmTcu1.eop_ctrl_ena_dmd_sd = 0x00; //mcu使能 scmTcu1.eop_clear_fault = 0x00; //不清故障 switch (cmdType) { case Ecm_WorkMode.None: //备用 scmTcu1.eop_ctrl_mod_dmd_sd = 0x00; //控制模式 strCmdDetail += "备用" + "\r\n"; break; case Ecm_WorkMode.SpeedMode: //转速模式 { canSendData.FeedBkMotorSpeed = scmTcu1.eop_spd_dmd_sd = Convert.ToInt16(data); scmTcu1.eop_ctrl_ena_dmd_sd = 0x02; //mcu使能 scmTcu1.eop_ctrl_mod_dmd_sd = 0x01; //控制模式 strCmdDetail += "转速命令:" + data.ToString() + "\r\n"; break; } case Ecm_WorkMode.TorqueMode: //转矩模式 { canSendData.FeedBkMotorTorque = scmTcu1.eop_tq_dmd_sd = (byte)data; scmTcu1.eop_ctrl_ena_dmd_sd = 0x02; //mcu使能 scmTcu1.eop_ctrl_mod_dmd_sd = 0x02; //控制模式 strCmdDetail += "扭矩命令:" + data.ToString() + "\r\n"; break; } default: scmTcu1.eop_ctrl_mod_dmd_sd = 0x00; break; } CanStandardData canData = ScmEvcu1ToBytes(scmTcu1); canSendData.canId = canData.canId; canSendData.baudrate = canData.baudrate; canSendData.datas = canData.datas; canSendData.canIndex = canIndex; canSendData.cmdDetail = strCmdDetail; canSendDatas.Add(canSendData); return(canSendDatas); }
public override ScmCanSendMsg EcuClearMcuFault() { ScmCanSendMsg scmSendMsg = new ScmCanSendMsg(); ElecOilPump_Scm_EVCU1 scmEvcu1 = new ElecOilPump_Scm_EVCU1(); scmEvcu1.control_mode = 0x01; //清故障 scmEvcu1.request_speed = 0; scmEvcu1.request_torque = 0x00; scmEvcu1.running_enable = 0; CanStandardData canData = ElecOilPump_ScmEvcu1ToBytes(scmEvcu1); scmSendMsg.canId = canData.canId; scmSendMsg.baudrate = canData.baudrate; scmSendMsg.datas = canData.datas; return(scmSendMsg); }
public override AbstractMotorControl.ScmCanSendMsg EcuClearMcuFault() { ScmCanSendMsg scmSendMsg = new ScmCanSendMsg(); Scm_EVCU1 scmEvcu1 = new Scm_EVCU1(); scmEvcu1.isg_ctrl_ena_dmd_sd = 0x02; //清故障 scmEvcu1.isg_ctrl_mod_dmd_sd = 0x00; scmEvcu1.isg_run_dir_dmd_sd = 0x00; scmEvcu1.isg_spd_dmd_sd = 0; scmEvcu1.isg_tq_dmd_sd = 0; CanStandardData canData = ScmEvcu1ToBytes(scmEvcu1); scmSendMsg.canId = canData.canId; scmSendMsg.baudrate = canData.baudrate; scmSendMsg.datas = canData.datas; return(scmSendMsg); }
public override ScmCanSendMsg EcuClearMcuFault() { ScmCanSendMsg scmSendMsg = new ScmCanSendMsg(); Scm_TCU1 scmEvcu1 = new Scm_TCU1(); scmEvcu1.eop_ctrl_ena_dmd_sd = 0x01; //清故障 scmEvcu1.eop_clear_fault = 1; //清故障 scmEvcu1.eop_ctrl_mod_dmd_sd = 0x00; scmEvcu1.eop_spd_dmd_sd = 0; scmEvcu1.eop_tq_dmd_sd = 0; CanStandardData canData = ScmEvcu1ToBytes(scmEvcu1); scmSendMsg.canId = canData.canId; scmSendMsg.baudrate = canData.baudrate; scmSendMsg.datas = canData.datas; return(scmSendMsg); }
/// <summary> /// 发送命令给电控 /// 00备用,01转速,02转矩,03放电 /// </summary> /// <param name="scmSendData"></param> /// <returns></returns> public override List <ScmCanSendMsg> TransformEcuSendData(uint canIndex, Ecm_WorkMode cmdType, short data, uint motorIndex = 0) { List <ScmCanSendMsg> canSendDatas = new List <ScmCanSendMsg>(); Scm_EVCU1 scmEvcu1 = new Scm_EVCU1(); ScmCanSendMsg canSendData = new ScmCanSendMsg(); canSendData.FeedBkMtclMode = cmdType; string strCmdDetail = string.Empty; //命令解析字符串信息 AbstractMotorControl.Ecm_Gear gear; //0空挡,1前进,2后退 if (data > 0) { gear = AbstractMotorControl.Ecm_Gear.DriveGear; } else if (data < 0) { gear = AbstractMotorControl.Ecm_Gear.ReverseGear; } else { gear = AbstractMotorControl.Ecm_Gear.NeutralGear; } switch (gear) { case Ecm_Gear.NeutralGear: scmEvcu1.isg_run_dir_dmd_sd = 0x00; strCmdDetail = "空挡" + "\r\n"; break; case Ecm_Gear.DriveGear: scmEvcu1.isg_run_dir_dmd_sd = 0x01; strCmdDetail = "D档" + "\r\n"; break; case Ecm_Gear.ReverseGear: scmEvcu1.isg_run_dir_dmd_sd = 0x02; strCmdDetail = "倒档" + "\r\n"; break; case Ecm_Gear.ErrorGear: scmEvcu1.isg_run_dir_dmd_sd = 0x03; strCmdDetail = "错误" + "\r\n"; break; default: scmEvcu1.isg_run_dir_dmd_sd = 0x00; break; } //电机转速模式设定 scmEvcu1.isg_ctrl_ena_dmd_sd = 0x00; //mcu使能 switch (cmdType) { case Ecm_WorkMode.None: //备用 scmEvcu1.isg_ctrl_mod_dmd_sd = 0x00; //控制模式 strCmdDetail += "备用" + "\r\n"; break; case Ecm_WorkMode.SpeedMode: //转速模式 { scmEvcu1.isg_spd_dmd_sd = data; //偏移12000,0表示-12000 canSendData.FeedBkMotorSpeed = data; scmEvcu1.isg_ctrl_ena_dmd_sd = 0x01; //mcu使能 scmEvcu1.isg_ctrl_mod_dmd_sd = 0x01; //控制模式 strCmdDetail += "转速命令:" + data.ToString() + "\r\n"; break; } case Ecm_WorkMode.TorqueMode: //转矩模式 { scmEvcu1.isg_tq_dmd_sd = data; //偏移2000,0表示-2000 canSendData.FeedBkMotorTorque = data; scmEvcu1.isg_ctrl_ena_dmd_sd = 0x01; //mcu使能 scmEvcu1.isg_ctrl_mod_dmd_sd = 0x02; //控制模式 strCmdDetail += "扭矩命令:" + data.ToString() + "\r\n"; break; } case Ecm_WorkMode.DisCharging: //放电模式 scmEvcu1.isg_ctrl_ena_dmd_sd = 0x01; //mcu使能 scmEvcu1.isg_ctrl_mod_dmd_sd = 0x03; //控制模式 strCmdDetail += "放电" + "\r\n"; break; default: scmEvcu1.isg_ctrl_mod_dmd_sd = 0x00; break; } CanStandardData canData = ScmEvcu1ToBytes(scmEvcu1); canSendData.canId = canData.canId; canSendData.baudrate = canData.baudrate; canSendData.datas = canData.datas; canSendData.canIndex = canIndex; canSendData.cmdDetail = strCmdDetail; canSendDatas.Add(canSendData); return(canSendDatas); }