BMS 通讯协议介绍 – CAN / RS-485

关键字 :CANRS-485BMS

       BMS 目前通讯主要用到 CAN / RS-485、蓝牙、1-wire 这 3 种方式。其中电动自行车 BMS 一般使用 1-wire 通讯,而对于电摩、三轮车、便携式储能、大电流储能的 BMS 一般使用 CAN / RS-485 通讯,故本文主要向大家介绍 CAN 总线、RS-485 及其差异。

  1. CAN 总线

        『CAN 是控制器局域网络(Controller Area Network)的简称,是由以研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。在北美和西欧,CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。

        CAN 总线有以下特点:

        ① 国际标准的工业级现场总线,传输可靠,实时性高;
        ② 传输距离远,最远 10 km,传输速率快,最高1 Mbps;
        ③ 单条总线最多可接 110 个节点,并可方便的扩充节点数;
        ④ 多主结构,各节点的地位平等,方便区域组网,总线利用率高;
        ⑤ 实时性高,非破坏总线仲裁技术,优先级高的节点无延时;
        ⑥ 出错的 CAN 节点会自动关闭并切断和总线的联系,不影响总线的通讯;
        ⑦ 报文为短帧结构并有硬件 CRC 校验,受干扰概率小,数据出错率极低;
        ⑧ 自动检测报文发送成功与否,可硬件自动重发,传输可靠性很高;
        ⑨ 硬件报文滤波功能,只接收必要信息,减轻 CPU 负担,简化软件编制;
        ⑩ 通讯介质可用普通的双绞线,同轴电缆或光纤等;
        ⑪ CAN 总线系统结构简单,有极高的性价比;』(作者:afeik;出处:https://blog.csdn.net/afeik/article/details/103076755)

  1. RS-485

        『RS-485 即半双工两线制,其采用的是差分信号传输方式,逻辑为 1 时 Signal 两线电压差在 +2 ~ +6 V,逻辑为 0 时Signal 两线电压差在 -2 ~ -6 V。下图是 RS-485 物理接头 DB9M 引脚定义。

       
        RS-485 最大无线传输距离为 1200 米。最大传输速率为 10Mbps,在 100 Kb/s 的传输速率下,才可以达到最大的通信距离。RS-485 通讯总线必须用双绞线或者网线的其中一组,如果用普通的电线,即没有双绞,则干扰将非常大,会有通讯不畅问题,甚至通讯不上。

        RS-485 接口在总线上是允许连接多达 128 个收发器。即具有多站通讯能力,这样用户可以利用单一的 RS-485 接口方便地建立起设备网络。由于是半双工工作方式,所以任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。』(作者:米杰的声音;出处:https://blog.csdn.net/Roger_717/article/details/105775471



  1. CAN 总线与 RS-485 比较
        ① 『速度与距离:CAN 与 RS-485 以 1 Mbit/s 的高速率传输的距离都不超过100 m,可谓高速传输的距离差不多。但是在低速时,CAN 以 5 Kbit/s 时,距离可达 10 km,而 RS-485 再低的速率也只能到 1219 米左右(都无中继)。可见 CAN 在长距离的传输上拥有绝对的优势。

        ② 总线利用率:RS-485 是单主从结构,就是一个总线上只能有一台主机,通讯都由它发起的,它没有下命令,下面的节点不能发送,而且要发完即答,受到答复后,主机才向下一个节点询问,这样是为了防止多个节点向总线发送数据,而造成数据错乱。而 CAN-bus 是多主从结构,每个节点都有 CAN 控制器,多个节点发送时,以发送的 ID 号自动进行仲裁,这样就可以实现总线数据不错乱,而且一个节点发完,另一个节点可以探测到总线空闲,而马上发送,这样省去了主机的询问,提高了总线利用率,增强了快速性。所以在汽车等实性要求高的系统,都是用 CAN 总线或者其他类似的总线。

        ③ 错误检测机制:RS-485 只规定了物理层,而没有数据链路层,所以它对错误是无法识别的,除非一些短路等物理错误。这样容易造成一个节点破坏了,拼命向总线发数据(一直发 1),这样造成整个总线瘫痪。所以RS-485一旦坏一个节点,这个总线网络都挂。而 CAN 总线有 CAN 控制器,可以对 总线任何错误进行检测,如果自身错误超过 128 个,就自动闭锁,保护总线。如果检测到其他节点错误或者自身错误,都会向总线发送错误帧,来提示其他节点,这个数据是错误的。这样 CAN 总线一旦有一个节点 CPU 程序跑飞了,它的控制器自动闭锁。保护总线。所以在安全性要求高的网路,CAN 是很强的。

        ④ 价格与培训成本:CAN 器件的价格大约是 RS-485 的 2 倍,RS-485 的通讯从软件上是很方便的,只要懂串行通讯,就可以编程,而 CAN 需要底层工程师了解 CAN 复杂的层,编写上位机软件也要了解 CAN 的协议。可谓培训成本较高。

        ⑤ CAN 总线通过 CAN 控制器接口芯片的两个输出端 CANH 和 CANL 与物理总线相连,而 CANH 端的状态只能是高电平或悬浮状态,CANL 端只能是低电平或悬浮状态。这就保证不会出现象在 RS-485 网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且 CAN 节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。

        ⑥ CAN 具有完善的通讯协议,可由 CAN 控制器芯片及其接口芯片来实现,从而大大降低了系统的开发难度,缩短了开发周期,这些是只仅仅有电气协议的 RS-485 所无法比拟的。』(作者:afeik;出处:https://blog.csdn.net/afeik/article/details/103076755)

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论