0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【教程】CAN报文自定义协议转发

亿佰特物联网应用专家 2023-05-31 17:03 次阅读

CAN总线通信的应用领域中,很多客户需要将CANID放在CAN报文中,这样更方便接入不同的设备,有利于用户通过模块更方便地组建自己的网络,使用自定的应用协议。但是要实现这样的应用,用户往往需要不停地去修改参数

我司研发的ECAN-401所具备的透明带标识功能则很好地处理这个问题。该方式把串行帧中的 ID 信息自动转换成CAN总线的帧ID。只要在配置中告诉模块该ID信息在串行帧的起始位置和长度,模块在转换时提取出这个帧ID填充在CAN报文的帧ID域里,作为该串行帧的转发时的CAN报文的ID。在CAN报文转换成串行帧的时候也把CAN报文的ID转换在串行帧的相应位置。

转换方式

1、串行帧转 CAN 报文

串行帧中所带有的CAN报文的“帧 ID”在串行帧中的起始地址和长度可由配置设定。起始地址的范围是0~7,长度范围分别是1~2(标准帧)或1~4(扩展帧)。转换时根据事先的配置将串行帧中的 CAN报文“帧 ID”对应全部转换到CAN报文的帧ID域中(如果所带帧ID个数少于CAN报文的帧 ID 数,那么在CAN报文中帧ID的高字节补0。),其它的数据依序转换,如果一帧CAN报文未将串行帧数据转换完,则仍然用相同的ID作为CAN报文的帧ID继续转换直到将串行帧转换完成。

注意:如果将ID长度大于2,设备发送的帧类别会设置为扩展帧。此时用户配置的帧ID和帧类别无效,由串行帧里边的数据决定。标准帧的帧ID范围为:0x000-0x7ff,分别表示为帧 ID1、帧 ID0,其中帧 ID1 为高字节,扩展帧的帧 ID 范围为:0x00000000-0x1fffffff,分别表示为帧 ID3、帧 ID2、帧 ID1、帧 ID0,其中帧 ID3 为高字节。

a65bd17c-fb5b-11ed-ba01-dac502259ad0.png

串行帧转换成 CAN 报文(透传带标识)


转换示例:

串行帧转CAN报文(透明带标识)。

该示例配置的CAN配置参数。转换模式:透明带标识转换,起始地址2,长度3。帧类型:扩展帧,帧ID:无需配置,转换方向:双向。则转换前后数据如下。

a697b5b6-fb5b-11ed-ba01-dac502259ad0.png

串行帧转 CAN 报文示例(透传带标识转换)


2、CAN 报文转串行帧

对于CAN报文,收到一帧就立即转发一帧,每次转发的时候也是根据事先配置的CAN帧ID在串行帧中的位置和长度把接收到的CAN报文中的ID做相应的转换。其它数据依序转发。值得注意的是,无论是串行帧还是CAN报文在应用的时候其帧格式(标准帧还是扩展帧)应该符合事先配置的帧格式要求,否则可能致使通讯不成功。

a6c30b1c-fb5b-11ed-ba01-dac502259ad0.png

CAN报文转换成串行帧

转换示例:

该示例配置的CAN配置参数。转换模式:透明带标识转换,起始地址2,长度3。帧类型:扩展帧,帧类型:数据帧。转换方向:双向。发送标识符:0x00000123,则转换前后数据如下。

a6ef678e-fb5b-11ed-ba01-dac502259ad0.png

CAN 报文转串行帧示例(透明带信息转换)

在了解了ECAN-401的透明带标识功能后,我们可以开始实际操作。

3、实际操作

准备以下设备:

ECAN-401一台

CAN分析仪ECAN-U01一台

XCOM串口助手

这里我们使用ECAN-401做数据转换工具,ECAN-U01发送和接收CAN报文,XCOM串口助手软件模拟串行设备发送串行数据。将ECAN-401与ECAN-U01的CAN_L和CAN_H连接,ECAN-401的485接口通过485换USB转换器连接到电脑,如下图所示:

a70dbcb6-fb5b-11ed-ba01-dac502259ad0.png

通过ECAN-401的上位机,将设备通讯模式切换为透明带标识模式,CAN波特率1000K,ID长度2,ID位置2参数配置如下图:

a821b346-fb5b-11ed-ba01-dac502259ad0.png

打开CAN分析仪ECAN-U01以及XCOM软件,使用XCOM软件模拟出一串行设备,通过ECAN-401的485串口发送串行数据:首先使用标准帧发送两包数据:11 22 03 44 55 66 77 88 99 00,这里可以看到ECAN-U01设备已经接收到了ECAN-401所转换出来的数据:

a84e8858-fb5b-11ed-ba01-dac502259ad0.png

这里可以看到ECAN-U01已经成功接收到ECAN-401转化出来的数据,帧ID:03 44,数据域:11 22 55 66 77 88 99 00。

再从CAN分析仪端发送数据到串行端口,如下图所示:

a86f04c0-fb5b-11ed-ba01-dac502259ad0.png

串口端也是按照透明带标识来组包,这样就成功实现了CAN协议按照透明带标识来收发数据。

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

    关注

    57

    文章

    2714

    浏览量

    463327
  • 协议
    +关注

    关注

    2

    文章

    598

    浏览量

    39155
收藏 人收藏

    评论

    相关推荐

    TPS659xx应用程序自定义工具

    电子发烧友网站提供《TPS659xx应用程序自定义工具.pdf》资料免费下载
    发表于 11-06 10:02 0次下载
    TPS659xx应用程序<b class='flag-5'>自定义</b>工具

    创建自定义的基于闪存的引导加载程序(BSL)

    电子发烧友网站提供《创建自定义的基于闪存的引导加载程序(BSL).pdf》资料免费下载
    发表于 09-19 10:50 0次下载
    创建<b class='flag-5'>自定义</b>的基于闪存的引导加载程序(BSL)

    如何创建TestStand自定义步骤

    在之前的课程中简单地介绍过TestStand自带的一些步骤类型,如测试、消息弹窗、赋值、标签等等,这些简单的步骤从TestStand的插入选版中就可以添加到序列中。那么在使用中如果碰到需要实现更加灵活、复杂的功能,使用自带的一些步骤类型可能难以满足,这时就需要使用到自定义步骤。
    的头像 发表于 09-11 14:46 865次阅读
    如何创建TestStand<b class='flag-5'>自定义</b>步骤

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划。
    的头像 发表于 08-15 11:49 543次阅读
    EtherCAT运动控制器PT/PVT实现用户<b class='flag-5'>自定义</b>轨迹规划

    NVIDIA NeMo加速并简化自定义模型开发

    如果企业希望充分发挥出 AI 的力量,就需要根据其行业需求量身定制的自定义模型。
    的头像 发表于 07-26 11:17 680次阅读
    NVIDIA NeMo加速并简化<b class='flag-5'>自定义</b>模型开发

    Chrome移动版支持自定义菜单栏功能

    在先前版本中,用户通过点击浏览器右上角的三个点按钮即可调出包含各类图标与操作的菜单。而此次更新后,Chrome新增了“自定义菜单”选项,允许用户自主控制该区域的展示内容。
    的头像 发表于 05-27 15:00 728次阅读

    HarmonyOS开发案例:【 自定义弹窗】

    基于ArkTS的声明式开发范式实现了三种不同的弹窗,第一种直接使用公共组件,后两种使用CustomDialogController实现自定义弹窗
    的头像 发表于 05-16 18:18 1272次阅读
    HarmonyOS开发案例:【 <b class='flag-5'>自定义</b>弹窗】

    TSMaster 自定义 LIN 调度表编程指导

    LIN(LocalInterconnectNetwork)协议调度表是用于LIN总线通信中的消息调度的一种机制,我们收到越来越多来自不同用户希望能够通过接口实现自定义LIN调度表的需求。所以在
    的头像 发表于 05-11 08:21 601次阅读
    TSMaster <b class='flag-5'>自定义</b> LIN 调度表编程指导

    HarmonyOS开发案例:【UIAbility和自定义组件生命周期】

    本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility,描述了Create、Foreground、Background、Destroy四种生命周期。对于页面
    的头像 发表于 05-10 15:31 1172次阅读
    HarmonyOS开发案例:【UIAbility和<b class='flag-5'>自定义</b>组件生命周期】

    HarmonyOS实战开发-深度探索与打造个性化自定义组件

    今天分享一下 什么是自定义组件?及其自定义组件的实战。 做过前端或者android开发的都知道自定义组件,鸿蒙中显示在界面上的UI都称为组件,小打一个按钮,再到一个列表。 鸿蒙提供的组件有 基础组件
    发表于 05-08 16:30

    微软Dev Home应用提供自定义文件管理支持

    据悉,Microsoft 近期发布了 0.13 版 Dev Home 应用程序,除修复多项 BUG 外,还新增了自定义文件资源管理器功能。该应用支持用户在应用内创建虚拟机,利用微软旗下的 Hyper V 技术生成本地虚拟机。
    的头像 发表于 04-26 11:15 412次阅读

    HarmonyOS开发实例:【自定义Emitter】

    使用[Emitter]实现事件的订阅和发布,使用[自定义弹窗]设置广告信息。
    的头像 发表于 04-14 11:37 969次阅读
    HarmonyOS开发实例:【<b class='flag-5'>自定义</b>Emitter】

    鸿蒙ArkUI实例:【自定义组件】

    组件是 OpenHarmony 页面最小显示单元,一个页面可由多个组件组合而成,也可只由一个组件组合而成,这些组件可以是ArkUI开发框架自带系统组件,比如 `Text` 、 `Button` 等,也可以是自定义组件,本节笔者简单介绍一下自定义组件的语法规范。
    的头像 发表于 04-08 10:17 600次阅读

    基于YOLOv8实现自定义姿态评估模型训练

    Hello大家好,今天给大家分享一下如何基于YOLOv8姿态评估模型,实现在自定义数据集上,完成自定义姿态评估模型的训练与推理。
    的头像 发表于 12-25 11:29 2773次阅读
    基于YOLOv8实现<b class='flag-5'>自定义</b>姿态评估模型训练

    博途用户自定义库的使用

    博途官方提供了很多库,比如:基本函数库、通信库、安全库、驱动库等等,用户可以使用库中的函数/函数块来完成具体的控制任务。除了官方的库,我们也可以创建自己的库(用户自定义库)。比如,把项目
    的头像 发表于 12-25 10:08 873次阅读
    博途用户<b class='flag-5'>自定义</b>库的使用