CAN总线温度控制节点设计.doc_第1页
CAN总线温度控制节点设计.doc_第2页
CAN总线温度控制节点设计.doc_第3页
CAN总线温度控制节点设计.doc_第4页
CAN总线温度控制节点设计.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

本科生毕业设计(论文) can总线温度控制节点设计 -软件驱动模块设计 can bus temperature control node design -the design of software module 教学单位 电气信息工程学院 姓 名 俞洋波 学 号 201031006085 年 级 2010级 专 业 自动化 指导老师 彭安金 职 称 教 授 2013年3月1号 目录 第一章 绪论11.1 课题背景11.2 研究意义及其内容21.2.1 研究意义21.2.2 研究内容2第二章 软件驱动模块设计32.1 软件模块设计概述32.2 温度数据采集模块的软件设计42.2.1 ds18b20硬件电路图42.2.2 ds18b20工作时序52.2.3 ds18b20的温度转换82.2.4 数据采集模块的程序流程82.3 键盘功能模块软件设计92.3.1 按键与单片机连接图92.3.2 温度设置独立键盘子程序流程102.3.3 按键的软件消抖措施112.4 液晶显示软件设计122.5 pid算法程序设计172.5.1 pid概述172.5.2 数学模型的建立18第三章 系统软件调试及测试数据243.1 软件模块调试243.2 测试数据24总结与展望26参考文献27致谢28附录:硬件原理图及其实物图29 摘要 can总线温度控制节点是基于51单片机和can控制器设计的节点监控系统,此系统分为一个远程监控节点和一个本地节点,这两个节点之间可以实现双向通信,远程监控节点负责采集水的温度,它通过can总线通信技术把温度数据发送到本地节点,本地节点可以通过键盘设置期望温度值,利用can总线通信技术,将控制信号发送到远程监控节点,然后远程监控节点用pid控制算法对水温进行控制。此系统包括软件和硬件两部分。本论文完成了can总线监控系统中的软件模块设计,包括按键模块、温度采集模块、液晶显示模块以及pid控制算法模块,软件模块为整个系统的实现建立了一个良好的平台。关键词:can总线;温度采集;pid控制算法 abstract the can bus temperature control node is monitoring system based on can bus and 52 single-chip microcomputer,which is one major note and one minor note included. the two notes can realize two-way communication between them,the remote monitoring node is responsible for the collection of water temperature,it can send the temperature data to the local node by the can bus communication technology,and the local note can set the desired temperature by the keyboard, and the local node can send control signals to the remote monitoring node by the can bus communication technology,and then the remote monitoring note can use the pid control algorithm to control the water temperature .the system includes hardware and software,and i completed software module design, including design of two independent keys,the temperature acquisition module,the liquid crystal display module and the pid control algorithm module.the software module make a good platform for the completion of the whole system.keywords:can bus;software design;pid control algorithm 第一章 绪论 1.1 课题背景现场总线是应用在生产最底层的一种总线型拓扑的网络,是用作现场控制系统的、直接与所有受控节点串行相连的通信网络。受控设备和网络所处的环境可能很特殊,对信号的干扰往往是多方面的,这就要求控制必须是实时性很强。在20世纪80年代初,工程人员开始讨论现有的总线系统运用于轿车的可能性。1986年2月在sae大会上,博世公司提出了can,称为“automotive serialcontroller area network”。而今几乎在欧洲诞生的每一辆新轿车都装配有一个或多个can网络系统。can网络系统也应用在了从火车到轮船等其他类型的运输工具上,以及工业控制方面 。仅1999年,就有近六千万个can控制器投入使用,2000年这个数字达到一亿。温度是生活及生产中最基本的物理量,它表征的是物体的冷热程度。自然界中任何物理、化学过程都紧密地与温度相联系。在很多生产过程中,温度的测量和控制都直接和安全生产、提高生产效率、保证产品质量、节约能源等重大技术经济指标相联系。自18世纪工业革命以来,工业过程离不开温度控制。随着微机和电子技术的飞速发展,微机测控技术在温度测量与控制中广泛使用,该控制简单方便,测量精度高,测量范围广。 由于can总线广泛应用于从高速网络到低成本的多线路网络,实现控制系统中的各检测和执行机构之间的数据通信,最重要的是can的发展前景非常好,虽然自can协议颁布迄今已有几十年,但是它仍然在发展完善中,而且由于can具有现场总线所具备的所有特点,开放性、交互性、自治性以及适应性,使得can在温度控制方面具有很可观的应用前景。所以本文设计了一种基于can总线的温度测量和控制装置,能够对水的温度进行测量,并根据温度设定值给出的调节量,驱动控制电路,对水温进行控制。 1.2 研究意义及其内容1.2.1 研究意义 由于can总线具有多主方式工作、非破坏总线仲裁、直接通讯距离远、通信介质灵活、性价比高等特点,它的应用范围现在已不再局限于汽车行业,而已经扩展到了机械工业、农业机械、纺织机械、数控机床、机器人、家用电器等行业领域。can总线已经形成了国际标准,并且被公认为其中最有前途的现场总线之一。对于can总线的开发具有重要的现实意义。 在工业生产过程中温度是重要的控制参数之一,对温度的有效控制对于保证生产质量具有重大的现实意义和理论价值。这就需要一种实时性强、可靠性高和灵活性强的现场总线来进行温度数据传输,而can总线是一种多主方式的串行数控通讯总线,具有实时性、高可靠性和灵活性等优点,现已经广泛应用到汽车工业、航空工业、工业控制、自动控制、智能大厦、电力系统、安全防护等各个自动化控制领域,成为应用最广泛的现场总线之一,用它来进行温度数据传输可以保证温度数据的时效性,可以保证生产质量。1.2.2 研究内容本论文的主要研究内容为: (1)温度数据采集模块的软件设计。(2)按键功能模块软件设计,用软件设计各个按键不同的功能。.(3)液晶显示软件设计。(4)pid控制算法设计。 第二章 软件模块设计2.1 软件模块设计概述 在微机测控系统中,软件与硬件同样重要。硬件是系统的躯体,软件则是灵魂,当系统的硬件电路设计好之后,系统的主要功能还是要靠软件来实现,而且软件的设计在很大程度上决定了测控系统的性能。为了满足系统的要求,编制软件时一般要符合以下基本要求:(1)易理解性、易维护性 要达到易理解和易维护等指标在软件的设计方法中,结构化设计是最好的一种设计方法,这种设计方法是由整体到局部,然后再由局部到细节,先考虑整个系统所要实现的功能,确定整体目标,然后把这个目标分成一个个的任务,任务中可以分成若干个子任务,这样逐层细分,逐个实现;(2)实时性 实时性是电子测量系统的普遍要求即要求系统及时响应外部事件的发生,并及时给出处理结果。近年来,由于硬件的集成度与运算速度的提高,配合相应的软件,实时性比较容易满足设计要求;(3)准确性 准确性 准确性对整个系统具有重要意义,尤其是测量系统,系统要进行一定量的运算,算法的正确性和准确性对结果有着直接的影响,因此在算法的选择、计算的精度等方面都要符合设计的要求;(4)可靠性可靠性是系统软件最重要的指标之一,作为能够稳定运行的系统,抗干扰技术的应用是必不可少的,最起码的要求是在软件受到干扰出现异常时,系统还能恢复正常工作。 只有符合以上要求,才能编出符合系统运行最优的软件。本系统软件设计采用模块化的思想,编程可以大致分为器件驱动编写部分和控制部分。其中驱动部分主要提供器件的软件操作接口;而控制部分则是基于器件的软件接口进行控制数据交互传输,并基于这些数据进行人机交互的控制设计。软件设计接口如图2-1所示。整个系统的基本思想是根据人机交互功能,设计出各个器件的软件接口。然后主程序完成交互功能,程序的前进方向是人为控制的。远程监控主程序本地监控主程序液晶显示远程监控节点液晶显示本地节点继电器温度采集模块can通讯can通讯 键盘键盘 图2-1 软件设计接口图 下面着重介绍本论文所负责模块的子程序流程以及相关代码。 2.2 温度数据采集模块的软件设计 温度数据采集主要通过ds18b20温度传感器来进行。ds18b20采用单总线技术,即可传输时钟,又可传输数据,而且数据传输是双向的,因为这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线拓展和维护等优点。数据采集模块的任务是负责温度信号的采集以及将采集到的温度模拟量信号转化为相应的数字量信号提供给单片机。单片机再对其进行相应的数据处理。因为数字温度传感器ds18b20能将外界的温度直接转换成数字信号,直接送入单片机处理就行了,就不用在经过a/d转化器将其转化成数字信号,这样就方便了很多,而且抗干扰能力强,软件程序也简化了很多。2.2.1 ds18b20硬件电路图 ds18b20硬件电路图如图2.2所示 图2-2 ds18b20硬件电路图ds18b20引脚定义如下表2-1所示 表2-1 引脚定义 引 脚 定 义 gnd 电源负极 dq 信号输入输出 vdd 电源正极 nc 空 2.2.2 ds18b20工作时序 单片机使用时间隙来读写ds18b20的数据位和写命令字的位。 (1)初始化 1.先将数据线置高电平。 2.延时(该时间要求不是很严格,但是要尽可能短一些)。 3.数据线拉到低电平。 4.延时750us(该时间范围可以在480960us之间)。 5.数据线拉倒高电平。 6.延时等待。如果初始化成功可在1560ms内产生一个由ds18b20返回的低电平0。但是应注意,不能无限的等待,不然会使程序进入死循环,所以要进行超时判断。 7.若cpu读到数据线上的低电平后,还要进行延时,其延时的时间从发出高电平算起(第5步的时间算起)最少要480us。 8.将数据线再次拉到高电平后结束。 初始化时序图见图2-3 图2-3 初始化时序图 程序如下: void ds1820rst() unsigned char x=0; dq = 1; /dq复位 delay_18b20(4); /延时 dq = 0; /dq拉低 delay_18b20(100); /精确延时大于480us dq = 1; /拉高 delay_18b20(40); (2)ds18b20写数据 对于ds18b20的读时序分为读0时序和读1时序两个过程。 1.先将数据线置低电平0。 2.延时确定的时间为15us。 3.按从低位到高位的顺序发送数据(一次只发送一位)。 4.延时时间为45us。 5.将数据线拉到高电平1。 6.重复15步骤,直到发送完整个字节。 7.最后将数据线拉到高电平1。 ds18b20写数据时序图见图2-4 图2-4 写数据时序图 程序如下: void ds1820wr(unchar wdata) /写数据 unsigned char i=0; for (i=8; i0; i-) dq = 0; /拉低单总线dq dq = wdata&0x01; /从低位到高位的顺序发送数据(每次一位) delay_18b20(10); /延时一段时间 dq = 1; /释放单总线 wdata=1; /右移一位,传下一位数据 (3)ds18b20读数据 对于ds18b20的写时序分为写0时序和写1时序两个过程。 1.将数据线拉高到1。 2.延时2us。 3.将数据线拉低到0。 4.延时6us。 5.将数据线拉高到1。 6.延时4us。 7.读数据线的状态得到一个状态位,并进行数据处理。 8.延时30us。 9.重复17步骤,直到读取完一个字节。 ds18b20读数据时序图见图2-5 图2-5 读数据时序图 程序如下: unchar ds1820rd() unsigned char r=0; unsigned char dat = 0; for (r=8;r0;r-) dq = 0; /给脉冲信号 dat=1; dq = 1; /给脉冲信号 if(dq) dat|=0x80; delay_18b20(10); return(dat); 2.2.3 ds18b20的温度转换 温度传感器是ds18b20的核心部分,该功能部件可以完成对温度的测量,通过软件编程可将-55+125范围内的温度值按9位、10位、11位、12位的转换精度进行量化,以上的转换精度都包括一个符号位,因此对应的温度量化值分别是0.5、0.25、0.125、0.0625,即最高转换精度为0.0625。芯片出厂时默认为16位的转换精度。当接收到温度转换命令(命令代码44h)后开始转换,转换完成后的温度以16位带符号拓展的二进制补码形式表示,存储在高速缓存器ram的第0、1字节中,二进制数的前5位是符号位。 如果测得的温度大于0,这5位为0,只要将测得的数值乘上0.0625,既可以得到实际温度,如果温度小于0,这5位为1,测得的数值需要取反加1,再乘上0.0625即可得到实际温度。 程序如下: readandtrans_temp() /读取温度值、转换及其计算 unchar a,b; ds1820rst(); /18b20初始化 ds1820wr(0xcc); /写入跳过读18b20内部芯片序列号命令字 ds1820wr(0x44); /写入启动温度转换命令字 ds1820rst(); ds1820wr(0xcc); /写入跳过读序列号命令字 ds1820wr(0xbe); /写入读取温度数据命令字 a=ds1820rd(); /读取低八位 b=ds1820rd(); /读取高八位 tvalue=b; /高八位左移 tvaluesetpoint*10 - nextpoint; / 偏差,设定值减去当前采样值derror = error-pp-lasterror; / 当前微分,偏差相减pp-preverror = pp-lasterror; / 保存pp-lasterror = error;return (pp-proportion * error / 比例项- pp-derivative * derror); / 微分项 通过温度的pid 运算,产生结果fout,该参数决定是否加热,加热时间是多长。以下程序只是对设置温度为2030时的控制过程:void active()float temp=tvalue;fout = pidcalc ( &stpid,temp); /pid 计算if(time1*1020*stpid.proportion) /温度低于设定值2摄氏度 jj=0; /继电器闭合加热 else /温度在低于设定值2摄氏度范围内 switch(time1/10) case 2: if(time1%10=5) jj=0; /继电器闭合delay(40); /初始化定时器,开始定时加热jj=1; /继电器断开delay(250);break; else jj=0;delay(40); /初始化定时器,开始定时加热jj=1;delay(250);break; 第三章 软件模块调试及测试数据3.1 软件模块调试对于一个控制系统来说,软件调试是一个很重要的步骤,通过软件调试不仅可以检测软件设计上(如c语言语法、格式、标点等)的错误,最重要的是还可以检测出遗留的硬件故障,方便我们进一步解决系统问题,所以本质上来说,软件调试其实是软硬件综合调试。调试方案:我们采取分模块调试的方式进行软件调试,包括温度采集模块、液晶显示模块、键盘功能模块等,保证每个功能模块正常工作,为系统整体功能的实现奠定了基础。调试中最困难的无疑是pid调节,在pid参数设置的时候,经过不断的尝试,我们终于尝试出了较理想的参数值,我们最终选择把积分项设为0,增大了微分项的值,这样可以使系统的稳定性提高,还可以有效抑制超调量并加快响应速度。在调试中遇到的问题如下: (1)在程序

温馨提示

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

评论

0/150

提交评论