基于CAN系统的网络控制设计.doc_第1页
基于CAN系统的网络控制设计.doc_第2页
基于CAN系统的网络控制设计.doc_第3页
基于CAN系统的网络控制设计.doc_第4页
基于CAN系统的网络控制设计.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于CAN系统的网络控制设计 现场总线(Fieldbus)是指开放式、国际标准化、数字化、相互交换操作的双向传送、连接智能仪表和控制系统的通信网络。它作为工厂数字通信网络的基础,沟通了生产过程现场及控制设备之间及其与更高控制管理层次之间的联系。它不仅是一个基层网络,而且还是一种开放式、新型全分布控制系统。这是一项以智能传感、控制、计算机、数字通讯等技术为主要内容的综合技术,是信息化带动工业化和工业化推动信息化的适用技术,是能应用于各种计算机控制领域的工业总线,因现场总线潜在着巨大的商机,世界范围内的各大公司投入相当大的人力、物力、财力来进行开发研究1。当今现场总线技术一直是国际上各大公司激烈竞争的领域,由于现场总线技术的不断创新,过程控制系统由第四代的 DCS发展至今的 FCS(Fieldbus Control System)系统,已被称为第五代过程控制系统2。而 FCS 和 DCS 的真正区别在于其现场总线技术。现总线技术以数字信号取代模拟信号,在 3C(Computer 计算机、Control 控、Commcenication 通信)技术的基础上,大量现场检测与控制信息就地采集、就地处理、就地使用,许多控制功能从控制室移至现场设备。由于国际上各大公司在现场总线技术这一领域的竞争,仍未形成一个统一的标准,目前现场总线网络互联都是遵守 OSI 参考模型3。由于现场总线以计算机、微电子、网络通讯技术为基础,这一技术正在从根本上改变控制系统的理念和方法,将极大地推动整个工业领域的技术进步,对工业自动化系统的影响将是积极和深远的。 现场总线技术是当代工业数字通信的前沿技术,是计算机技术、通信技术和自动化控制技术的集成,也是信息技术、测量技术在信息时代的体现。现场总线技术经过 10 年的研发、试验和局部应用阶段,现已开始大量地在中小系统中应用,并开始在超大规模的自动化系统工程中应用。现场总线技术是工业数字通信时代的先驱,它的出现正在引起工业控领域的一次前所未有的技术革命。现场总线不仅仅是分散于最底层的控制系统,而且是建立于整个工业体系的通信系统,它的通信协议建立在控制策略之上,标准的编程语言(DDL)和强大的通信功能,使现场总线控制系统成为贯彻操作者意志的最得力的工具,由于其巨大的技术优势,被认为是工业控制发展的必然趋势,将逐步取代传统的控制方法。 CAN 总线(Control Area Network,控制局域网络)最初是由德国 Bosch 公司为汽车内部的监控系统而设计的,世界上一些著名的汽车制造厂商,如 BENZ,BMW,PORSCHE,ROLLS-ROYCE 等都己采用 CAN 总线来实现汽车内部控制系统与各检测和执行机构间的数据通信6。CAN 是一种有效支持分布式控制和实时控制的总线式串行通信网络,具有物理层,数据链路层和应用层三层协议。CAN 总线专用接口芯片中以固件形式集成了 CAN 协议的物理层和数据链路层功能:可完成对通信数据的成帧处理,包括:位填充、数据块编码、循环冗余校验、优先级判别等多项工作。CAN 总线各节点之间依据优先权进行总线访问,以广播的形式进行通信CAN 总线产品由于结构简单、应用灵活方便、可靠性强、价格低廉等优点,越来越受到工业界青睐。据 1992 年成立的国际 CAN 用户和制造商非营利组织 CiA(CAN in Automation)统计,在 1998 年销售了 9700 万个节点。其中80%安装于欧洲。CAN 节点的 80%应用于车辆,其余应用于嵌入式网络和工业控制系统,如工厂控制系统、机器人控制系统、监测系统、机床控制系统等。在欧洲高能物理项目 CERN 中也采用了 CAN 总线,由于 CAN 总线本身的特点,其应用范围已不再局限于汽车行业,而向机械工业、数控机床及传感器等领域发展,因此对其通信格式的标准化提出了要求。1991 年 9 月 Philips Semiconductors 制订并发布了 CAN 技术规范(Version2.0)。该技术规范包括了 A 和 B 两部分。2.0A 给出了 CAN 报文标准格式,而 2.0B 给出了标准的和扩展的两种格式。此后,1993 年 11 月 ISO 正式颁布了道路交通运输上数据信息交换一高速通信控制器局域网(CAN)国际标准ISO1189812,为控制器局域网的标准化、规范化铺平了道路。 CAN 属于总线式串行通信网络,由于其采用了许多新技术及其独特的设计,与一般的通信总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性,因而一些世界著名的汽车厂商如 BENZ,BMW,ROLLS-ROYCE等都采用 CAN 总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。其特点可概括如下:1.CAN 为多主方式工作,也就是说网络上的任何一节点均可在任意时刻主动地向网络上其他节点发送信息,而不分主从,通信方式比较灵活,而不用站点地址等节点信息。2.CAN 网络上的节点信息分成不同的优先级,可满足不同的实时要求,高优先级的数据最多可在 134us 内得到传输。3.CAN 总线采用非破坏性总线仲裁技术。当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁的时间。4.CAN 总线只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。5.CAN 的直接通信距离最远可达 10km(速率 5kbps 以下);通信速率最高可达 1 Mbps (此时通信距离最长为 40m)。6.CAN 上的节点主要取决于总线驱动电路,目前可达 110 个;报文标识符可达 2032 种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制。7.CAN 总线采用短帧结构,传输时间短,受干扰概率小,具有极好的检错效果。8.CAN 的每帧信息都有 CRC 检验及其他检错措施,保证了数据出错率极低。9.CAN 通信介质可为双绞线、同轴电缆或光纤,选择灵活。 CAN 遵从 OSI 模型,按照 OSI 基准模型,CAN 结构划分为两层:数据链路层和物理层,其中数据链路层包括逻辑链路层 LLC 和媒体访问控制层MAC17。如图 2-1 所示:LLC 子层的主要功能是:为数据传送和远程数据请求提供服务,确认由LLC 子层接收的报文已被接收,并为恢复管理和通知超载提供信息。MAC 子层的功能主要是传送规则,亦即控制帧的结构、执行仲裁、错误检测、出错标定和故障界定。物理层的功能是有关全部电气特性在不同节点间的实际传送。CAN 技术规范 2.0B 定义了数据链路中的 MAC 子层和 LLC 子层的一部分,并描述与 CAN 有关的外层。物理层定义了信号怎样进行发送,因而,涉及位定时、位编码元和同步的描述。在这部分技术规范中,未定义物理层中的驱动器/接收器特性,以便允许根据具体应用,对发送媒体和信号电平进行优化,使信号传输更加方便。MAC 子层是 CAN 协议的核心,它描述由 LLC 子层接收到的报文和对LLC 子层发送的认可报文。MAC 子层可响应报文帧、仲裁、应答、错误检测标定。MAC 子层有称为故障界定的一个管理实时监控,它具有识别永久故障或短暂扰动的自检机制。LLC 子层的主要功能是报文滤波、超载通知和恢复管理。按照 IEEE 802.2 和 802.3 标准,物理层划分为:1.物理信令(PLS Physical Signaling)。2.物理媒体附属装置(PMA Physical Medium Attachment)。3.媒体相关接口(MDI Medium Dependent Interface)。数据链路层又划分为:1.逻辑链路控制(LLC Logic Link Control)。2.媒体访问控制(MAC Medium Access Control)。 规范中有两种不同的帧格式,不同之处在于每帧的标识符的长度不同。标准帧的标识符长度为 11 位,而扩展帧的长度则为 29 位。 CAN 总线的数据传输由以下 4 个不同的帧类型所表示和控制:数据帧:数据帧将数据从发送器传送到接收器。远程帧:总线单元发出远程帧,请求发送具有相同标识符的数据帧。错误帧:任何节点检测到总线错误就发出错误帧。超载帧:超载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。数据帧和远程帧可以使用标准帧及扩展帧两种格式,它们用一个帧空间与前面的帧分开。 网络控制系统(NCS)又称网络化的控制系统,即在网络环境下实现的控制系统。对网络控制系统来说,由于系统中的信息源较多,信息的传送要分时占用网络通信线路,而网络的承载能力和通信带宽有限,从而使得信息在传输过程中不可避免地存在时延,并且该时延可能是固定的、时变的,甚至是随机的。从控制的角度来看,这种时延会使系统的分析与设计变得更加复杂。解决网络延时问题有两种途径:一是设计控制算法时充分考虑网络延时的影响,这是控制器设计问题;二是在不考虑延时的情况下设计控制器,依靠改进调度算法保证信息传输的实时性,确保控制系统的稳定和性能,这属于信息调度问题。 利用 CAN 总线实现总线上各节点之间的数据通信以及 CAN 总线节点与中心节点之间的数据通信。由于 CAN 总线采用多主方式工作,实际中最多可连接 110 个节点,将 2 个独立 CAN 总线节点以及一个中心节点的 CANH,CANL分别连接到 CAN 总线上,这样就构成一个数据采集和利用 CAN 总线进行通信的网络。下面介绍 CAN 总线节点的设计。CAN 节点的硬件电路的设计主要是 CAN 总线通信控制器与微处理器之间的接口电路以及 CAN 总线收发器与物理总线之间的接口电路设计。CAN 通信控制器是接口电路的核心,它主要完成 CAN 总线的通信协议,而 CAN 总线收发器的功能则是增大通信距离,保护系统不受干扰。本文设计了 CAN 总线接口电路,在设计中使用的是 ATMEL 公司的 AT89C51 作为 CPU 及 PHILIPS 的SJA1000 总线通信控制器,在与物理总线的连接处则采用了 82C250 收发器和高速光电耦合器 6N137。 目前市场上比较流行的 CAN 总线器件有两大类:一是独立的 CAN 总线通信控制器,如 SJA1000。二是集成了 CAN 总线通信控制器的微处理器,如P87C591 等。本文选取了 PHILIPS 公司的 SJA1000CAN 总线通信控制器和PCA82C250 总线收发器,主要是考虑到 SJA1000 支持 CAN 2.0 规范,而且82C250 则可支持多达 110 个节点,且这两种器件价格适宜。本设计所采用的Philips 公司的独立 CAN 控制器 SJA1000 主要用于移动目标和般工业环境中的区域网络控制,其内部结构如图 4-1 所示1.接口管理逻辑(IML)解释来自 CPU 的命令,控制 CAN 寄存器的寻址,向主控制器(CPU)提供中断信息和状态信息。发送缓冲器(TXB)是 CPU 和位流处理器(BSP)之间的接口。它能够存储要通过 CAN 网络发送的一条完整报文。缓冲器长 13 个字节,由 CPU 写入、BSP 读出。2.接收缓冲器(RXB、RXFIFO)是接收滤波器和 CPU 之间的接口,用来存储从 CAN 总线上接收并被确认的信息。3.发送缓冲器是 CPU 和位流处理器 BSP 之间的接口,能够存储发送到CAN 网络上的完整信息,缓冲器长 13 个字节,由 CPU 写入 BSP 读出。4.验收滤波器(AFC)把它的内容和接收到的标识码相比较,以决定是否接收这条报文,在验收测试通过后,如果接收则这条完整的报文就被保存在RXFIFO 中。5.位流处理器(BSP)是一个在发送缓冲器、RXFIFO 和 CAN 总线之间控制数据流的队列(序列)发生器,它还执行总线上的错误检测、仲裁、填充和错误处理。6.位时序逻辑(BTL)监视串行的 CAN 总线和位时序,它是在一条报文开头,总线传输出现隐性到显性时同步于 CAN 总线上的位流(硬同步),并且在其接收一条报文的传输过程中再同步(软同步)。7.错误管理逻辑(EML)负责限制传输层模块的错误。它接收来自位流处理器(BSP)的出错报告,然后将有关错误统计通知位流处理器(BSP)和接口管理逻辑(IML)。 SJA1000 全面支持 CAN2.0A 和 CAN2.0B 协议,SJA1000 的主要功能还包括:1.有扩展的接收缓冲器 64 字节(FIFO)。2.支持 11 位和 29 位标识码。3.通信位速率可达 1Mbps。4.可与不同的微处理器接口。SJA1000 的芯片引脚排列如图 4-2 所示。它与微处理器的接口非常简单,微处理器以访问外部存储器的方式来访问 SJA1000。设计中,SJA1000 的地址/数据总线 AD0AD7 分别连接到 AT89C51 的 P0 口,CS连接到 AT89C51 的P2.7,即表示 SJA1000 的器件地址可以从 0x7f00H 开始;微处理器以访问外部存储器的方式来访问 SJA1000,可对 SJA1000 执行相应的读/写操作,SJA1000的RD 、WR 、ALE 分别与 AT89C51 的对应引脚相连,INT 接 AT89C51 的INT0 ,AT89C51 可以通过中断方式访问 SJA1000。要使 SJA1000CAN 控制器正常工作,最主要的是要对 SAJ1000 的工作模式及其各寄存器要进行正确的初始化。要对寄存器作出正确的初始化,首先要了解各寄存器的功能及结构。下面对 SJA1000CAN 控制器的各寄存器作详细的说明。SJA1000 有两种工作模式:BasicCAN 模式(基本模式)和 PeliCAN 模式(扩展模式)。在 BasicCAN 模式下主要对下面一些寄存器操作:控制寄存器、命令寄存器、状态寄存器、中断寄存器、接收代码寄存器、接收屏蔽寄存器、总线时序 0、总线时序 1、输出控制寄存器、发送缓冲器、接收缓冲器、时钟分频器。1.控制寄存器(CR)的内容是用来改变 CAN 控制器的行为的,这些位可以被微控器设置或复位,微控制器可以对控制寄存器进行读/写操作。2.命令寄存器(CMR)的命令位初始化 SJA1000 传输层上的动作:命令寄存器对微控制器来说是只写存储器,如果去读这个地址,返回值是“11111111”,两条命令间至少有一个内部时钟周期,内部时钟周期的频率是外部振荡频率的1/2。3.状态寄存器(SR)的内容反映了 SJA1000 的状态,状态寄存器对微控制器来说是只读存储器。4.发送缓冲器在 BasicCAN 方式下由一个发送缓冲区组成,它由 10 字节构成。地址从 10-19。发送缓冲器是用来存储微控制器要 SJA1000 发送的信息的,它被分为描述符区和数据区。发送缓冲器的读/写只能由微控制器在工作模式下完成,在复位模式下读出的值总是“FFH”。发送缓冲器的结构如表 4-1所示ID.0ID.10 是 11 位识别码,ID.10 是最高位识别码,在仲裁过程中是最先发送到总线上的,识别码就像信息的名字,它在接收器的接受过滤器中被用到,也在仲裁过程中决定总线访问的优先级,识别码的值越低,其优先级越高,这是因为在仲裁时有许多支配(控制)位开头的字节。RTR 位为远程请求位,如果此位置 1,总线将以远程结构发送数据,这意味着此段中没有数据字节,尽管如此,也需要同识别码相同的数据结构来识别正确的数据长度。如果 RTR 位没有被置 1,数据将以数据长度规定的长度来传送。DLC.3DLC.0 是数据长度码,信息数据区的字节数根据数据长度码编制,在远程结构中,RTR 位被置 1,数据长度码不被考虑,这就迫使发送/接收数据字节数为 0。总之,数据长度码必须正确设置以避免两个 CAN 控制器用同样的识别机制启动远程结构传送而发生总线错误,数据字节数是 08,是以如下方法计算的。数据字节数=8*DLC.3+4*DLC.2+2*DLC.1+DLC.0 为了保持兼容性,数据长度码不超过 8,如果选择的值超过 8,则按照 DLC 规定认为是8。数据区传送的数据字节数由数据长度码决定,发送的第一位是地址 12 单元的数据字节的最高位。5.接收缓冲器的结构和发送缓冲器类似,接收缓冲器是 RXFIFO 中可访问的部分,位于 CAN 地址的 2029 之间。其结构如表 4-2 所示。识别码、远程发送请求位和数据长度码同发送缓冲器的相同。RXFIFO 共有 64 个字节的信息空间,在任何情况下,FIFO 中可以存储的信息数取决于各条信息的长度:如果 RXFIFO 中没有足够的空间来存储新的信息,CAN 控制器产生数据溢出,数据溢出发生时,己部分写入 RXFIFO 的当前信息将被删除,这种情况将通过状态位或数据溢出中断(中断允许时,即使除了最后一位整个数据块被无误接收,也使 RX 信息无效)反应到微控制器。6.接收过滤器由接收代码寄存器(ACR)和接受屏蔽寄存器(AMR)组成,在接受过滤器的帮助下,CAN 控制器能够允许 RXFIFO 只接收同识别码和接受过滤器中预设值相一致的信息。复位请求位被置 1 时,这个寄存器是可以访问(读/写)的,如果一条信息通过了接受过滤器的测试而且接收缓冲器有空间,那么描述符和数据将分别顺次写入 RXFIFO,当信息被正确的接收完毕,就会:接收状态位置高(满);接收中断位置高(使能);接收中断置高(产生中断)。接收代码(AC.7AC.0)和信息识别码的高 8 位(ID.10ID.3)相等,且与接收屏蔽位(AM.7AM.0)的相应位相或为 1,即如果满足以下方程的描述,则被接收的关系式为:(ID.10 ID.3) (AC.7 AC.0)(AM.7 AM.0) =11111111。如果复位请求位置 1(当前),这个寄存器可以被访问(读/写),接受屏蔽寄存器定义接受代码寄存器的相应位对接受过滤器是“相关的”或“无影响的”(即可为任意值)。7.总线时序寄存器 0(BTR0)定义了波特率预设值(BRP)和同步跳转宽度(SJW)的值,复位模式有效时这个寄存器可以被访问(读/写)。在 BasicCAN 模式中总是 FFH0。总线时序寄存器 0(BTR0)的位功能说明如下所示:CAN 地址是 6。BRP.0BRP.5 为波特率预设值位;CAN 的系统时钟 tscl 的周期是可编程的,而且决定了各自的位时序,CAN 系统时钟周期由如下公式计算:tscl = 2*tclk*(32*BRP.5 +16*BRP.4 + 8*BRP.3+ 4*BRP.2+ 2*BRP.1+ BRP.0+1)这里 tclk=XTAL 的频率周期=1/fXTAL(fXTAL为 CAN 的晶振频率)38。SJW.0、SJW.1 为同步跳转宽度位,为了补偿在不同总线控制器的时钟振荡器之间的相位偏移,任何总线控制器必须在当前传送的相关信号边沿重新同步,同步跳转宽度定义了每一位周期可以被重新同步缩短或延长的时钟周期的最大数目:tSJW = tscl *(2*SJW.1+ SJW.0 +1)(4-2)8.总线宽度寄存器 1(BTR1)定义了每个位周期的长度,采样点的位置和在每个采样点的采样数目,在复位模式中,这个寄存器可以被读/写访问,在BasicCAN 模式中总是“FFH”。BTR1 的各位如表 4-3 所示。SAM 为采样位;SAM=1,三倍,总线采样三次;建议在低/中速总线(A 级和 B 级)上使用,这对过滤总线上的毛刺波是有益的;SAM=0,单倍,总线采样一次,建议在高速总线上(C 级)上使用。TSEGl.0TSEG1.3 与 TSEG2.2TSEG2.0 分别为时间段 1(TSEG1)和时间段 2(TSEG2)的位;TSEG1 和 TSEG2决定了每一位的时钟数目和采样点的位置。9.输出控制寄存器(OCR)实现了由软件控制不同输出驱动配置的建立,在复位模式中此寄存器可被读/写访问,在 BasicCAN 模式中总是“FFH”。当SJA1000 在睡眠模式时,TX0 和 TX1 根据输出控制器的内容输出隐性的电平,在复位状态(复位请求=1)或外部复位引脚/RST 被拉低时,输出 TX0 和TX1 悬空,发送的输出阶段可以有不同的模式,OCMODE1 与 OCMODE0 是输出模式控制的设置位,表 4-4 列出了输出控制寄存器的设置。在正常输出模式中位序列(TXD)通过 TX0 和 TX1 送出,输出驱动引脚软件复位(复位请求/复位模式)时,此寄存器不受影响。保留位(CDR.4)总是 0,应用软件总是向此位写 0 以与将来可能使用此位的特性兼容。CD.2、CD.1、CD.0 这些位是用来定义外部 CLKOUT 引脚上的频率的,复位模式和工作模式中一样,这三个位是可以无限制访问的。CD.3 是关闭时钟位,设置这一位 SJA1000 的外部 CLKOUT 引脚,只有在复位模式中才可以写访问,如果此位置为 1,CLKOUT 引脚在睡眠模式中是低而其它情况下是高。CDR.4 是保留位,只可读不可写,读出值为 0。RXINTEN 位,此位允许 TX1 输出用来做接收中断输出,当一条已接收的信息成功的通过接受过滤器,1 位时间长度的接收中断脉冲就会在 TX1 引脚输出 (结构的最后 1 位期间),发送输出阶段应该工作在正常输出模式,极性和输驱动可以根据用户的需要通过输出控制寄存器编程,复位模式中只能写访问。以上是对 SJA1000 CAN 控制器工作在 BasicCAN 模式下时,各寄存器的功能及地址作了详细的说明。在 CAN 总线构成的系统中,用户要根据自己的要求来编写应用层和用户层软件。用户层实现用户要求的控制策略和系统,应用层则定义了结构、响应及报文的意义,应用层要根据 CAN 系统应用场合的不同而有所变化。CAN 通信协议的实现,包括各种帧的组织和发送,都集成在了 CAN 总线的通信控制器 SJA1000 的内部电路中实现的。因此,系统开发主要是集中在应用层软件的设计上。而应用层软件的设计的核心部分,则是微控制器(AT89C51)与 CAN 总线通信控制器 SJA1000 之间的数据发送和接收程序,也就是说,当微处理器把要发送的数据传送到 SJA1000 通信控制器后,由后者将数据发送到CAN 总线上,而当 SJA1000 从总线上接收到数据之后,则要求微控制器从SJA1000 中取走数据。CAN 总线节点的通信程序主要包括三个部分,即 CAN 初始化、数据的发送和数据的接收。初始化程序主要是对 SJA1000 的初始化设置,包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器和验收代码寄存器的设置、波特率的设置和中断允许寄存器的设置。但应说明的是,SJA1000 的初始化工作要在复位模式下才能进行。下面就这三个部分的实现分别加以阐述。SJA1000 的初始化只有在复位模式下才可以进行,在上文中我们介绍过SJA1000 有两种工作模式:BasicCAN 和 PeliCAN, 本文设计的 CAN 网络节点采用 BasicCAN 模式,SJA1000 上电后进入的是 BasicCAN 模式。本文设计的初始化程序主要任务就是对 SAJ1000 在 Ba

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论