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

    文章

    1936

    浏览量

    130625

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

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

收藏 人收藏

    评论

    相关推荐

    快速了解CAN通讯原理及应用

    多个人同时想发言,但也会让其中一个人先说,其他人听;还有一个人要求另一个人来说;还有些掉线了,卡顿了等等。 为了确保每次电话会议针对上述情况正确有效地进行,我们需要一些每个人都应该遵守的规则或协议。CAN总线通信与这种电话会议形
    的头像 发表于 11-19 10:16 165次阅读
    快速了解<b class='flag-5'>CAN</b><b class='flag-5'>通讯</b>原理及应用

    Profinet转CAN主站协议网关(Profinet转CAN

    优势以及配置方法等多个方面为大家进行详细阐述。这款协议转化网关在工业自动化领域起着至关重要的作用,它能够高效地实现不同协议之间的转换,为用户带来便捷、高效的使用体验,帮助企业有效地提升生产效率和智能化水平。 一,设备主要功能 1
    的头像 发表于 09-03 10:02 224次阅读
    Profinet转<b class='flag-5'>CAN</b>主站协议网关(Profinet转<b class='flag-5'>CAN</b>)

    pwm脉宽调制的四种方法有哪些

    于电机控制、LED调光、音频处理等领域。以下是四常见的PWM脉宽调制方法: 固定频率PWM(Fixed-Frequency PWM) 固定频率PWM是一最基本的PWM调制方法。在这
    的头像 发表于 08-08 15:10 949次阅读

    谷景教你如何有效解决铁氧体磁环电感噪音大的问题

    谷景教你如何有效解决铁氧体磁环电感噪音大的问题 编辑:谷景电子 铁氧体磁环电感是电子电路中特别普遍的一电感元件,我们在使用铁氧体磁环电感的时候,也许有时候会遇到一些困难,比如噪音异响的问题。如果
    的头像 发表于 08-05 22:07 188次阅读

    人脸检测的五种方法各有什么特征和优缺点

    实现人脸检测。这种方法通常使用肤色模型来描述人脸肤色的分布,然后通过肤色模型与图像像素的匹配程度来判断是否为人脸。 优点: 计算简单,实现容易。 对于肤色分布较为均匀的图像,检测效果较好。 缺点: 对光照变化敏感
    的头像 发表于 07-03 14:47 659次阅读

    can通讯故障快速检测方法有哪些

    CAN(Controller Area Network)是一用于汽车和工业自动化领域的通信协议。它以其高可靠性、实时性和灵活性而受到广泛应用。然而,在实际应用中,CAN通信系统可能会出现各种故障
    的头像 发表于 06-16 10:00 1771次阅读

    如何检测can通讯电路的好坏

    CAN(Controller Area Network)是一基于总线通信的局域网技术,广泛应用于汽车电子、工业控制等领域。在实际应用中,CAN通讯电路的好坏对整个系统的稳定性和可靠性
    的头像 发表于 06-16 09:42 2442次阅读

    为什么说每个CAN从业者都该有台USBCAN呢?

    首先,USBCAN是CAN总线调试的常用工具。它作为CAN总线分析仪或CAN接口卡,能够帮助工程师在测试CAN总线通讯
    的头像 发表于 04-15 11:07 353次阅读

    can总线的数据帧中数据长度码和数据字节数的关系?

    can总线的数据帧中数据长度码和数据字节数的关系? CAN总线是一常用于数据通信的协议,它使用数据帧来传输信息。在CAN数据帧中,数据长度
    的头像 发表于 01-31 11:31 2163次阅读

    传统激光功率衰减的三种方法

    传统激光功率衰减通常使用以下三种方法,分别为中性密度衰减片衰减法、偏振衰减法、镀膜光学镜片衰减法。
    的头像 发表于 01-20 10:42 1663次阅读
    传统激光功率衰减的三<b class='flag-5'>种方法</b>

    编写PLC程序的7种方法

    种方法是最原始最初级的写法,也是最简单的一写法,比如第一步置位M0,M0接通后控制某个结果,结果实现后复位M0,再置位M1,依次进行l流程控制。这种写法通用所有的PLC。
    发表于 01-02 11:08 1.2w次阅读
    编写PLC程序的7<b class='flag-5'>种方法</b>

    教你几种电路分析的高效方法

    教你几种电路分析的高效方法
    的头像 发表于 12-15 09:16 936次阅读
    <b class='flag-5'>教你</b>几种电路分析的高效<b class='flag-5'>方法</b>

    大模型+多模态的3实现方法

    我们知道,预训练LLM已经取得了诸多惊人的成就, 然而其明显的劣势是不支持其他模态(包括图像、语音、视频模态)的输入和输出,那么如何在预训练LLM的基础上引入跨模态的信息,让其变得更强大、更通用呢?本节将介绍“大模型+多模态”的3实现
    的头像 发表于 12-13 13:55 1624次阅读
    大模型+多模态的<b class='flag-5'>3</b><b class='flag-5'>种</b><b class='flag-5'>实现</b><b class='flag-5'>方法</b>

    PLC间跨网段通讯的四种方法

    如果两台PLC分别属于不同网段,并且还有实时通讯的需求,那么这时可以考虑Profinet通讯方式,通过PN/PN Coupler网关来实现实时的数据交换功能。
    发表于 12-08 14:15 1700次阅读
    PLC间跨网段<b class='flag-5'>通讯</b>的四<b class='flag-5'>种方法</b>

    linux网络配置的3种方法

    Linux是一流行的操作系统,广泛应用于服务器和网络设备中。Linux系统提供了多种方法来配置网络连接,使得网络设置更加灵活和可定制。本文将会介绍Linux网络配置的三种方法,包括命令行方式
    的头像 发表于 11-27 14:33 4262次阅读