首页 / 专利库 / 变速箱和齿轮 / 传动系统 / 变速器 / 惰齿轮 / 手自一体机械式无级变速装置

手自一体机械式无级变速装置

阅读:965发布:2022-09-19

专利汇可以提供手自一体机械式无级变速装置专利检索,专利查询,专利分析的服务。并且一种基于离刹系统的手自一体机械式无级变速装置,左脚 刹车 右脚 油 门 ,本安型,不误踩,不怕同时踩,不冒黑烟。配有莲花瓣式离合 开关 的莲花换档 手柄 可在纯手动模式与自动模式下使用,与电动式变速箱换档柄通过软硬链节联接,通过3回路PID调节器将传统 齿轮 变速箱升级为无级变速装置,根据驾驶意图自动换档、跳档,并开发有实现上述功能的 计算机程序 ,人机对话HMI可任意设置车辆机动性,如平稳舒适型或赛车动 力 型,使驾驶得心应手,我行我素。还包括一种当车速超过设定值后刹车时屏蔽离合动作并使 发动机 处于 怠速 的升级版离刹系统变速装置,以及2种半行程机械式离合拉杆、1种半行程刹车拉杆、1种半行程划线 电阻 式离合拉杆。,下面是手自一体机械式无级变速装置专利的具体信息内容。

1.一种基于离刹系统的机动车变速装置,其特征在于,包括手自一体机械式无级变速装置及其控制系统结构、配件结构;
手自一体机械式无级变速装置具有以下结构功能:采用离刹系统的左脚踩刹车、右脚踩并取消离合踏板,因此属于本安型产品;手动自动一体,莲花换档手柄,加装自动驱动的传统齿轮变速箱通过3回路PID调节而拥有无级变速功能,变速装置可根据驾驶意图自动换档,具有高档启车、平稳或快速启车、低速蠕动、低速断离合、踩刹车断离合、停车自动挂空挡、人机对话任意设置机动性的功能;
莲花换档手柄(6、61),端部3-4个莲花瓣式微动电气离合开关形成半封闭壳体覆盖手柄上端,调节微动开关的动作度,使之适手、不误动不惰动;此开关用于换档和模式切换,使用其逻辑“或”信号,具有脉冲保持功能,直到分断或啮合到位为止,并可相互闭,在无低速强制分断离合信号时手动模式下按下开关离合分断,松开离合啮合,在换档过程中离合器将无法啮合,自动状态下能够换档但不能操纵离合,在莲花换档手柄(6、61)配合下换挡;
莲花换档手柄(61)与机械换挡柄(64)链节,自动状态时,手柄柔性,手动状态时手柄刚性。
2.根据权利要求1所述的一种基于离刹系统的机动车变速装置,其特征在于:
取消传统离合踏板,左脚踩踏刹车踏板,在踏板行程的始末分别装有行程开关,右脚踩踏油门踏板,该油门踏板链接一全行程划线变阻器,其输出电阻信号对应踏板行程,通过微机输出电阻值对应的节气门控制信号;在传统机械式齿轮变速箱上方加装电动式自动换档驱动装置,离合器由伺服电机控制,由微机控制自动换档;自动换档驱动装置能用气动式、液压式代替;
各档档位各安装一行程开关,包括空档的三个档位,为了手动换档期间使档位到位到离合片完全啮合这段PID调节时间延长,设计了较长的档位行程开关(67),软质弹簧支撑,以便换档轻松且提前传送档位到位信号;或者一个档位装设两个档位开关(65),以便提前预知到位信号;或者使用电磁接近开关,在换档手柄准备进入档位前正好感知,隐蔽性好,又可防污染;
步进电机M1、M2分别位于三条导轨上驱动轴承支撑驱动板(62)实现平面运动,自动实现换档手柄的各个档位及各个空档位的定位,步进电机M2对侧有一套球型滚动轴承与之位于同一轴承支撑驱动板(62)上,该板与轴承万向节式链接,用于移动手柄,轴承套在机械换档柄(64)上,以减少换档时摩擦,中间插入莲花换档手柄,在手动模式时,手柄带动电机换档,在自动模式时,电机带动手柄换档,步进电机无断电位置保持或锁死功能;
莲花换档手柄(61)与机械换挡柄(64)链节,自动状态时,手柄柔性,以硬质弹簧连接,以防快速换档时伤人,但压接头(7)及链节结构能够保证停车时挂空档的少量手动换档动作;当机械换档柄链节处电磁线圈(72)带电时将使该链节处于手柄刚性的手动状态,以便快速换档,当电磁线圈(74)带电时卡(71)回缩,此时电磁线圈(72)已经失电手柄回到自动状态,根据手、自动模式的状态信号控制电磁线圈接通数秒来转换换档手柄状态。
3.根据权利要求1所述的一种基于离刹系统的机动车变速装置,其特征在于:
自动模式下,微机装置能够预先设定三种启车档位组合:1档或1、2、3档或任一档启车,启车时能够按预设的组合手动挂入相应档位,挂入未被选中的档位将被强制退至1档,当2档或3档高档位启车后数秒内将强制挂入3档或4档高位档维持数秒,至车速达到该档车速或超时后解除强制;非1档启车在启车后数秒内禁止按车速自动换档;
自动模式下,正常情况下按车速度换档,设有数秒的车速确认时间;在包括上下坡或急刹车行驶状况下造成加速度达到设定值后而未达到换档车速时,将按程序逐级跳档,加速度再大将越级跳档,在车辆减速加速度或收油加速度达到设定值后而未达到换档车速时,将逐级减档,再大将越级减档;在逐级或越级跳档、减档后,将进入数秒的强制档位稳定期,至车速达到该档车速或超时后解除强制,随后进入正常按车速换档模式,此功能可避免因车速不符合正常换档要求而退回原档造成的反复自动换档现象,也能够一直驾驶在某档位。
4.根据权利要求1所述的一种基于离刹系统的机动车变速装置,其特征在于:
开机进入手动控制模式,档位在非倒车档与车速大于等于0时能够进入自动模式且手动模式与自动模式可以相互切换,只需在1秒钟内快速按动手动离合开关达到2次以上即可,或在驾驶室合适位置或HMI触摸屏上设置切换按钮代替此操作,在自动模式下挂倒档或因意外倒车将强制退出自动模式至手动,在自动模式前进时手动换非倒车档无效,在任何模式下停车或开机检测到静止超过1分钟后仍未挂空档,将自动挂空档并维持原模式;
在任何模式下静止时只要有刹车不管踩到底与否都能够换档或挂空档,全刹车启车模式:当手动离合开关闲置且刹车踩到底后轻抬刹车踏板,车辆即可平顺启车,即在手动离合开关和刹车到底信号都消失后可启车;无刹车启车模式:手动离合开关闲置刹车不踩到底且刹车信号消失将平顺启车;半刹车启车模式:刹车不踩到底且手动离合开关闭合又消失将平顺启车;任何情况下由静止启车都能够同时踩踏油门踏板达到迅速启车的目的,提高启车动力性,同等功率下启车速度更快,并能够选择平顺启车即半联动启车或快速启车即全联动启车;车速低于低速限值非静止时踩踏刹车不管到底与否都将强行分断离合,此时能够换档、挂空档或直接停车,刹车消失车辆如未静止将进入与启车一样的半联动加速状态即低速蠕动;除启车阶段外踩下刹车发动机将被强制怠速,能够通过供油油路(5)上的怠速电磁(51)或节气门控制,微机控制换挡及启车时的离合啮合运动曲线和时间,以达最佳的启车平顺性和动力性;
怠速电磁阀(51)关断时仍有一定油量维持发动机怠速,或者完全关断供油,但其旁路能够通过维持发动机怠速的油量。
5.根据权利要求1所述的一种基于离刹系统的机动车变速装置,其特征在于:
本装置通过微机控制,微机应用先进的3回路PID调节可快速平稳换档,从而拥有齿轮无级变速功能,并设有恶劣路况供油稳压滤波PID回路,都能够在任何模式下运行;
车速同步PID回路:
在手动模式下换挡,车速同步PID回路能够根据发动机空载转速-供油量特性函数,按照当前档位、车辆加速度以及供油状况实时预设目标档位变速比参数,计算发动机转速折*
算的车速Vy=KN/DX,Vy作为被调量跟踪实时车速即设定值,其输出值调节节气门,档位到位后实际档位折算的车速将作为PID调节的被控量即过程变量,在实际到位档位与目标档位不符时,增加微分D调节功能,从而缩短调节时间,以使在离合器啮合前快速、准确调节发动机转速同步车速,达到换档车速无扰切换;如仍不能达到平顺换档的目的,只要延时松弛手动离合开关1秒左右即可;行车期间挂空档及停车PID不参与跟踪;
在自动模式下,此时在PID跟踪中,被控量Vy函数中的变速比寄存器DX值由目标档位标号寄存器ZD决定赋值,不产生跳变,在离合分断、换档、离合啮合过程中,PID有充足的时间调节被控量Vy跟踪车速;自动换档期间空档位置离合不会啮合并维持继续调节;
啮合跟踪PID回路:
该啮合跟踪PID回路在车速同步PID回路调节完毕上介入,其输出值用于调节节气门,设定值为油门踏板行程电阻值Rfuel对应的供油量Ls,供油量Ls应通过实验获得L-R数据表和曲线,进而得出经验公式L=f(R)或拟合函数,根据此函数向啮合跟踪PID回路提供设定变量值;过程量PV为实际供油量Lp,通过测量得到;
在自动和手动模式调节中,啮合跟踪PID回路用于克服踏板给油与车速同步PID回路调节输出给油切换衔接时的偏差,从而克服人为的顿挫感,即在换档完并不马上将油门切换为“脚动”,而是用啮合跟踪PID回路调节节气门使供油量跟踪并平稳尽快地与油门踏板行程对应的供油量相同,在达到误差限值后将节气门控制权交由手动,此PID参数设置应该取消微分调节,比例带设定1,积分时间适中,尽量使节气门开度按单值斜率曲线尽快接近油门踏板行程对应的节气门开度,避免供油震荡,以使换档后车速平顺;
稳压滤波PID回路:
上述稳压滤波PID回路用于因各种不良路况或人为过激踩踏油门时导致的供油即动力突然变化或不稳定现象;
设定值为油门踏板行程电阻值Rfuel对应的供油量Ls,过程量PV为实际供油量Lp,当检测到供油量剧烈抖动时,该稳压滤波PID回路开始投入调节,平滑缓冲供油量,直至偏差小于设定值后退出,此PID参数整定与啮合跟踪PID回路相同;其输出用于调节节气门,优先权高于踏板油门而低于车速同步PID回路、啮合跟踪PID回路输出,刹车怠速具有最高优先权;
或在供油之后连接一容量足够的“稳压罐”达到克服因各种不良路况或人为过激踩踏油门时导致的供油即动力突然变化或不稳定现象的功能。
6.根据权利要求1所述的一种基于离刹系统的机动车变速装置,其特征在于:
本装置设有用户维护即参数设置功能,在驾驶室设置触摸屏,在任何时候能够输入密码对以下参数进行设置:密码修改,启车半联动与全联动选择,低速刹车强制分断离合车速设值,低速蠕动功能选择,启车选档及启车后档位强制在4、5档使能及其强制锁定时间设定,换档车速及其确认时间设置,换档车速同步PID使能,啮合跟踪PID使能,供油稳压滤波PID使能,自动跳档选择及其加速度阈值以及供油加速度阈值设定,跳高档或跳低档后档位锁定时间设置,停车挂空档时间设置,手动开关启车选择,恢复出厂值;即时生效即时运行,重新启动微机将读取上次设置参量。
7.根据权利要求1所述的一种基于离刹系统的机动车变速装置,其特征在于:
本装置由微机控制,微机具有如下主要功能:起步档位选择;2、3档起步挂4档;跳档;
逐级换档;手动挡变速比预设;对离合、刹车、节气门、启车方式、齿轮箱无级变速的基本控制;停车挂空档;换档;频率测量;加速度测量;供油加速度测量,包括供油抖动测量;参数设置。
8.一种基于离刹系统的机动车变速装置,其特征在于,包括升级版手动变速装置及其控制系统结构、配件结构;
升级版手动变速装置具有如下结构功能:采用离刹系统的左脚操作刹车和离合踏板、或二者合一的离刹踏板,右脚踩油门,具有本质安全性;启车及低速时,由离刹踏板半联动控制车辆及挂离合停车,在车速超过设定值刹车时能够屏蔽离合动作并使发动机处于怠速;
莲花换档手柄(6、61),端部3-4个莲花瓣式微动电气离合开关形成半封闭壳体覆盖手柄上端,调节微动开关的动作力度,使之适手、不误动不惰动;此开关用于换档和模式切换,使用其逻辑“或”信号,具有脉冲保持功能,直到分断或啮合到位为止,并可相互闭锁,在无低速强制分断离合信号时手动模式下按下开关离合分断,松开离合啮合,在换档过程中离合器将无法啮合,自动状态下可换档但不能操纵离合,在莲花换档手柄(6、61)配合下换挡。
9.根据权利要求8所述的一种基于离刹系统的机动车变速装置,其特征在于:
在所述离刹踏板代替刹车踏板情况下,离刹踏板的离合拉杆后半行程与刹车拉杆前半行程都是空行程,其中,电气式离合拉杆主要配件半行程划线电阻器,后半部为短路片,滑动片侧上方设有电磁铁(31),以便在车速超过一定值时,电磁铁动作使滑动片离开划线电阻断开控制信号,减少划线电阻器磨损;当离合踏板与刹车踏板同时布置在驾驶室左侧时,改为全行程划线电阻器;
划线电阻器电阻值通过微机转换为标准工程信号控制离合伺服电机,手动离合开关通过微机输出拟合好的运动控制信号控制离合伺服电机,依照离合器“快踩慢放”的原则设定离合片的动作时间,当车速超过设定值时切断划线电阻器对离合的控制,手动换档离合在任何时候对脚动离合具有优先权;
刹车行程始端安装一行程开关,当车速超过设定值时并有刹车时,输出闭节点控制怠速电磁阀(51)使发动机处于怠速。
10.根据权利要求8所述的一种基于离刹系统的机动车变速装置,其特征在于:
当用伺服电机控制器的高低速功能或双速电机控制时,用电机合适速度控制离合器啮合,用电机高速控制离合器分断,则用中间继电器、逻辑芯片即可实现控制。
11.根据权利要求8所述的一种基于离刹系统的机动车变速装置,其特征在于:
离刹系统机动车离合与刹车二合一踏板所用的半行程刹车拉杆的踏板(1)前端的复位弹簧(12)使钉字拉杆(13)在踏板松弛状态时回到圆筒式拉杆(15)的下部,圆筒式拉杆(15)被与机动车一体的止挡板(16)阻挡不能后退,在踏板动作时拉杆钉字头(14)被端冒(17)阻挡,从而造成前半行程自由空行程。
12.根据权利要求8所述的一种基于离刹系统的机动车变速装置,其特征在于:
机械式半行程机动车离合拉杆是一种离合与刹车二合一的踏板,其外壳为方筒或圆筒,侧壁开有凹槽(25),此外壳与车体固定,其内上部为叉形拉杆叉柄与踏板轴链接且端部有复位弹簧(21)支撑于车体以提供回复力,叉形拉杆一支叉的端部设有挂接顶针(23)及其储能弹簧、导向杆,当叉形拉杆下移时依靠侧向分力将箭头拉杆(26)挤出凹槽并挂接在叉形拉杆另一只叉端的倒钩上,凹槽(25)对面合适位置设有脱钩顶针及其储能弹簧、导向杆,当拉杆上移时使箭头拉杆入槽定位;下部为箭头拉杆通过拉伸弹簧(22)连接于离合器摆臂,拉伸弹簧的拉力及脱钩顶针的侧向脱钩力使箭头拉杆固定于凹槽;
或机械式半行程机动车离合拉杆的倒钩(28)轴连接于叉形拉杆的一叉端且倒钩另一端有压缩弹簧及导向杆支撑于叉端,凹槽(25)对侧相应位置设有压缩弹簧支撑的弹簧膜片(27),当箭头拉杆(26)上移至合适位置时,依靠此弹簧膜片将其挤入凹槽并实现与倒钩的分离;在箭头拉杆进入凹槽前依靠其与倒钩的摩擦力维持挂接,箭头拉杆进入凹槽后依靠拉伸弹簧(22)及摩擦力挂接在凹槽上;
上述拉伸弹簧(22)应挂接在外壳上,另外以无拉张力的拉杆连接离合器摆臂(4)上,以免影响摆臂的机械0点;
机械式半行程机动车离合拉杆在前半部有效行程与空行程切换时有回程差,通过精密机械设计、制造可以使之尽量减少,但不能达到0,所以应将此回程差位置设计在有效离合行程末端以外,避免回程差造成的错觉对控制离合的影响;
当机械式半行程机动车离合拉杆与莲花换档手柄配合时,换档离合开关通过伺服电机或双速电机操作离合,机械式离合拉杆与离合电机输出轴分别通过刹车线连接在离合器摆臂(4)上,实现二者“或”的逻辑关系与电机离合的优先控制权,优先控制权主要用于机械式半行程机动车离合拉杆半联动状态时实现换档离合电机的优先控制,由换档手柄端部离合开关控制换档时的离合动作比踏板更易操作。

说明书全文

手自一体机械式无级变速装置

技术领域

[0001] 本发明涉及一种基于离刹系统的机动车变速装置,尤其涉及一种手自一体机械式无级变速装置和一种升级版手动变速装置,以及他们的计算机程序和配件结构。

背景技术

[0002] 目前各种手动档机动车换档时必须踩踏离合踏板,加之刹车踏板等频繁而复杂的动作,在市区交通繁忙、复杂路段时,很容易发生错踩油门或刹车因此酿成重大交通事故,造成重大生命才生损失。而众多手动挡、自动挡汽车刹车踏板与油门踏板也都沿用发明汽车时的布置方案,都布置在驾驶室右侧由右脚来操作,造成启车时尤其坡道启车不能同时加油,启车困难,负荷都有一只脚承担,而另一只脚成了剥削者,如果以驾驶为生涯,势必造成一定的生理障碍,如同我们要经常锻炼左手从而促进右半大脑发育一样,我们也要经常锻炼左脚以防“半身不遂”。同时,两个踏板由一只脚操作,有些不堪重负,尤其表现在危急时刻,有些不知所措,尤其一旦误踩,我们的“修正主义”反应速度显得太慢。无法跟上事态的发展,众多交通事故证明,紧急时刻一旦误踩,是没有时间纠正的。 发明专利《离刹系统机动车刹车装置》(申请号201110094877.8)已经将离合刹车踏板置于左脚操作并相关联动,也可以合二为一并由左脚操作,右脚仅操作油门,此设计大大减少了事故率,节能环保不冒黑烟,节省发动机刹车片,缓解了驾驶强度、心里紧张情绪,使双脚平均劳动负荷,可同时踩踏,不憋发动机,即使误踩,也有纠正机会。
[0003] 目前普遍使用的手动挡机动车,齿轮变速,动性好,无动能流失,是其他变速装置无法匹敌的,但因为是有级变速,但带来换挡时的顿挫感,操作复杂,不适合高级轿车,即具优良的动力传输性能,又具有无级变速特性的变速装置,一百多年来一直是世界众多汽车厂商追求的梦想,也因此开发出了众多的变速装置:液力耦合变速器双离合变速器、行星齿轮变速器、皮带式无级变速器、金属链条式无级变速器等等不一而足,但或多或少存在着不尽人意的缺陷,不是动力显得不足,就是变速不够平顺,也正是这样的缺陷、矛盾、人们的无休止的追求,给事物的发展带来动力,促使汽车变速装置不断地向前发展,在遭遇诸多困境后,人们又掉过头来顾望机械式齿轮变速装置,迷惑于他的优良动力特性,竞相开发齿轮式无级变速装置,上世界七八十年代出现了各种各样的机械式自动换挡装置,有电动式、液力式、气动式,根据机动车所具有的资源优势,选择动力方案,但不足之处仍然是换挡不平顺问题,鉴于此,齿轮式变速装置即使自动化了,也被列入低挡行列,久久沉冤于地下,不登大雅之堂。
[0004] 本发明鉴于上述技术现状,基于上离剎系统机动车刹车装置和普通手动挡齿轮变速箱,优化了刹车拉杆和离合拉杆的机械机构,设计了电气式离合油门拉杆,同时优化了电动式齿轮变速装置的结构和控制方案,采用先进的三回路PID控制方案,以及离合动作控制方案,产生了手自一体机械式“无级变速”换挡装置,左脚踩刹车踏板,右脚踩油门踏板,该装置具有本质安全性,同步了换挡车速、平顺了换挡后供油波动,消除了换挡顿挫感,同时采用稳压滤波器使供油平顺,克服坎坷路况燃油脉动。自动程序可以根据车速及驾驶意图自动换挡,可2、3档及任意档启车,并强制档位以防频繁换挡,计算机程序允许用户直接对各项驾驶参数进行设置,调试成各种模式,如平稳舒适型、赛车型,得手应心,“为所欲为”,“我行我素”,即时生效,即时运行,同时具有模式切换简单,任何模式停车可自动挂空挡,操作方便,在传统换挡手柄基础上,设计了莲花手柄及同时适合于手动模式和自动模式的软硬链节,保持原有手动挡换挡手柄格的基础上使之功能多样化,适应性强,美观实用。使手动换档时几乎不用有“离合”的意识与动作,自动换挡时安全可靠,一推了之、一档到家,既满足了驾驭纯手动挡的飙车欲望与热情,又满足了高档豪车的幸福与虚荣。
[0005] 本装置将使驾驶更加舒适、安全、易驾,手动档的成本,高档车的享受,本装置将使轿车成为一种体育器材,使驾驶成为一种乐趣、一种锻炼、一种智力活动。
[0006] 过于智能的车我们可能也不愿意开,如同我们得富贵病一样,有时我们要寻求一种劳动、一种锻炼,如同登山野游一样,智能轿车可能会被束之高阁,如果仅仅追求高智力汽车,我们坐在副驾驶位置就可以了,如果为了锻炼我们的智力、体力以及他们的配合能力、健康长寿,那么将一款即安全舒适、环保易驾又能充分锻炼我们的真正手动与真正自动的齿轮无级变速轿车作为健身器材,将是最具明智、最具性价比的时尚选择。

发明内容

[0008] 本发明的目的是提供一种基于离剎系统的手自一体机械式无级变速装置,本安型,通过3回路PID调节器将传统齿轮变速箱升级为无级变速装置,还包括一种当车速超过设定值后刹车时屏蔽离合动作并使发动机处于怠速的升级版离剎系统变速装置,以及几种该装置的半行程机离合、刹车拉杆。
[0009] 为实现上述目的,本发明提供一种基于离刹系统的机动车变速装置:其特征在于,包括手自一体机械式无级变速装置及其计算机程序、配件结构和升级版手动变速装置及其计算机程序、配件结构;
[0010] 手自一体机械式无级变速装置具有以下结构功能:采用离剎系统的左脚踩刹车、右脚踩油门并取消离合踏板,因此属于本安型产品;手动自动一体,公用莲花软硬换档手柄,加装自动驱动的传统齿轮变速箱通过3回路PID调节而拥有无级变速功能,计算机程序可根据驾驶意图自动换档,具有任意档启车、平稳或快速启车、低速蠕动、低速断离合、踩刹车断离合、停车自动挂空挡、人机对话任意设置机动性等功能,以及为实现上述功能的计算机程序和相关配件结构图;
[0011] 升级版手动档变速装置具有如下结构功能:采用离剎系统的左脚操作刹车和离合踏板、或二者合一的离剎踏板,右脚踩油门,具有本质安全性;启车及低速时,由离剎踏板半联动控制车辆及挂离合停车,在车速超过设定值刹车时可屏蔽离合动作并使发动机处于怠速,配合图8所示6及61莲花手柄换挡;为实现上述功能开发有计算机程序,以及几种半行程离合、刹车拉杆用于对离刹系统机动车的改进升级。
[0012] 取消传统离合踏板,左脚踩踏刹车踏板,在踏板行程的始末分别装有行程开关,右脚踩踏油门踏板,该油门踏板链接一全行程划线变阻器,其输出电阻信号对应踏板行程,通过微机输出电阻值对应的节气门控制信号;在传统机械式齿轮变速箱上方加装电动式自动换档驱动装置,离合器由伺服电机控制,由微机程序控制自动换档;自动换档驱动装置也可选用气动式、液压式;
[0013] 图8所示的6、61为本装置的莲花换档手柄,端部3-4个莲花瓣式微动电气离合开关形成半封闭壳体覆盖手柄上端,调节微动开关的动作力度,使之适手、不误动不惰动;此开关用于换档和模式切换, 在计算机程序中使用其逻辑“或”信号,具有脉冲保持功能,直到分断或啮合到位为止,并可相互闭,在无低速强制分断离合信号时手动模式下按下开关离合分断,松开离合啮合,在换档过程中离合器将无法啮合,自动状态下可换档但不能操纵离合;
[0014] 如图9所示档位及编号以图示为例,各档档位各安装一行程开关,包括空档的三个档位,为了手动换挡期间使档位到位到离合片完全啮合这段PID调节时间延长,设计了较长的档位行程开关,如图9的67,软质弹簧支撑,以便换档轻松且提前传送档位到位信号;或者一个档位装设两个档位开关,如图9的65,以便提前预知到位信号;或者使用电磁接近开关,在换档手柄准备进入档位前正好感知,隐蔽性好,又可防污染;
[0015] 图9所示步进电机M1、M2分别位于三条导轨上驱动轴承支撑驱动板62实现平面运动, 程序实现换档手柄的各个档位及各个空档位的定位,步进电机M2对侧有一套球型滚动轴承与之位于同一可移动驱动板62上,该板与轴承万向节式链接,用于移动手柄,如图8所示装配图, 轴承套在图10所示机械换档柄64上,以减少换档时摩擦, 中间插入莲花换档手柄,在手动模式时,手柄带动电机换档,在自动模式时,电机带动手柄换档,步进电机无断电位置保持或锁死功能,MT的变速箱无外力驱动手柄时不会自行换档;
[0016] 图10、图11所示为莲花换档手柄与机械换档柄的链节,图10为自动状态,此时手柄柔性,以硬质弹簧连接,以防快速换档时伤人,但压接头7及链节结构可以保证少量的手动换档动作,如停车时挂空档;当机械换档柄链节处电磁线圈72带电时将使该链节处于图11的手动状态,此时手柄刚性,以便快速换档,当电磁线圈74带电时卡71回缩从而手柄回到自动状态,计算机程序将根据手、自动模式的状态信号控制电磁线圈接通数秒来转换换档手柄状态。
[0017] 自动模式下,可选择 1档或1、2、3档或任一档启车并可手动挂入相应档位,挂入未被选中的档位将被强制退至1档, 2、3档等高档位启车后数秒内将强制挂入3、4档等高位档维持数秒,至车速达到该档车速或超时后解除强制;非一档启车在启车后数秒内禁止进入按车速自动换档程序;
[0018] 自动模式下,正常情况下按车速度换档,设有数秒的车速确认时间;在加速度达到设定值后而未达到换档车速时,将按程序逐级跳档,加速度再大将越级跳档,在车辆减速加速度或收油加速度达到设定值后而未达到换档车速时,将逐级减档,再大将越级减档;这些设置已经包含了驾驶过程中可能出现的上下坡、急刹车等各种行驶状况,在逐级或越级跳档、减档后,将进入数秒的强制档位稳定期,至车速达到该档车速或超时后解除强制,随后进入正常按车速换档模式,此功能可避免因车速不符合正常换档要求而退回原档等反复自动换档,也可一直驾驶在某档位;这些性能将使驾驶得心应手。
[0019] 开机进入手动控制模式, 档位在非倒车档与车速大于等于0时可进入自动模式且手动模式与自动模式可以相互切换 ,只需在1秒钟内快速按动手动离合开关达到2次及以上即可,可在驾驶室合适位置或HMI触摸屏上设置切换按钮代替此操作,在自动模式下挂倒档或因意外等倒车将强制退出自动模式至手动, 在自动模式前进时手动换非倒车档无效,在任何模式下停车或开机检测到静止超过1分钟后仍未挂空档,将自动挂空档并维持原模式;
[0020] 在任何模式下静止时只要有刹车不管踩到底与否都可以换档或挂空档,全刹车启车模式:当手动离合开关闲置且刹车踩到底后轻抬刹车踏板,车辆即可平顺启车,即在手动离合开关和刹车到底信号都消失后可启车;无刹车启车模式:手动离合开关闲置刹车不踩到底且刹车信号消失将平顺启车;半刹车启车模式:刹车不踩到底且手动离合开关闭合又消失将平顺启车;任何情况下由静止启车都可同时踩踏油门踏板达到迅速启车的目的,提高启车动力性,同等功率下启车速度无与伦比,比背普通的手动档MT更加优越,并可选择平顺启车即半联动启车或快速启车即全联动启车;车速低于低速限值非静止时踩踏刹车不管到底与否都将强行分断离合,此时可换档、挂空档或直接停车,刹车消失车辆如未静止将进入与启车一样的半联动加速状态即低速蠕动;除启车阶段外踩下刹车发动机将被强制怠速,可通过怠速电磁或节气门控制,微机通过程序控制换挡及启车时的离合啮合运动曲线和时间,以达最佳的启车平顺性和动力性,见相关程序;
[0021] 如图7所示,电磁阀51关断时仍有一定油量维持发动机怠速,或者完全关断供油,但其旁路可通过维持发动机怠速的油量。
[0022] 本装置通过先进的双回路PID调节可快速平稳换档,从而拥有齿轮无级变速功能,并设有恶劣路况供油稳压滤波PID回路,都可在任何模式下运行;
[0023] 车速同步PID loop1:
[0024] 在手动模式下换挡,车速同步PID可以根据发动机空载转速-供油量特性曲线或函数,按照当前档位、车辆加速度、供油等状况实时预设目标档位变速比参数,计算发动机转速折算的车速Vy=K*N/DX作为被调量跟踪实时车速即设定值,其输出值调节节气门,档位到位后实际档位折算的车速将作为PID调节的被控量即过程变量,在实际到位档位与目标档位不符时,增加微分D调节功能,从而缩短调节时间,以使在离合器啮合前快速、准确调节发动机转速同步车速,达到换档车速无扰切换;如仍不能达到平顺换档的目的,只要延时松弛手动离合开关1秒左右即可;行车期间挂空档及停车PID不参与跟踪;
[0025] 在自动模式下, 此时在PID跟踪程序中,被控量Vy函数中的变速比寄存器Dx值由目标档位标号寄存器ZD决定赋值,不产生跳变,在离合分断、换档、离合啮合过程中,PID有充足的时间调节Vy跟踪车速;自动换档期间空档位置离合不会啮合并维持继续调节;
[0026] 因发动机对供油的迟滞时间小、系统响应快,当微机性能及相关机械性能足够好时换档时间将足够短,将无动力间断现象且无因换档造成的顿挫感。
[0027] 啮合跟踪PID loop2:
[0028] 该回路在loop1调节完毕上介入,其输出值用于调节节气门,设定值为油门踏板行程电阻值Rfuel对应的供油量Ls,Ls应通过实验获得L-R数据表、曲线,进而得出经验公式L=f(R)或拟合函数,根据此函数向loop2提供设定变量值;过程量PV为实际供油量Lp,通过测量得到;
[0029] 在自动、手动模式调节中,loop2用于克服踏板给油与PID loop1调节输出给油切换衔接时的偏差,从而克服人为的顿挫感,即在换档完并不马上将油门切换为“脚动”,而是用PID loop2调节节气门使供油量跟踪并平稳尽快地与油门踏板行程对应的供油量相同,在达到误差限值后将节气门控制权交由手动,此PID参数设置应该取消微分调节,比例带设定1,积分时间适中,尽量使节气门开度按单值斜率曲线尽快接近油门踏板行程对应的节气门开度,避免供油震荡,以使换档后车速平顺;
[0030] 稳压滤波PID loop3:
[0031] 该PID回路用于因各种不良路况或人为过激踩踏油门时导致的供油即动力突然变化或不稳定现象;
[0032] 设定值为油门踏板行程电阻值Rfuel对应的供油量Ls,过程量PV为实际供油量Lp,当在子程序acceleratefuel()中检测到供油量剧烈抖动时,该回路开始投入调节,平滑缓冲供油量,直至偏差小于设定值后退出,此PID参数整定与loop2相同;其输出用于调节节气门,优先权高于踏板油门而低于loop1、loop2输出,刹车怠速具有最高优先权;
[0033] 可在供油之后连接一容量足够的“稳压罐”达到类似的功能;
[0034] 本装置设有用户维护(参数设置)人机接口HMI子程序,在驾驶室设置触摸屏,或与导航仪等设备共用,在任何时候可输入密码对以下参数进行设置:密码修改,启车半联动与全联动选择,低速刹车强制分断离合车速设值,启车选档及启车后档位强制在4、5档使能及其强制锁定时间设定,换档车速及其确认时间设置,换档车速同步PID使能,啮合跟踪PID使能,供油稳压滤波PID使能,自动跳档选择及其加速度阈值以及供油加速度阈值设定,跳高档或跳低档后档位锁定时间设置,停车挂空档时间设置,手动开关启车选择,恢复出厂值;即时生效即时运行,重新启动微机将读取上次设置参量。
[0035] 为了实现上述功能本发明设计了主程序(mian),其中的自动控制程序(auto)包括:起步档位选择程序(startup class selecting),2、3档起步挂4档程序(switching to4 class after starts with 2 or 3 class),跳档程序(auto switchs for exceeding class ),逐级换档程序(auto switchs class by class);其中的手动控制程序(semiauto)包括:变速比预设程序(presetting the ratio of semiauto shift gears);
以及各种子程序:停车挂空档子程序(stopped to 0 class()),主控子程序(master controller()),换档子程序(ZDHDn()),三种频率测量子程序(frequency()),加速度测量子程序(accelerate()),供油加速度测量子程序(acceleratefuel(),包括供油抖动测量),参数设置子程序(HMI())。
[0036] 如图4-5所示为电气式离合拉杆主要配件半行程划线电阻器,前半部为滑线电阻,后半部为短路片,滑动片侧上方设有电磁铁31,以便在车速超过一定值时,电磁铁动作使滑动片离开滑线电阻断开控制信号,减少滑线电阻器磨损;
[0037] 本方案手动离合开关使用图8所示6、61莲花手柄,端部6的3-4个电气开关在程序中使用其逻辑“或”信号,具有脉冲保持功能,直到分断或啮合到位为止,并可相互闭锁,按下开关离合分断,松开离合啮合,在换档过程中离合器将无法啮合;
[0038] 半行程划线电阻器应用于本方案的离合与刹车二合一踏板的离合拉杆,当离合踏板与刹车踏板同时布置在驾驶室左侧时,改为全行程划线电阻器;
[0039] 划线电阻器电阻值通过计算机程序转换为标准工程信号控制离合伺服电机,手动离合开关通过计算机程序输出拟合好的运动控制信号控制离合伺服电机,依照离合器“快踩慢放”的原则设定离合片的动作时间,当车速超过设定值时切断划线电阻器对离合的控制,手动换档离合在任何时候对脚动离合具有优先权;
[0040] 刹车行程始端安装一行程开关,通过程序逻辑,当车速超过设定值时并有刹车时,输出闭节点控制图7所示的怠速电磁阀使发动机处于怠速;
[0041] 设计了基于离剎系统的升级版手动挡变速装置的计算机程序,其逻辑功能详见说明书相关程序段落,当用伺服电机控制器的高低速功能或双速电机控制时,用Q0.3控制电机合适速度代替Network 5、6逻辑啮合,用Q0.2控制电机高速分断,则本装置程序用中间继电器、逻辑芯片即可实现控制。
[0042] 如图1 所示为离刹系统机动车离合与刹车二合一踏板所用的半行程刹车拉杆,用于对该类机动车改进;踏板前端的复位弹簧使钉字拉杆13在踏板松弛状态时回到圆筒式拉杆15的下部,15被与机动车一体的止挡板16阻挡不能后退,在踏板动作时拉杆钉字头14被端冒17阻挡,从而造成前半行程自由空行程。
[0043] 如图2-3所示为离刹系统机动车离合与刹车二合一踏板所用的半行程离合拉杆,图2中的外壳为方筒或圆筒,侧壁开有凹槽25,此外壳与车体固定,其内上部为叉形拉杆叉柄与踏板轴链接且端部有复位弹簧21支撑于车体以提供回复力,叉形拉杆一支叉的端部设有挂接顶针23及其储能弹簧、导向杆,当叉形拉杆下移时依靠侧向分力将箭头拉杆26挤出凹槽并挂接在叉形拉杆另一只叉端的倒钩上,凹槽对面合适位置设有脱钩顶针及其储能弹簧、导向杆,当拉杆上移时使箭头拉杆入槽定位;下部为箭头形拉杆通过拉伸弹簧22连接于离合器摆臂,拉伸弹簧的拉力及脱钩顶针的侧向脱钩力使箭头拉杆固定于凹槽;
[0044] 图3离合拉杆的不同在于,倒钩28轴连接于叉形拉杆的一叉端且倒钩另一端有压缩弹簧及导向杆支撑于叉端,凹槽对侧相应位置设有压缩弹簧支撑的弹簧膜片27,当箭头拉杆26上移至合适位置时,依靠此弹簧膜片将其挤入凹槽并实现与倒钩的分离;在箭头拉杆进入凹槽前依靠其与倒钩的摩擦力维持挂接,箭头拉杆进入凹槽后依靠拉伸弹簧22及摩擦力挂接在凹槽上;
[0045] 上述拉伸弹簧22可挂接在外壳上,另外以无拉张力的拉杆连接离合其摆臂上,以免影响摆臂的机械0点。
[0046] 上述两种拉杆在前半部有效行程与空行程切换时有回程差,通过精密机械设计、制造可以使之尽量减少,但不能达到0,所以应将此回程差位置设计在有效离合行程末端以外,避免回程差造成的错觉对控制离合的影响。
[0047] 当上述离合拉杆与莲花换档手柄配合时,换档离合开关通过伺服电机或双速电机操做离合,如图6所示,机械式离合拉杆与离合电机输出轴分别通过刹车线连接在离合器摆臂上,实现二者“或”的逻辑关系与电机离合的优先控制权,优先控制权主要用于机械式离合拉杆半联动状态时实现换档离合电机的优先控制,由换档手柄端部离合开关控制换档时的离合动作比踏板更易操作。
[0048] 本发明具有如下效益:古老的文明传统与现代科技结合,动力性能优良的齿轮变速与先进的微机控制结合,无疑会盛开璀璨的花朵。本装置在手动(MT)、自动(AMT)任何模式下通过先进的三回路PID调节实现了真正的齿轮无级变速功能,绝无顿挫感,可与CVT竞相媲美。
[0049] 可半联动启车、低速蠕动,任何情况下不溜车,可在任意坡道启车,同时加油提速;也可以可全联动启车、快速换档,提高了启车、加速等的动力性能,同等功率下启车速度无与伦比,比普通手动档MT更加优越,堪称MT及AMT的换代升级版,满足飙车“酷党”欲望的同时得到了“绝对”的安全保障,这是其他变速装置所无法匹敌的。
[0050] 同时具有有恶劣路况下供油稳压滤波功能,简化了繁琐的驾驶动作,提高发动机性能,降低制造成本,提高车辆安全性,永不误踩,也无同时踩踏刹车油门的损害、不冒黑烟。体现“以人为本”的社会生产原则,体现了本装置AMT的一个中心:本质安全,两个基本点:齿轮变、无级变的设计思想。本发明的MT、AMT的驾驶与手动档一样,符合传统、正常的驾驶逻辑观念:即松离合(AMT没有离合)抬刹车,加油或不加油(MT、AMT均可同时加油)车辆开始启动;MT模式下正常手动换档;AMT模式下可任意档启车(可选)并避免频繁自动换档(可选),推上任一前进档,一推了之、 一档到家;自动根据车速、加速度、供油加速度换档跳档(可选);二者停车后均能自动挂空档并保持原模式;用户可根据自己的行驶路况,驾驶技能、习惯和用途与目的总结经验并设置各项性能参数。附图说明
[0051] 下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其他效益显而易见。
[0052] 附图中,
[0053] 图1为机械式半行程机动车刹车拉杆示意图。
[0054] 图2为机械式半行程机动车离合拉杆之一剖视图。
[0055] 图3为机械式半行程机动车离合拉杆之二剖视图。
[0056] 图4为电气式半行程机动车离合拉杆侧视图。
[0057] 图5为电气式半行程机动车离合拉杆正视图。
[0058] 图6踏板离合与手动电机离合同时使用时的拉线布置示意图。
[0059] 图7怠速电磁阀安装示意图。
[0060] 图8莲花手柄装配图。
[0061] 图9齿轮变速箱电动驱动装置平面布置示意图。
[0062] 图10莲花手柄软硬链节自动状态剖视图。
[0063] 图11莲花手柄软硬链节手动状态剖视图。
[0064] 图12 基于离剎系统的升级版手动挡变速装置及其PLC梯形逻辑图。
[0065] 图13 手自一体机械式无级变速装置master controller () 主控子程序PLC梯形逻辑图之一。
[0066] 图14 手自一体机械式无级变速装置master controller () 主控子程序PLC梯形逻辑图之二。
[0067] 图15 手自一体机械式无级变速装置master controller () 主控子程序PLC梯形逻辑图之三。
[0068] 图16 手自一体机械式无级变速装置master controller () 主控子程序PLC梯形逻辑图之四。

具体实施方式

[0069] 以下结合附图对本发明进行详细描述。
[0070] 离刹系统机动车刹车装置的几种半行程拉杆
[0071] 如图1所示刹车拉杆,为离合与刹车二合一踏板所用的半行程刹车拉杆,用于对装有离刹系统机动车刹车装置的机动车进行改进;离刹踏板1前端的复位弹簧12使钉字拉杆13在踏板松弛状态时回到圆筒式拉杆15的下部,15被与机动车一体的止挡板16阻挡不能后退,在踏板动作时拉杆钉字头14被端冒17阻挡,从而造成前半行程自由空行程。
[0072] 如图2-3所示为半行程离合拉杆,为离合与刹车二合一踏板所用的半行程离合拉杆,用于对装有离刹系统机动车刹车装置的机动车进行改进;图2中的外壳29为方筒或圆筒,侧壁开有凹槽25,此外壳与车体固定,其内上部为叉形拉杆叉柄与踏板轴链接且端部有复位弹簧21支撑于车体以提供回复力,叉形拉杆一支叉的端部设有挂接顶针23及其储能弹簧、导向杆,当叉形拉杆下移时依靠侧向分力将箭头拉杆26挤出凹槽并挂接在叉形拉杆另一只叉端的倒钩上,凹槽对面合适位置设有脱钩顶针24及其储能弹簧、导向杆,当拉杆上移时使箭头拉杆入槽定位;下部为箭头形拉杆通过拉伸弹簧22连接于离合器摆臂,拉伸弹簧的拉力及脱钩顶针的侧向脱钩力使箭头拉杆固定于凹槽。
[0073] 图3离合拉杆的不同在于,倒钩28轴连接于叉形拉杆的一叉端且倒钩另一端有压缩弹簧及导向杆支撑于叉端,凹槽对侧相应位置设有压缩弹簧支撑的弹簧膜片27,当箭头拉杆26上移至合适位置时,依靠此弹簧膜片将其挤入凹槽并实现与倒钩的分离;在箭头拉杆进入凹槽前依靠其与倒钩的摩擦力维持挂接,箭头拉杆进入凹槽后依靠拉伸弹簧22及摩擦力挂接在凹槽上。
[0074] 上述拉伸弹簧22可挂接在外壳上,另外以无拉张力的拉杆连接离合其摆臂上,以免影响摆臂的机械0点。
[0075] 上述两种拉杆在前半部有效行程与空行程切换时有回程差,通过精密机械设计、制造可以使之尽量减少,但不能达到0,所以应将此回程差位置设计在有效离合行程末端以外,避免回程差造成的错觉对控制离合的影响。
[0076] 当上述离合拉杆与下文所述莲花换档手柄配合时,换档离合开关通过伺服电机或双速电机操做离合,调整电机速度以适合换挡离合动作的需要。如图6所示,41为踏板离合拉线,42为换档电机拉线,4为离合器摆臂,机械式离合拉杆与离合电机输出轴分别通过刹车线连接在离合器摆臂上,实现二者“或”的逻辑关系与电机离合的优先控制权,优先控制权主要用于机械式离合拉杆半联动状态时实现换档离合电机的优先控制,由换档手柄端部离合开关控制换档时的离合动作比踏板更易操作。
[0077] 基于离剎系统的升级版手动挡变速装置及计算机程序
[0078] 该装置为本发明“一种基于离刹系统的机动车变速装置”的一实施例
[0079] 本装置的硬件构成:
[0080] 图4-5所示为电气式离合拉杆主要配件半行程划线电阻器,用于本发明的升级版手动档变速装置,前半部为滑线电阻,后半部为短路片,滑触片3的侧上方设有电磁铁31,以便在车速超过一定值时,电磁铁动作使滑动片离开滑线电阻断开控制信号,减少滑线电阻器磨损。
[0081] 该划线电阻器与车体固定,在离合拉杆38带动下,将划线电阻器的起始位置34开始运动,此时输出离合片彻底啮合电阻值R2,33为公共引线,运动过程中输出电阻值RX,为离合片半联动电阻值,通过引线35输出,当踏板运动到一半行程时,通过引线36输出离合片彻底分离电阻值R1,以后的行程为短路片37的空行程,输出R1。
[0082] 半行程划线电阻器应用于离刹系统机动车刹车装置的离合与刹车二合一踏板的离合拉杆,当离合踏板与刹车踏板同时布置在驾驶室左侧时,改为全行程划线电阻器,其电阻值信号直接输入到微机控制器或通过电阻变送器转变为标准信号后送到微机控制器,通过程序控制输出标准信号或转换为离合伺服电机需要的信号从而控制离合器动作,由莲花换挡手柄端部的离合开关通过微机控制程序控制离合伺服电机,从而控制换挡时的离合动作。离合电机应具对任何量程内有效信号定位功能,信号超量程时锁定在相应离、合位置功能,以及离、合位置锁定功能,对断信号有使离合器回复分断位置功能。
[0083] 图8所示6、61为本变速装置方案的莲花换档手柄,端部6的3-4个莲花瓣式微动电气离合开关形成半封闭壳体覆盖手柄上端,调节微动开关的动作力度,使之适手、不误动不惰动;此开关用于换档, 除此之外与普通手动挡换挡手柄结构相同,使用其逻辑“或”信号,本装置计算机程序中的手动离合开关具有脉冲保持功能,直到分断或啮合到位为止,并可相互闭锁,当换档手柄在任一档位时,其上的离合开关全部处于断开位置超过离合器分断时间时,离合片将处于啮合状态;在离合片啮合状态下有任一或多个手动离合开关发出脉冲闭合信号或常闭信号时离合片将分断,在换档过程中离合器将无法啮合,在挂空挡时松开开关离合器可以啮合,以保证机动车调试;
[0084] 手动离合开关通过计算机程序输出拟合好的离合器运动控制程序控制离合伺服电机,依照离合器“快踩慢放”的原则设定离合片的动作时间,保证车辆换档平稳;手动换档离合在任何时候对脚动离合具有优先权;
[0085] 刹车行程始端安装一行程开关,通过程序逻辑,当车速超过设定值时并有刹车时,输出闭节点控制图7所示的怠速电磁阀使发动机处于怠速,图中5为供油油路,怠速电磁阀51关断时仍有一定油量维持发动机怠速,或者完全关断供油,但怠速旁路52可通过维持发动机怠速的油量。
[0086] 本装置采用离剎系统机动车刹车装置方式布置踏板,左脚踩踏刹车踏板及离合踏板(或二者合一的离剎踏板), 由滑线电阻器及离合电机取代机械式离合装置,右脚踩踏油门踏板,配合图8所示莲花手动换挡手柄,在启车及低速时,仍由离剎踏板半联动控制车辆及挂离合停车,达到半联动启车、换挡、低速蠕动等驾驶目的,在车速超过设定值时,屏蔽离合踏板滑线电阻器对离合器的控制,从而减少了因离合器的频繁动作对其寿命的影响,且有效地利用发动机的曳动效应。
[0087] 上述基于离剎系统的升级版手动挡变速装置的PLC梯形逻辑图如图12所示。
[0088] 本装置计算机程序以STEP7-MICRO/WIN梯形图编程, 实际应用时可转化为相应C等语言。
[0089] 当用伺服电机控制器的高低速功能或双速电机控制时,用Q0.3控制电机合适速度代替Network 5、6逻辑啮合,用Q0.2控制电机高速分断,则本装置程序用中间继电器、逻辑芯片即可实现控制。
[0090] 该梯形图逻辑诠释如下:
[0091] Network 1
[0092] //X:速度阈值变量,如输入8km/h;V:实时车速。
[0093] //当车速超过一定值时,输出闭接点Q0.0。
[0094] Network 2
[0095] //B1:刹车信号;Q0.1:发动机怠速电磁阀控制继电器。
[0096] //当有Q0.0、B1同时出现时,输出Q0.1,使发动机处于怠速。
[0097] Network 3
[0098] // S1:手动离合开关闭合”或”信号,即离合器分断命令。
[0099] // END1:离合器分断到位信号。
[0100] //当S1动作时,此时只要没有离合器分断到位信号,且没有离合器啮合命令信号Q0.3,则输出离合器分断命令Q0.2并自锁,以防中途S1消失直至到位;此命令无关挡位,保证空挡及换挡过程中离合器可以分断。
[0101] Network 4
[0102] // DD:档位位置”或”信号,(可以含空挡);
[0103] //END2:离合器啮合到位信号。
[0104] //当S1无动作时,此时如果没有离合器啮合到位信号以及分断命令Q0.2,并且换挡手柄已位于任一挡位,则输出离合器啮合命令Q0.3并自锁,直至啮合到位,此逻辑保证空挡位及换挡过程中离合器无法啮合。
[0105] Network 5
[0106] //内部常通继电器SM0.0保证运动控制模POS0_CTRL始终有效,在有Q0.3命令时,通过POS0_RUN运动模块控制离合伺服电机按预定速度啮合到位。
[0107] Network 6
[0108] //当有啮合命令Q0.3时,使POS0_RUN有效,在上升沿脉冲P启动下,存有motion profiles的POS0_RUN读取VB228中的包络表,该表可以包含两步运动曲线:离合片接触前以最快速度运动,开始接触后以一个合适的速度运动直至完全啮合,此速度主要保证动力的传输及离合片的寿命。
[0109] //在Q0.3命令有效期间,通过Aclth实数寄存器输出实数控制离合伺服电机运动到位,啮合到位信号END2结束POS0_RUN对电机的控制,伺服电机应具有具有断信号、断电保位功能。
[0110] //本段Aclth寄存器与下述两个Aclth公用一寄存器,通过D/A转换模块输出4-20mA、1-5DCV、pulse等标准工程量控制离合伺服电机。
[0111] // 可以利用伺服电机控制器的高低速功能或双速电机实现此逻辑,此时用Q0.3控制电机低速。
[0112] Network 7
[0113] // Rxx:数字量REAL,离合滑线电阻器输出的电阻变量对应的工程量。
[0114] //在车速小于预设阈值时,且没有离合器啮合或分断命令时,离合器由离剎踏板滑线电阻器输出的电阻控制,以便在车辆启停及低速行驶时控制车速。手动换档离合在任何时候对脚动离合具有优先权。
[0115] Network 8
[0116] // R11:数字量REAL,离合片彻底分时离合滑线电阻器电阻值R1对应的工程量,传输指令保证在有离合器分断命令时第一时间将此值输入伺服电机控制器,确保离合器以最快速度分断。
[0117] 手自一体机械式无级变速装置及计算机程序
[0118] 本装置为本发明“一种基于离刹系统的机动车变速装置”的另一实施例。
[0119] 本装置的硬件构成:
[0120] 本装置基于离剎系统机动车刹车装置(201110094877.8),取消离合踏板,左脚踩踏刹车踏板,在踏板行程的始末分别装有行程快关B1,B2,右脚踩踏油门踏板,该油门踏板链接一划线变阻器,其输出电阻信号通过微机输出对应的节气门控制信号M3。图8所示的手动离合开关6、换档手柄61为本装置的莲花换档手柄,端部3-4个莲花瓣式微动电气离合开关形成半封闭壳体覆盖手柄上端,调节微动开关的动作力度,使之适手、不误动不惰动;此开关用于换档和模式切换, 在计算机程序中使用其逻辑“或”信号,具有脉冲保持功能,直到分断或啮合到位为止,并可相互闭锁,在无低速强制分断离合信号时手动模式下按下开关离合分断,松开离合啮合,在换档过程中离合器将无法啮合,自动状态下可换档但不能操纵离合;离合伺服电机性能如上一实施例所述;
[0121] 图8-9所示66、69分别为步进电机M1、M2,分别位于三条导轨68上驱动轴承支撑驱动板62,实现xy平面运动,从而实现换档手柄的各个档位及各个空档位的定位,档位及编号以图示为例, 程序根据开关状态将CLSP变量置入相应编号,步进电机M2对侧有一套球形万向节式滚动轴承63与之位于同一可移动支撑驱动板62上,该板与轴承万向节式链接,用于移动手柄,如图8、图10所示, 轴承套在机械换挡柄64上,中间穿过莲花换档手柄61,以减少换档时摩擦,在手动模式时,手柄带动电机换档,在自动模式时,电机带动手柄换档, 由此可见,本自动换挡装置只是在手动挡变速箱加装XY平面驱动装置电机及导轨即可,其余不动。步进电机无断电位置保持(锁死)功能,MT的变速箱无外力驱动手柄时不会自行换档;
[0122] 如图9所示,本装置各档档位各安装一行程开关,包括空档的三个档位,编号如图所示,为了换挡期间使档位到位到离合片完全啮合这段调节时间延长,设计了较长的档位行程开关,如图9的67,软质弹簧支撑,以便换档轻松且提前传送档位到位信号;或者一个档位装设两个档位开关,如图9的65,以便提前预知到位信号;或者使用电磁接近开关,在换档手柄准备进入档位前正好感知,隐蔽性好,又可防污染。
[0123] 图10、图11所示为莲花换档手柄与机械换档柄的链节,图10为自动状态,此时手柄柔性,以硬质弹簧75连接,以防快速换档时伤人,但压接榫头7及链节结构可以保证少量的手动换档动作,如停车时挂空档;当机械换档柄链节处电磁线圈72带电时将使该链节处于图11的手动状态,此时手柄刚性,以便快速换档,当电磁线圈74带电时卡铁71回缩从而手柄回到自动状态,计算机程序将根据手自动模式的不同控制电磁线圈接通数秒来转换换档手柄状态。
[0124] 本装置在传统机械式变速箱上加装电动式换挡驱动装置,离合器由伺服电机控制其动作,由微机程序控制自动换挡,将普通手动挡机动车升级为“无级变速”自动挡机动车,并可切换至纯手动换挡。
[0125] 机械式自动换挡装置也可选用气动式、液压式,根据具体机动车资源状况及节能环保性视方便而定,但实际液压系统并不节能,只要发动机工作就提供足够的液压维持工作,常常是过剩的油压,而伺服电机只在换挡期间耗能。
[0126] 本发明装置属于本安型,基于离剎系统刹车装置而拥有如下本质安全性:永不误踩,也无同时踩踏刹车油门的损害、不冒黑烟。 可以避免一个重大交通安全隐患:因误踩油门且来不及换脚踩刹车造成的重大交通事故:因左脚刹车(本装置手动挡MT可联动离合)在右脚误踩油门时左脚在意识及动作上有足够的闲暇及时遏制事态的发展。
[0127] 本装置的软件功能:
[0128] 本发明的MT、AMT的驾驶与手动挡一样,符合传统、正常的驾驶逻辑观念:即松离合(AMT没有离合)抬刹车,加油或不加油(MT、AMT均可同时加油)车辆开始启动;MT下正常手动换挡;AMT下可任意档启车并避免频繁自动换挡动作,简化了复杂的驾驶动作,推上任一前进挡,一推了之、 一档到家;自动根据车速、加速度、供油加速度换挡跳档。
[0129] 自动模式下,可选择 1档或1、2、3档或任一档启车并手动挂入相应档位,挂入未被选中的档位将被强制退至1档, 2、3档等高档位启车后将强制挂入3、4档等高位挡维持数秒,至车速达到该档车速或超时后解除强制;非一档启车在启车后数秒内禁止进入按车速自动换挡程序。
[0130] 自动模式下,正常情况下按车速度换挡,设有1秒的车速确认时间;在加速度达到设定值后而未达到换挡车速时,将按程序逐级跳档,加速度再大将越级跳档,在车辆减速加速度或收油加速度达到设定值后而未达到换挡车速时,将逐级减档,再大将越级减档;这些设置已经包含了驾驶过程中可能出现的上下坡、急刹车等各种行驶状况,在逐级或越级跳档、减档后,将进入数秒的强制档位稳定期,至车速达到该档车速或超时后解除强制,随后进入正常按车速换挡模式,此功能可避免因车速不符合正常换挡要求而退回原档等反复换挡,也可一直驾驶在某档位;这些性能将使驾驶得心应手。
[0131] 开机进入手动控制模式(Q0=0), 档位在非倒车档与车速大于等于0时可进入自动模式且手动模式(Q0=0)与自动模式(Q0=1)可以相互切换 ,只需在1秒钟内快速按动手动离合开关达到2次及以上即可(可在驾驶室合适位置或HMI触摸屏上设置切换按钮代替此操作),在自动模式下挂倒档(静止踩刹车可挂任何档)或倒车(意外等)将强制退出自动模式至手动, 在自动模式前进时手动换非倒车挡无效,在任何模式下停车或开机检测到静止超过1分钟后仍未挂空挡,将自动挂空挡并维持原模式。
[0132] 在任何模式下静止时只要有刹车不管踩到底与否都可以换档或挂空挡:当手动离合开关闲置且刹车踩到底后轻抬刹车踏板,车辆即可平顺加速启车(全刹车启动),即在手动离合开关和刹车到底信号都消失后可启车;刹车不踩到底刹车信号消失(无刹车启动)或出现SD又消失(半刹车启动)将启车;任何情况下由静止启车都可同时踩踏油门踏板达到迅速启车的目的,并可选择蠕动(平稳)启车或全联动(快速)启车;提高了启车、加速等的动力性能,同等功率下启车速度无与伦比,任何情况下不溜车,可在任意坡道启车,比背普通的手动挡MT更加优越,堪称MT及AMT的换代升级版,满足飙车“酷党”欲望的同时得到了“绝对”的安全保障,体现了齿轮变、无级变的设计思想。
[0133] 车速低于限值非静止时踩踏刹车不管到底与否都将强行分断离合,此时可换挡、挂空挡或直接停车,刹车消失车辆如未静止将进入与启车一样的半联动加速状态(低速蠕动);除启车阶段外踩下刹车发动机将被强制怠速。 可通过如图7所示怠速电磁阀或节气门控制,微机通过程序控制换挡及启车时的离合啮合运动曲线和时间,以达最佳的启车平顺性和动力性,见本装置计算机程序;
[0134] 3套PID调节回路:
[0135] 本装置无论在手动(MT)、自动(AMT)模式下通过先进的双回路PID调节可实现齿轮无级变速功能,并设有恶劣路况供油稳压滤波PID回路,使在换挡过程中无顿挫感,当换挡时间很短时,性能已直逼无级变速CVT了,动力强劲,平顺舒适。
[0136] 车速同步PID loop1:
[0137] 在手动模式下,车速同步PID可以根据发动机空载转速-供油量特性曲线(函数),按照档位状况,车辆加速度、供油等状况预置PID变速比参数,根据实时预设目标档位及档位到位后的实际档位计算发动机转速折算的车速Vy=K*N/DX,作为PID调节的被控量、过程量,使发动机转速跟踪车速,在实际到位档位与目标档位不符时,增加微分D调节功能,从而缩短调节时间,以使在离合器啮合前快速、准确调节发动机转速同步车速,达到换挡车速无扰切换,如仍不能达到平顺换挡的目的,只要延时松手动离合1秒左右即可。行车期间挂空挡及停车PID不参与跟踪。
[0138] 在自动模式下, 此时在PID跟踪程序中,被控量Vy函数中的变速比寄存器Dx值由目标挡位标号寄存器ZD决定赋值,不产生跳变,在离合分断、换挡、离合啮合过程中,PID有充足的时间调节Vy跟踪VX。自动换挡期间空挡位置离合不会啮合维持继续调节。
[0139] 啮合跟踪PID loop2:
[0140] 该回路在loop1调节完毕马上介入,其输出M3用于调节节气门,使实际供油跟踪油门踏板,直至无扰切换;设定值为油门踏板行程电阻值Rfuel对应的供油量Ls,Ls应通过实验获得L-R数据表、曲线,进而得出经验函数L=f(R)或拟合函数,根据此函数向loop2提供设定值变量;过程量PV为实际供油量Lp,通过测量得到。
[0141] 在自动、手动模式调节中,loop2用于克服踏板给油与loop1-PID调节输出给油切换衔接时的偏差,从而克服人为的顿挫感,即在换挡完并不马上将油门切换为“脚动”,而是用PID调节节气门使供油量跟踪并平稳尽快地与油门踏板行程对应的供油量相同,在达到误差限值后将节气门控制权交由手动,注意此PID参数设置应该取消微分调节,比例带设定1,积分时间适中,尽量使节气门开度按单值斜率曲线尽快接近油门踏板行程对应的节气门开度,避免供油震荡,以使换挡平顺,这个调节时间主要取决于司机对油门的操控程度,如果换挡后油门踏板抖动比较激烈,这个时间就会比较长,但这个没关系,因为已经换挡完毕,不存在动力不足问题,这个环路PID的存在相当于滤波器(稳压器),平滑、优化了踏板供油的阶跃、抖动等的扰动,不存在换挡延时与动力流失的概念。
[0142] 因发动机对供油的迟滞时间小、系统响应快,在一般路况下及驾驶技术下,扰动量只有loop1手动状态下偶尔“失算”的变速比的阶跃扰动,这个已经采取措施克服,以及驾驶技术的不熟练,因此两个PID调节时间都相当短,缩短换挡时间的前提是PID整定参数至最佳状态,调节时间足够短(前提是保证偏差足够小),这要求微机性能、时钟频率足够高,PID整定恰当合适。然后保证换挡、离合响应时间在PID调节时间内(机械性能足够好:提高换挡、离合电机功率、转速),当换挡时间足够短时,将无动力间断现象且无因换挡造成的顿挫感。
[0143] 稳压滤波PID loop3:
[0144] 该PID回路用于因各种不良路况或人为过激踩踏油门时导致的动力突然变化现象。
[0145] 设定值为油门踏板行程电阻值Rfuel对应的供油量Ls,过程量PV为实际供油量Lp,当在子程序acceleratefuel()中检测到供油量剧烈抖动时,waveWY=1该回路开始投入调节,平滑缓冲供油量,直至ΔPV5偏差小于设定值ΔSET5退出。其输出M5用于调节节气门,优先权高于踏板油门而低于loop1、loop2输出,刹车怠速具有最高优先权。
[0146] 此PID参数整定与loop2相同。
[0147] 实际这个功能可以应用于没有赛车需求的机动车,尤其在路况恶劣、复杂情况下,可协助司机控制脚的抖动对供油量“骚扰”, 这个环路PID的存在相当于滤波器(稳压器),平滑、优化了踏板供油的阶跃、抖动等的扰动。也可在供油泵之后连接一容量足够的“稳压罐”达到类似的目的。
[0148] 当换挡时间极短时,换挡过程中几乎没有动力不足的失速感,换完档就一路顺风、一路平安了,颠簸路况时当供油波动比较大时即投入稳压滤波功能PID,从而使供油稳定,达到舒适驾驶、无顿挫的目的,即使急速加速或刹车(必要时要有ABS),整个驾驶过程也比较平顺。
[0149] 人机接口HMI:
[0150] 本装置设有用户维护(参数设置)人机接口HMI子程序,在驾驶室设置触摸屏,或与导航仪等设备共用,在任何时候可输入密码对以下参数进行设置:密码修改,启车半联动与全联动选择,低速刹车强制分断离合车速设值,启车选档及启车后档位强制在4、5档使能及其强制锁定时间设定,换档车速及其确认时间设置,换档车速同步PID使能,啮合跟踪PID使能,供油稳压滤波PID使能,自动跳档选择及其加速度阈值以及供油加速度阈值设定,跳高档或跳低档后档位锁定时间设置,停车挂空档时间设置,手动开关启车选择,恢复出厂值;即时生效即时运行,重新启动微机将读取上次设置参量。用户可根据自己的行车路况,驾驶技能、习惯和用途与目的总结经验并设置各项性能参数,量体裁衣,到什么山唱什么歌,我的车我驾驭,我做主,高档、时尚、潮流,可心可人,任我驱使。
[0151] 为了实现上述功能本发明设计了主程序(mian),其中的自动控制程序(auto)包括:起步档位选择程序(startup class selecting),2、3档起步挂4档程序(switching to4 class after starts with 2 or 3 class),跳档程序(auto switchs for exceeding class ),逐级换档程序(auto switchs class by class);其中的手动控制程序(semiauto)包括:变速比预设程序(presetting the ratio of semiauto shift gears);
以及各种子程序:停车挂空档子程序(stopped to 0 class()),主控子程序(master controller()),换档子程序(ZDHDn()),三种频率测量子程序(frequency()),加速度测量子程序(accelerate()),供油加速度测量子程序(acceleratefuel(),包括供油抖动测量),参数设置子程序(HMI())。
[0152] 手自一体机械式无级变速装置计算机程序:
[0153] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0154] main program主程序
[0155] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0156] /*本程序用C语言编写,在实际工程中应根据需要将本程序转换为相应的统一可执行语言。 */
[0157] /*编写本程序的目的在于阐明本发明装置的结构及其控制逻辑、算法、控制策略,并非提供可实施用户程序,所以只写了必要的程序,但辅以说明足以使普通程序员使用相应软件编写可实施程序,如51单片机的C语言 。
[0158] /*本程序以硬件晶振频率扫描刷新数据,主程序、子程序、中断程序等各程序那段满足条件即执行那段程序,可能若干程序同时执行,如master controller程序始终“在线” 。*/
[0159] /*开机*/
[0160] #include /* 库函数头文件*/
[0161] #include
[0162] #include< stdlib.h >
[0163] #include< process.h >
[0164] #include /*如果用MS51编程等*/
[0165] #define DX1 3.94 /* 定义变速比宏常量,以凯美瑞2405AT为例,根据实际需要修改*/
[0166] #define DX2 2.20 /*这类参数用于更换车型,可批量生产时更改或设置二级密码*/
[0167] #define DX3 1.41 /*或由厂家技术人员通过HMI触摸屏更改*/[0168] #define DX4 1.02
[0169] #define DX5 0.74
[0170] Int Q0, Q0.5, Q0.8, X0.8,ZD,CLSP,S1,M1,M2, SD, SD1, SD2, SD3, SD4, /* S1:离合分断命令,全局变量*/
[0171] D1,D2,D3,D4, D5, D10, D30, D50, D-1, /* D1—D5,各档位见附图9*/[0172] swth, END1, END2, /* 全局手动离合触发频率变量,离合分断、啮合到位信号*/[0173] classto0, /* 手动模式离合动作标志 */
[0174] waveWY=0; /* 供油供油抖动超限标志 */
[0175] TCGZ; /*手动挡停车停止PID跟踪*/
[0176] float VX, DX, fuel, acce, accef, /*分别为实时车速、变速比寄存器、供油量、加速度、供油加速度*/
[0177] Int ZDHD1 (viod); /* 换挡子程序*/
[0178] Int ZDHD2(viod);
[0179] Int ZDHD3(viod);
[0180] Int ZDHD4(viod);
[0181] Int ZDHD5(viod);
[0182] Int ZDHD0(viod); /* 换0挡子程序*/
[0183] viod frequency (); /* 手动离合开关触发频率子程序*/[0184] void master controller (int S1,foat DX , int waveWY, int TCGZ,int SDQC); /*主控子程序 */
[0185] int delay_xs(unsigned int X); /* 延时子程序*/[0186] viod stopped to 0 class (unsigned int Y) ; /*停车挂空挡子程序 */[0187] viod accelerate(viod); /*加速度测量子程序 */[0188] viod acceleratefuel (viod); /*供油加速度测量子程序 */[0189] viod HMI (viod); /*参数设置模式子程序 */[0190] /*XXXXXXXXXX setable program variable XXXXXXXXXXXX*/
[0191] int setupin; /*触摸屏“设置”按钮变量 */
[0192] float YT, QB23G4T, TDQZT, ZDQZT, /*停车挂空挡等待时间,起步23档跳4档强制时间,行车跳高档强制时间, 行车跳低档强制时间*/
[0193] V 2, V 3, V 4, V 5, XXT, X0.1; /*换挡车速及其确认时间,低速摘离合低速限值*/
[0194] acce2 ,acce _2 ,acce1,acce _1, accef _2 , accef _1; /*跳档加速度、供油加速度设定*/
[0195] XXXT; /*非1档启车进入按车速换挡程序延时*/[0196] Int QBXD, QB23G4, /* 起步选档(出厂默认值只允许一档起步),起步23档跳4档选择*/
[0197] XBTDS, QXBLD, HDTB,NHGZ, GYLB, /*跳档、起车半联动、换挡同步、啮合跟踪、供油滤波等选择项*/
[0198] XXXX, SDQC, DSRD; /*密码寄存器,手动启车许可,低速蠕动*/[0199] Void main()
[0200] {
[0201] int i,m, Dgo ;
[0202] Q0=0; setupin=0; /*initializing for manual mode */[0203] Int spawnl ( int P_WAIT, char * HMI()); /* Call HMI subprogram for evaluating*/
[0204] Int spawnl ( int P_NOWAIT, char * frequency ()); /* running frequency and running main program at the same*/
[0205] Int spawnl ( int P_NOWAIT, char * accelerate( ));
[0206] Int spawnl ( int P_NOWAIT, char * acceleratefuel (viod));
[0207] while(1) /* always running when power on */
[0208] {
[0209] Printf (“setup\n”); /*show with a stable position on touch-srceen */[0210] scanf(“%d”,&setupin); /*scan the IO of touch-screen,when press “setup” send 1 to main,otherwise 0 */
[0211] if(setupin)
[0212] Int spawnl ( int P_NOWAIT, char * HMI()); /* Call HMI subprogram for setting and running main at the same time */
[0213] /*XXXXXXXXXX evaluating and Mode selecting XXXXXXXXXXXX*/
[0214] If (D1) CLSP==1; else If (D2) CLSP==2; /*evaluating CLSP with real class variable in real time*/
[0215] else If (D3) CLSP==3; else If (D4) CLSP==4; else If (D5) CLSP==5; else If (D10) CLSP==10; else If (D30) CLSP== 30;
[0216] else If (D50) CLSP== 50; else if (D-1) CLSP==-1; else CLSP==88 ;
[0217] Dgo=D1||D2||D3||D4||D5||D10||D30||D50; /* Dgo evaluated by any going and empty class */
[0218] If(Dgo &&VX>=0&&!Q0&& swth >=2) {Q0=1; swth=0;S1=0; ZD=1; TCGZ=1; } /* go into auto mode and initializing,also can set a button in cab or on[0219] touch-screen then isteads the frequency() subprogram * /
[0220] If(CLSP==-1||VX<0||(Q0&& swth >=2)) {Q0=0;swth=0; classto0=0; } /* go into manual mode and initializing */
[0221] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0222] auto program 自动档程序
[0223] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0224] if(Q0) /*go into auto mode */
[0225] {
[0226] Printf ( “auto mode %d class \n ” ,CLSP); /*show“auto mode CLSP class”on a stable position of touch-screen*/
[0227] If(ZD==1) DX= DX1; /* the value of DX decided by ZD */[0228] Else If(ZD==2) DX= DX2;
[0229] Else If(ZD==3) DX= DX3;
[0230] Else If(ZD==4) DX= DX4;
[0231] Else If (ZD==5) DX= DX5;
[0232] Else If (ZD==0) DX= DX1; /* have no practice signification */[0233] int spawnl ( int P_NOWAIT, char * master controller(), char *S1, char *DX,char * waveWY, char * TCGZ, char * SDQC); /* running the sub-program of master controller;and running this program at the same time , and bring the parameters of s1、DX 、waveWY、SDQC to subprogram*/
[0234] /*
[0235] /*XXXXXXXXXX startup class selecting XXXXXXXXXXXX*/
[0236] */
[0237] If(VX==0)
[0238] {
[0239] Switch (QBXD)
[0240] {
[0241] Case 0: ; break; /* allow any class to start */
[0242] Case 23: /* allow 1、2、3 class to start */
[0243] if(CLSP == 4||CLSP == 5)
[0244] { S1=1; ZD=1 ;
[0245] Int spawnl ( int P_WAIT, char * ZDHD1()); /* running the sub-program of auto switching class of ZDHD0 */
[0246] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD1(); } break;
[0247] default: /* only allow 1 class to start with any others input*/
[0248] if(CLSP == 2||CLSP == 3|| CLSP == 4||CLSP == 5)
[0249] { S1=1; ZD=1 ;
[0250] Int spawnl ( int P_WAIT, char * ZDHD1());
[0251] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD1(); } break;
[0252] } /* switch to 1 class or others class permitted to start but do not go out of the last mode when suddenly stop such as urgently braking */
[0253] /*
[0254] /*XXXXXXXXXX*** switching to 4 class after starts with 2 or 3 class ***XXXXXXXXXXXX*/
[0255] */
[0256] If (QB23G4)
[0257] {
[0258] If(X0.8&&CLSP == 2){ for(;;){If(!X0.8)break; }delay_xs(1); S1=1; ZD=3 ;
[0259] Int spawnl ( int P_WAIT, char * ZDHD3());
[0260] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD3(); m=QB23G4T*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V3) break; } } }
[0261] /*suppose that QB23G4T=1circle waste 1s, when velocity
[0262] still not reach V3 the coerce will be released */
[0263] else If(X0.8&&(CLSP == 3){ for(;;){If(!X0.8)break; }delay_xs(1);
[0264] S1=1; ZD=4;
[0265] Int spawnl ( int P_WAIT, char * ZDHD4());
[0266] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD4();m=QB23G4T*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V4); break; } } }
[0267] else If(X0.8&&(CLSP == 4)){ delay_xs(8); m=QB23G4T*1000; while( m --){ for(i=0;i<=100;i++){ if(VX> V4); break; } } }
[0268] else If(X0.8&&(CLSP == 5) { delay_xs(8); m=QB23G4T*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V5); break; } } }
[0269] }
[0270] /*
[0271] auto switchs for exceeding class
[0272] */
[0273] /* not reaching the next class velocity */
[0274] /* ONE ACCELERATION, TWO DECELERATION*/
[0275] If (XBTDS)
[0276] {
[0277] If (CLSP == 1)
[0278] { If (acce>= acce2) /* 1.8m/s2(about with 15s accelerate to100km/h,confirmeds it in practice based on the experimented car */[0279] {S1=1; ZD=3 ;
[0280] Int spawnl ( int P_WAIT, char * ZDHD3()); /* can be compiled as ZDHD4();*/
[0281] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD3(); m=TDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V3); break; }} } /*will released force supposed circled with setted time still not reached V4 */
[0282] If (acce< acce2&&acce>= acce1) /* 1.5m/s2(18s accelerate to100km/h) */
[0283] {S1=1; ZD=2 ;
[0284] Int spawnl ( int P_WAIT, char * ZDHD2());
[0285] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD2(); m=TDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V2); break; } }}
[0286] }
[0287] else If (CLSP == 2)
[0288] { If (acce>= acce2) /* 1.8m/s2(about with 15s accelerate to 100km/h,confirmeds it in practice based on the experimented car */
[0289] {S1=1; ZD=4 ;
[0290] Int spawnl ( int P_WAIT, char * ZDHD4()); /* can be compiled as ZDHD4();*/
[0291] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD4(); m=TDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V4); break; }} } /*will released force supposed circled with setted time still not reached V4 */
[0292] If (acce< acce2&&acce>= acce1) /* 1.5m/s2(18s accelerate to100km/h) */
[0293] {S1=1; ZD=3 ;
[0294] Int spawnl ( int P_WAIT, char * ZDHD3());
[0295] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD3(); m=TDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V4); break; } }}
[0296] if(acce<= acce _1|| accef< accef _1) /* suddenly decelerated for any case such as rapidly reducing oil,the 1.5ml/s2 is estimated, */[0297] {S1=1; ZD=1 ;
[0298] Int spawnl ( int P_WAIT, char * ZDHD1());
[0299] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD1(); m=ZDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX
[0300] }
[0301] else If (CLSP == 3)
[0302] { If (acce>= acce2) /*not permitted with 0 class when running in auto mode, the acceleration only because oil being inceased */[0303] {S1=1; ZD=5 ;
[0304] Int spawnl ( int P_WAIT, char * ZDHD5());
[0305] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD5(); m=TDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V5); break; } }}
[0306] If (acce< acce2&&acce>= acce1)
[0307] {S1=1; ZD=4 ;
[0308] Int spawnl ( int P_WAIT, char * ZDHD4());
[0309] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD4(); m=TDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V4); break; }} }
[0310] if(acce<= acce _2|| accef< accef _2)
[0311] {S1=1; ZD=1 ;
[0312] Int spawnl ( int P_WAIT, char * ZDHD1());
[0313] if(Q0.5){for(;;){if(Q0.8)break; }} S1 = ZDHD1(); m=ZDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX
[0314] if(acce<= acce _1|| accef< accef _1)
[0315] {S1=1; ZD=2 ;
[0316] Int spawnl ( int P_WAIT, char * ZDHD2());
[0317] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD2(); m=ZDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX
[0318] }
[0319] else If (CLSP == 4)
[0320] {
[0321] If (acce>= acce1)
[0322] {S1=1; ZD=5 ;
[0323] Int spawnl ( int P_WAIT, char * ZDHD5());
[0324] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD5(); m=TDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX>V5); break; }} }
[0325] if(acce<= acce _2|| accef< accef _2)
[0326] {S1=1; ZD=2 ;
[0327] Int spawnl ( int P_WAIT, char * ZDHD2());
[0328] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD2(); m=ZDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX
[0329] if(acce<= acce _1|| accef< accef _1)
[0330] {S1=1; ZD=3 ;
[0331] Int spawnl ( int P_WAIT, char * ZDHD3());
[0332] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD3(); m=ZDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX
[0333] }
[0334] else If (CLSP == 5) { if(acce<= acce _2|| accef< accef _2)
[0335] {S1=1; ZD=3 ;
[0336] Int spawnl ( int P_WAIT, char * ZDHD3());
[0337] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD3(); m=ZDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX
[0338] if(acce<= acce _1|| accef< accef _1)
[0339] {S1=1; ZD=4 ;
[0340] Int spawnl ( int P_WAIT, char * ZDHD4());
[0341] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD4(); m=ZDQZT*1000; while( m --){ for(i=0;i<=100;i++){ if(VX
[0342] }
[0343] /*
[0344] auto switchs class by class
[0345] */
[0346] /* already reaching the next class velocity */
[0347] if(X0.8&& CLSP !=1) delay_xs(XXXT);
[0348] { loop88:;
[0349] If(VX>0 &&VX <= V 2&&CLSP != 1) /* to 1 class*/
[0350] {
[0351] m= XXT *1000; while( m --){ for(i=0;i<=100;i++){ If(VX<=0 || VX > V 2)[0352] goto loop88; } } /* to sunprogram of delay_xs ,delay1s) */[0353] { S1=1; ZD=1 ; /*disjoining clutch,evaluating ZD to adjust the parameter of PID */
[0354] Int spawnl ( int P_WAIT, char * ZDHD1()); /* running the sub-program of auto switching class of ZDHD1 */
[0355] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD1(); /*completed swithing S1=0 to close the clutch*/
[0356] } }
[0357] else If(VX>V2 &&VX <= V 3&&CLSP != 2) /* to 2 class*/[0358] { m= XXT *1000; while( m --){ for(i=0;i<=100;i++){ If(VX<= V2 || VX > V 3)[0359] goto loop88; } } /* to cut off the pulse of velocity*/[0360] { S1=1; ZD=2 ;
[0361] Int spawnl ( int P_WAIT, char * ZDHD2());
[0362] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD2();
[0363] } }
[0364] else If (VX>V3 &&VX <= V 4&&CLSP != 3)
[0365] {
[0366] m= XXT *1000; while( m --){ for(i=0;i<=100;i++){ If(VX<= V3|| VX > V4 )[0367] goto loop88; } }
[0368] { S1=1; ZD=3;
[0369] Int spawnl ( int P_WAIT, char * ZDHD3());
[0370] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD3();
[0371] } }
[0372] else If (VX>V4 &&VX <= V5&&CLSP != 4)
[0373] { m= XXT *1000; while( m --){ for(i=0;i<=100;i++){ If(VX<= V4 || VX > V 5)[0374] goto loop88; } }
[0375] { S1=1; ZD=4 ;
[0376] Int spawnl ( int P_WAIT, char * ZDHD4());
[0377] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD4();
[0378] } }
[0379] else if(VX >V5&&CLSP != 5)
[0380] { m= XXT *1000; while( m --){ for(i=0;i<=100;i++){ If(VX<= V5)[0381] goto loop88; } }
[0382] { S1=1 ; ZD=5 ;
[0383] Int spawnl ( int P_WAIT, char * ZDHD5());
[0384] if(Q0.5){for(;;){if(Q0.8)break; } } S1 = ZDHD5();
[0385] } }
[0386] }
[0387] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0388] semiauto program 手动档程序
[0389] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0390] if (!Q0) /*go to semiauto mode */
[0391] {
[0392] Printf ( “semiauto %d class \n ” ,CLSP); /* at the HMI screen stable position showing mode and real class named as CLSP*/
[0393] if(classto0)S1=1;
[0394] else { Scanf(“%d%d%d%d”,&sd1, &sd2, &sd3, &sd4) ;
[0395] S1=SD=SD1||SD2||SD3||SD4; } /*the manual-switch named as SD1、SD2、SD3、SD4 with “or” logic*/
[0396] /*XXX program of presetting the ratio of semiauto shift gearsXXX*/[0397] /* the class that to being swithed by manual , not using gyroscope */[0398] If(VX<=0) DX= DX1; else{
[0399] If(END 2) {
[0400] Switch (CLSP)
[0401] {
[0402] Case 10:
[0403] Case 30:
[0404] Case 50:
[0405] m=1000;
[0406] while( m --){ for(i=0;i<=100;i++){ if( CLSP!= 10&&CLSP!= 30&&CLSP!=50))goto loop3; } } /*wait 0 class for less than 1s to
[0407] correct the action error */
[0408] If(VX <= V 2){ if(acce>= acce2) DX= DX3 ; else if(acce> acce1) DX=DX2; else DX= DX1; }
[0409] else If(VX>V2 &&VX <= V 3) { if(acce<= acce _1) DX= DX1 ; else if(acce>= acce2) DX= DX4 ; else if(acce> acce1) DX=DX3; else DX= DX2 ;} /* declivity */
[0410] else If (VX>V3 &&VX <= V 4) { if(acce<= acce _2) DX= DX1 ; else if(acce<= acce _1) DX= DX2 ; else if(acce>= acce2) DX= DX5 ; else if(acce> acce1) DX=DX4; else DX= DX3 ;
[0411] else If (VX>V4 &&VX <= V 5) { if(acce<= acce _2) DX= DX2 ; else if(acce<= acce _1) DX= DX3 ; else if(acce> acce1) DX= DX5 ; else DX= DX4 ;}[0412] else if(VX >V5) { if(acce<= acce _2) DX= DX3 ; else if(acce<= acce _1) DX= DX4 ; else DX= DX5 ; }
[0413] break;
[0414] Case 1 : if(acce>= acce1) DX= DX3; else DX= DX2;break; /*when acceleration reaching 1.8m/s2 .this kind of should conform(affirm) it at practice */ /* stop PID tracking when stopping*/[0415] Case 2:
[0416] if(acce>= acce2) DX= DX4; else if(acce> acce1) DX=DX3; else if(acce< acce _1|| accef< accef _1) DX= DX1; else If ((VX>V3 &&VX <= V 4) ||(acce> 0)) DX=DX3; else If((VX>0 &&VX <= V 2) ||(acce< 0) ||(accef<0)) DX= DX1; break;
[0417] /* swithing based on acceleration and velocity*/
[0418] Case 3: if(acce>= acce2) DX= DX5; else if(acce> acce1) DX=DX4;else if(acce<= acce _2|| accef< accef _2) DX= DX1; else if(acce<= acce _1|| accef< accef _1) DX= DX2; else If ((VX>V4 &&VX <= V5) ||(acce> 0)) DX=DX4; else If((VX>V2 &&VX <= V 3) ||(acce< 0) ||(accef<0)) DX= DX2; break;
[0419] Case 4:if(acce> acce1) DX=DX5; else if(acce<= acce _2|| accef< accef _2) DX= DX2; else if(acce<= acce _1|| accef< accef _1) DX= DX3; else If ((VX> V5) ||(acce>0)) DX=DX5; else If((VX>V3 &&VX <= V 4) ||(acce< 0) ||(accef<0)) DX= DX3; break;
[0420] Case 5: if(acce<= acce _2|| accef< accef _2) DX= DX3; else if(acce<= acce _1|| accef< accef _1) DX= DX4; else If((VX>V4 &&VX <= V 5) ||(acce< 0) ||(accef<0)) DX= DX4; break;
[0421] }}
[0422] loop3:;
[0423] If(CLSP==1) DX= DX1;
[0424] Else If(CLSP==2) DX= DX2;
[0425] Else If(CLSP==3) DX= DX3;
[0426] Else If(CLSP==4) DX= DX4;
[0427] Else If (CLSP==5) DX= DX5; }
[0428] If((VX>0 &&VX <= V 2) &&(acce< 0 ||accef<0)) TCGZ= 0; else TCGZ= 1;
[0429] int spawnl ( int P_NOWAIT, char * master controller(),char *S1, char *DX, char * waveWY, char * TCGZ, char * SDQC); /* running master[0430] controller,and running main at the same time , deliver s1、DX to subprogram。 */
[0431] }
[0432] /* semiauto end */
[0433] if (!VX&&!(CLSP==10|| CLSP== 30|| CLSP== 50) ) /* detected not running and not in empty class in any mode of auto or manual */
[0434] Int spawnl ( int P_WAIT, char * stopped to 0 class (), char *YT); /* running the sub-program of stopped to 0 class and running the main program at the same time */
[0435] /* auto to empty class one minute after stopped in any mode */[0436] } }
[0437] /* main END */
[0438] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0439] master controller () 主控子程序
[0440] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0441] /*说明:本程序用STEP7-MICRO/WIN编程语言编程,包括自动换挡及手动换挡公用的必要的逻辑梯形图,以实现本发明装置的控制功能,在实际工程中应将本程序转换为相应的统一(或可执行)语言,如51单片机的C语言。*/
[0442] #include /* 库函数头文件*/
[0443] #include
[0444] #include /* 使用微机控制时转换成相应语言*/[0445] #define N 50 /*这类参数用于更换车型,可批量生产时更改或设置二级密码*/
[0446] #define K 100
[0447] void master controller (int S1,foat DX , int waveWY, int TCGZ,int SDQC);
[0448] {
[0449] float /*本函数内部变量由微机IO端口直接读入或内部计算得出。*/[0450] X0, X0.0, Aclth, R11,ΔSET1, ΔSET2, ΔSET5, Ls,Lp, ΔPV1, ΔPV2, ΔPV5,[0451] M1,M2,M3,M4,M5, Afuel, Vy ;
[0452] ΔPV1= Vx-Vy;Vy=K*N/DX;ΔPV2=ΔPV5=Ls-Lp;
[0453] int
[0454] Q0.0, Q0.1,Q0.2, Q0.3, Q0.4, Q0.9, Q1.1, Q1.2, Q1.8, Q2.1, B1,B2, X1.1, X0.0,[0455] DS= D1||D2||D3||D4||D5||D-1; /*任一实际档位信号,参见图9*/[0456] DD= D1||D2||D3||D4||D5||D-1||D10||D30||D50; /*赋值为任一挡位信号*/[0457] 如图13-16所示为手自一体机械式无级变速装置master controller () 主控子程序PLC梯形逻辑图,各段程序逻辑诠释如下:
[0458] Network 1
[0459] //X0:速度阈值变量,如输入8km/h;Vx:实时车速。Vx大于X时输出闭接点Q0.0[0460] Network 2
[0461] X0.0:车辆静止时闭接点。
[0462] Network 3
[0463] //此逻辑用于判断车辆启动时刻,档位参见图9。
[0464] // END2:离合器啮合到位信号。
[0465] Network 4
[0466] //B1:刹车信号,动作期间有效;
[0467] //Q0.1:发动机怠速电磁阀控制继电器。
[0468] //当没有X0.8而有B1同时出现时,输出Q0.1,使发动机处于怠速。
[0469] Network 5
[0470] // B2:刹车踩到底接通信号。
[0471] Network 5-9自动/手动模式下可实现:
[0472] 低速蠕动,时与启车一样的延时半联动而非长久半联动,满足低速时短暂的加速减速需求同时,有效地保护了离合片。
[0473] 静止时——无B1、B2、S1离合将保持啮合——当只有B1将分断——当有B2时Q0.2、Q0.3都无效保持分断——SD已松开B2消失或者B2消失再松开SD——可启动(带刹车)。
[0474] 运动时——低速时有B1或同时有B2则强制分断(静止前B1消失将啮合——有B2至静止强制解除——B2消失可重新启动(带刹车)。
[0475] 静止时——当只有B1将分断,可挂档或摘档,B1消失可以启动(无刹车启动)[0476] 手动模式下:
[0477] 静止时——当只有B1将分断,出现SD并消失可启车(半刹车启动)。
[0478] Network 6
[0479] //X1速度阈值变量,如输入0.8km/h;Vx大于X1时输出闭接点X0.1
[0480] Network 7
[0481] S1要延时1秒钟,如在驾驶室或触摸屏另设按钮代替手动触发频率开关swth则不用延时;或可以直接使用S2= S1,则换挡也无延时,只是在转换模式时离合器要分断一下。
[0482] T34、T35:逻辑延时。
[0483] Network 8
[0484] // END1:离合器分断到位信号。
[0485] //在无强制分断信号时,当S2输出闭接点时,此时只要没有离合器分断到位信号,则输出离合器分断命令Q0.2;此命令无关挡位,保证换挡过程中离合器可以分断;
[0486] //上支逻辑实现低速刹车挂离合、挂空挡、停车等动作,配合Q0.3逻辑实现静止启车,。
[0487] Network 9 ,
[0488] //当S2输出开接点时,此时如果没有离合器啮合到位信号以及分断命令Q0.2,并且换挡手柄已位于任一挡位,则输出离合器啮合命令Q0.3,此逻辑保证换挡过程中离合器无法啮合。
[0489] Network 10
[0490] //内部常通继电器SM0.0保证运动控制模块POS0_CTRL始终有效,在有Q0.3命令时,通过POS0_RUN、POS1_RUN运动模块控制离合伺服电机按预定速度啮合到位。
[0491] Network 11
[0492] //当有啮合命令Q0.3时,使POS0_RUN有效,在上升沿脉冲P启动下,存有motion profiles的POS0_RUN读取VB228中的包络表,该表可以包含两步运动曲线:离合片接触前以最快速度运动,开始接触后以一个合适的速度运动直至完全啮合,此速度主要保证动力的传输及离合片的寿命。
[0493] //在符合条件时Q0.3命令通过Aclth实数寄存器输出实数控制离合伺服电机运动到位,啮合到位信号END2结束POS0_RUN对电机的控制,伺服电机应具有具有断信号、断电保位功能。
[0494] //本段Aclth寄存器与下述两个Aclth t公用一寄存器,通过D/A转换模块输出4-20mA、1-5DCV、pulse等标准工程量控制离合伺服电机。
[0495] //本段主要用于非启车阶段及车速大于X0.1的换挡动作。
[0496] Network 12
[0497] //本段用于启车及低速时的离合器啮合速度曲线的控制。VB388存储的包络表主要包括啮合速度较快而时间较短的第一段、速度较慢而时间较长的第二段,以及速度较快而时间较短的第三段,总的啮合时间约2-8秒,根据车辆启动时及低速(
[0498] //较长时间的半联动产生液力耦合效应,使启车平稳,不易熄火。
[0499] //通过变量QXBLD用户可选择半联动或全联动启车。
[0500] //通过变量DSRD用户可选择低速蠕动或低速全联动。
[0501] Network 13
[0502] // R11:数字量REAL变量,由内部寄存器预先设定,对应离合片彻底分时伺服电机输入模拟量(模拟量与离合位置对应)。
[0503] //传输指令保证在有离合器分断命令时第一时间将此值输入伺服电机控制器,确保离合器以最快速度分断。
[0504] Network 14
[0505] //离合器分断命令Q0.2触发RS触发器输出Q0.4使能发动机转速PID同步调节器,以使在Q0.2消失后END 2到来前维持该调解有效。
[0506] Network 15
[0507] //ΔPV1为车速与发动机转速差,ΔSET1为预先设定允许误差(应考虑离合片啮合时间在PID调节过程结束前发挥的作用)。Q0.8与自动换挡到位信号同时满足后允许啮合。
[0508] Network 16
[0509] //在手动模式下,以实时车速Vx为给定值SV,发动机转速折算的车速Vy为过程变量PV,在怠速继电器Q0.1无动作时,从手动分断离合命令Q0.2开始,到离合片啮合到位END2出现为止,为PID模块调节节气门使Vy跟踪Vx的有效时间, VB100为回路表起始地址,存储该回路PID配置信息。
[0510] //Vy的计算方法:Vy=K*N/DX,其中N为发动机转速,DX为预设挡位及相继的实际档位的变速比,K为变速箱输出轴转换为车速的比例系数。当换挡到位时Vy以实际档位计算,当实际档位与预设目标档位不符时,过程变量Vy在换挡后要发生阶跃跳变,此时仅靠POS0_RUN中的啮合时间难以完成调节任务,这个啮合时间可能只有0.1秒,此时如果延时松手动离合1秒左右,则可平顺换挡,达到自动模式的效果。
[0511] //在PID调节时可以根据发动机空载转速-供油量特性曲线(函数),根据实时预设档位及实际档位计算Vy作为PID调节的被调量,在实际到位档位与目标档位不符时,增加微分D调节功能,从而缩短调节时间。)
[0512] //行车期间挂空挡及停车PID不参与跟踪。
[0513] //缩短换挡时间的前提是PID整定参数至最佳状态,调节时间足够短(前提是保证偏差足够小),然后保证换挡、离合响应时间在其范围内(机械性能足够好:提高换挡、离合电机功率、转速),当换挡时间足够短时,将无动力间断现象且无因换挡造成的顿挫感。
[0514] 在自动模式下, 此时在PID跟踪程序中,被控量Vy函数中的变速比寄存器Dx值由目标挡位标号寄存器ZD决定赋值,不产生跳变,在离合分断、换挡、离合啮合过程中,PID有充足的时间调节Vy跟踪VX。自动换挡期间空挡位置离合不会啮合将维持继续调节。
[0515] Network 17
[0516] //ΔPV2=Ls-Lp(变量定义见下)、ΔSET1为loop2允许偏差,偏差达到要求后输出Q0.9。
[0517] Network 18
[0518] Q1.1为loop2可能的工作时间段。
[0519] Network 19
[0520] //该回路设定值为油门踏板行程电阻值Rfuel对应的供油量Ls,Ls应通过实验获得L-R数据表、曲线,进而得出经验函数L=f(R)或拟合函数,根据此函数向loop2提供设定值变量;过程量PV为实际供油量Lp,通过测量得到,在loop1调节完毕马上介入,其输出M2用于调节节气门。
[0521] //在自动、手动模式调节,loop2用于克服踏板给油与loop1-PID调节输出给油切换衔接时的偏差,从而克服人为的顿挫感,即在换挡完并不马上将油门切换为“脚动”,而是用PID调节节气门使供油量跟踪并平稳尽快地与油门踏板行程对应的供油量相同,在达到误差限值后将节气门控制权交由手动,注意此PID参数设置应该取消微分调节,比例带设定1,积分时间适中,尽量使节气门开度按单值斜率曲线尽快接近油门踏板行程对应的节气门开度,避免供油震荡,以使换挡平顺,这个调节时间主要取决于司机对油门的操控程度,如果换挡后油门踏板抖动比较激烈,这个时间就会比较长,但这个没关系,因为已经换挡完毕,不存在动力不足问题,这个环路PID的存在相当于滤波器(稳压器),平滑、优化了踏板供油的阶跃、抖动等的扰动,不存在换挡延时与动力流失的概念。
[0522] //实际这个功能可以应用于没有赛车需求的机动车,尤其在路况恶劣、复杂情况下,可协助司机控制脚的抖动对供油量“骚扰”,也可在供油泵之后连接一容量足够的“稳压罐”达到同样的目的。
[0523] //loop1已经克服了换挡过程的速度差从而克服顿挫感,因发动机对供油的迟滞时间小、系统响应快,在一般路况下及驾驶技术下,扰动量只有偶尔“失算”的变速比的阶跃扰动以及驾驶技术的不熟练,因此两个PID调节时间都相当短,换挡过程中几乎没有动力不足的失速感,换完档就一路顺风、一路平安了。即使路况恶劣、急速加速或刹车(当然要有ABS),整个换挡过程也不会有顿挫感,只是动力略显不足。
[0524] //当然变速比的变化同样的油门车速将发生变化,发动机转速与供油量单值递增关系,某些段落的特性曲线接近线性,所以在向高档位换挡时应当收点油,在向低档位换挡时应该加点油,低档位多点、高档位少点(变速比落差大小不同),无论自动手动换挡,都不应该怠速,与没换档时的加减速一样操作油门即可,性能可直逼AT、CVT,换挡将相当平顺,实际无论自动手动模式,换挡时油门是由PID控制的,保持加油姿势并非真加油,只是感觉并保持供油量以减少顿挫感。实际即使纯手动档MT按此操作油门,如果把握得好,同样可以克服换挡顿挫感。
[0525] Network 20
[0526] //loop1、loop2的输出M1、M2,油门踏板控制信号M3,以及发动机怠速信号M4可通过MOVE模块经Afuel模拟变量控制节气门步进电机,M4具有最高优先权,M1、M2次之并具有同等优先权。油门踏板通过划线电阻器只输出行程信号Rfuel,进行A/D转换为内部标准信号M3后 控制油门。
[0527] M3可通过电阻变送器得到对应的4-20mA信号Ifuel。
[0528] 当有M5供油稳压控制调节输出时,除了稳压控制信号Q2.1外与M3处于同等级别,档有稳压要求控制信号Q2.1时,M5通过M3禁止,反之M3通过M5禁止。
[0529] Network 21
[0530] // waveWY供油抖动检测量限值,单位ml/s,当供油抖动超过此设定值时=1,启用稳压滤波功能
[0531] //该PID回路用于因各种不良路况或人为过激踩踏油门时导致的动力突然变化现象。
[0532] //设定值为油门踏板行程电阻值Rfuel对应的供油量Ls,Ls应通过实验获得L-R数据表、曲线,进而得出经验函数L=f(R)或拟合函数,根据此函数向loop2提供设定值变量;过程量PV为实际供油量Lp,通过测量得到,当在子程序acceleratefuel()中检测到供油量因路况等剧烈抖动时(可检测供油量的突然变化)waveWY=1该回路开始投入调节,平滑缓冲供油量,直至ΔPV5偏差小于设定值ΔSET5退出。其输出M5用于调节节气门,优先权高于M3而低于其他Afuel。此功能可在任何模式下选择用于不用。
[0533] //注意此PID参数设置应该取消微分调节,比例带设定1,积分时间适中,尽量使节气门开度按单值斜率曲线尽快接近油门踏板行程对应的节气门开度,避免供油震荡,以使驾驶平顺,这个环路PID的存在相当于滤波器(稳压器),平滑、优化了踏板供油的阶跃、抖动等的扰动。
[0534] //实际这个功能可以应用于没有赛车需求的机动车,尤其在路况恶劣、复杂情况下,可协助司机控制脚的抖动对供油量“骚扰”,也可在供油泵之后连接一容量足够的“稳压罐”达到类似的目的。
[0535] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0536] stopped to 0 class () 停车挂空挡子程序
[0537] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0538] #include
[0539] viod stopped to 0 class (unsigned int YT) /* example for microcompuetr with 11.0592MHz clock, when YT=1 delay 1s*/
[0540] { unsigned int i; n=1000*YT; while(n--){ for(i=0;i<100;i++){ if (VX!=0||CLSP==10|| CLSP== 30|| CLSP== 50)goto loop1 ;} } /* the value of i should be affirmed
[0541] in practice, this is a estimate */
[0542] if(Q0) {S1=1; ZD=1 ;}
[0543] else classto0=1; /*to cut off the clutch, to preset the target of velocity class */
[0544] Int spawnl ( int P_WAIT, char * ZDHD0()); /* running the subprogram of auto switching class of ZDHD0;when completion return*/[0545] if(Q0) { S1 = ZDHD0();}else classto0=0;
[0546] /* the last mode will going on */
[0547] loop1 : ;
[0548] }
[0549] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0550] frequency () 手动离合开关触发频率子程序
[0551] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0552] /* program 1 */
[0553] #include /*supposed to control with MS51 */
[0554] #include /*I/O functions gathered documents */[0555] #include
[0556] viod frequency ()
[0557] { long m=0;
[0558] int n=0, f=0,k=0,swth=0;
[0559] for(;;) /*always detecting the signal of SD,tracking in real time */[0560] { Scanf(“%d%d%d%d”,&sd1, &sd2, &sd3, &sd4) ;
[0561] /*always scan the IO of SD */
[0562] Scanf(“%d%d%d%d%d%d%d%d%d”,& d1, &d2, &d3, &d4, &d5, &d10, &d30, &d50, &d-1) ;
[0563] /*always scan the IO of class signal for others user, D1—D-1 in figure9*/
[0564] SD=SD1||SD2||SD3||SD4; m++;
[0565] If(SD)f=1; if (f&&!SD) n=1; if (n&&SD)k=2;
[0566] If(m>=10000) /*supposed that circled 10000 times with 1s to record the appeared times of SD=1 */
[0567] { swth=f;if(k) swth=k; f=m=n=k= 0; }
[0568] }}
[0569] /* program 2 */
[0570] #include
[0571] #include
[0572] #include
[0573] viod frequency ()
[0574] {
[0575] long f1=0,f2=0, m=0, swth=0;
[0576] for(;;)
[0577] { Scanf(“%d%d%d%d”,&sd1, &sd2, &sd3, &sd4) ;
[0578] SD=SD1||SD2||SD3||SD4;
[0579] m++; if (f2==f1&&SD) f1++; if ((f1>f2&&!SD)) f2++;
[0580] If(m>=10000)
[0581] { swth=f1; m=f1=f2=0;}
[0582] }}
[0583] /* program 3 */
[0584] #include
[0585] #include
[0586] #include
[0587] viod frequency ()
[0588] { int X=1,m,f, swth=0;
[0589] loop2: m= f =0;
[0590] int spawnl ( int P_NOWAIT, char * delay_xs(), char *1);
[0591] /*to delay subprogram and running this program at the same time */[0592] for(;;)
[0593] { Scanf(“%d%d%d%d”,&sd1, &sd2, &sd3, &sd4) ;
[0594] SD=SD1||SD2||SD3||SD4;
[0595] m++; if (!f%2&&SD) f++; if (f%2&&!SD) f++;
[0596] If(delay_xs() ==1)
[0597] { swth=(int)(f/2+0.5) loop2; }}
[0598] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0599] ZDHD1() 换挡子程序
[0600] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0601] #include
[0602] int ZDHD1 (viod) /*to 1 class */[0603] {
[0604] for(;;){scanf(“%d”,&end1); /*scan microcomputer IO to read the[0605] state of END1 */
[0606] if(end1)break;} /* waiting for the clutch to be closed */[0607] Switch (CLSP) /*do not consider the change of CLSP value after go into case sentence */
[0608] {
[0609] Case 2: ;
[0610] break;
[0611] Case 3:
[0612] while(D30 != 1){ scanf(“%d”,&D30); M1=-1;}
[0613] while(D10 != 1){ scanf(“%d”,&D10); M2=-1;}
[0614] break;
[0615] Case 4:
[0616] while(D30 != 1){ scanf(“%d”,&D30);
[0617] M1=1;}
[0618] while(D10 != 1){ scanf(“%d”,&D10);
[0619] M2=-1;}
[0620] break;
[0621] Case 5:
[0622] while(D50 != 1){ scanf(“%d”,&D50); M1=-1;}
[0623] while(D10 != 1){ scanf(“%d”,&D10); M2=-1;}
[0624] break;
[0625] }
[0626] while(D1 != 1){ scanf(“%d”,&D1); M1=1; } S1=0; Return(S1); }[0627] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0628] ZDHD2() 换挡子程序
[0629] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0630] #include
[0631] int ZDHD2 (viod)
[0632] {
[0633] for(;;){scanf(“%d”,&end1);
[0634] if(end1)break;}
[0635] Switch (CLSP)
[0636] {
[0637] Case 1: ;
[0638] break;
[0639] Case 3:
[0640] while(D30 != 1){ scanf(“%d”,&D30); M1=-1;}
[0641] while(D10 != 1){ scanf(“%d”,&D10); M2=-1;}
[0642] break;
[0643] Case 4:
[0644] while(D30 != 1){ scanf(“%d”,&D30);
[0645] M1=1;}
[0646] while(D10 != 1){ scanf(“%d”,&D10);
[0647] M2=-1;}
[0648] break;
[0649] Case 5:
[0650] while(D50 != 1){ scanf(“%d”,&D50); M1=-1;}
[0651] while(D10 != 1){ scanf(“%d”,&D10); M2=-1;}
[0652] break;
[0653] }
[0654] while(D2 != 1){ scanf(“%d”,&D2); M1=-1; } S1=0; Return(S1);}[0655] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0656] ZDHD3() 换挡子程序
[0657] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0658] #include
[0659] int ZDHD3 (viod)
[0660] {
[0661] for(;;){scanf(“%d”,&end1);
[0662] if(end1)break;}
[0663] Switch (CLSP)
[0664] {
[0665] Case 1:
[0666] while(D10 != 1){ scanf(“%d”,&D10); M1=-1;}
[0667] while(D30 != 1){ scanf(“%d”,&D30); M2=1;}
[0668] break;
[0669] Case 2:
[0670] while(D10 != 1){ scanf(“%d”,&D10); M1= 1;}
[0671] while(D30 != 1){ scanf(“%d”,&D30); M2= 1;}
[0672] break;
[0673] Case 4:;
[0674] break;
[0675] Case 5:
[0676] while(D50 != 1){ scanf(“%d”,&D50); M1=-1;}
[0677] while(D30 != 1){ scanf(“%d”,&D30); M2=-1;}
[0678] break;
[0679] }
[0680] while(D3 != 1){ scanf(“%d”,&D3); M1= 1; } S1=0; Return(S1);}[0681] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0682] ZDHD4() 换挡子程序
[0683] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0684] #include
[0685] int ZDHD4(viod)
[0686] {
[0687] for(;;){scanf(“%d”,&end1);
[0688] if(end1)break;}
[0689] Switch (CLSP)
[0690] {
[0691] Case 1:
[0692] while(D10 != 1){ scanf(“%d”,&D10); M1=-1;}
[0693] while(D30 != 1){ scanf(“%d”,&D30); M2=1;}
[0694] break;
[0695] Case 2:
[0696] while(D10 != 1){ scanf(“%d”,&D10); M1= 1;}
[0697] while(D30 != 1){ scanf(“%d”,&D30); M2= 1;}
[0698] break;
[0699] Case 3: ;
[0700] break;
[0701] Case 5:
[0702] while(D50 != 1){ scanf(“%d”,&D50); M1=-1;}
[0703] while(D30 != 1){ scanf(“%d”,&D30); M2=-1;}
[0704] break;
[0705] }
[0706] while(D4 != 1){ scanf(“%d”,&D4); M1= -1; } S1=0; Return(S1);}[0707] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0708] ZDHD5() 换挡子程序
[0709] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0710] #include
[0711] int ZDHD5 (viod)
[0712] {
[0713] for(;;){scanf(“%d”,&end1);
[0714] if(end1)break;}
[0715] Switch (CLSP)
[0716] {
[0717] Case 1:
[0718] while(D10 != 1){ scanf(“%d”,&D10); M1=-1;}
[0719] while(D50 != 1){ scanf(“%d”,&D50); M2=1;}
[0720] break;
[0721] Case 2:
[0722] while(D10 != 1){ scanf(“%d”,&D10); M1= 1;}
[0723] while(D50 != 1){ scanf(“%d”,&D50); M2= 1;}
[0724] break;
[0725] Case 3:
[0726] while(D30 != 1){ scanf(“%d”,&D30); M1=-1;}
[0727] while(D50 != 1){ scanf(“%d”,&D50); M2= 1;}
[0728] break;
[0729] Case 4:
[0730] while(D30 != 1){ scanf(“%d”,&D30); M1= 1;}
[0731] while(D50 != 1){ scanf(“%d”,&D50); M2= 1;}
[0732] break;
[0733] }
[0734] while(D5 != 1){ scanf(“%d”,&D5); M1= 1; } S1=0; Return(S1);}[0735] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0736] ZDHD0() 换挡子程序
[0737] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0738] #include
[0739] int ZDHD0 (viod)
[0740] {
[0741] for(;;){scanf(“%d”,&end1);
[0742] if(end1)break;}
[0743] Switch (CLSP)
[0744] {
[0745] Case 1:
[0746] while(D10 != 1){ scanf(“%d”,&D10); M1=-1;}
[0747] while(D30 != 1){ scanf(“%d”,&D30); M2=1;}
[0748] break;
[0749] Case 2:
[0750] while(D10 != 1){ scanf(“%d”,&D10); M1= 1;}
[0751] while(D30 != 1){ scanf(“%d”,&D30); M2= 1;}
[0752] break;
[0753] Case 3:
[0754] while(D30 != 1){ scanf(“%d”,&D30); M1=-1;}
[0755] break;
[0756] Case 4:
[0757] while(D30 != 1){ scanf(“%d”,&D30); M1= 1;}
[0758] break;
[0759] Case 5:
[0760] while(D50 != 1){ scanf(“%d”,&D50); M1= -1;}
[0761] while(D30 != 1){ scanf(“%d”,&D30); M2= -1;}
[0762] break;
[0763] }
[0764] S1=0; Return(S1);}
[0765] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0766] delays() 延时X秒子程序
[0767] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0768] #include
[0769] int delay_xs(unsigned int X) /* supposed microcomputer with 11.0592MHz clock,when x=1 delay 1s*/
[0770] { unsigned int i; n=1000*X; while(n--){ for(i=0;i<100;i++) return(0) ;} /* the value of i is
[0771] estimated,but should be affirmed in practice */ return(X); }[0772] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0773] accelerate() 加速度测量子程序
[0774] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0775] #include
[0776] #include
[0777] viod accelerate(viod)
[0778] {
[0779] long m=0;
[0780] float VX 2=0, a1=0,a2=0,acce =0; VX=0;
[0781] for(;;)
[0782] { m++; /* supposed microcomputer with 11.0592MHz clock,when m=5000 wasters 100ms,sampling period is100ms i.e.*/
[0783] if(m==5000){ Scanf(“%d”, &VX) ; a1=( VX - VX 2)/0.1; } /*read the velocity from the IO at real times */
[0784] if(m==10000){ Scanf(“%d”, &VX 2) ; a2=( VX 2- VX)/0.1;VX =VX 2 ;m=0; } /*output velocity in real time */
[0785] acce =(a1+a2)/2; }} /*for the stabilization of system in all
[0786] kinds of condition such as rough road,should calculating the average of1-2 second */
[0787] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0788] acceleratefuel() 供油加速度测量子程序
[0789] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0790] #include
[0791] #include
[0792] viod acceleratefuel (viod)
[0793] {
[0794] long m=0;
[0795] float fuel2=0, fue3=0, af1=0,af2=0, af3=0, accef =0;fuel=0;
[0796] float wavelimt=1; /*supplied fuel waving limit,unit:ml/s,when[0797] fuel exceeding the limit, waveWY=1,start the function of filter in master controllersubprogram */
[0798] for(;;)
[0799] { m++; /* supposed microcomputer with 11.0592MHz clock,when m=5000 wasters 100ms,sampling period is100ms i.e.*/
[0800] if(m==5000){ Scanf(“%d”, &fuel) ; accef =af1=(fuel-fuel3)/0.1;if(fabs(fuel-fuel2)> =wavelimt)waveWY=1;
[0801] }
[0802] if(m==10000){ Scanf(“%d”, &fuel2) ; accef =af2=(fuel2-fuel)/0.1;if(fabs(fue2-fuel3)> =wavelimt)waveWY=1;
[0803] }
[0804] if(m==15000){ Scanf(“%d”, &fue3) ; accef =af3=(fue3-fuel2)/0.1;if(fabs(fue3-fuel1)> =wavelimt)waveWY=1;
[0805] }
[0806] }}
[0807] /*return the external variable of fuel ,accef ,waveWY in real time*/[0808] /*adjust the threshold value and time span to adapt for different condition of road*/
[0809] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0810] viod DEBUG (viod) 诊断子程序
[0811] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0812] (略) /*可加入自诊断功能*/
[0813] /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[0814] viod HMI (viod) 参数设置子程序
[0815] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
[0816] /*驾驶室合适位置安装触摸屏,可与导航仪等公用,屏幕滚动显示数行,类似DOS窗口,通过串口与微机通讯从而实现人机对话,设计软键盘0-9数字键、小数点键、删除键及确认键(回车键),触摸屏只需具备显示和输入并下行传输数字功能,按回车键则保留原参数,设置状态闲置8分钟将自动退出设置程序(程序略)。*/
[0817] #include
[0818] viod HMI (viod)
[0819] {
[0820] int XBD,renew, password, changepassword , changepassword2, XXXX , SXXXX,SQBXD,SQB23G4,SXBTDS,SQXBLD,SHDTB, SNHGZ,SGYLB , SSDQC , SDSRD ,m ,i=0 ;
[0821] float SXXT, SXXXT ,XBF,SV2,S V3,SV4,SV5,Sacce2,Sacce _2,S acce1,S acce _1, Saccef _2,
[0822] Saccef _1,SYT , SX0.1, SQB23G4T, SZDQZT, STDQZT;
[0823] if(setupin){ Printf (“ 请输入密码: \n ” );
[0824] do{
[0825] Scanf(“%d” ,&password) ; if(password=XXXX)gotoloop8;
[0826] Printf (“ 请再次输入密码: \n ” ); i++;} while(i<=8);
[0827] Printf (“ see you later \n please input “ enter” ”); Scanf(“\n ”) ;goto loop11;
[0828] loop8: Printf (“ 是否修改密码(1修改,0不修改)?\n ” ); Scanf(“%d” ,&changepassword) ;
[0829] if(changepassword){ for(m=0;m<8=;m++){Printf (“ 请输入4位新密码: \n ” ); Scanf(“%d” ,&changepassword) ; Printf (“ 请再输入4位新密码: \n ” ); Scanf(“%d” ,&changepassword2) ; if(changepassword = changepassword2){ SXXXX= changepassword; Printf (“ 修改成功 \n ” );goto loop911;}Printf (“ 两次输入不一致, \n ” ); } }
[0830] }
[0831] loop911:Printf (“ 是否恢复出厂值(0:设置,其他值:恢复): \n ” ); Scanf(“%d” ,& renew) ;
[0832] if(!renew) (宜1s以上)最小1s,
[0833] /*XXXXXXXXXX*** user setting variable ***XXXXXXXXXXXX*/[0834] { /*回车键不更改*/
[0835] Printf (“非1档启车进入按车速换挡程序延时(最小8s,最大3.4e+38S):单位:s \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”)SXXXT = XBF ;Printf (“换2挡车速:单位:km/h \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”)SVB2= XBF ;Printf (“换3挡车速:单位:km/h \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”)SVB3= XBF ;Printf (“换4挡车速:单位:km/h \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”)SVB4= XBF ; Printf (“换5挡车速:单位:km/h \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”)SVB5= XBF ; Printf (“换挡车速确认时间(正常模式或赛车模式)(最小0s,最大3.4e+38S);单位:s \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”) SXXT = XBF ; Printf (“行车 跳档有效选择,1:允许,0:禁止 \n ” ); Scanf(“%档d” ,& XBD) ; if(XBD!= “\n ”) SXBTDS = XBD ;Printf (“ 行车向高跳2挡加速度(出厂值1.8m/s2): \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”) Sacce2= XBF ;Printf (“ 行车向高跳1挡加速度(出厂值1.5m/s2): \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”) Sacce1= XBF ; Printf (“ 行车向低降2挡加速度(出厂值-1.8m/s2): \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”)Sacce _2= XBF ;Printf (“ 行车向低降1挡加速度(出厂值-1.5m/s2): \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”) Sacce _1= XBF ;Printf (“ 行车向低降2挡供油加速度(出厂值-1.5ml/s2): \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”)Saccef _2= XBF ;Printf (“ 行车向低降1挡供油加速度(出厂值-1.1m/s2): \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”)Saccef _1= XBF ; Printf (“起步选档,0:允许任意档起步,23:允许2、
3档起步,其他任何输入值 只允许一档起步\n ” ); Scanf(“%d” ,& XBF) ; if(XBF!= “\n ”) SQBXD = XBF ;Printf (“起步23档强制跳4档选择,1:允许,0:禁止 \n ” ); Scanf(“%d” ,& XBD) ; if(XBD!= “\n ”) SQB23G4= XBD ; Printf (“起步23档跳
4档强制时间(宜1s以上,最大3.4e+38S),单位: s \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”) SQB23G4T = XBF ; Printf (“1取消启车半联动,快速啮合快速启车,
0有效\n ” ); Scanf(“%d” ,& XBD) ; if(XBD!= “\n ”) SQXBLD = XBD ; Printf (“1取消低速蠕动,0有效\n ” ); Scanf(“%d” ,& XBD) ; if(XBD!= “\n ”) SDSRD = XBD ; Printf (“1取消自动换挡同步PID,以最快速度换挡,0有效” ); Scanf(“%d” ,& XBD) ; if(XBD!= “\n ”) SHDTB = XBD ; Printf (“=1取消手/自啮合跟踪PID,以求换挡后动力性能,=0有效” ); Scanf(“%d” ,& XBD) ; if(XBD!= “\n ”) SNHGZ = XBD ; Printf (“供油抖动稳压滤波PID,1有效, 0无效\n ” ); Scanf(“%d” ,& XBF) ; if(XBF!= “\n ”) SGYLB = XBF ; Printf (“低速刹车强制分断离合车速限值, 单位: km/h” ); Scanf(“%f” ,& XBD) ; if(XBD!= “\n ”) SX0.1= XBD ; Printf (“停车挂空挡等待时间(宜60s以上,最大3.4e+38S),单位: s \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”) SYT = XBF ; Printf (“手动离合启车,0有效, 1无效\n ” ); Scanf(“%d” ,& XBF) ; if(XBF!= “\n ”) SSDQC = XBF ; Printf (“行车跳高档强制锁定时间(宜3s以上,最大3.4e+38S),单位: s \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”) STDQZT = XBF ; Printf (“行车跳低档强制锁定时间(宜3s以上,最大3.4e+38S),单位: s \n ” ); Scanf(“%f” ,& XBF) ; if(XBF!= “\n ”) SZDQZT = XBF ; goto loop11;
[0836] }
[0837] else{ /*恢复出厂值*/
[0838] /* float 变量出厂默认值*/
[0839] V 2 = 20; /* 2档车速底线;km/h*/
[0840] V 3 = 40;
[0841] V 4 = 60;
[0842] V 5 = 80;
[0843] acce2=1.8; /* 跳2档加速度; 单位: m/s2*/
[0844] acce _2=-1.8; /* 降2档加速度*/
[0845] acce1=1.5; /* 跳1档加速度*/
[0846] acce _1=-1.5; /* 降1档加速度*/
[0847] accef2=1.5; /* 跳2档供油加速度; 单位: ml/s2*/[0848] accef _2=-1.5; /* 降2档供油加速度*/
[0849] accef1=1.1; /* 跳1档供油加速度*/[0850] accef _1=-1.1; /* 降1档供油加速度*/[0851] YT=60; /*停车挂空挡等待时间,单位: s */[0852] XXT=1; /*换挡车速确认时间(无级变模式或赛车模式);单位:s */[0853] QB23G4T=1; /* 起步23档跳4档强制时间,单位: s */[0854] X0.1=0.8; /*低速刹车强制分断离合限值, 单位: km/h */[0855] XXXT=8; /*非1档启车进入按车速换挡程序延时*/
[0856] TDQZT=3; /*行车跳高档强制时间*/
[0857] ZDQZT=3; /*行车跳低档强制时间*/
[0858] /* Int 变量出厂默认值*/
[0859] XXXX=8888;
[0860] QBXD=88; /* 起步选档,0:允许任意档起步,23:允许2、3档起步,其他任何输入值 只允许一档起步*/
[0861] QB23G4=1; /*起步23档强制跳4档选择,1:允许,0:禁止*/ */
[0862] XBTDS=1; /* 行车 跳档有效选择,1:允许,0:禁止*/
[0863] QXBLD=0; /* =1取消启车半联动,无级变模式或赛车模式,快速启车,=0有效*/
[0864] HDTB=0; /* =1取消换挡同步,无级变模式或赛车模式,快速换挡,=0有效*/
[0865] NHGZ=0; /* =1取消啮合跟踪,无级变模式或赛车模式,动力性能,=0有效*/
[0866] GYLB=1; /* =1供油抖动稳压滤波功能有效,=0无效*/
[0867] SDQC=0; /*手动离合开关启车 =1取消 ,=0有效*/
[0868] DSRD=0; /* 低速蠕动 ,=1取消 ,=0有效*/
[0869] }}
[0870] else /*读取上次设置参数*/
[0871] { loop11: XXXX=SXXXX; XXXT=SXXXT ;
[0872] V 2 = SV 2; V 3 = SV 3; V 4 = SV 4; V 5 = SV 5; acce2=Sacce2; acce _2=Sacce _2; acce1=Sacce1; acce _1=Sacce _1;
[0873] accef _2=Saccef _2; accef _1=Saccef _1; YT=SYT; XXT=SXXT; QBXD=SQBXD; QB23G4=SQB23G4; XBTDS=SXBTDS; QXBLD=SQXBLD; HDTB=SHDTB; NHGZ=SNHGZ; X0.1=SX0.1; QB23G4T=SQB23G4T; GYLB=SGYLB;
[0874] SDQC=SSDQC; TDQZT= STDQZT;ZDQZT= SZDQZT;
[0875] DSR=SDSRD;} /*这些中间变量出厂前存储对应的出厂值,在本程序写入微机EPEEPROM(电可擦写存储器)时同时写入相应固定地址,在用户更改相应设定值时该中间变量值被改变同时存入相应地址*/
[0876] }
[0877] /* COMPUTER PROGRAM END */
[0878] 本发明的经济社会效益:
[0879] 古老的文明传统与现代科技结合,动力性能优良的齿轮变速与先进的微机控制结合,无疑会盛开璀璨的花朵。本装置在手动(MT)、自动(AMT)任何模式下通过先进的三回路PID调节实现了真正的齿轮无级变速功能,绝无顿挫感,可与CVT竞相媲美。
[0880] 可半联动启车、低速蠕动,任何情况下不溜车,可在任意坡道启车,同时加油提速;也可以可全联动启车、快速换档,提高了启车、加速等的动力性能,同等功率下启车速度无与伦比,比普通手动档MT更加优越,堪称MT及AMT的换代升级版,满足飙车“酷党”欲望的同时得到了“绝对”的安全保障,这是其他变速装置所无法匹敌的。
[0881] 同时具有有恶劣路况下供油稳压滤波功能,简化了繁琐的驾驶动作,提高发动机性能,降低制造成本,提高车辆安全性,永不误踩,也无同时踩踏刹车油门的损害、不冒黑烟。体现“以人为本”的社会生产原则,体现了本装置AMT的一个中心:本质安全,两个基本点:齿轮变、无级变的设计思想。
[0882] 本发明的MT、AMT的驾驶与手动档一样,符合传统、正常的驾驶逻辑观念:即松离合(AMT没有离合)抬刹车,加油或不加油(MT、AMT均可同时加油)车辆开始启动;MT模式下正常手动换档;AMT模式下可任意档启车(可选)并避免频繁自动换档(可选),推上任一前进档,一推了之、 一档到家;自动根据车速、加速度、供油加速度换档跳档(可选);二者停车后均能自动挂空档并保持原模式;用户可根据自己的行驶路况,驾驶技能、习惯和用途与目的总结经验并设置各项性能参数。
[0883] 以上所述,其他法律许可的公民可根据本工艺、结构、原理作出其他各种相应的改变和变形,而所有这些改变和变形都属于本发明权利要求及后附的权利要求的保护范围。
相关专利内容
标题 发布/更新时间 阅读量
一种惰齿轮垫块 2020-05-11 768
惰齿轮轴 2020-05-11 650
一种正时惰齿轮 2020-05-14 527
惰齿轮组件 2020-05-12 747
大惰齿轮 2020-05-11 468
正时惰齿轮 2020-05-12 103
一种惰齿轮 2020-05-12 396
惰齿轮 2020-05-11 372
发动机惰齿轮 2020-05-13 130
惰齿轮轴部件 2020-05-13 341
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈