数控同步现场总线与CAN总线网关的设计
4 NCSF与CAN数据帧封装转换模块
NCSF-CAN协议转换模块把CAN数据帧封装在NCSF数据包中。NCSF应用层提供四类设备应用服务:计数器、操作站、伺服电机和简单I/0设备,其中计数器设备服务数据包中可利用的字段比较多,所以选择把CAN报文封装在计数器数据包中。
CAN数据帧由七部分构成:帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结尾。其中,帧起始为一个“显性”位;仲裁场由11位标识符和远程发送请求位(RTR)构成;控制场有六位,最后四位是数据场长度,其余两位保留;数据场是数据帧中的有效数据,长度为0—8个字节;应答场有两位分别为应答间隙和应答定界符;最后是7位的帧结尾。CAN远程帧没有数据场,RTR位为“隐形”。综合CAN的各种帧,NCSF—CAN网关需要把标识符、RTR位、数据长度字段、0—8字节的数据封装在计数器数据包的计数器字段中,然后通过NCSF的链路传送给主站。
计数器数据包长48个字节,支持5个计数器,按绝对增量方式计数,采用32位计数。由此每个计数器数据包传输20字节的数据,每个CAN帧的数据至多8个字节,再加上标识符等字段也不多于20字节。表1为计数器数据包与CAN数据帧的封装转换。
表1 计数器数据包与CAN数据帧的封装转换
为了区分普通计数器数据包和封装CAN数据帧的特殊计数器数据包,规定前两个字节为0x0101的计数器数据包为封装CAN协议数据的数据包。IOIN和IO.OUT是输入输出端子控制字段。CNT0_CNT、CNTl_CNT、CNT2_CNT、CNT3_CNT和CNT4_CNT为五个计数器,在主站发往计数器从站的计数器数据包中这些字段为1表示对应的计数器清零,为0表示正常计数,其它值没有定义。
为了兼容主站的计数器命令,主站发往NCSF_CAN网关的计数器字段不能为0或1。为了达到此目的规定:CNTO_CNT、CNTI_CNT、CNT2_CNT、CNT3_CNT和CNT4_CNT最高位为1,即这些字段的最小值为Ox80000000。CNT0_CNT的0_15位对应于CAN数据帧的id字段的0-15位;CNT0_CNT的16位是扩展报文标志;17位对应为RTR位;CNT0_CNT的18位表示此数据包是否包含有效数据,为1表示此数据包封装了_个CAN数据帧,为0表示不含有效数据的计数器报文,直接转发此帧即可;CNTO_CNT的19位,标识此数据包中信息是否为主站对NCSF_CAN网关的配置控制信息,为1表示配置数据用于配置网关的运行参数,为0表示封装的是CAN数据帧。CNT1_CNT的0—15位对应其余的CAN数据帧id字段位,这32位足以存储CAN扩展报文29位长的id字段;CNT1_CNT的16—22位存储数据长度。
5 NCSF主站对网关数据的处理
引入NCSF-CAN网关后,NCSF主站的软件结构如图7所示。用户层行规为用户提供统一的接口服务,而服务映射管理层用于把用户层行规的通用接口映射到具体协议的应用层服务。主站接收到计数器数据包头部为OxO101时经过CAN数据帧封装转换处理得到CAN数据帧,此帧经过CAN的应用层,通过服务映射管理和用户层行规提交给NC系统,NC系统由此可以得知CAN总线上的设备状态、I/0和传感器数据等信息。NC系统向CAN总线上发送命令或数据时,先通过用户层行规和服务映射管理层映射到相应的CAN应用层,然后把需要传送的CAN数据帧封装到NCSF计数器数据包中,通过NCSF的物理链路发到NCSF-CAN网关,对数据包解析和转换后,即可把相应的命令或数据发送到CAN总线上。
图7所示软件结构也是其它现场总线与NCSF互联的基本结构:用户层行规为NC系统提供统一的服务接口,而服务映射管理层先把相应的命令或数据映射到具体的某一种协议应用层,然后封装到NCSF应用层,通过NCSF的物理链路发送到NCSF与此协议的交互网关,最后发送到特定的总线上。
图7 引入NCSF-CAN网关后的主站软件结构
6 NCSF-CAN网关工作流程
NCSF-CAN网关设备加电后首先初始化NCSF模块,接着初始化CAN模块和数据帧封装转换模块。初始化完成后,NCSF-CAN网关等待接收NCSF总线和CAN总线数据。为确保NCSF的实时性,NCSFCAN网关接收到每个数据包后应该在尽量短的时间内把有效数据插入,然后转发出去。为此,当收到NCSF数据帧后,并不等待CAN总线的响应,仅仅查看当前NCSF发送队列中是否有数据,没则立即转发;有则封装队头数据后再转发。处理NCSF数据包的过程如图8所示。
评论