|
一种使用两个CAN标识符划分的应用层分配方法 ,应用层以连续寄存器空间为信息载体,并将其十六位寄存器寻址空间平分为两部分,其中:0x0000~0x7FFF用于存放、传递过程变量;0x8000~0xFFFF用于存放、传递非过程变量;应用层根据CAN总线传递变量特性的不同,即过程变量或非过程变量,使用两个不同的CAN标识符划分分别传递上述两种变量,从而为两种变量提供了不同的总线竞争途径,并为应用层协议实施生产者-消费者模型和主机-从机模型提供了明确的对象指向,有效的提高了CAN总线的总体效能;传递过程变量的CAN标识符划分,采用了在CAN标识符中抽取多个位片段,并重新排列拼接组合的方式,构成应用层传递过程变量的寄存器基地址段,从而可以在过程变量寄存器基地址空间构成多个等价竞争层,很好的解决了变量分段(层)管理与总线竞争分配不平衡的矛盾。传递过程变量的CAN标识符划分,将CAN2.0b或CAN-FD协议扩展帧格式中29位CAN标识符划分为六段,即:优先级段、子段1、子段3、设备编号段、功能码段和子段。 其中:子段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个地址空间,在每层相同位置上的过程变量具有相同的总线竞争能力,在同层中,低地址变量的竞争能力优于高地址变量。 传递非过程变量的CAN标识符划分,将CAN2.0b或CAN-FD协议扩展帧格式中29位CAN标识符划分为四段,即:优先级段、寄存器基地址段、设备编号段和功能码段,各段组成说明如下: 优先级段:由CAN标识符的最高位第28位组成; 寄存器基地址段:由CAN标识符的第27~12位组成; 设备编号段:由CAN标识符的第11~5位组成; 功能码段:由CAN标识符的第4~0位组成; 一般非过程变量的实时性要求不高,在应用层通常适用主机-从机模型,主机和从机间采用问答方式通讯,变量分段管理与其总线竞争能力没有突出的矛盾,因此从CAN标识符的高端直接截取十六位(27~12位)构成寄存器基地址段,当CAN标识符的第27位(即:寄存器基地址段的最高位)为1时,寄存器基地址空间指向非过程变量空间(即:0x8000~0xFFFF),非过程变量的总线竞争能力整体低于过程变量,这是应用层所期望的,由于CAN标识符的高七位不能连续出现高电平1,当优先级位(28位)为1时,非过程变量实际有效的地址空间为0x8000~0xFBFF,也就是在0xF000段的尾部集中有1024个地址空间(0xFC00~0xFFFF)不能使用,如果对非过程变量采用和过程变量一样的寄存器拼接组合的方法构成寄存器基地址段,势必将这1024个不可用地址空间分散到各等价层中,这对非过程变量寄存器空间的使用和管理无益,因此应用层对过程变量和非过程变量分别采用不同的CAN标识符划分进行总线传递是非常必要的。 本协议对CAN标识符的划分及其物理含义的分配,如:优先级段、寄存器基地址段、设备编号段、功能码段都具有明确的应用层协议指令含义,据此设计的应用层协议具有很好的直读性和开放性,使应用层协议易于解析,便于用户在框架内构建适合其使用环境的应用 层子协议。 本协议应用层以连续寄存器空间为信息载体,应用层协议指令是对该连续寄存器空间的读写访问,由此使其能够顺延的兼容CAN-FD协议对数据场长度的扩充。 |