• CAN协议制定如何减少带宽占用


    CAN协议帧类型分为标准帧(11位ID)和扩展帧(29位ID),两种CAN数据帧都有一个帧数范围,总会有使用完的时候,因此如果是在功能复杂的协议中要尽可能的减少ID的个数,不仅能减少资源的占用还能提高协议的可阅读性。

    CAN协议的制定无非就是设备与设备两者之间的一种约定,设计者可根据自己的使用需求去命名CAN  ID的以及帧内容,在设计时应当要考虑到通讯效率、安全性、准确性等问题。

    在这里,本伽椰子通过工作经验总结了几种减少带宽占用率方法:

    1.使用协议嵌套的方式,例如此时有一个CANID为0x180,但是需要使用此ID来实现5个功能,此时可以将 CAN数据帧的第0个Byte用作标识,Byte0==1是对应某某功能,Byte1==2对应某某功能,以此类推。

    CANID Byte0 Byte1 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7
    0x180

    Byte0 == 1 : 功能一

    Byte0 == 2 : 功能二

         ...

    功能一数据内容

    功能二数据内容

         ...

    功能一数据内容

    功能二数据内容

         ...

    功能一数据内容

    功能二数据内容

         ...

    功能一数据内容

    功能二数据内容

         ...

    功能一数据内容

    功能二数据内容

         ...

    功能一数据内容

    功能二数据内容

         ...

    功能一数据内容

    功能二数据内容

         ...


     2、多层嵌套,在1的基础上可将Byte1、Byte2...等用作功能标识,虽然能减少带宽占用,但会增加数据解析所需的时间;

    CANID Byte0 Byte1 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7
    0x180

    Byte0 == 1 : 功能一

    Byte0 == 2 : 功能二

         ...

    Byte0 == 1  , Byte1 == 1 :功能三

    Byte0 == 1  , Byte1 == 2 :功能四

    Byte0 == 2  , Byte1 == 1 :功能五

    Byte0 == 2  , Byte1 == 2 :功能六

    数据内容

    数据内容

    数据内容

    数据内容

    数据内容

    数据内容

     3、物尽其用,将每帧里面每个bit都考虑到位,对每个bit都赋予意义;

    CANID Byte0 Byte1 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7
    0x180

    bit0 : 某开关量

    bit1 : 某开关量

        ...

    bit0 : 某开关量

    bit1 : 某开关量

        ...

    bit0 : 某开关量

    bit1 : 某开关量

        ...

    bit0 : 某开关量

    bit1 : 某开关量

        ...

    bit0 : 某开关量

    bit1 : 某开关量

        ...

    bit0 : 某开关量

    bit1 : 某开关量

        ...

    bit0 : 某开关量

    bit1 : 某开关量

        ...

    bit0 : 某开关量

    bit1 : 某开关量

        ...


    4、减少数据帧长度,一般的CAN帧长度为8Byte,若CAN帧中存在空数据(即无用数据位),可考虑不发送该Byte 例如CANID  0x180 只有Byte0和Byte1有用,那么在CAN数据帧打包时可将后面的5个Byte不发送;

    CANID Byte0 Byte1
    0x180

    bit0 : 某开关量

    bit1 : 某开关量

        ...

    bit0 : 某开关量

    bit1 : 某开关量

        ...


     5、数据定时发送,对数据量大,但是读取频率要求不高的数据帧可定时发送(如10分钟发送一帧),减少带宽占用 ;0x180与0x181都有X轴与Y轴数据,如果对0x180数据帧读取频率要求不高,则可以对0x180做定时发送,减少同一时间总线上数据量的大小,从而达到减少带宽占用。

    CANID Byte0 Byte1 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7
    0x180

    X轴

    Y轴

    秒 

    CANID Byte0 Byte1 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7
    0x181

    X轴

    Y轴          

    注:在CAN协议中,ID越小的数据帧优先级越高,这是由CAN协议底层决定了;

  • 相关阅读:
    sed使用之处理文件命令, 注意不是sed的选项
    oracle label security(OLS)相关主体流程整理
    nginx配置使用, 入门到实践
    shell中sed的使用及选项, 编辑器中的&作用
    echo带颜色文本, shell中单引号和双引号区别, [], 反引号及位置参数使用
    vue-cli流程初识笔记
    Python之函数
    Django之ModelForm组件
    CRM【第三篇】: crm业务
    CRM【第二篇】: stark组件
  • 原文地址:https://www.cnblogs.com/jiayezi/p/16001318.html
Copyright © 2020-2023  润新知