×
接口总线驱动 > 总线 > 详情

数控同步现场总线与CAN总线网关的设计

发布时间:2020-05-22 发布时间:
|

引言

    现场总线控制系统在过去集散控制系统的基础上顺应用户对控制系统提出的开放性的要求而诞生。开放的具有互操作性的现场总线将网络现场的控制器及仪表设备互联,构成现场总线控制系统。由于工业控制领域现场总线技术的竞争,形成了当今众多总线标准并存的局面。这一局面限制了用户对总线产品的选择,同时也约束了总线技术的发展,这也使得各现场总线之间的互联和互操作成为当务之急。

    开放式数控系统在结构上具有互换性、伸缩性、可操作性和可移植性,其能够方便灵活的进行裁剪、扩展和升级。数控系统中的现场总线是数控装置、执行装置和传感器件之间通信的系统。数控系统的开放性势必对现场总线开放性提出一定的要求。

    数控同步现场总线(Numerical Control Synehronoas Fieldbus,NCSF)是中国科学院沈阳计算技术研究所总线实验室针对数控系统自主研发的现场总线。为真正实现数控系统的可裁剪、可扩展和可升级,数控系统的现场总线需要兼容不同的总线产品。CAN总线作为一种可靠的、功能完善的、成本合理的远程网络通信方式被广泛应用于自动化控制领域,是国际上广泛应用的现场总线之一,其应用范围遍及工业机器人和传感器等领域,有必要设计NCSF与CAN的互操作接口设备。设计NCSF和CAN总线的通信网关,有利于增强NCSF与其它现场总线的兼容能力,扩展其应用范围。同时也为其它现场总线与数控同步现场总线互联的软硬件结构提供方案和技术参考。

1 相关工作

    沈阳计算所牵头制定的《机械电器设备开放式数控系统第三部分:总线接口与通信协议》中提出,开放式数控系统总线是用于连接系统装置间的数字式、双向、多点的通信系统,以ISO/OSI开放系统互连参考模型为基础,并对其加以改造,由物理层、数据链路层、应用层与用户层行规组成。开放式数控系统由数控装置、伺服驱动装置、主轴驱动装置、传感器装置、I/O装置等组成,装置间通过总线进行互操作,总线由站点、通信介质与设备组成,如图1所示。

图1 开放式数控总线结构

    数控总线结构的设计标准只是一个规范,并未对具体的实现方法做规定。每个NCSF站点包括两个网络接121,它们通过双绞线依次连成环形或线形,此种拓扑结构可以有效避免总线式结构的介质冲突,另外在总线的某一处出现异常时总线结构可自动转变为两个线性的总线系统结构,这种冗余的拓扑结构,也进一步确保了通信的确定性和可靠性。

2 NCSF和CAN连接的总线拓扑结构

    NCSF支持环形和线性的结构,而CAN是一种多主式的串行通信总线。本文中设计一个特殊的NCSF从站,它具有两个网口和一个CAN接口。此从站通过两个网口连接在NCSF总线中,同时通过CAN接口和CAN总线进行相关的交互,其总线结构如图2。

图2 NCSF与CAN互联的总线拓扑结构

    图2中NCSF总线的从站3负责NCSF-CAN之间的交互。此从站在普通NCSF从站的基础上,实现CAN总线的软硬件支持。它把需要转发到NCSF主站的CAN总线数据帧封装到NCSF的应用层数据包通过NCSF的链路发送到主站,在NCSF的应用层中把还原CAN的数据帧交给上层协议;另外当主站需要发送CAN数据帧时,主站把这个CAN数据帧封装在NCSF数据帧中转发到此从站,然后还原为CAN数据帧发送到CAN总线上,这样的能够实现NCSFCAN之间数据交互的从站被称为NCSF—CAN网关。

    整个NCSF.CAN网关分为三部分:NCSF总线模块、CAN总线模块、NCSF-CAN数据帧封装转换模块。NCSF.CAN数据帧封装转换模块的主要工作是,在NCSF应用层的数据包中封装或还原CAN数据帧;使得CAN数据帧能够通过NCSF链路发往从站,同时也使得主站发往CAN总线的数据包能够正确解析。

3 NCSF接口模块与CAN接口模块的设计

    NCSF—CAN网关硬件由NCSF接口和CAN接口构成。协议网关的主控芯片S3C2440是一款高性能低功耗处理器,其采用ARM920T内核,全静态的设计特别适合对成本和功率敏感型的应用。

    S3C2440有着丰富的片上资源,CAN总线控制芯片选用MCP2515,其通过串行外设接口(Serial PeripheralInterface,SPI)与S3C2440进行通信,NCSF接口选用DM9000。

    3.1 NCSF总线接口模块

    NCSF使用标准以太网的物理层,其接口电路使用普通的以太网接口芯片,同时为了保证数据传输速率应该选用100Mbit/s支持全双工模式的芯片。图3是从站的NCSF接口电路简图,图中仅标出芯片关键的引脚的连接。图中DM9000的片选信号AEN连接在nGCS4上,表明此接口DM9000的起始地址为0x20000000,使用7号外部中断脚EINT7,DM9000的内部存储空间的基地址为300H。

图3 NCSF接口电路简图

    需要特别指出的是DM9000的SD0一SDl5引脚是数据和地址的复用引脚。当CMD为低电平时,数据线为地址端口,否则为数据端口。DM9000的地址寄存器端121地址为Ox20000000,数据寄存器的端口地址为0x20000004。由此访问片上特定的寄存器时要先写地址再读写数据,下面是DM9000驱动程序读其内部寄存器的函数实现。[page]

   

    NCSF数据帧头部长18字节,图4为NCSF数据帧的头部结构。EthAREA六个字节填充0xFF,使NCSF帧能够通过以太网交换设备;帧的总长度G_Length;两个全局控制字G_CTRLI和G_CTRL2;①数据帧标识G_mtype;②帧类型标识G_stype;③从站计数器G_sno。

图4 NCSF帧头部结构

    在DM9000的设备驱动和NCSF协议中,为了方便管理每个NCSF数据包及其控制信息,特设计数据结构ncsf buff。

   

    在ncsf buff中next和prey使所有需发送的数据包构成一个双向链表;cb为数据包状态控制字,保存此数据包当前的状态和控制信息,ncsf buff中最重要的几个成员变量为head、data、tail和end,这四个成员变量指向同一连续内存区域的不同位置,其结构和关系如图5所示。

图5 ncsf_buff数据结构

    在创建nesf_buff的同时会申请一段足够容纳最大的NCSF数据帧2倍的连续内存,head指向这一块内存的首地址,end指向其尾部,data指向head+LEN的位置,在tail和data之间是NCSF有效数据,即在data前预留LEN长空闲空间,以便在此有效数据前扩展数据包头部和其它数据,tail预留的空闲空间用于在尾部扩展有效数据。有效数据区前后预留的空闲空间可以避免在数据包扩展时重新分配内存和拷贝相关数据,由此提高了发送接收数据包的速度。

    3.2 CAN总线接口模块

    MPC2515是一款独立的CAN控制器,完全支持CAN2.0B技术规范。该器件能够收发标准和扩展的数据帧以及远程帧。MPC2515自带两个验收屏蔽寄存器、六个验收滤波寄存器,这些寄存器用于过滤不必要接收的报文,它们可以有效降低微控制器的负担。MPC2515和S3C2440之间的连接通过SPI实现。

    图6中特别画出CAN模块的电源电路,为了增强CAN总线的抗干扰能力,MCP2515与总线收发器TJAl050之间采用高速光电耦合器6N137相连以实现电气隔离,而为了实现完全的电器隔离,6N137两端的电源也应该进行完全隔离,B0505S为它们提供了完全隔离的电源。

图6 CAN模块电路简图

    S3C2440通过特定的SPI命令与MPC2515进行交互,命令包含复位、读、写、读RX缓冲器、装载TX缓冲器、请求发送报文、读状态和位修改命令等。通过这些命令S3C2440可以读写CAN控制器的状态、发送CAN数据帧,以及重置CAN控制器。S3C2440通过SPI向MPC2515发出每个命令字节前,CS都需要被置为低电平。在任何操作期间CS都要保持低电平,操作完成后需要把CS置为高电平。

    CAN模块的初始化依次为:软件复位、设置CAN总线的波特率、关闭中断、设置验收屏蔽寄存器和验收滤波寄存器、切换MPC2515到正常模式、清空接收和发送寄存器,最后开启相应的中断。

    can_frame是CAN数据帧发送队列的数据结构。为了能够兼容CAN扩展报文接收,在can_frame中ext_f标志为0表示为正常报文,为1表示为扩展报文;rtr_f对应数据帧仲裁场中的RTR位;pri为报文的优先级。为0按照先入先出顺序出队,少数紧急指令为1,此报文优先出队被发送。[page]

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所示。[page]

    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接口接收处理数据流程图 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
RS232与RS485谁才是UART中的高速公路