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

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

3天内不再提示

3种方法教你如何有效地实现CAN长字节通讯

AGk5_ZLG_zhiyua 来源:未知 作者:佚名 2017-10-11 07:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

CAN总线从上个世纪80年代开始,逐渐在汽车电子、轨道交通、医疗电子、工程机械等广泛的工业场合应用。这个“古老”的总线,最让人“不爽”的地方,就是一帧只能传输八字节数据,如果要一次传输更长字节,需要分帧,而选择一种可靠的分帧方法是使用者一定要注意的。

CAN总线作为汽车电子而生的总线,提出了“优先级自动仲裁”和“短帧快速传输”的控制概念,为了达到“高实时性”的快速控制目标。使用一帧八字节的通讯单元具有了一系列的优点缺点。

CAN通讯的优缺点:

1、优点

(1)8个字节正好是8个字节、4个16位、2个32位、1个64位的变量的存放“容器”。那么用户只要在ID中存放“寄存器地址”,然后通过1帧来“读取”或者“修改”,对应的“数值”,这样比较方便;

(2)短帧提高总线共享速度。任何一个CAN节点发送报文,在发送一帧后,需要重新和其他节点竞争总线,这样只要用户设计适当的发送间隔,就可以保证所有的点“共享”总线,提高总线利用率,也保证每个节点的发送周期大致保证一致。

2、缺点

(1)长数据传输时数据负载偏低。在多帧发送时,由于每帧发送都要发送CANID,所以实际的CAN数据所占的比例就很低了,以CAN扩展帧为例,其29位ID和64位的数据,导致数据承载只能达到60%。所以在长数据传输时,CAN甚至比不上同样波特率下的RS485/Modbus;

(2)长数据传输分帧丢帧,会导致整包传输失败。当需要一次传输超过8字节数据时,需要分多帧传输,如果其中一帧“丢失”,则会导致整个发送包的无效。这就要求接收节点对每一个分帧进行确认,以保证每一个分帧的到达,而这么做就会大大降低效率;

(3)长数据传输时同步性差。比如要同时输出动作超过8字节的控制命令时,由于每个帧到达有先后,先到的先动作,后到的后动作,就会引起输出的不同步性。

可见CAN总线在当前的主流应用中,主要矛盾集中在其8字节短帧的长数据传输上。因此世界广大科技工作者制定出一系列的改进和改革方法来解决这些缺点。

可靠CAN长数据通讯:

1、升级为CANFD协议提高数据负载率

几年前,梅赛德斯奔驰的工程师们对CAN总线的制定单位CiA(CAN in Automatic)协会提出,奔驰已经将CAN用尽了。因为奔驰的工程师们通过不断优化通讯机制,已经将奔驰的CAN总线利用率提高到90%以上,已经无带宽可用,只能通过网关不断增加新的CAN网络来扩展数据通道。这样导致整车的总线区域越来越多。

车载以太网虽然可以解决数据量的问题,但其布线改变过大,成本上升过多,只适合于网关之间的通讯。所以CiA协议就联合各大车厂,制定出新一代的CANFD协议,以快速升级现有的CAN2.0B。其主要的内容就是将一帧的数据段由8字节提升到64字节,同时可以提升数据段的波特率,以缩短通讯时间。如图1所示。

图1 CANFD报文提升数据负载率

这样,不需要每8字节就要发一次CANID,即使不提升波特率,也提升了8倍的数据负载率。如果提升了8倍波特率,则可以达到64倍的数据负载率,相当于扩充了64倍带宽。其提升效果非常明显。

2、采用可靠的分帧协议

成熟的应用层协议都有可靠的分帧协议,比如CANopen,DeviceNET,J1939协议等,总的方针都是“握手”“传输”“确认”“结束”这四个过程循环。这里只介绍CANopen协议中的SDO多帧传输。

发送方(客户端)发送的报文CAN-ID为600h+Node-ID,接收方(服务器)成功接收后,回应CAN-ID为580h+Node-ID的报文。下载协议download protocol 如图2所示。

图2 普通SDO下载协议

上传协议upload protocol 如图3所示。

图 3普通SDO上传协议

3、采用同步传输协议

同步传输,解决的就是现整个网络的同步传输,如图4所示,就像阅兵分列式上的方阵,所有士兵迈着整齐的步伐行进。这里以CANopen的同步报文为例讲解。

图4 同步协议与阅兵分列式

每个节点都以同步报文作为PDO(过程数据的)触发参数,为了保证时间准确性,该同步报文的COB-ID 具有比较高的优先级以及最短的传输时间。CANopen选用80h作为同步报文的CAN-ID,如图5所示。

图5 同步报文

一般同步报文由NMT(网络管理)主机发出,CAN报文的数据为0字节。但如果一个网络内有2个同步机制,就需要设置不同的同步节拍,比如某些节点按1个同步帧发送1次PDO,其他的节点收到2个同步帧才发送1此PDO。

在同步协议中,有2个约束条件:

  • 同步窗口时间:索引1007h约束了同步帧发送后,从节点发送PDO的时效,即在这个时间内发送的PDO才有效,超过时间的PDO将被丢弃,当同步窗口结束后,开始同时执行动作。

  • 通讯循环周期:索引1006h规定了同步帧的循环周期,就是同步包发送的周期。

CAN总线在诸多爱好者的推动下,不断改进和改革自身,让这个古老的总线焕发出勃勃生机。ZLG致远电子作为CAN总线在国内的重要推广者,CANScope总线综合分析仪已免费标配CANPRO软件,可以解析主流的CANOpen,DeviceNet,J1939协议。

图6 协议解析


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

    关注

    145

    文章

    2022

    浏览量

    134760

原文标题:如何实现可靠的CAN长字节通讯

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞萨RL78F2x系列MCU在三开发环境下的选项字节与安全ID设置方法

    不同的开发环境,设置方法也各不相同。本文将手把手教你如何在主流的CS+for CC、e2studio和IAR Embedded Workbench中完成这两项重要配置。
    的头像 发表于 12-11 16:33 3062次阅读
    瑞萨RL78F2x系列MCU在三<b class='flag-5'>种</b>开发环境下的选项<b class='flag-5'>字节</b>与安全ID设置<b class='flag-5'>方法</b>

    用PLC实现卷径计算的两算法

    卷径计算,是动态计算如钢卷,纸卷等存料量的一种方法,它是实现张力控制和自动充放料、以及甩尾控制的重要前提。卷径计算目前主流的方法有两,一
    的头像 发表于 11-14 16:54 1448次阅读
    用PLC<b class='flag-5'>实现</b>卷径计算的两<b class='flag-5'>种</b>算法

    有多少种方法可以进行频响曲线测量?

    。下面列出APx500软件包含的至少10种方法都可以进行频响曲线的测量:FrequencyResponseContinuousSweepAcousticRespo
    的头像 发表于 11-14 11:29 365次阅读
    有多少<b class='flag-5'>种方法</b>可以进行频响曲线测量?

    GPIO位输出操作的几种方法分享

    ;    //端口A的位3输出1   PAout03 = 0;    //端口A的位3输出0 5、综述   以上4种方法,1、2两较为多见;
    发表于 11-13 07:50

    AT32F系列 CAN通讯模式使用

    AT32F系列 CAN通讯模式使用本帖子演示AT32F系列_CAN通讯模式的使用方法。注:本应用笔记对应的代码是基于雅特力提供的V2.x.x
    发表于 10-20 16:29

    如何解决CAN通讯故障?原因分析与解决方法全攻略

    在日常工作中,我们经常收到客户的反馈,他们表示CAN卡无法正常通讯,这给工作带来了诸多不便。今天,就让我们深入探讨一下导致CAN通讯失败的常见原因,以及相应的解决
    的头像 发表于 06-16 11:39 1569次阅读
    如何解决<b class='flag-5'>CAN</b><b class='flag-5'>通讯</b>故障?原因分析与解决<b class='flag-5'>方法</b>全攻略

    精选好文!噪声系数测量的三种方法

    本文介绍了测量噪声系数的三种方法:增益法、Y系数法和噪声系数测试仪法。这三种方法的比较以表格的形式给出。 在无线通信系统中,噪声系数(NF)或者相对应的噪声因数(F)定义了噪声性能和对接
    发表于 05-07 10:18

    说说中兴通讯的历任董事

    █张太峰(任职时间:1997-2004)1941年出生,1966年毕业于吉林大学半导体专业。曾任航天691厂首席工程师兼厂长、西安微电子研究所所长。1993年3月,担任中兴新通讯设备有限公司董事
    的头像 发表于 04-10 15:04 1198次阅读
    说说中兴<b class='flag-5'>通讯</b>的历任董事<b class='flag-5'>长</b>

    中兴通讯40年来首位女董事 方榕出任中兴通讯董事

    中兴通讯自成立40年历史上首位女董事长到任。3月31日,中兴通讯发布公告,当日召开的第十届董事会第一次会议审议通过《关于选举第十届董事会董事的议案》,选举方榕为公司董事
    的头像 发表于 04-01 14:54 824次阅读
    中兴<b class='flag-5'>通讯</b>40年来首位女董事<b class='flag-5'>长</b> 方榕出任中兴<b class='flag-5'>通讯</b>董事<b class='flag-5'>长</b>

    S32k3是否可以在启动和停止条件之间发送和接收多个字节

    我正在使用 nxp s32k312-100 引脚 mcu。 我正在尝试使用基于模型的设计工具箱使用 i2c。 在 simulink 中是否有一种方法我可以在启动和停止条件之间发送和接收多个字节。 我正在尝试连接 TMP75温度传感器。
    发表于 03-31 07:17

    6种方法去除焊接应力

        焊接应力是个啥?6种方法轻松去除!     由于焊接时局部不均匀热输入,导致构件内部温度场、应力场以及显微组织状态发生快速变化,容易产生不均匀弹塑性形变,因此采用焊接工艺加工的工件较其他加工
    的头像 发表于 02-18 09:29 2020次阅读
    6<b class='flag-5'>种方法</b>去除焊接应力

    如何有效地提高传感器的测试精度

    问题描述 如何有效地提高传感器的测试精度是行业的发展趋势;近来,对传感器进行实验测试过程中发现结果存在明显的工频干扰,信号中夹杂有明显噪音,具体频率为50hz,因此,近来以解决实际问题为出发点
    的头像 发表于 01-24 10:55 2017次阅读
    如何<b class='flag-5'>有效地</b>提高传感器的测试精度

    如何有效地安装孔隙水压力计

    孔隙水压力计作为一重要的监测工具,广泛应用于多种工程场景中,包括士方填筑、混凝土浇筑、测压管式埋设等。下面,峟思工程仪器将和大家详细探讨在这些具体应用场景中,如何有效地安装孔隙水压力计。在士方填筑
    的头像 发表于 01-21 17:02 692次阅读
    如何<b class='flag-5'>有效地</b>安装孔隙水压力计

    字节跳动否认与中兴通讯合作传闻

    近日,有关字节跳动旗下豆包大模型将内嵌手机并与中兴通讯探讨成立新品牌的消息引发了市场的广泛关注。然而,字节跳动方面对此明确予以否认,称并未与中兴通讯就上述事宜展开讨论。 据
    的头像 发表于 12-18 10:08 1651次阅读