数控同步现场总线与CAN总线网关的设计
为了兼容主站的计数器命令,主站发往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所示。
CAN接口接收CAN总线上需要发给NCSF主站的数据帧,然后封装转换为NCSF计数器设备数据包,插入到NCSF发送队列,等待NCSF下一个总线周期把有效数据传递到NCSF主站中,经过主站的解包处理交给NC系统,其工作流程如图9。
7 结束语
本文设计的NCSF-CAN网关,描述了NCSF总线与CAN交互的系统结构,此方法也是NCSF和其它现场总线交互的基本结构。NCSF-CAN网关使NCSF主站可以与CAN总线上的设备进行交互通信,同时提升了CAN模块对紧急数据的响应速率,提高了NCSF模块处理数据包的速度,可以满足数控系统对现场总线实时性的要求。
图8 NCSF模块处理数据包流程图
图9 CAN接口接收处理数据流程图
CAN总线数控系统数控同步现场总 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)