CAN总线IO扩展器设计毕业论文
2021-04-14 23:28:26
摘 要
在现实生活中,特别是在各种电气设备中,基于can总线技术的数控系统是很常见的,而各种不同的数控系统的要求是有很大差别的,但是CANopen的技术参数和硬件电路一般都是固定的,当现有设备与自己的需求不相符合时,重新设计开发新的设备是非常不划算的,这时,can总线的扩展模块就有了用武之地。Can总线扩展模块的出现对于推动can总线技术在国内的发展和研究及can总线技术的应用具有重要的指导意义。本文通过对一个数控系统CAN总线的通信数据的分析,制作1款数控主机的扩展模块,使之具备16个数字量输入 8个数字量输出。
论文主要研究了一个数控系统CAN总线的通信数据,进而制作can总线的扩展模块,用来满足数控系统对输入输出数据的位数要求,使得数控系统输入输出更加方便快捷。本设计拟采用stm-32微处理器为主,设计can总线io扩展器。stm-32微处理器是以ARM Cortex-M3为内核的32位微处理器,主频可高达72MHz,内置flash和SRAM,其1容量可高达512kb和64kb,内部集成双bxCAN控制器,支持CAN协议V2.0A和V2.0B。[1]因此以stm-32微处理器作为主控制器。硬件设计主要包括输入模块,输出模块,电源模块,can通讯接口模块以及cpu。并且结合了硬件电路设计了相应的软件,实现了设计的要求。
关键词:can总线技术;stm-32微处理器;主控制器
Abstract
In this paper, through the analysis of the communication data of a CAN bus in a CNC system, the expansion module of 1 numerical control hosts is made, so that 16 digital quantities are input to 8 digital output. The results have important guiding significance for promoting the development and research of CAN Bus Technology in China and the application of CAN bus technology.
This paper mainly studies the communication data of a numerical control system CAN bus, and then makes the extension module of the CAN bus, which makes the input and output of the CNC system standardized and complete. This design uses stm-32 microprocessor as the main design of CAN bus IO expander. The stm-32 microprocessor is a 32 bit microprocessor with the kernel of ARM Cortex-M3. The main frequency can be as high as 72MHz, built-in flash and SRAM. Its 1 capacity can be as high as 512KB and 64KB. The internal integration of dual bxCAN controller supports CAN V2.0A and V2.0B. Therefore, the microprocessor is used as the main controller. The hardware design mainly includes input module, output module, power module, can communication interface module and CPU. The corresponding software is designed by combining the hardware circuit, and the design requirements are realized.
Key Words: can bus technology; stm-32 microprocessor; main controller
目 录
第1章 绪论 1
1.1研究的背景及意义 1
1.2 CAN总线技术介绍 2
1.3 CAN总线的基本概念及优势 3
1.3.1 CAN总线的基本概念 4
1.3.2CAN总线的优势 4
1.4 CAN总线通信 5
1.4.1通信协议 6
1.4.2报文格式 7
第2章 CAN总线IO扩展器的设计方案 8
2.1 IO扩展器的整体设计方案 8
2.2 IO扩展器硬件设计及原理 9
2.3 CAN总线IO扩展器通信代码设计方案及原理 11
第3章 CAN总线IO扩展器硬件设计 13
3.1 IO扩展器输入输出模块 14
3.2 IO扩展器电源模块 16
3.3 IO扩展器主控模块 18
第4章 CAN总线IO扩展器通信代码设计 19
4.1初始化陈序 19
4.2中断程序 20
4.3发送信息 20
4.4接收信息 21
总结与展望 22
参考文献 24
致 谢 25
第1章 绪 论
1.1研究的背景及意义
时至今日,汽车已不再是富裕的代名词和奢侈品,它逐渐走入千家万户,成为日常生活中的常见品,成为大多数人代步最佳选择。随着汽车的普及,越来越多的人不在满足汽车仅仅是交通工具,而是希望汽车有更多的功能,比如:提高汽车的安全度;使汽车更加舒适舒;驾驶更加简单,使用更加便捷;油耗更低,危害更小。而要满足这些要求,在汽车设计制造过程中使用电子控制技术和微处理器即CAN总线技术是相当不错的选择,因此,can总线技术已经成为汽车未来发展进步的一种不可或缺的技术。
时代在发展,科学在进步,而且以往复杂的现场总线技术已经越来越不受欢迎,人们迫切的期望诞生更加简单,方便的现场总线技术。因此,can总线技术应运而生。最开始的时候,CAN总线技术仅用于汽车行业,但是现在已经扩大到各个领域,像工业自动化,航空航天技术,医疗设备等。[2]
到目前为止,can总线技术已经发展到相当高的水准,以CAN总线技术为基础发展起来的各种技术在各个行业中都得到了广泛应用,特别是工业领域方面的应用更是不容小视,其发展前景也极为可观,因此,can总线技术的发展和进步是可以预见的,这必将成为未来工业领域发展的一个重要趋势。
尽管CAN总线技术最初被开发出来是为了解决汽车行业的相关问题,但是,时至今日,随着can总线技术的发展和进步,它已经开始广泛应用于各种工业领域,,因此对CAN总线技术及其相关技术特别是CAN总线的扩展器技术做进一步研究应用是未来发展的一种趋势。
CAN总线技术面世至今已有30余年,通过这30年来的研究和应用,CAN总线技术已经被世界上的大多数工程师认可,而它所具有的各种优势,例如:可靠度高,实时性强,可以灵活运用在各个方面等使得can总线备受青睐。但是,就实际应用而言,CAN总线技术的发展并不是那么的令人满意,有相当一部分行业或者说企业地区仍然在使用那些复杂难懂的现场总线技术,因此,对CAN总线及其相关扩展技术做进一的研究是非常有必要的。本文基于CAN总线系统的技术,进行了CAN总线技术的扩展器设计。即通过对一个数控系统CAN总线的通信数据的分析,制作一款数控主机的扩展模块,使之具备16个数字量输入 8个数字量输出。
1.2 CAN总线技术介绍
CAN(Controller Area Network)总线技术,支持分布式控制以及串行通信方式,[3]它不需要系统特意花费资源,就可以完成单节点传输到单节点,单节点传输到任一节点等多种方式的信息交换和信息传输,减轻了系统运行时不必要的负担。CAN总线技术最开始是由博世公司开发的,主要是应对在汽车制造行业中多总线,多系统相互通信的问题,为了满足消费者对汽车各个方面像舒适度、无公害、方便、安全、成本低的要求,工程师们设计出了各种各样的电子控制系统,像汽车防抱死系统,安全气囊装置,汽车燃油喷射装置等等。尽管这些系统内部之间的通信毫无问题,但是,汽车是一个整体,只有汽车内的各个系统相互配合,团结合作才可以使汽车安全有序的运行,这就涉及到了汽车内各个部分之间的配合通信,但是,汽车内每个部分的通信方式不尽相同,数据类型并不统一,并且他们相互之间也无法适应且这些控制系统对各个方面的要求也不相同,这使得汽车内的各个系统并不能进行有效的通信,即使系统之间可以相互交流信息,效率也极低。而且,相当数量系统是由多条总线构成的,这使得线束的数量变得极为庞大,这些线束不仅挤占了汽车本就不大的空间,还增加了汽车系统的复杂性,使得汽车的制造,修理变得极为困难。为了解决线束增加带来的问题,减少线数的数量并且可以让不同控制系统通过不同网络,完成数据的快速传输和交换”的问题,德国电气商博世公司在1986 年开发出了用于汽车的CAN 通信协议。经过长时间的发展,CAN总线技术因其可靠的性能及其优越性得到了大多数工程师的喜爱并 通过ISO11519 和 ISO11898进行了标准化,[1]因而,CAN总线技术不仅成为大多数汽车网络的标准协议,而且也成为工业领域新的标准协议之一。
CAN 总线技术以其特有的优势而被广泛认同,并被应用于工业控制、传感器、船舶、航空航天技术等方面。CAN现场总线技术已经成为工业领域未来发展的重中之重,被誉为工业控制领域的局域网,是自动化领域最强大的技术之一。它的出现为分布式控制系统完成各节点之间的信息交换和传输提供了强有力的技术支持。[4]
1.3 CAN总线的基本概念及优势
1.3.1 CAN总线的基本概念
(1) 标识符 :标识符是仲裁场的一部分,其主要作用是用来区分接收节点和其他节点,节点发送的所有报文的数据帧中都必须含有标识符,标识符中不包含接受节点的地址,它包含的是数据帧本身的一些信息。
(2)优先权:can总线系统中经常会遇到多个节点同时发送报文的情况,那么,哪一个节点先发送报文呢?这就需要确定优先级, 节点的优先级是通过仲裁场中的标识符来决定的。标识符位数越小,其优先权越高。
(3)远程数据请求 :当某一节点需要一些特定的信息时它可以发送远程帧,这样,系统内的其他节点接收到这一信息之后就会把这一节点需要的信息发送出来。发送节点传输的数据帧和这一节点的远程帧的标识符相同。
(4)位仲裁 :总线空闲的时候,系统内的节点都可以向总线请求发送报文。但是经常会碰到两个或两个以上的节点同时向总线请求发送报文,而总线不可能同时发送两个节点的报文,这时,就涉及到哪一个节点优先发送报文的问题。我们可以通过标识符的逐位仲裁解决这个问题。仲裁的设定能够保证总线的效率,避免时间或报文的损失。如果两个节点同时发送信息,但是,一个发送的是数据帧,另一个发送是远程帧,且它们的标识符相同时,数据帧的优先权高于远程帧即远程帧先发送。在仲裁期间,发送节点的逻辑电平会与总线的逻辑电平进行比较,当两者的逻辑电平相同时,那么,这一节点可以继续发送报文,否则,该节点不能发送报文,必须退出发送状态。
(5)总线状态: can总线有两个状态,空闲状态或非空闲状态,只有当can总线处于空闲状态时,节点才可以发送信息。
(6)错误检测:当CAN总线上的节点出现错误时会被系统检测出来,并且系统可以判断错误能否被修复。出现错误的节点会被关闭。
(7)报文:尽管报文的长度有限,但是can总线节点发送的数据还是以不同报文格式发送的。
(8)同时性:系统内的某一节点发送的信息可以被任一节点接收或者所有节点都不接收,这主要是为了实现同步以及防止出现错误。
1.3.2 CAN总线的优势
尽管人们开发出来了不少的总线技术,但是can总线技术仍以其特有的优势被广
泛应用,下面我来介绍can的优点。
1). 拥有完善的检错机制,可以分辨暂时错误和永久性错误,能够最大限度的利用系统的资源。
2). 当can总线系统中的节点发出的信息被破坏时,发送节点可以自行重新发送信息,以确保接受节点收到信息。
3). 如果节点出现的故障极其严重,就会自动退出总线。
4). 节点发送的报文中所蕴含的信息中不包扩源地址或目标地址在内,但是有标识符用来确定优先级和相关的功能
5).can总线使用的是串行通信的方式,其本身检查错误的能力较强,并且抗干扰能力也强。
6).can总线含有未知个节点,也就是说,如果有需要,can总线可以含有无穷多个节点,并且can总线采用分布式控制的方法,具有位仲裁和优先权的功能。
7). 实时性极强,并且传输距离相当远,成本较低。
1.4 can通信
1.4.1通信协议
CAN通信协议一般分为两层即物理层和数据链路层,数据链路层又可以分为逻辑链路控制层LLC和媒体访问控制层MAC,[2]最开始的can通信协议没有对物理层做一个明确的定义,但是can通信协议标准化以后得到的ISO标准却对物理层有了定义。can总线的物理层是由AN总线通信接口集成的,它将ECU和总线联系起来,其功能是对报文进行处理包括单不限于报文滤波 。数据链路层的功能是为节点发送的报文的传输提供相应的服务,并且分辨由那一LLC子层接收数据;完成过滤;恢复管理和过载通知;将数据进行打包处理,对故障进行检查,回复以及处理;还有媒体访问的控制等等 。总之数据链路层的一切功能都是基于信息的传输过程来进行的,像总线上发送报文的时间以及接受报文的时间等都是在这一层确定,因此,其修改受到限制。
can通信协议规定总线中的数据帧的标识符有两种分别为11位,29位。并且标识符的前7位不可以都是0位,以数据帧进行编码可以使can总线的节点接收到相同的数据,且其数据长不超过8个字节,能满足大部分的控制命令,测试和工作的要求,因此数据帧占用总线的通信时间不会很长,这就是can总线通信的实时性的保证。