APP下载

基于CAN总线实时令牌网的设计

2013-08-16城,张

网络安全与数据管理 2013年9期
关键词:后继令牌环路

赵 城,张 凯

(扬州大学 物理学院,江苏 扬州 225002)

工业测控设备和系统中长期使用的RS-232传输协议是一种并不完备的低数据速率传输协议,抗干扰性能差,难以组成大规模的网络系统。随着控制系统复杂性和规模的增加,如果采用传统的以太网组件构建网络拓扑,则实时性难以保证。CAN是一种造价低、出错概率低又适于现场环境通信的总线,本文在此基础上构建了一种实时的令牌传输网。

1 CAN总线概述

控制器局域网 CAN(Controller Area Net)是一种有效支持分布式控制的串行通信网络。CAN起初是由德国Bosch公司为汽车的监测、控制系统而设计的,由于其具有卓越的特性及极高的可靠性,后来渐渐应用于工业过程监控设备的互连。CAN总线只定义ISO/OSI模型中的第一层(物理层)和第二层(数据链路层)。CAN总线网络的物理拓扑如图1所示。

图1 CAN总线网络的物理拓扑

CAN总线主要的特点有:(1)采用差分传输,抗干扰性强;(2)采用短帧结构和 CRC校验等检错措施,出错概率低;(3)采用基于优先权的非破坏性总线仲裁技术,可工作于多主、一对一、一对多及全局广播方式传送接收数据;(4)通信距离随波特率而变,典型值为 10 km(5 kb/s)、40 m(1 Mb/s)。

2 令牌总线概述

令牌总线网络的逻辑拓扑如图2所示。所有连到令牌总线上的站,在逻辑上将构成一个首尾相连的环,每个站都知道自己的前导站(PS)和后继站(NS)。

令牌实际上是一个采用特殊编码的控制帧。网上只有一个令牌沿逻辑环传递,得到令牌的站才能发送数据,然后把令牌向下传。在正常运行时,令牌按照站点地址的序列号从一个站点传送到另外一个站点。这样,这个令牌实际上是按照逻辑环而不是物理环进行传递。在数字序列的最后一个站点将令牌返回到第一个站点。

图2 令牌总线网络的逻辑拓扑

3 基于CAN总线令牌网的拓扑结构

结合CAN总线数据链路层对帧的封装、差错的控制和令牌总线突出的实时性的优点,设计了一种基于CAN总线的实时令牌传输协议,基于此协议构建的网络拓扑如图3所示。

图3 基于CAN总线实时令牌网的拓扑结构

4 站点设计

图4是验证此协议的一个实际网络。主站由NXP LPC1769和收发器PCA82C250构成,从站由51单片机、SJA1000 CAN控制器和收发器PCA82C250构成。主站工作在滤波方式,即只有在标识符(ID)通过滤波后接收信息。从站工作在广播方式,即先接收总线上的信息再按照协议进行处理。主站的作用是收集从站发过来的信息并提交给主机及监视总线活动,当网络令牌丢失时,发送开机复位帧。从站的作用是获得令牌后,向主站或目的从站进行数据通信。

图4 实际验证网络

PCA82C250是专门用于CAN总线的收发器,可与独立CAN控制器组合使用,最高速率为1 Mb/s,还可根据Rs引脚调整3种工作模式。

SJA1000是NXP公司生产的独立CAN控制器,是早期PCA82C200的升级,支持收发11位标识符的标准帧和29位标识符的扩展帧,通过验收屏蔽寄存器和验收代码寄存器进行单次/双次滤波,能完成可靠的通信。

NXP LPC1769是基于ARM Cortex-M3的32位微控制器,工作频率可高达120 MHz。片上集成了双通道CAN 2.0B控制器,USB 2.0全速接口,4个可配置外部中断等。CAN的编程是以32位的方式进行的。在CAN的工程中,需要包含CAN的头文件,此文件包含了波特率、验收滤波器模式等定义以及各项CAN函数的声明。以下是一个CAN信息的定义:

在具体的CAN函数中,就可以用这个结构体去定义数据缓冲区,然后在主函数中进行数据缓冲区的初始化。

5 令牌传输协议设计

SJA1000扩展帧格式具有5个字节的描述符,本文将其进行重定义,如表1所示。帧类型如表2所示,其中前8个帧是控制帧,某些控制帧还会使用数据字节1。

表1 重定义CAN描述符区

表2 帧类型

站在不同的时间会发送不同的类型帧,其中环路的建立过程是指环的初始化或站的添加和删除过程。

令牌申请帧:硬件复位或收到开机复位帧的站,在总线空闲时发送,向总线申请令牌。

开机复位帧:令牌持有站发送完后继帧的目的站后,在一定的时间内监视不到总线活动时发送,通知环路站点环路严重出错,需要进行复位,重新组环。

请求后继帧:环路建立过程中由令牌持有站发送,通知未入环的站以设置后继帧响应令牌持有站的询问。

设置后继帧:环路建立过程中由未入环的站或出错站的后继站发送,用于添加或删除一个站。

闭环宣示帧:环路建立过程中令牌持有站发送完请求后继帧后,在一定的时间内监视不到总线活动时发送,通知环路站点环路已经建立,并由识别码3标示的目的站进行闭环操作:将此站的前导站PS设置为此帧的识别码2。

后继帧:令牌持有站发送完令牌帧后,在一定的时间内监视不到总线活动时发送,通知错误站的后继站以设置后继帧响应令牌持有站的询问。

入环申请帧:发生总线错误的站在总线恢复时,向令牌持有站申请成为其后继站。

令牌帧:令牌持有站收到设置后继帧或发送完数据帧时,将令牌传递给它的后继站时发送。

数据帧:令牌持有站有数据需要发送时,向目的站进行发送。

为实现协议,每个从站中都需定义一个站状态寄存器Station_State_Reg(SSR),其各位定义如图 5所示。

图5 站状态寄存器SSR的位定义

Station_State用于指示站状态,0表示站未入环,1表示站已入环,此位在硬件复位或收到开机复位帧时置1,总线出错时置0。Ring_State用于指示环的状态,0表示环未闭合,1表示环已闭合,此位在硬件复位、收到开机复位帧和总线出错时置0。Token_State用于指示站是否持有令牌,0表示未持有,1表示持有,此位在硬件复位或收到开机复位帧时置1,总线出错时置0。Frame ID用于指示当前/之前发送的帧类型,与帧类型字节的低4位相同,硬件复位或收到开机复位帧时置为令牌申请帧ID,总线错误时置为入环申请帧ID。

图6 仲裁中断、总线错误中断和单片机定时器中断处理流程

图7 接收中断处理流程

每个站设置3个站ID字节和一个临时存储字节Temp,它们在硬件复位、收到开机复位帧或总线出错时置为本站ID。PS记录前导站ID,NS记录后继站ID,TS记录本站ID。Temp对应于环建立过程中令牌帧的数据字节1:在环初始化时令牌帧的数据字节1表示的是第一个获得令牌的站ID,当前令牌持有站把令牌传给它的后继站时会转发此ID;当有站发送入环申请帧申请添加一个站时,当前令牌持有站会把它的后继站ID放入令牌帧的数据字节1中转给入环申请站,此ID的站会作为之后的闭环宣示帧的目的站进行闭环操作;当令牌持有站发送后继帧删除一个站时,会把出错的后继站ID放在数据字节1中,PS与此ID相同的站会以设置后继帧响应令牌持有站。

站程序中除定义了每个类型帧的发送函数外,还定义了一些其他重要的函数:状态侦测函数,用于侦测总线是否错误、是否空闲以及发送缓冲器是否释放,它由每个类型帧的发送函数所调用;定时函数,用于设定一个时间间隔,它仅由请求后继帧、后继帧、申请入环帧发送函数调用。SJA1000控制器开放接收中断、仲裁中断及总线错误中断3类中断。发送中断、仲裁中断、总线错误中断和单片机定时中断处理流程如图6所示。

接收中断处理流程如图7所示,接收中断对9类帧进行了不同的处理。

基于CAN总线的实时令牌网可用于短数据帧的实时传输,如机器状态传感数据、过程控制信号等,基于此协议构建的网络既可保证传输的实时性又可保证正确性,因此具有很好的应用价值。

[1]杨春杰,王曙光,亢红波.CAN总线技术[M].北京:北京航空航天大学出版社,2010.

[2]关平.双向HFC网络中令牌总线接入方法研究 [D].成都:四川大学,2004.

[3]王毅峰,李令奇.基于CAN总线的分布式数据采集与控制系统[J].工业控制计算机,2000,13(5):34-35.

[4]SJA1000 Stand-alone CAN controller.pdf[EB/OL].[2000-01]http://www.nxp.com.

[5]LPC1769.pdf[EB/OL].[2012-08]http://www.nxp.com.

猜你喜欢

后继令牌环路
称金块
基于路由和QoS令牌桶的集中式限速网关
动态令牌分配的TCSN多级令牌桶流量监管算法
选取环路切换策略的高动态载波跟踪算法研究*
皮亚诺公理体系下的自然数运算(一)
几种环路稳定性仿真方法介绍
甘岑后继式演算系统与其自然演绎系统的比较
滤子与滤子图
单脉冲雷达导引头角度跟踪环路半实物仿真
莫斯科地铁计划于2019—2020年推出第三换乘环路