×

V模式的设计方法及自动代码生成资料下载

消耗积分:2 | 格式:pdf | 大小:152.54KB | 2021-04-16

挽你何用

分享资料个

  汽车市场的激烈竞争要求设计者必须缩短产品开发周期。在传统的控制器的设计开发中,控制器的总体设计、整体性能分析以及控制策略的优化通常需要大量的时间、人力和物力,投资大、效率低。此外,这种开发方法还容易出错,直到最终定标时才进入实时在线测试。如果在最初设计时出错而没有及时发现,则会导致大部分工作必须重新进行,开发周期变长。可见传统的研发方法无法满足市场的需要,必需有一种新的设计理念来适应市场的需求。     1 V模式的设计方法及自动代码生成     1.1 V模式的设计方法   如图1,与传统的设计方法相比,V模式的设计方法将系统工程学的原理应用于现代汽车电子系统开发中,它是一种循环的设计模式。其特点是无论进行开发、编程或者测试,总是在同一环境下工作,开发过程的每一步都可以得到验证[1]。它以功能强大的计算仿真工具为前提,整个设计过程都是在同一个平台下完成,实现从设计理念的提出,到快速原型设计(Prototype),再到ECU产品的无缝连接。采用该方法的最直接效果就是加速和简化了开发流程,及时消除错误,大大减轻了工程师的工作量。          1.2 运用Simulink实现自动代码生成   自动代码生成处于V模式的最底层,是整个开发过程中最为关键的一步,其目的是实现开发过程中的快速迭代以提高开发效率。代码生成的质量直接影响系统的可靠性和稳定性。   图2为基于MATLAB/Simulink的DSP自动代码生成流程[2]。Simulink是一种对于动态系统进行多域仿真和基于模型设计的平台,它提供了一个交互式的图形环境和丰富的模块库。根据系统的功能要求,首先在MATLAB/Simulink环境下搭建系统模型,并且进行仿真分析。使用Simulink调试器检查仿真结果以及定位和诊断模型中的意外行为。一旦结果得到了验证,便可以通过RTW(Real-time workshop)自动生成面向TI编译器的C语言工程文件,并进一步完成编译、连接和下载,最终在硬件平台上运行。          RTW是和MATLAB、Simulink一起使用的一个工具,运用它直接从Simulink模型生成代码并且自动建立可以实时运行的程序。在默认情况下,RTW生成的是高度优化和完全注释的C代码。除了MATLAB function模块和调用M文件S函数的模块以外,���何Simulink模型都可以生成代码,包括线性、非线性、连续、离散以及混合模型[3]。   从整个过程来看,工程师只需在Simulink中搭建模型和验证模型的正确性,不需要书写任何代码,即可得到可靠、准确的代码。     2 嵌入式Target for TI C2000工具箱     Target for TI C2000将TI公司的eXpressDSP工具集成到Simulink中,它是MATLAB与TI CCS的连接工具,可以使MATLAB、MATLAB工具箱、TI Code Composer Studio集成开发环境(CCS IDE)以及RTDX(Real-Time Data Exchange)协同工作。   Target for TI C2000工具箱由三部分组成[3]:常用工具、芯片外围设备模块库、优化库。常用工具包括实时数据交换通道模块、目标控制器基本参数设置模块和CAN通讯设置模块。该工具箱支持C281x系列、C280x系列以及C2400系列的DSP。优化库包含定点运算库和数字电机控制库。   Simulink可支持四类C280x DSP外围设备模块库:存储器的读写模块、中断管理模块、控制模块以及通讯模块。除了不支持IIC通讯模块以外,该模块库对C280x DSP板上所有的模块都提供了很好的支持。用户在调用DSP的这些模块时,只需对相应的模块进行参数设置和选择,不需要关心底层是如何实现,整个模型的搭建过程就像堆积木一样简单。     3 自动生成代码在电池管理系统中的应用     3.1 电池管理系统的功能描述   BMS燃料电池车用锂离子电池管理系统BMS(Battery Management System)是一个嵌入式实时监控系统,应具备以下功能[4]:电池状态监控,包括电池工作电压、工作电流和工作温度的测量和信号处理;特定状态下的最大充、放电功率计算;特定工况下电池组荷电状态SoC(State of Charge)、寿命状态SoH(State of Health)的估算;高压预充电、过充和过放保护、绝缘检测和漏电保护;电池的均衡和热管理;故障诊断以及与整车控制器通讯。图3为BMS系统框图。          由于汽车在处于停车状态时,BMS仍需每隔一定的时间对电池进行监控,所以在长时间停车时,BMS不可将蓄电池存储的电量耗完,否则汽车将无法启动。因此在停车时,BMS必须进入低功耗模式。当汽车开动时,从KL15传来的点火信号将控制器从低功耗模式唤醒,进入正常工作模式。   3.2 控制器的选择   从BMS的功能可以看出,控制器起控制作用的功能只占BMS的小部分,在实时参数估计、SoC估算中,算法复杂且运算量大,控制器需要在较短的时间间隔内完成复杂的递推运算,这对控制器的计算能力和计算速度要求更高。传统的电池管理系统采用单片机作为控制器,由于单片机侧重于控制而实时数据运算能力有限,所以无法很好地满足BMS的要求。TI公司的TMS320C2000系列DSP集和高性能DSP的特点于一身,具有强大的控制和信号处理能力,能够实现复杂的控制算法。该系列DSP上整合了Flash存储器、快速高精度的A/D转换器、两路增强的CAN模块、事件管理器、正交编码电路接口、多通道缓冲串口等外设。32位定点运算的C2808 DSP能够在一个周期内完成32×32位的乘法累加运算,或两个16×16位乘法累加运算。此外,可以在一个周期内对任何内存地址完成读取、修改、写入操作,使得效率和程序代码达到最佳,完全满足实时控制的要求[5]。   3.3 电池参数辨识和SoC估计算法   电池监控必需先进行建模,实时检测电池的电压、电流以及温度,根据这些数据对模型的参数进行辨识,从而间接地估计电池内部的情况。图4为锂离子动力电池模型[6],模型中利用C0描述电池的容量,R0描述电池的等效欧姆内阻,用时间常数较小的R1、C1环节描述锂离子在电极间传输时受到的阻抗,时间常数较大的R2、C2环节描述锂离子在电极材料中扩散时受到的阻抗。该模型中的参数都可以通过参数辨识的方法得到。       

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'V模式的设计方法及自动代码生成资料下载',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);