找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1048|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)于發(fā)動(dòng)機(jī)檔位加減檔算法設(shè)計(jì)及仿真圖

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 30 黑幣 回復(fù)本帖可獲得 5 黑幣獎(jiǎng)勵(lì)! 每人限 1 次(中獎(jiǎng)概率 50%)
跳轉(zhuǎn)到指定樓層
樓主
ID:1091365 發(fā)表于 2024-5-14 17:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
求助大神看看我的程序的錯(cuò)誤或給一份發(fā)動(dòng)機(jī)檔位加減檔算法設(shè)計(jì)及仿真圖及程序
主要程序代碼如下:
//預(yù)處理數(shù)據(jù)
#define CAR_MAX 130
#define TORQUE_MAX 1.25
#define ROTATE_MAX 2550
#define Economy_rpm_MIN 1000
#define Economy_rpm_MAX 1300
struct InputData Preproccess(struct InputData sinputData)//將接收的數(shù)據(jù)限制在一定范圍內(nèi)
{
        sinputData.car_speed = (CAR_MAX < sinputData.scar_speed) ? CAR_MAX : sinputData.car_speed;
        sinputData.rotate_speed = (ROTATE_MAX < sinputData.rotate_speed) ? ROTATE_MAX : sinputData.rotate_speed;
        sinputData.torquePercent = (TORQUE_MAX < sinputData.torquePercent) ? TORQUE_MAX : sinputData.torquePercent;
        return sinputData;
}
//計(jì)算當(dāng)前檔位
int ShiftNow(float scar_speed, float srotate_speed, unsigned int Key)//計(jì)算當(dāng)前檔位,從6檔以上考慮
{
        //15.53        12.08        9.39        7.33        5.73        4.46        3.48        2.71        2.1        1.64        1.28        1
        gearRadio = 480.255 * srotate_speed / Key / car_speed;//計(jì)算齒輪比
        int shift_now = 0;
      
                if ((gearRadio>4.31) && (gearRadio<4.61))
                {
                        shift_now = 6;
                }
                else if ((gearRadio > 3.33) && (gearRadio < 3.63))
                {
                        shift_now = 7;
                }
                else if ((gearRadio>2.56) && (gearRadio < 2.86))
                {
                        shift_now = 8;
                }
                else if ((gearRadio>1.95) && (gearRadio < 2.25))
                {
                        shift_now = 9;
                }
                else if ((gearRadio>1.49) && (gearRadio < 1.79))
                {
                        shift_now = 10;
                }
                else if ((gearRadio>1.13) && (gearRadio < 1.43))
                {
                        shift_now = 11;
                }
                else if ((gearRadio>0.85) && (gearRadio < 1.15))
                {
                        shift_now = 12;
                }
                else
                        shift_now = 0;//當(dāng)前檔位值初始化為0,將丟棄該點(diǎn)的所有值
               
        return shift_now;
}
//計(jì)算換擋狀態(tài)值,3表示不換擋,4表示升檔,5表示降檔
int  ComputeShiftState(float srotate_speed)//計(jì)算換擋狀態(tài)
{
      
        if((srotate_speed>=Economy_rpm_MIN)&&(srotate_speed<= Economy_rpm_MAX))
        {
                shiftState =3;//不換檔
        }
        else if (srotate_speed > Economy_rpm_MAX)
        {
                shiftState = 4;//升檔               
        }
        else if (srotate_speed < Economy_rpm_MIN)
        {
                shiftState = 5;//降檔
        }
        else
        {
                shiftState = 3;
        }
        return  shiftState ;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表