background image

  

CAN 的高层协议也可理解为应用层协议,是一种在现有的底层协议(物理层和

数据链路层)之上实现的协议。由于充电机系统的结构比较简单,网络规模也比较小
因此我们自行制订了一种简单而有效的高层通信协议。
  技术规范

CAN2.0A 规定标准的数据帧有 11 位标识符,用户可以自行规定其含

义,将所需要的信息包含在内。在充电机系统中,每一个节点都有一个唯一的地址,
地址码和模块一一对应,通过拨码开关设定,总线上数据的传送也是根据地址进行
的。由于本系统规模较小,节点数少于

32 个,因此为每个模块分配一个 5 位的地址

码,同一系统中地址码不得重复,系统初始化时由外部引脚读入。将标识符

ID9~

ID5 定义为源地址,ID4~ID0 定义为目的地址,本协议中从模块的目的地址全填
0,表示数据是广播数据,所有节点都可接收,主模块中目的地址根据要进行通信目
的模块的地址确定。本通信协议的数据帧格式详见表

2。

  理论上源地址和目的地址的范围都是

0~31,但由于 CAN 协议中规定标识符前

7 位不能全为显性位,所以源地址不能为 31,这时实际节点只有 31 个(0~30)。因
此每个系统所含的模块不超过

31 个。所以源地址和目的地址的范围缩减到 0~30。同

时上位监控机也要占用一个地址,因此系统中的电源模块不超过

30 个,设计时根据

节点的优先权高低从小到大分配节点地址。

ID10 位定义为主模块识别码,该位主模

块为隐性位,从模块为显性位,以保证主模块通信优先。模块的地址码决定发送数据
的优先级。主模块向总线发送的数据有两种:一种是目的地址全部填

0 的广播数据;

另一种是包含特定目的地址的非广播数据。

    协 议 中 一 帧 数 据 最 多
能 传 送

8 个 字 节 , 对 于 充

电 机 控 制 系 统 来 说 已 经 足
够 用 了 , 本 系 统 只 用 到 其
中 的 前 五 个 字 节 , 其 余 三
个 节 字 可 用 于 以 后 的 扩 展
使 用 , 因 此 未 定 义 多 帧 传
输方式。
从 模 块 以 广 播 形 式 向 总 线
发 送 数 据 , 同 时 回 收 自 己
发 送 的 数 据 , 若 检 测 到 所
发 送 与 所 收 到 的 数 据 不 符 ,
则 立 即 重 新 发 送 上 一 帧 数
据。从模块发送信息的顺序
由 主 模 块 的 发 出 的 令 牌 决
定 , 以 免 在 总 线 通 信 繁 忙
时 优 先 级 较 低 的 模 块 始 终
得不到总线通信权。令牌的
发 送 顺 序 按 照 各 从 模 块 的
地 址 顺 序 进 行 , 即 地 址 较
低 的 从 模 块 首 先 获 得 令 牌 ,