摘 要
现场总线测控技术正逐步取代传统的控制方案,发展成为二十一世纪自动控制的主体。作为现场总线之一的CAN总线,具有可靠性高、价格低廉的优势,得到了广泛应用。同时,随着互联网的迅猛发展以及以太网技术的成熟,以太网早已成为管理、信息网络的首要选择。然而,目前企业迫切要求现场测控网络与信息网络的融合,以实现全厂以及全世界范围内的信息共享。由此引发的一个问题是:由CAN总线构成的现场测控网络和由以太网构成的管理信息网络之间的信息共享问题,即如何实现这两种网络的互连。
本文从CAN总线构成的现场测控网络与以太网构成的信息网络的发展现状出发,详细分析了CAN2.0B协议、以太网、TCP/IP协议的特点及实现原理,提出了解决CAN总线和以太网互连的方案,设计并实现CAN总线—以太网网关。对完成互连所涉及到的关键技术进行了研究,其中包括CAN总线的通信、以太网的通信及协议转换的设计思路。在软件方面,本文介绍了Microsoft Visual C++ 6.0软件开发环境的设置和调试手段,重点讨论了CAN数据帧封装、CRC校验和滤波的程序设计。设计了两个运行的发送和接收程序来完成数据帧的发送和接收。课题的研究成果对其他现场总线例如 PROFIBUS、FF、LONWORKS等与以太网的互连具有一定的理论指导意义,给目前工业现场快速组建具有IP能力的自动控制系统提供了一个设计参考,具有广阔的应用前景。 关键词:CAN总线,以太网,TCP/IP协议
Abstract
At present,the majority of embedded automation systems are based on MCU.which achieve a certain function with a number of monitoring,servo, display device etc.Information is often stop at the scene “live”. Embedded automation systems become the “information islandhat has seriously hampered the development of itself.In order to realizing large-scale information mtegratlon and comprehensive implementation of automation,a communication system that can be run in the industriale nvironment,has high reliability and goog real-time, forms the bouom of industrial field networks and completes multi-point communication between automation equipmentsat the scene·
Ethemet and the CAN-bus(Controller Area Network)is the most wildly used by Internet technology and open field bus in the world. With the closer combination of measurement-control technology and network technology,easurement-control system connected to the Internet has become a trend, which led to the rapid development of embedded network technology in recent years. Ethemet technology is at stage of rapid development,which will lower costs and simplify the structure of the system. With the technology development and needs,a combination will be a huge driving force of the rapid development of control field· In this paper a high-performance embedded CAN-Ethemet Gateway processor core is designed,which can be used to achieve solid concise Communication between the monitoring equipments and field devices,to complete real-time measurement and control of large,scale equipment.
Keywords: CAN-Bus; Ethemet; TCP/IP protocol
目 录
摘 要 ......................................................... 1 Abstract ....................................................... 2 第一章 绪论 ................................................... 1
1.1 研究背景 ............................................... 1 1.2 网络互连的发展现状 ..................................... 1
1.2.1 CAN总线发展现状 .................................. 2 1.2.2 以太网发展现状 .................................... 2 1.2.3 CAN总线与以太网互连的发展现状 .................... 3 1.3 论文研究的主要内容 ..................................... 4 第二章 CAN协议 ............................................... 5
2.1 CAN总线简介 ............................................ 5 2.2 CAN总线报文传输 ........................................ 7
2.2.1 帧格式 ............................................ 7 2.2.2 帧类型 ............................................ 7 2.3 CAN总线的特点 ......................................... 12 第三章 软件VC6.0 ............................................. 15
3.1 VC6.0简介 ............................................. 15 3.2 VC6.0的程序设计 ....................................... 16 3.3 VC6.0的特色与缺点[18] ................................... 17 第四章 总体设计方案 ........................................... 19
4.1 总体设计方案 .......................................... 19 4.2 CAN协议栈的设计 ....................................... 20 第五章 CAN总线协议栈研发 ..................................... 21
5.1 数据封装 .............................................. 21
5.2 数据发送 .............................................. 22 5.3 滤波 .................................................. 23 5.4 CRC校验 ............................................... 24 5.5 数据接收 .............................................. 25 第六章 系统测试 ............................................... 26
6.1发送界面 ............................................... 26 6.2接收界面 ............................................... 29 6.3分析 ................................................... 29 第七章 总结与展望 ............................................ 30
7.1 总结 .................................................. 30 7.2 展望 .................................................. 30 参考文献 ...................................................... 32 致 谢 ........................................................ 34
第一章 绪论
1.1 研究背景
现场总线是用于过程自动化和制造自动化最底层现场设备或仪表互连的通信网络,是当今自动化领域技术发展的热点之一。现场总线是一种总线型拓扑网络,应用在生产最底层,直接和所有受控节点串行连接通信,能同时满足过程控制和制造业自动化的需要,被誉为自动化领域的计算机局域网。本文所研究的控制器局部网(Contr0ller Aiea Network,CAN)就是目前比较流行、应用广泛的现场总线之一【1-4】。
随着网络技术的发展,Internet正把全世界的计算机系统、通信系统集成起来,形成信息高速公路,形成公用数据网络。目前企业的上层管理网络多采用的是基于以太网及TCP/IP协议构成的信息管理网,这种信息网络满足了社会各行业对更广泛的信息交换及共享的需求
【5】
。
现场总线技术能够实现底层现场设备之间以及生产现场与外界的信息交换。现场总线属于“车间设备级层”总线,传输速率受传输距离影响,无法延伸到信息网络。虽然工业以太网系统是测控系统结构未来的发展方向,但是实际应用的网络具体情况各不相同,现场环境复杂,使用以太网来取代现场总线就目前来看仍然是有一定困难的[5]。“车间设备级层”的测控网络与上层管理信息网络之间信息不能共享这一问题不能避免[6]。
本论文就是在此基础上,致力于这一问题的研究,解决以CAN总线与以太网这两种异构网络间数据传输的问题。
1.2 网络互连的发展现状
现场总线将各个的设备连接在一起,实现了设备级网络互连;以太网为实现工业控制信息化提供了途径,本文所设计和研究的系统主要由这两部分组成。对于该系统将放在以后章节中进行详细介绍,以下介绍CAN
1
总线、以太网两种技术和两大网络互连的现状。 1.2.1 CAN总线发展现状
CAN总线是德国BOSCH公司于20世纪80年代为解决现代汽车中众多的控制与检测仪器之间的数据交换而开发的一种高性能串行通信协议。由于其独特的设计思想、良好的功能特性、极高的可靠性和现场抗干扰能力,己经被广泛应用于各个领域[7.8]。目前,支持CAN协议的有:Intel、Motorola、Philips、NEC、Siemens等百余家国际著名大公司。CAN总线已成为欧洲总线标准之一,是唯一被批准为国际标准的现场总线。在国际上,一些著名的汽车制造厂商如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)等,都已经使用CAN总线实现汽车内部控制系统与检测和执行机构间的数据通信[9]。近几年来CAN总线已开始进入我国各个应用行业,正逐渐被大家重视。如清华大学、广州周立功单片机有限公司已着手开始研究和生产与CAN总线的相关产品[10]。 1.2.2 以太网发展现状
以太网是一种分组交换局域网技术,最早由施乐(Xerox)公司开发,用来在网络中传输数据。它定义了一组标准,比如数据传输速率、网络访问机制和在任一给定的时间段内网络能传输的最大数据量等。
以太网系统由硬件和软件两大部分组成,二者共同实现以太网系统各计算机之间传输信息和共享信息。以太网的构成必需具备四个基本要素:
1. 以太网帧(frame),它是一系列标准化的数据位,用来在系统中传输数据。
2. 介质访问控制协议(media access control protocol),它由一整套内嵌于各个以太网接口的规则组成,它允许多个计算机以公平的方式访问共享的以太道。
3. 信号部件(signaling component),它们是一些标准化的电子设备,
2
用来在以太道中发送和接收信号。
4. 物理介质(physical medium),由电缆和其他用来在联网的计算机之间传输数字式以太号的硬件部件组成。
以太网系统的核心概念是帧。网络硬件,如以太网接口、介质电缆等,都仅仅是用来在计算机之间传输以太网帧。以太网操作是基于介质访问控制协议的。介质访问控制协议是一套规则,用来协调和控制连接到共享信道上的一组计算机对信道的访问。这种操作模式也称为半双工以太网,以此来区别可选的全双工模式。
以太网已成为最普及的联网技术:从局域网到城域网、广域网,从企业网到电信网,以太网都坚定地进行着渗透。 1.2.3 CAN总线与以太网互连的发展现状
当今世界,如何实现以太网与CAN总线构成的设备网络的互连成为科学界研究的热点。Internet正在把全世界的办公系统和通信系统连接起来,这为现场信息的远程访问提供了可能;现场总线为现场设备接入Internet提供了基础。设备在完成测量控制任务的同时,向上层提供各种现场信息。为实现企业纵向的信息集成,位于现场的测量控制设备通过现场总线互连构成底层的设备网络;设备网再通过网关等连接到Internet上,从而实现底层设备与上层管理网络之间的信息交互 [14]。因此,现场总线构成的设备网络与Internet的结合将成为自动化领域信息技术发展的方向。
在各种现场总线的激烈竞争中,工业以太网异军突起,成为新的亮点。一方面,以太网要用于工业控制现场,需要解决通信的不确定性、稳定性、可靠性和防爆等关键问题:另一方面,由于以太网具有应用广泛、价格低廉、通信速率高、软硬件产品丰富、应用支持技术成熟等优点,其应用前景是非常广阔的。
近年来主要的现场总线组织纷纷进军以太网领域,涉足较早的是World
3
FIP,现在Profibus也急起直追,以相当快的速度发展,可以说是该组织建立以来最大的动作,也许是它摆脱技术相对落后的根本措施。但是由于以太网的基础技术TCP/IP协议的,进展都不理想,但是当前快速发展的CIP和以太网CIP技术将有力地改变这个局面。
纵观国内外研究成果,以太网和CAN总线之间实现网络互连主要有两种方法:一种方法是由工控机+网卡+CAN卡来实现。现场总线通过PCI板卡与工控机相连,工控机通过网卡连接到企业的监控层。这种方案主要应用在工控机的现场。但是,这种连接方式的弊端明显,成本高而且开发周期长。另一种方法,则是基于嵌入式系统实现CAN/Ethernet的信息网关。这种方法是基于嵌入式系统实现,采用微控制器+以太网接口芯片+CAN总线接口芯片实现嵌入式互连网关。目前,em Ware、惠普、EDVICE等公司等开发出了自己的相关产品,通过使用Smart Stack技术或者添加嵌入式网关,解决以太网和CAN现场总线的互连。
1.3 论文研究的主要内容
本文的主要研究内容是CAN总线协议栈,所以主要包括以下几个方面: 1. 了解CAN2.0B协议,掌握CAN的基本知识点,为以后的研究奠定基础。
2. 数据帧的封装。将要发送的数据封装成标准的CAN格式,以致在传输的过程中不易出错。
3. CRC校验。检查数据在发送过程中是否出错,当发送正确时则接收,不正确时,则要求重新发送。
4. 滤波。检验服务器所发送的数据是否到本节点,如果是则接收,不是,则不管。
5. 数据帧的发送和接收。当要发送的数据封装完成后则发送,客户机则接收。
4
第二章 CAN协议
2.1 CAN总线简介
控制器局域网CAN为串行通信协议,能有效的支持具有很高安全等级的分步实时控制。CAN的应用范围很广,从高速的网络到低价位的多路配线都可以使用CAN。在汽车的电子行业里,使用CAN连接发动机控制单元、传感器、防滑系统等,其传输速率可达1Mbps。同时,可以将CAN安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等,用以代替接线配线装置。
本技术规范的目的是为了在任何两个CAN器件之间建立兼容性。可是,兼容性有不同的方面,比如电气特性和数据转换的解释。为了达到设计的透明度以及实施的灵活性,根据ISO/OSI参考模型,CAN被细分为以下不同的层次。
1. CAN的ISO/OSI参考模型的层结构
(1)物理层(Physical Layer)定义信号是如何实际的传输的,因此涉及位定时、位编码/解码、同步的解释。本技术规范没有定义物理层的驱动器/接收器特性,一边允许根据它们的应用,对发送媒体和信号电平进行优化。
(2)数据链路层(Date Link Layer)含以下两个子层:
介质访问控制子层MAC(Medium Access Control)是CAN协议的核心。它把接收到的报文提供给LLC子层,并接收来自LLC子层的报文。MAC子层负责报文分帧、仲裁、应答、错误监测和标定。MAC子层也受一个名为“故障界定”(Fault Confinement)的管理实体监管。此故障界定为自检机制,以便把永久故障和暂时扰动区别开来。
逻辑链路控制子层LLC(Logical Link Control)涉及报文滤波、过载通知和恢复管理。
5
数据链路层 数据链路控制子层LLC 验收滤波 过载通知 恢复管理 „„„„„„„„„„„„„ 介质访问控制子层 数据包装 /解包 帧编码 (填充,消除填充) 介质访问管理 错误检测 错误标定 应答 并行转化为串行/串行转化为并行 故障界定 物理层 位编码/解码 位定时 同步 „„„„„„„„„„„„„ 总线故障管理 驱动器/接收器特征 图2.1 CAN的ISO/OSI参考模型的层结构
2. 报文(Messages)
总线上的信息以及各不同的固定格式的报文发送,但长度受限。当总线空闲时,任何连接的单元都可以开始发送新的报文。
3. 优先权(Priorities)
报文中的数据帧和远程帧都有标志符段,在访问总线期间,标识符确定了一个静态的(固定的)报文优先权。当多个CAN单元同时传输报文发生总线冲突时,标识符码值越小的报文优先级越高。
4. 多主机(Multimaster)
6
总线空闲时,任何单元都可以开始传送报文。具有较高优先级的报文的单元可以获得总线的访问权。
5. 安全性(Safety)
为了获得最安全的数据发送,CAN的每一个节点均采取了强有力的措施来进行错误检测、错误标定及错误自检。
6. 连接(Connection)
CAN串行通信链路是可以连接许多单元的总线。理论上,可连接无数个单元。但实际上由于受延迟时间以及总线线路上电气负载能力的影响,连接单元的数量是有限的。
7. 总线值的表示(Bus Values)
总线上可以有两个互补的逻辑值中的一个:“显性”(Dominant)或“隐性”(Recessive)。当显性位和隐性位同时发送时,其结果是总线的值为显性。例如,在总线上执行“线—与”时,显性电平代表逻辑0,隐性电平代表逻辑值1。本技术规范没有给出表示逻辑值的物理状态(比如,电压、光强度)。
8. 应答(Acknowledgment)
所有的接收器对接收到的报文进行一致性检查。对于一致的报文,接收器给予应答;对于不一致的报文,接收器作出标志。
2.2 CAN总线报文传输
2.2.1 帧格式
有2种不同的帧格式,不同之处为标识符域的长度不同:含有11位标识符的帧称之为标准帧;含有29位标识符的帧称之为扩展帧。
2.2.2 帧类型
报文传输有数据帧(Date Frame)、远程帧(Remote Frame)、错误帧(Error Frame)和过载帧(Overload Frame)4个不同类型的帧。
7
一、数据帧
数据帧(Date Frame)由以下7个不同的位域(Bit Field)组成:帧起始(Start of Frame)、仲裁域(Arbitration Field)、控制域(Control Field)、数据域(Data Field)、CRC域(CRC Field)、应答域(ACK Field)和帧结尾(End of Frame)。数据域的长度可以为0。报文的数据帧结构如表2.1所示。
表2.1 报文的数据帧结构
帧起始 仲裁域 控制域 数据域 CRC域 应答域 帧结尾 1. 帧起始(标准格式和扩展格式)
帧起始(SoF)标志数据帧和远程帧的开始,仅由一个显性位组成。 只在总线空闲时才允许站点开始发送(信号)。所有的站必须同步于首先发送报文的站的帧起始前沿。
2. 仲裁域
标准格式帧与扩展格式帧的仲裁域格式不同。
在标准格式里,仲裁域由11位标识符和RTR位组成。标识符位由ID-28~ID-18组成。数据帧标准格式中的仲裁域如表2.2所示。
表2.2 数据帧标准格式中的仲裁域结构
11位标识符 RTR 在扩展格式里,仲裁域包括29位标识符、SRR位、IDE位、RTR位。其标志符由ID-28~ID-0组成。为了区别标准格式和扩展格式,前版本CAN规范1.0~1.2的保留位r1现在表示为IDE位。数据帧扩展格式中的仲裁域如表2.3所示。
表2.3 数据帧扩展格式中的仲裁域结构
11位标识位符 SRR IDE 8
18位标识位符 (1)标识符(Identifier)
标准格式中的标识符:标识符的长度为11位,相当于扩展格式的基本ID(Base ID)。这些位按ID-28到ID-18的顺序发送。最低位是ID-18。7个最高位(ID-28~ID-22)必须不能全为隐性。
扩展格式中的标识符:和标准格式对比,扩展格式的标识符由29位组成。其结构包括两部分:11位基本ID、18位扩展ID。
基本ID包括11位,按ID-28到ID-18的顺序发送,它相当于标准标识符的格式,基本ID定义了扩展帧的基本优先权;扩展ID包括18位,它按ID-17到ID-0顺序发送。
(2)SRR位(属扩展格式)
SRR位是“替代远程请求位”(Substitute Remote Request Bit),是一隐性位。它是在扩展帧中标准帧的RTR位的位置被发送,因而替代标准帧的RTR位。当标准帧和扩展帧发生冲突,而扩展帧的基本ID同标准帧的标识符一样时,标准帧优先于扩展帧。
(3)IDE位(属扩展格式)
IDE位是“标识符扩展位”(Identifier Extension Bit),属于扩展格式的仲裁域和标准格式的控制域。标准格式里的IDE位为显性,而扩展格式里的IDE位为隐性。
3. 控制域(标准格式以及扩展格式)
控制域由6个位组成,其结构如表2.4所示。标准格式里的控制域包括数据长度代码、IDE位(为显性位)及保留位r0。扩展格式里的控制域包括数据长度代码和两个保留位:r1和r0。其保留位必须发送为显性,但是接收器接收到的是显性和隐性的结合。
表2.4 控制域结构
IDE/r1
9
R0 DLC3 DLC2 DLC1 DLC0 表2.5 数据帧长度代码DLC
数据字节的数目 0 1 2 3 4 5 6 7 8 数据长度代码 DLC3 d d d d d d d d r DLC2 d d d d r r r r d DLC1 d d r r d d r r d DLC0 d r d r d r d r d
4. 数据域(标准格式和扩展格式)
数据域由数据帧里的发送数据组成。它可以为0~8个字节,每字节包含8位,首先发送MSB。
5. 循环冗余码(CRC)域(标准格式和扩展格式)
CRC域包括CRC序列(CRC Sequence),其后是CRC界定符,如表2.6所示。
表2.6 循环冗余码域 CRC序列 CRC界定符 6. 应答域(ACK Field)(标准格式和扩展格式)
应答域长度为2个位,包括应答间隙(ACK Slot)和应答界定符(ACK Delimiter),如表2.7所示。
表2.7 应答域结构
应答间隙 应答界定符 在应答域里,发送站发送2个隐性位。当接收器正确的接收到正确的报文时,接收器就会在应答间隙期间(发送ACK信号)向发送器发送一显性位以示应答。
10
7. 帧结尾(标准格式和扩展格式)
每一个数据帧和远程帧均有一标识序列界定,这个标志序列由7个隐性位组成。
二、远程帧
作为某数据接收器的站,通过发送远程帧(Remote Frame)可以启动其资源节点传送它们各自的数据。远程帧也有标准格式和扩展格式,而且都由6个不同的位域组成:帧起始、仲裁域、控制域、CRC域、应答域和帧结尾。
与数据帧相反,远程帧的RTR位是隐性的。它没有数据域,所以数据长度代码的数值没有意义(可以标注为0~8范围里的任何数值)。远程帧的数据结构如表2.8所示。
RTR位的极性表示了所发送的数据是一数据帧(RTR位显性)还是远程帧(RTR位隐性)。
表2.8 远程帧结构
帧起始 仲裁域 控制域 CRC域 应答域 帧结尾
三、错误帧
错误帧(Error Frame)由两个不同的域组成,如图2.2所示。第一个域是不同站提供的错误标志(Error Flag)的叠加(Superposition);第二个域是错误界定符(Error Delimiter)。 数据帧 错误帧 帧间空间或过载帧 错误标志 错误标志的叠加 错误界定符 图2.2 错误帧的结构
为了能正确的中止错误帧,一“错误认可”的节点要求总线至少有长度为3个位时间的总线空闲(当“错误认可”的接收器有局部错误时)。因
11
此,总线的载荷不应为100%。
1. 错误标志:有 “激活(Active)错误”标志和“认可(Passivity)错误”两种形式的错误标志。“激活错误”标志由6个连续的显性位组成。“认可错误”标志由6个连续的隐性位组成,除非被其它的显性位覆盖。
2. 错误界定符:错误界定符包括8个隐性位。 四、过载帧
过载帧(Overload Flag)包括两个位域:过载标志和过载界定符。其结构如图2.3所示。
帧结束或错误界定符 或过载界定符 过载帧 帧间空间或过载帧 过载标志 过载标志的叠加 过载界定符 图2.31 过载帧结构 1. 过载标志
过载标志(Overload Flag)由6个显性位组成。过载标志的所有形式和“激活错误”标志的一样。
2. 过载界定符
过载界定符(Overload Delimeter)包括8个隐性位。过载界定符的形式和错误界定符的形式一样。
2.3 CAN总线的特点
由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而扩展到了机械工业、纺织机械、农用机械、机器人、数控机床、医疗机械、家用电器及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。
由于采用了许多新技术及独特的设计,CAN总线与一般的通信总线相
12
比,它的数据通信具有突出的可靠性、实时性和灵活性。其特点可概括如下:
1. CAN是到目前为止唯一有国际标准的现场总线。
2. CAN为多主方式工作,网络上一节点均可在任意时刻主动地向网络上其它节点发送信息,而部分主从。
3. 在报文标志符上,CAN总线上的节点分成不同的优先级,可满足不同的实时要求,优先级高的数据最多可在134us内得到传输。
4. CAN采用非破坏性总线仲裁技术。当多个节点同时向总线发送信息出现冲突时,优先级低的节点会主动退出发送,而最高优先级的节点可不受影响的继续传输数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下,也不会出现网络瘫痪情况(以太网则可能)
5. CAN节点只需通过对报文的标识符滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。
6. CAN的直接通信距离最远可达10km(速率在5kbps以下);通信速率最高可达1Mbps(此时通信距离最远长为40m)。
7. CAN上的节点数主要取决于总线驱动电路,目前可达110个。在标准帧报文标识符有11位,而在扩展帧的报文标识符(29位)的个数几乎不受。
8. 报文采用短帧结构,传输时间短,受干扰概率低,保证了数据出错率极低。
8. CAN 的每帧信息都有CRC校验及其检错措施,具有极好地检错效果。
9. CAN的通信介质可为双绞线、同轴电缆或光线,选择灵活。 10. CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其它节点的操作不受影响。
13
11. CAN总线具有较高的性能价格比。它结构简单,器件容易购置,每个节点的价格较低,而且开发技术容易掌握,能充分利用现有的单片机开发工具。
CAN协议也是建立在国际标准组织的开放系统互联模型基础上的。不过,其模型结构只有3层,即只取OSI底层的物理层、数据链路层和应用层。由于CAN总线数据结构简单,又是范围较小的局域网,因此不需要其它中间层,应用层数据直接取自数据链路层或直接向链路层写数据。结构层次少,有利于系统中实时控制信号的传送。
14
第三章 软件VC6.0
3.1 VC6.0简介
Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。
虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台。
Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。
Visual C++它大概可以分成三个主要的部分:
1. Developer Studio,这是一个集成开发环境,我们日常工作的99%都是在它上面完成的。虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能。
2. MFC。从理论上来讲,MFC也不是专用于Visual C++,Borland C++,C++Builder和Symantec C++同样可以处理MFC。同时,用Visual C++编写代码也并不意味着一定要用MFC,只要愿意,用Visual C++来编写SDK程序,或者使用STL,ATL,一样没有。不过,Visual C++本来就是为MFC打造的,Visual C++中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C++而不用MFC就等于抛弃了Visual C++中很大的一部分功能。但是,Visual C++也不等于MFC。
3. Platform SDK。这才是Visual C++和整个Visual Studio的精华和灵
15
魂。大致说来,Platform SDK是以Microsoft C/C++编译器为核心,配合MASM,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。
3.2 VC6.0的程序设计
面向对象程序设计既吸取了结构化程序设计的一切优点,又考虑了现实世界与面向对象空间的映射关系,它所追求的目标是将现实世界的求解尽可能简单化。
面向对象程序设计将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理,它采用了数据抽象和信息隐藏技术。它将对象及对对象的操作抽象成一种新的数据类型—类,并且考虑不同对象之间的联系和对象所在类的可重用性。
面向对象程序设计优于传统的结构化程序设计,其优越性表现在,它有希望解决软件工程的两个主要的问题—软件复杂性控制和软件生产率的提高,此外它还符合人类的思维习惯,能够自然的表现现实世界的实体和问题,它对软件开发过程具有重要的意义。
面向对象程序设计能支持的软件开发策略有:编写可重用代码;编写可维护代码;共享代码;精简已有代码。面向对象方法,尤其是它的可继承性,是一种重用的有效途径。开发者在设计软件时可以利用一些已经精心设计好并且经过测试的代码,这些可重用的代码以类的形式被组织存放在程序设计环境的类库中。
在面向对象程序设计中可以用下面的式子表示程序: 程序=对象+对象+„+对象
对象=算法+数据结构+程序设计语言+语言环境
16
数据结构 算法 算法 选择结构 程序=算法+数据结构 顺序结构 „ 算法 1 算法 2 „ 算法n „ 描述问题 循环结构 解决问题 图3.1 结构化程序设计中程序的结构
对象1 程序=对象+对象+„ 顺序结构 „ 对象2 算法 选择结构 循环结构 „ 算法 1 算法 2 „ 数据1 数据2 描述问题 解决问题 图3.2 面向对象程序设计中程序的结构
3.3 VC6.0的特色与缺点[18]
3.3.1. 特色
Visual C++6.0由Microsoft开发,它不仅是一个C++ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器
17
以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境,是一个功能强大的可视化软件开发工具。
Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。
3.3.2. 缺点
由于C++是由C语言发展起来的,也支持C语言的编译。6.0版本是使用最多的版本,很经典。最大的缺点是对于模版的支持比较差。现在最新补丁为SP6,推荐安装,否则易出现编译时假死状态。仅支持Windows操作系统。目前发现与windows 7兼容性不好,安装成功后可能会出现无法打开cpp文件的现象。
18
第四章 总体设计方案
4.1 总体设计方案
图4.1 整个系统设计图
图4.1是一个完整的CAN总线和以太网数据交换的系统图。该系统中网关的作用是实现了计算机系统和现场仪表、设备之间的互连,实现了以太网与CAN总线之间数据协议格式的相互转换,从而达到CAN总线和以太息的共享这一目的。
以太息管理网络向现场测控设备发送控制指令时,网关将数据由TCP/IP协议格式转换为CAN总线协议形式,然后发送至以现场测控设备,完成信息管理层对现场设备层的控制。同时,由于以太网的大范围互连,因此该系统还支持互联网络远程访问。
当现场测控网络上有数据传输到信息管理层时,网关将数据由CAN总线协议形式转换为TCP/IP协议格式,然后发送至以太网上的监控计算机。
19
4.2 CAN协议栈的设计
封装 发送 滤波 CRC校验 接收 把需要发送的数据写入文件内部,然后一个字符一个字符的发送,给每一个字符分别附上帧起始位、仲裁域位、控制域位、数据自动生成的ASCII码、CRC位、应答域位和帧结尾位,进而实现数据的发送。当接收器接收时,首先进行滤波,看是否为本节点的数据,然后进行CRC校验看数据在传输过程中是否出错,如果正确,则接收。具体实现过程在下一章中作详细介绍。
20
第五章 CAN总线协议栈研发
本论文主要介绍CAN总线协议栈的设计方案,具体流程图如下所示:
数据封装
发送
不是 滤波 是 不对
对 CRC校验 不接收
重发 接收 图5.1 系统流程图
5.1 数据封装
数据的封装按报文的数据帧结构进行赋值,用二进制代码表示。总线上的数值由两个互补的逻辑值表示,即“显性位”和“隐性位”。显性电平代表逻辑0,隐性电平代表逻辑1。
帧的如下结构:帧起始、仲裁域、控制域、数据域以及CRC序列,均通过位填充的方式编码。无论何时,发送器只要检测到位流里面有5个连续相同值的位,便自动在位流里插入一个相反值的补充位。数据帧或远程帧的其余位域(CRC界定符、应答域和帧结尾)格式固定,没有填充。
21
程序入口 开辟strn数组 写入strn起始帧 写入strn标识符 写入strn控制域 字符串转化为二进制,数据域写入strn CRC序列计算并写入strn 写入strn应答域 写入strn帧结尾 结束 图5.2 数据封装流程图
错误帧和过载帧的格式也固定,它们不用位填充的方法编码。报文的位流根据“不归零”方法来编码。这就是说,在整个位时间里,位的电平或者为显性,或者为隐性。
5.2 数据发送
本论文数据发送的基本过程如下所述:首先将要发送的数据写入文件里面,然后对要发送的数据一个字符一个字符的进行封装,包括提取字符的ASCII码值,然后转化为二进制数、生成CRC码和将数据帧结构的七部
22
分进行连接[18.19]。最后将每个字符打包好的格式进行连接,中间用*隔开。其具体流程图如5.3所示。
否 是
结束 发送 判断字符串是否 封装结束 将strn接入strnn 对字符串逐个字符封装 输入字符串 开始 图5.3 数据发送流程图
5.3 滤波
CAN总线网络的通信报文中,涉及标识符的只有数据帧和远程帧。数据帧和远程帧分别由不同的位场组成,其中都有仲裁场。仲裁场的主要成分是报文标识符。CAN 2.0B规范定义了两种帧格式,即标准帧和扩展帧。标准帧使用11位的标识符,扩展帧使用29位的标识符。
其使用l1位的标识符被划分为2个段来使用:高4位用于功能码,低7位用于节点号。功能码映射于通信对象,决定了对象的优先级,其数值越
23
小优先级越高。反之,数值越大优先级越小。节点号用于实现数据的正确接收,当在总线上传输的数据的标识符的低七位等于该设备的节点号时则接收,当不相等时则不接收。
扩展格式中29位的标识符被分为两部分,11位基本ID、18位扩展ID。基本ID相当于标准标识符格式,它定义了扩展帧的基本优先权。每一个节点都有自己唯一的节点号,在接收数据时提取仲裁域中后七位标识符和节点号。当提取的节点号等于本节点的节点号时,接收;不相等时,不接收。
5.4 CRC校验
一、CRC的工作原理
在发送端,将要发送的数据比特序列当做一个多项式f(x)的系数,用接收端预先约定的生成多项式G(x)去除经过处理的该多项式,求得一个系数多项式R(x),将余数多项式的系数序列加到数据多项式的系数序列之后一起发送到接收端。在接收端,同样用生成多项式G(x)去除接收到的数据多项式f´(x),得到计算余数多项式,如果计算余数多项式与接收余数多项式相同,那么f´(x)将被G(x)除尽,则表示传输无差错;否则,由发送方重新发送数据。
二、CRC检错特点
CRC能检测出全部单个错;CRC能检测出全部离散的两位错;CRC能检测出全部奇数个错;CRC能检测出全度小于或等于k位的突发错。
三、模2除法
CRC码的生成所用到的算法为模2除法。模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:
1. 用除数对被除数最高几位做模2减,没有借位。
2. 除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若
24
余数最高位为0,商为0,除数继续右移一位。
3. 一直做到余数的位数小于除数时,该余数就是最终余数。
5.5 数据接收
当接收数据时,首先,把*号之间的每一个字符的打包形式提取出来,然后,检测一下标识符是否为本节点的数据,如果不是,则不接收;如果是,则进行CRC校验,看余数是否为0,如果为0,则提取数据域中的内容转化为字符进行输出;如果不为0,则说明数据在发送过程中出错,要求服务器重新发送数据。
开始 接收 数据截取 滤波 是否是本机应 否 接收数据 是
CRC校验
否 余数是否为 0 是
提取数据 重发
转化成字符输出
不接收 图5.4 数据接收流程图
25
结束 第六章 系统测试
以发送的数据为\"oil-press 232\"为例,进行系统测试,测试界面如下:
6.1发送界面
首先输入文件名,然后输入要输入的字符串,检测一下字符串的长度,最后一个字符一个字符的封装。图6.1为发送界面的起始部分和‘o’、‘i’的封装形式。
图6.1 发送界面(1)
26
图6.2 发送界面(2)
图6.2发送界面为字符‘l’、‘-’和‘p’的封装形式。
图6.3 发送界面(3)
27
图6.3发送界面为字符‘r’、‘e’和‘s’的封装形式。
图6.4 发送界面(4)
图6.4发送界面为字符‘s’、‘ ’(空格)和‘2’的封装形式。
图6.5 发送界面(5)
28
图6.5发送界面为字符‘3’和‘2’的封装形式及字符串打包好的数据strnn,每个字符中间用*隔开。最后发送的数据为strnn。
6.2接收界面
图6.6 接收界面
图6.6接收界面首先显示的是服务器的IP地址,然后是strnn,最后提取每个字符的数据域内容,并将其转化为字符的形式。 最后显示接收到的字符为‘oil-press 232’。
6.3分析
在发送数据前先定义文件名,然后输入要发送的数据,按Enter键后就封装每一个字符,最后合并这些字符,用*隔开。接收时,先显示服务器的IP地址,然后接收到封装的数据,然后一个个提取*号之间每一个字符数据域的值,将其转化为字符的形式。最后显示“接收到的字符为”。使读者一目了然。
29
第七章 总结与展望
本文针对由CAN总线构成的局域网和以太网之间的信息不能共享这一问题,从现实需求出发,明确设计要求,设计解决方案,实现了两大网络之间的信息交流。
7.1 总结
基于CAN总线局域网与以太网互连系统的设计能实现两大网络之间的信息交流。对各种数据进行处理,处理来自CAN节点的CAN数据流,并进行格式转换,使之成为可以在以太网中传播的数据帧;对来自以太网的数据帧进行判断,并转换成CAN数据送达响应的CAN节点,这样就能把CAN总线上数据和以太网上数据相互传输,从而实现远程数据管理和监控。课题完成的主要任务:CAN总线上的数据封装、发送、滤波、CRC校验和接收。
通过对本课题的研究,深入掌握了CAN总线的特性,掌握了整个协议的工作流程,同时编制了相应协议的实现方法。但同时存在一些不足:CAN网络结构。在第二章对CAN网络的结构和CAN数据传输的原理进行过讨论。但由于条件的,CAN节点数目有限,所以CAN网络在不同结构的传输可靠性没有进行相关验证。
7.2 展望
通过本次设计,虽然取得了一些收获,但是,在实验室调试阶段,CAN传输距离也比较近,因此,对CAN数据传输在长距离甚至达到传输距离极限时的传输性能缺乏验证。网络的安全问题没有采取必要的措施,这也将是今后控制网络与信息网络集成所迫切需要解决的问题。
现场总线是应工业自动化而产生并迅速发展的,但由于各种总线之间协议不一,不同的自动化产品的互操作性有待加强。而以太网由于成本低、
30
通信速度快以及开放性和兼容性,其应用越来越广泛,己经渗透到工业控制领域中而成为现场总线的一个重要发展趋势。但以太网不适用于易燃易爆以及环境条件恶劣、可靠性要求很高的应用场合。现场总线己有它的市场定位,工业以太网不可能完全替代现场总线,最有可能的是发展一种混合式控制系统。对工业以太网的广大用户更实际的好处在于如何利用现有网络为人们提供服务的功能。因此,现阶段最有效的方法是如何将工业以太网和现有的现场总线完善地结合起来,建立起完整的工业自动化网络体系,从而实现底层生产与上层管理的紧密集成。这已成为企业信息化发展的趋势。
31
参考文献
[1] 刘曙光.现场总线的进程与展望[J].自动化与仪表,2010年第3期第15卷.
[2] 张广辉.现场总线[J].重庆电力高等专科学校学报,1998年12月.
[3] 汪仁煌.工业控制网络结构的发展趋势[J].工业仪表与自动化装置,2012年第5期.
[4] 胡俊.组建实时可靠安全的工业以太网仁[J].工业控制计算机,2013第16卷第10期.
[5] 李嘉.引入以太网技术是现场总线技术发展的一个必然趋势[J].自动化仪表,第22卷第5期.
[6] 冯冬芹.工业以太网关键技术初探[J].信息与控制.2003年6月.
[7] 杨宇祥.基于CAN总线的电力远程监测系统研究[D].湖南:湖南大学,2009.
[8] 王博,蒋云峰,刘杰.基于CAN总线的网络监控系统[J].微计算机信息(测控自动化),2014.
[9]陈粤.以现场总线为底层的企业测控网络系统[D].天津:天津工业大学,2011.
[10] 基于CAN-bus和以太网的区域信息管理系统[EB/OL].广州周立功单片机发展有限公司,www.zlgmcu.com.
[11] Charles E.Spurgeon著, 译,以太网技术入门与实现[M],北京:机械工业出版社,2008.8
[12] Ramadas Shanmugam等著,李剑 译.TCP/IP详解(第2版)[M],北京:电子工业出版社,2013.8
[13] DOUGLASE著,林瑶 译,用TCP/IP进行网际互连(第一卷)[M],北京:电子工业出版社,1998.4
32
[14] 李正军.现场总线及其应用技术[M].北京:机械工业出版社,2005. [15] 饶运涛.现场总线CAN原理与应用技术.2007年8月第2版.北京航空航天大学出版社
[16] 来清明.手把手教你学CAN总线.2010年9月.北京航空航天大学出版社.
[17] 温秀梅.Visual C++面向对象程序设计教程与实验.2009年4月第二版.清华大学出版社.
[18] PHILIPS Semiconductors. SJA1000 Stand-alone CAN controller.2009.8 [19] Jesse Liberty,Bradley Jones:Sams Teach Yourself C++ in 21 Days,Fifth Edition.2005.
33
致 谢
本研究及学位论文是在我的指导教师的亲切关怀和悉心指导下完成的。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,老师都始终给予我细心的指导和不懈的支持。一个学期以来,老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向老师致以诚挚的谢意和崇高的敬意。
同时也由衷感谢学校其他各位老师的耐心指导和悉心帮助,使我的论文研究工作能够顺利完成。感谢和我和睦相处一个学期的同学,他们都给我了很大的支持和帮助,我也在他们身上学到了很多东西。
最后,向审阅论文的老师们致以我最真诚的谢意!
34
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务