大道至简,骨灰级拆解Simulink处理CAN消息的几种不同方式(二)——手动输入通信协议方式

文章目录

前言

一、通信协议

二、CAN消息发送

三、CAN消息接收

四、仿真运行效果

五、分析和应用

总结


前言

        见《大道至简,骨灰级拆解Simulink处理CAN消息的几种不同方式(一)——直接调用.dbc文件方式

一、通信协议

         见《大道至简,骨灰级拆解Simulink处理CAN消息的几种不同方式(一)——直接调用.dbc文件方式

二、CAN消息发送

         使用CAN Pack模块,数据输入方式选择manually specified signals,然后手动输入Message的ID信息,以及下方的列表中的Signal信息,点击OK后在模块的外边就会出现这些Signal的In端口,在这些端口上直接插入要赋给Signal的值,然后把打包好的Message插入CAN Transmit模块即可。上述操作方法和配置成功后的效果如下:

三、CAN消息接收

        使用CAN Unpack模块,可以把接收到的Message解析成具体的Signal,模块配置方式与上述CAN Pack模块相同,具体操作方法和配置成功后的效果如下:

四、仿真运行效果

         基于上述举例,仿真运行时需要对模型进行适当分割,把依赖外部系统的模块去掉,只留下Simulink本身的内容。分割后的模型和仿真运行的结果如下:

        分析仿真的结果可以看到,各个信号先按照既定协议打包成了Message,然后又解析出来,输出信号的值与输入信号一致。

五、分析和应用

         上述使用手动输入信号协议处理CAN消息的方式,特点是每个Message和Signal在的具体定义都要在Simulink模块中手动输入进去,比如ID、数据类型、比例系数和偏移量等等,这些Signal在Simulink模型中可以直接以物理值为单位进行调用,而不需要再做过多的处理。这种方式的优点是,Simulink调用相对比较简单和快捷,且编程代码一目了然不容易出错,也不需要单独编写一个.dbc文件,当协议变更时也能有针对性的快速修改,减少了一个DBC开发工具,降低了项目开发的门槛,减少了项目开发的流程环节,减少了项目开发的成本,另外不需要在Simulink程序工程中加载.dbc文件,所以在嵌入式开发项目中就不会增加生成代码的不确定度,也不会额外增加代码中内存的消耗。缺点是,手动输入Message和Signal需要耗费一定的人工时间,并且有一定录入出错的可能性,这个缺点尤其会在Message信号较多的项目中非常突出。整体而言,这种方式适合应用于协议内容不的,硬件平台资源有限的,按照快速迭代流程敏捷开发的小型项目中,或者大型项目开发的早期阶段。

总结

         以上就是本人在对Simulink处理CAN消息的几种方式进行总结分析时,讲解到的第二种实现方式。主要讲解了使用手动输入信号协议处理CAN消息发送和接收的具体方法,展示了实现该方式的详细代码和实际运行效果,最后分析了这种处理方式的特点以及适用场景。

        后续还会更新另外几种Simulink处理CAN消息的方式,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成为笔者持续分享的动力。

         另外,上述例程使用的Demo工程可以到笔者的主页查找和下载。


         版权声明:原创文章,转载和引用请注明出处和链接,侵权必究!

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Cssust

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值