TTCANopen 门户 新闻频道 TTCANopen相关文章 查看内容

TTCANopen 应用层协议 CAN 标识符的分配方法

2019-3-6 19:45| 发布者: dxfshsh| 查看: 1209| 评论: 0

摘要: 介绍TTCANopen 应用层协议 CAN 标识符的分配方法

                      TTCANopen 应用层协议 CAN 标识符的分配方法

      TTCANopen 应用层协议以连续寄存器空间为信息载体,并将其十六位寄存器寻址空间 平分为两部分见图 1 所示。

      图 1   TTCANopen 应用层协议寄存器空间的划分

 

     其中:0x0000~0x7FFF 用于存放、传递过程变量;0x8000~0xFFFF 用于存放、传递非过 程变量。

      TTCANopen 应用层协议根据 CAN 总线传递变量特性的不同,即过程变量或非过程变量, 使用两个不同的 CAN 标识符划分分别传递上述两种变量见图 2 所示,从而为两种变量提供 了不同的总线竞争途径,并为应用层协议实施生产者-消费者模型和主机-从机模型提供了 明确的对象指向。

        图2 TTCANopen应用层协议使用不同的CAN标识符划分分别传递两种变量


     传递过程变量的 CAN 标识符划分,采用了在 CAN 标识符中抽取多个位片段,并重新排 列拼接组合的方式,构成应用层传递过程变量的寄存器基地址段,从而可以在过程变量寄存 器基地址空间构成多个等价竞争层,很好的解决了变量分层管理与总线竞争分配不平衡的矛盾。

    传递过程变量的 CAN 标识符划分见图 3 所示,其将 CAN2.0b 或 CAN-FD 协议扩展帧格 式中 29 位 CAN 标识符划分为六段,即:优先级段、子段 1、子段 3、设备编号段、功能码段 和子段 2,其中:子段 1、子段 2 和子段 3 排列拼接组合构成寄存器基地址段,各段组成说明 如下:

    优先级段:由 CAN 标识符的最高位第 28 位组成;
    子段 1:由 CAN 标识符的第 27 位组成;
    子段 3:由 CAN 标识符的第 26~19 位组成;
    设备编号段:由 CAN 标识符的第 18~12 位组成;
    功能码段:由 CAN 标识符的第 11~7 位组成;
    子段 2:由 CAN 标识符的第 6~0 位组成;


    寄存器基地址段:由子段 1、子段 2 和子段 3 排列拼接组合而成,即:由 CAN 标识符的
第 27 位、6~0 位和 26~19 位组成十六位的寄存器基地址段。

     当 CAN 标识符的第 27 位(即:寄存器基地址段的最高位)为 0 时,寄存器基地址空间指向过程变量空间(即:0x0000~0x7FFF),由于十六位寄存器基地址段的低八位(26~19 位)处于 CAN 标识符的较高端 MSB,而其次高七位(6~0 位)处于 CAN 标识符的低端 LSB,由此过程变量寄存器空间变量的竞争能力由其十六位寄存器基地址段的低八位决定, 从而在过程变量寄存器地址空间形成了 128 个等价竞争层,每层包含 256 个地址空间,在每 层相同位置上的过程变量具有相同的总线竞争能力,在同层中,低地址变量的竞争能力优于 高地址变量。

         图3   TTCANopen 应用层协议传递过程变量的 CAN 标识符划分


     传递非过程变量的 CAN 标识符划分见图 4 所示,其将 CAN2.0b 或 CAN-FD 协议扩展帧 格式中 29 位 CAN 标识符划分为四段,即:优先级段、寄存器基地址段、设备编号段和功能 码段,各段组成说明如下:

     优先级段:由 CAN 标识符的最高位第 28 位组成;

     寄存器基地址段:由 CAN 标识符的第 27~12 位组成; 

     设备编号段:由 CAN 标识符的第 11~5 位组成; 

      功能码段:由 CAN 标识符的第 4~0 位组成;

       图 4 TTCANopen 应用层协议传递非过程变量的 CAN 标识符划分

  

    一般非过程变量的实时性要求不高,在应用层通常适用主机-从机模型,主机和从机间 采用问答方式通讯,变量分段管理与其总线竞争能力没有突出的矛盾,因此从 CAN 标识符 的高端直接截取十六位(27~12 位)构成寄存器基地址段,当 CAN 标识符的第 27 位(即: 寄存器基地址段的最高位)为 1 时,寄存器基地址空间指向非过程变量空间(即:0x8000~ 0xFFFF),非过程变量的总线竞争能力整体低于过程变量,这是应用层所期望的,由于 CAN 标识符的高七位不能连续出现高电平 1,当优先级位(28 位)为 1 时,非过程变量实际 有效的地址空间为 0x8000~0xFBFF,也就是在 0xF000 段的尾部集中有 1024 个地址空间 (0xFC00~0xFFFF)不能使用,如果对非过程变量采用和过程变量一样的寄存器拼接组合 的方法构成寄存器基地址段,势必将这 1024 个不可用地址空间分散到各等价层中,这对非 过程变量寄存器空间的使用和管理无益,因此应用层对过程变量和非过程变量分别采用不同 的 CAN 标识符划分进行总线传递是非常必要的。

     TTCANopen 应用层协议对 CAN 标识符的划分及其物理含义的分配,如:优先级段、寄 存器基地址段、设备编号段、功能码段都具有明确的应用层协议指令含义,据此设计的应用 层协议具有很好的直读性和放性,使应用层协议于解便于用框架内适合其 使用环境的应用层子协议。

     TTCANopen 应用层协议以连续寄存器空间为信息载体,其应用层协议指令是对连续 寄存器空间的读写访问,由此使其能够天然兼容 CAN-FD 协议对场长度的扩