网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月31日漏签0天
车辆工程吧 关注:48,351贴子:338,591
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 53回复贴,共2页
  • ,跳到 页  
<<返回车辆工程吧
>0< 加载中...

转载 HIL测试介绍

  • 只看楼主
  • 收藏

  • 回复
  • 今我来查
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
仿真一词,见名知意,模仿真实情况。其实就是利用各种辅助工具(常用各种工程软件)对被测对象添加条件,如各种约束、对象参数等,模拟真实情况进行运行测试。常见的Ansys受力仿真、CFD热场仿真、ADAMS动力仿真等等都是这样——添加条件,模拟真实场景。
下面我们来说说HIL仿真。
HIL,它的英文名字叫“Hardware In the Loop”,中文名字叫“硬件在环”,常用于对控制器的仿真测试。何为硬件在环?通俗点理解是这样的,比如我要对车上的一个控制器进行硬件在环仿真测试,就需要把控制器(即单片机)放在台架上,搭建一个外界环境,通过I/O接口和通讯接口与控制器进行信号交互,模拟它在车上工作的场景对其进行仿真测试。提取关键词:把被测硬件(控制器)连在测试回路中,外接虚拟环境与其交互进行仿真,就是硬件在回路仿真测试,即HIL。这是一种半实物仿真,因为除了控制器是实物且今后会在实车上应用,其余都是我们用各种电气部件、simulink模型搭建的虚拟环境。具体点说,比如,搭建VCU整车控制器的HIL测试环境,我们会给VCU的I/O口接上点火开关,挡位器,油门踏板,刹车等,同时用simulink搭建环境模型,模拟电池、充电机、电机、整车(动力学仿真)等,和VCU信号进行交互。所以,HIL仿真也遵循仿真原则,对被测对象即控制器添加条件,模拟真实运行场景。
现在国内各大车企在HIL领域基本还都处于部件级别的测试,只对VCU或者BCU单个控制器部件进行仿真测试。系统级别的相对就比较复杂了。各家车企现在也都在朝系统级别的方向准备,但目前为止还没听说哪家已经搭建好平台并成熟应用的。
下面我想谈一谈我对系统级HIL测试的一些看法。
HIL测试其实是一种黑盒测试,何为黑盒?黑盒就是一个黑色的盒子,你看不到里面的情况,不知道它的运行方式,但你知道我给它一个输入,它会响应什么样的输出。对于测试人员来说,这就够了,只管对错,不管逻辑。当然,这也是最最基本的要求了。举个例子,如图1,我们对BCU的SOC估算功能进行部件级HIL测试。

图1.部件级HIL测试
简化测试过程,我们只取对SOC估算影响最关键的几个信号,将电池端电压,充放电电流,内阻信号作为模拟量输入(由可变电源,可调电阻实现),单片机引脚采集这些硬线信号,利用ADC模块将其转变为数字信号存入寄存器,再通过地址调用将信号从寄存器调入CPU中进行运算,计算出当前SOC存储到RAM中,并由单片机串口发送出去。这种部件级测试关注的重点主要是被测对象的各功能是否实现。
而系统级测试是建立在部件级测试已经完全通过的基础上,关注的主要是部件之间的通讯,信号的传递是否正常。图2中,我们将BCU和VCU连接作为一个系统。它的基本过程是这样的:如前面所说,BCU计算出当前SOC之后,通过总线将信号传递给VCU,VCU内部对其进行滤波等再处理,然后将处理后的SOC发送到IP上进行显示。于是,我们汽车仪表盘上的剩余电量就出来了。哈哈。这里,我们不去看BCU发出的SOC到底是多少,而是把图中蓝色圈起来的整体当做一个黑盒(我们假装不知道里面发生了什么…)。我们只需要给BCU输入模拟电池的U、I、R信号,然后去看仪表显示的SOC是否正确即可。

图2.系统级HIL测试
这里先对总线做个简单拓展。总线是汽车上各部件之间的通讯网络,或者可以称之为通讯协议。这样去理解,电脑连网之后各电脑之间可以进行信息数据的交流共享,车上部件也一样,需要将各部件的控制器连在网络中进行数据传递。只不过,电脑之间是通过基于TCP/IP协议的以太网进行通讯,而汽车上是通过CAN、LIN、FlexRay等总线进行通讯,目前车上应用最广泛的是CAN总线。听说,将来车载网络的主流会是以太网,国外的宝马、通用已经开始着手做这方面的事情了。
有一件特别特别酷的事情,那就是整车级HIL测试系统。从横轴、纵轴、旋转三个维度对汽车实现仿真。可以说将汽车上的每个部件都连在了HIL测试系统中。具体如何实现的,我也不太清楚,这里不作扩展。听说宝马有这种整车级别的HIL试验室。希望以后有机会能见识见识,或者国内也建一个这种级别的。
今天就说到这里吧,下面我给大家点了一首歌,放松一下。听完歌,别忘了来后台喝喝咖啡聊聊天。不限主题,说出你的想法、问题,或者希望四杯咖啡以后多发哪些内容,又或者猜猜我另一半时间在干什么。哈哈!
That's all!


  • 今我来查
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
http://mp.weixin.qq.com/s/2YV-n0Q7PgSgxOXRxTePqA


2025-08-31 13:10:09
广告
不感兴趣
开通SVIP免广告
  • 呆呆的笔鬼
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
前一段培训了!Ansys


  • 今我来查
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第二期


  • 今我来查
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
前段时间工作上没那么忙,自己忙里偷闲在试验室尝试了一些东西,今天分享给大家。即利用CAPL语言编程实现HIL仿真。
CAPL,全称是Communication Application Programming Laguage,意思是用于信息交互的编程语言。它的语法结构和C语言一样,有if选择,也有for循环,同时又有一些C++的特性,支持使用this指针,对事件作出响应等。关于CAPL语言的使用,网上资料比较多,不在此赘述,有兴趣的朋友可以参考下图红框标注的这篇帖子。

进入正题之前,先普及一些此文涉及到的知识点。
1、CANoe是德国Vector公司针对车载网络开发的一种工具,可以采集总线信号,也可以模拟车上的总线进行通信,实现总线仿真。CAPL语言可在CANoe中使用,以总线信号为对象,对信号进行一系列的操作控制。
2、车载网络目前以CAN通讯为主流。CAN总线的物理表现形式其实就是一股双绞线。总线上传递信号的方式,是通过线上的高低电平脉冲来表示0、1(单片机的底层只能识别0和1),进而表达各种信号的信息。说到这里,不得不提一下CAN协议。
这里对CAN协议做一下简单拓展。CAN协议你可以把它当做对CAN总线信号进行解密的密码本,也是各家车企严格把控的涉密文件。有了它你才能知道采集的0101,哪几个代表车速大小,哪几个是挡位信号,否则你看到的就只是一堆用十六进制(01太多,用十六进制表示)表示的数码。
CAN协议的基本构架,如图1所示。

图1 CAN协议构架
图中的基本关系:Node节点相当于连接在CAN总线上的通讯设备,如BCU、IPU等。节点既向总线上发送报文(Message),又从总线上接收报文。而报文中又会包含很多信息,即信号Signal。我们可以按照它们之间的构架关系,利用CANoe软件中的CANdb++ Editor,创建自己的CAN协议。其中,节点和报文之间的关系,如图2所示。

图2 Node和Message关系
这里我们创建了一个节点,命名为New_Node_16,该节点向外发送报文output_signal(0x2),0x2是该报文的ID,从总线上接收报文input_signal(0x1),每条报文下又定义了一些信号,如图3所示。

图3 Message和Signal关系
为验证CAPL编程在信号控制方面的可用性,以下是自己做的一个比较简单的,在离线仿真情况下(CANoe运行模式选择Simulated bus)实现信号传递的程序。
先创建总线通讯仿真的结构,如图4所示。进入CANoe的Simulation Setup界面,在总线上添加两个节点New_Node_15和New_Node_16,IG模块可以辅助发送信号,图中黑红两根线就是模拟的CAN总线(双绞线)。

图4 总线仿真结构
然后点击Node模块上的小铅笔,我们就可以编写程序,对节点中所关联的Message和Signal进行操作了。
主要实现内容:
节点New_Node_15:钥匙keyon之后踩下刹车,在踩下刹车的前提下,将钥匙拧到start状态,然后挂D挡,松刹车,并将这些信号发送到总线。
节点New_Node_16:从总线上接收来自Node_15 的信号,在采集到挡位信号变为D挡后,对车速信号赋值。
具体代码,见图5、6,已做详细注释。
节点New_Node_15:


图5 New_Node_15代码
节点New_Node_16:

图6 New_Node_16代码
图7是运行CANoe之后,各个信号的显示情况。可以看出信号的变化完全符合我们设定的要求。

图7 信号显示结果
验证可行之后,我们就可以在总线上连接真正的控制器进行仿真了。将控制器和CANoe通过CAN线连接,并将CANoe运行模式选为Real bus,就可以将Node节点中关联的报文发送到物理的CAN线上和控制器进行交互。
今天说的不少了,先就这吧。具体如何利用CAPL编程实现控制器的在线仿真,我们下期再见。
See you next time!


  • 同茂浪子
  • 新进学徒
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
ECU控制开发工程师路过,,,,我就想问这玩意要不要懂模电数电之类的东西


  • 贴吧用户_QbtUCRe
  • 一级学徒
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢分享干货,最近做BMS的simulink建模,想知道怎么导出代码,这些代码直接作为应用层使用吗,还是需要处理,公司里实际都是这样做代码的吗,还有想知道关于mil,sil.hil测试,代码调试怎么做
问的有点多,研究生做这些,希望大佬多指教


  • 今我来查
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
代码是使用自动代码生成工具得到的,之前一直被大名鼎鼎的德国dspace的产品targetlink垄断,更改定标和生成代码都要使用从targetlink买的dongle(价格不菲),像U盘一样,插在电脑上才能操作,比较难破解,所以看不到盗版的


2025-08-31 13:04:09
广告
不感兴趣
开通SVIP免广告
  • 今我来查
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
现在mathworks自己开发了代码生成工具包Embedded coder,生成代码的门槛降低了许多,毕竟matlab可以使用盗版或者花一两百美元买一个美国学生用的版本,而targetlink的狗一般只有企业才会买,不过正版embedded coder 也不便宜,我们今年买了两套花了差不多一百万


  • 今我来查
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
上期我们说到如何利用CAPL编程实现控制器的在线仿真。
底下,我用VCU整车控制器连接真实的CAN总线进行了在线仿真试验,这种方法可行,但有它的局限性。
代码不便公开,在这里说说结论吧。
比如,进行系统上下电试验时,我通过编程去控制上下电流程涉及到的输入信号,可以得到我们期望的输出。但是在做扭矩控制试验时,就不行了。因为输出扭矩大小涉及的东西比较多,不光和加速踏板、刹车踏板位置有关,还和车速有关。要模拟整车环境的话,我还得建立一个整车动力学模型去动态地计算出车速并通过CAN线发给VCU,同时扭矩输出还要受到电池输出功率的限制等。涉及条件太多,即使做出来,费时费力还容易出现各种bug……
由此看来,CAPL编程只适用于做一些控制逻辑比较简单的仿真。那么对于复杂的逻辑控制,我们应该怎么办呢?
现下汽车行业最主流的一种开发方式叫基于模型的设计(Model Based Design,简称MBD)。这种开发方式摆脱了手写代码的繁琐,通过Simulink模块的搭建,用图形化的方式表达控制逻辑,简单直观,方便管理。好处有很多,网上关于MBD的帖子有很多,在这里就不罗列了。
Simulink搭建整车模型,基本的样子如图1所示。(图1来源于MathWorks培训视频)

图1 汽车控制模型
双击图片中的模块,里面的结构如图2所示。(图2,3不要去看逻辑,因为没有逻辑,随意撘的样子,哈哈)

图2 控制模型的子模块
再双击图2中的绿色模块,里面的内容如图3所示。

图3 子模块中部分逻辑的具体实现
用Subsystem子系统模块对实现同一功能的内容进行封装,通过这样层层的嵌套,模型的层次更加分明,也更便于我们理解和管理各个子功能模块。
采用基于模型设计的开发方式,我们只需要调用Simulink库中的各种模块,按照我们想要实现的控制逻辑拼搭起模型即可。然后,对编译器做一些具体设置,build一下(Ctrl+B),Matlab自带的编译器就可以将这些图形模块以及模块之间的运算关系编译成代码供我们使用。这里简化的有点夸张,不过确实非常的快捷方便。
对基于模型设计的开发方式我们点到即止,现在,回到我们HIL测试仿真环境的实现。
在HIL仿真中,我们也可以使用Simulink中的图形模块搭建控制器的外围环境模型。需要我们提取出电池、电机、充电机、整车等之间的逻辑关系或者说特性,来构建它们的仿真模型。然后自动生成代码,供我们测试调用。这样比我们去手写CAPL代码简直方便很多。
目前各家车企进行HIL测试基本都是基于Simulink平台来仿真测试环境。具体的实现方法有很多,但无论是CANoe和Simulink的联合仿真,还是dSPACE实时系统通过实时接口与Simulink连接仿真,只是测试工具不同,实质都是通过将Simulink模型生成可下载执行的C代码,与测试工具进行连接,与被测对象进行交互仿真。
但是,用Simulink建立的环境模型去仿真也有它的缺点。因为整个模型的仿真步长Sample time在生成代码时是统一配置的。这样的话,所有从模型中发出来的信号,发送周期都一样,不符合总线上的实际情况。总线上传递的报文很多,不同的报文有不同的收发周期。这就需要我们对每个信号再单独设置采样周期。设置之后,在测试界面你会发现,测试工具还是统一按照整个模型的仿真步长对信号进行采样,但信号的变化周期是按照我们单独设置的周期进行变化,虽然不影响测试结果,但看起来不太对劲。而CAPL编程可以用timer计时器对每个信号的采样周期进行单独设置,比较符合总线上的实际情况。
综上两文,我们可以看到CAPL编程和Simulink建模在仿真测试中各有长短。CAPL编程做一些控制逻辑比较简单的仿真,简单快捷,几条代码就可以搞定,Simulink建模在逻辑比较复杂的仿真中,有着CAPL无法比拟的优势,图形化的建模省去了手写代码的繁琐,更加高效方便。
今天就说到这里吧。
下一期准备换个话题聊了。话题未定,不如你来“四杯咖啡”的后台,我们一起喝喝咖啡,聊一聊下期的主题。
See you next time!


  • 今我来查
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
https://mp.weixin.qq.com/s/nB8pJDresaMWak6RvjiORw


  • 星月际缘
  • 高级技师
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大佬666


  • w卡布基诺w
  • 幼儿园
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看过一个公众号,“车辆技术”,里面对HIL讲解得非常不错。


  • 李氏春秋时代
  • 幼儿园
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主你好,对于ECU的测试,在使用CANoe时,没有功能定义该怎么去测试它的功能和性能?还有,CANoe与MATLAB联合仿真时的操作能否介绍一下,之前一直因为编译器的问题没调成功。谢谢了。


2025-08-31 12:58:09
广告
不感兴趣
开通SVIP免广告
  • ZAD咻
  • 幼儿园
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有做硬件在环的研一同僚吗


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 53回复贴,共2页
  • ,跳到 页  
<<返回车辆工程吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示