完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
本文是机甲大师机器人控制的系列博客之一。在软件单元阶段完成后,进行软件单元测试。本文内容与软件架构设计阶段相对应。
1 开发阶段 软件单元测试阶段在软件单元阶段之后,对控制算法和硬件接口函数进行测试。一方面,对软件架构设计阶段中的4个功能子系统一一进行模型单元测试;另一方面,在STM32工程中对软件架构设计阶段中的输入输出接口进行硬件接口测试。 由于这部分测试的内容比较多,所以本文只是对不同的功能列举有代表性的测试过程,而不会覆盖到所有分支。 2 模型单元测试 基于模型设计的一个很大的优势在于,不需要等到最终的HIL测试才能开始发现问题,而是在Simulink模型中就可以初步验证控制控制算法,也就是模型单元测试。做模型单元测试时,会给某个子系统一个确定的输入信号,再观察输出信号是否正确。 在汽车软件开发中,需要制定完整的单元测试文档,其中包含测试案例、覆盖度等。本章节就简化一下这个过程,对软件架构设计阶段中提出的子系统进行一个基本的测试即可。测试的顺序是从内层子系统到外层。 测试的时候通过对子系统建立TestHarness,可以不影响原来模型,生成一个专用测试的小模型。下图就是对子系统建立的TestHarness。 2.1 电机控制子系统测试 对于电机控制子系统,需要测试的是对于4个摇杆输入信号,能否正确地输出4个电机的参数。测试分为基本运动测试和合成运动测试,对应功能分析阶段中的控制方案。 1)基本运动就是4个摇杆中只有一个通道被激活,其余的都没有变化。以LY通道为例,当LY=0时,摇杆拨动到最上方,底盘应该以最大速度前进;当LY=255时,摇杆拨动到最下方,底盘应该以最大速度后退。 上图中第一个信号是LY输入信号,0–>128–>255;四个电机的参数是1000–>0–>-1000,符合控制逻辑。其余3个基本运动也是类似的测试方法。 2)合成运动的单元测试以对角线为例。例如下图中,LX=255,LY=0,对应电机是FL=1000,BR=1000; 单元测试结果如下: 从图中可以看出只有左上电机和右下电机正转。 2.2 舵机控制子系统测试 舵机控制子系统的输入是4个按键信号,分别控制2个舵机的正传和反转。 本节以舵机0为例,对舵机进行单元测试。 如上图所示,当RL信号为1,RR信号为0时,也就是按下了左按键,舵机位置参数增大;当RL信号为0,RR信号为1时,也就是按下了右按键,舵机位置参数减小。舵机位置参数的上下限是1000~2000,和模型中的限值模块吻合。 2.3 水弹枪控制子系统测试 舵机控制子系统的输入是R1按键信号,控制是否闭合继电器。闭合参数为19500,断开参数为500. 从测试结果看,当R1信号的值从0阶跃到1时,继电器参数信号从500阶跃到19500。 2.4 按键锁定子系统测试 按键锁定子系统就是最外层的使能子系统,通过MODE信号来锁定按键的效果。测试的方法是在电机控制子系统LY通道测试的基础上,加上MODE输入信号置0或置1,再观察电机输出的效果。 从图中可以看出,在0.5s的时候MODE从0阶跃到1,LY一直保持为0。观察FL电机的参数,只有在MODE为1的时候,LY才驱动了FL电机。因此锁定按键MODE可以生效。 3 硬件接口测试 在软件架构设计阶段中研究了模型的输入输出接口。模型的输入接口是PS2手柄的摇杆、按键所对应的信号,输出接口是电机、舵机函数中所传入的参数值。硬件接口测试过程就是要在STM32工程中测试一下接口变量或者接口函数的功能(此时工程中还不包括模型中的策略),为后面的集成测试做准备。 3.1 PS2手柄接口 购买电机驱动板附带的demo程序中包含PS2的2.4Ghz传输程序以及SPI协议代码。博主又通过一部分手写代码(Manual_Code)二次开发,解析出每个摇杆和按键的信号值,也就是软件架构设计阶段中所描述的VeINPR_uint8_PS2LX,VeINPR_uint8_PS2RU等。 通过下面的main函数,运行PS2初始化函数和手写代码初始化函数,并打印出若干摇杆和按键的信号值。 int main (void) { PS2_Init(); Manual_Code_initialize(); while(1) { if( WaitTrue(0,20) ) //20ms运行一次 { PS2_Interface(); printf("VeINPR_uint8_PS2LX = %d,VeINPR_uint8_PS2RU = %drn",VeINPR_uint8_PS2LX,VeINPR_uint8_PS2RU); } } } 将程序下载到STM32中后,拨动左摇杆,或者按下RU按钮后,串口打印出的数值会随之变动。 将LX缓缓向左拨动,数值就会从128变化到0,如下图。 按下RU按钮,数值就会从0变化到1,如下图。 所有其他的摇杆通道或者按键通道都可以通过这种方式来简单测试一下效果,这里就不再赘述。 3.2 电机&舵机控制接口 电机和舵机控制接口已经封装好,分别如下: [tr]函数名描述参数[/tr]
4 总结 软件单元测试这一步应该算是所有步骤中最简单的了,但是也十分重要。由于本系列博客定下的功能需求都比较简单,所以软件单元测试的时候发现的问题比较少。但是在汽车软件开发中,软件单元测试往往会在开发前期就能发现建模时的漏洞,然后可以尽早在模型层面上就修复掉,以免把问题带到后期集成和台架测试的阶段。另外,在汽车软件开发流程中也会强制要求提交单元测试的相关文档。 >>返回个人博客总目录 |
||
|
||
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1621 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1546 浏览 1 评论
980 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
686 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1599 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 06:14 , Processed in 0.763465 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号