提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
前面总结了关于CAN总线收发的模拟仿真,在实际开发时,有关CAN的部分就可以在生成代码前先进行仿真。根据仿真结果进行修改得到目标输出后进行代码生成添加到嵌入式工程中进行芯片代码烧录等后续硬件相关测试。从而体现模型优势,既方便调试和更改控制逻辑,又避免的在调试过程中每次烧录程序从而提升效率。下面利用simulink实现车辆雨刮器功能。
提示:以下是本篇文章正文内容,下面案例可供参考
一、雨刮器功能
功能说明: 1.点动: 触发条件:保险丝盒接收到前雨刮一次/刮低速请求 保险丝盒驱动前雨刮电源继电器低速运行(只收到刮一次指令则低速运行一个周期归PARK位停止,如果收到其它指令则按照相应指令执行) 2.高速前雨刮: 触发条件:保险丝盒接收到KBCM的高速运行请求, 保险丝盒驱动前雨刮电源继电器和高速继电器,前雨刮高速运行; 3.低速前雨刮: 触发条件:保险丝盒接收到KBCM的低速运行请求, 保险丝盒驱动前雨刮电源继电器和低速继电器,前雨刮低速运行; 4.关闭雨刮: 触发条件:保险丝盒收到 KBCM的前雨刮关闭信号或点动一次结束或雨刮在PARK位时
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、搭建模型
根据功能规定设置输入输出信号以及相应的数据类型,将信号保存在建立的数据字典中。
1.输入信号
CAN控制报文、IG信号、雨刮回位信号,开路短路信号和内部新报文标志信号
2.输出信号
低速继电器、高速继电器、洗涤控制开关、工作状态和故障状态以及发送标志位
3.功能逻辑
根据业务逻辑要求,雨刮功能分区:OFF,REPAIR,ON(WIPE/WASH/STALL),PARK,CRANK,PROTECT 洗涤功能分区OFF,ON,ShortRecover,ShortOccur 初始状态为OFF,输出信号初始化为0,进入该状态设置can_flag为1,表示状态变化。
设置维修模式切换条件。OFF向ON状态切换需要IGN,WORK_CMD以及雨刮回位信号符合跳转条件。 ON模式包括wipe、stall、wash三个并行模块,wipe中点动、低速、高速,为了配合洗涤模式设置WASHWAIT。洗涤联动标志位flag,作为洗涤状态的标志。 堵转判断逻辑,当雨刮回位信号维持状态超过18s判断为堵转。 洗涤逻辑,洗涤时允许响应高速指令。
三、功能仿真
利用Simulink的Library中的模块搭建测试系统模型,主要包括:CAN通信模块receive、transmit、pack、unpack模块;dashboard模块、scope、display、Switch模块等常用模块。以及为了接近实际情况添加Real-Time模块。 模型搭建整体效果如图,用开关的形式控制输入量,用lamp关联输出信号。快捷键Ctrl+D编译没有报错点击RUN按钮。下面对主要部分详细介绍:
指令通过虚拟CAN信号发送,由接收模块接收后通过子系统解析处理输入控制系统 解析模块
低速继电器打开且进行洗涤联动相应指示灯亮。 将需要发送的报文信息打包发出
通过虚拟CAN接收报文,并显示雨刮工作状态和洗涤工作状态与实际情况一致。 CAN总线报文在单片机中做成触发式,所以设置发送标志位,当有状态变化报文内容更新时,发送标志位置1 为模拟雨刮周期信号,通过一个SWITCH模块输出0,1周期变化信号。
总结
通过本次模型的搭建,模拟了雨刮器功能的实现,实际开发项目中可以将输入输出信号替换为in和out变量模块,将虚拟收发模块去除。使用十分便捷,节约资源的同时,缩短项目时间周期。 关于模型搭建还有很多可以改进的地方。接下来将就数据字典建立、信号名称关联,以及随着模块数量的增加进行simulink工程的创建并结合SVN进行版本管理的相关知识进行总结。
|