ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:1.99MB ,
资源ID:16962686      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16962686.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于modbus的单片机课程设计+Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于modbus的单片机课程设计+Word文档下载推荐.docx

1、写多个线圈303读寄存器量程上限010000(读/写)量程下限05000(读/写)报警上限010000(读/写)报警下限05000(读/写)测量值0.010000.0(只读)606写单个寄存器1610写多个寄存器表1.1用ASCII模式完成以上功能是本设计的基本要求,功能实现,程序规范。二、拓展功能 在以上的基础上实现了RTU通信模式;系统能用LCD显示有关内容;实现了相关参数的修改保存;能够实时测温,并且有报警功能。 独立完成软件设计、软硬件调试和论文撰写,所有变量、函数命名格式为“XXXX_学号”,例如“RangeMax_123”、“RangeMin_123”。论文必需包括需求分析、系统设

2、计、详细设计、运行调试等过程,必须包含设计及运行过程的关键截图。第二节 设计需求在工业上,温度是个很关键的参数,很多设备系统等都需要有一个工作范围,所以对温度的测量及报警,以及通过上位机可以实时去修改这个参数显得尤其重要。那么怎么降低成本同时更好的完成上述功能呢?现场总线给我们指引了一条道路,其中的一个Modbus总线协议就可以帮助我们很好的完成上述功能,而且性能稳定,价格便宜,很适合要求不是十分高的场合。现在很多测量仪表价格很是昂贵,而且线路复杂,功能还不齐全,所以所做的基于Modbus总线协议的温度测量控制系统能很好的解决这些问题,所以应用很广泛,需求也是很大。第二章 系统设计第一节 设计

3、平台STC89C52 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时

4、器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。如图2.1:图 2.1 单片机资源第二节 Modbus协议一、Modbus概述Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给IDA(Interface for Distributed Automation,分布式自动化接口)组织,并成立了Modb

5、us-IDA组织,为Modbus今后的发展奠定了基础。在我国,Modbus已经成为国家标准GB/T19582-2008。据不完全统计:截止到2007年,Modbus的节点安装数量已经超过了1000万个。 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它

6、制定了消息域格局和内容的公共格式。当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。Modbus具有以下几个特点:(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。(2)Modbus可以支持多种电气

7、接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。二、Modbus通信协议控制器通信使用主从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误

8、检测域。从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。第三节 总体设计方案本系统在基于stc单片机平台上,利用其中的RS232,然后根据Modbus总线协议去编写相应的程序完成其功能,另外再利用DS18b2

9、0测量温度,在Modbus上去实现温度报警等功能,然后利用NOKIA5110液晶实时显示线圈的状态、几个寄存器的值、实时温度值。 图2.3为系统的总体方框图。图2.3 系统总体流程图 其中系统一直在死循环判断是否接收到一个完整的帧,通过串口中断接收数据,一旦接收完数据,那么进入程序进行相应的处理并且把数据返回到上位机,同时定时器中断也一直开着,只要到一定时间就去保存寄存器数据、读取并且显示温度,同时本系统会用数码管显示出现在在处理功能几,这样方便判断程序的执行。第三章 模块设计第一节 串口通信模块串行通信是实现单片机与PC 及通信的一种基本方式。在本课题研究中,出于研究的需要,我们采用串口通信

10、实现上位机与下位机之间的通信。同时由于在课题研究中总线上我们只挂载了一个节点,所以只采用RS-232 串行通信。在串行通信的实现中,我采用了串口通信工作在方式一,波特率位9600 的方案。在串行通信过程中必然涉及寄存器以及定时器的配置。TMOD(定时器寄存器)GATE C/T* M1 M0 GATE C/T* M1 M0T1 方式字段T0 方式字段TMOD |= 0X20 即定时器T1 工作在方式2(自动重装的8 位定时器)。SCON(串行口控制寄存器)SM0 SM1 SM2 REN TB8 RB8 TI RISCON = 0X50 即串行口工作方式一(8 位UART,波特率可变)。由于单片机

11、需要对数据帧进行处理,而处理数据帧所需要的时间相对比较长,为了提高单片机的效率,在串行通信时,应该采用中断方式接受数据帧。一般而言,中断函数应该尽可能的简单。所以中断函数只负责接受数据帧,而对于接收上网数据帧的处理则放在主函数里。第二节 数据帧处理模块 数据帧处理是整个系统的核心部分,在现场总线技术中有着至关重要的作用。所以要好好读懂理解Modbus的各个功能对应的帧格式,理解其含义和本质,然后才能找到对应信息去对其相应的处理。根据ModBus 协议,其ASCII 模式数据帧格式如下:开始地址数据纵向冗余检查结束1字符:2字符n字符编码系统: 16 进制,ASCII 字符0-9,A-F起始符位

12、“:”,终止符为0X0D,0X0A;在数据帧处理过程中,首先判断数据帧是否完整,然后判断是不是发给本从机。对完整数据帧进行LRC校验,LRC 校验正确的帧执行下面的处理步骤,否则丢弃该帧,并通知上位机重发数据。帧处理的前提除了LRC 校验正确,还需要确保地址位正确。在前提条件满足的情况下才能提取功能位和数据位。根据功能位确保要执行的功能。并执行相关功能。在具体功能中提取实现功能所需的数据位。然后上位机对发回来的帧进行处理,判断对应的处理是否正确。 图3.2为数据帧处理流程图图 3.2 数据帧处理流程图第三节 参数保存模块在本系统中,为信息安全,我们需要增加参数的保存模块,让掉电后数据能保存起来

13、,下次开机的时候能读出来。保存修改的参数可以使之能够较好的适应各种环境的测量。我们可以设置报警的上下限,测量的上下限。由于需要保存的参数较少,我直接使用片内的EEPROM 来保存修改的参数。EEPROM 可以用于保存一些选哟在应用过程中修改并前掉电不丢失的参数数据ISP/IAP 数据寄存器ISP_DATA:ISP/IAP 操作时的数据寄存器,ISP/IAP 从Flash 读出数据放在此处,向Flash 写的数据也放在此处。ISP/IAP 地址寄存器ISP_ADDRH 和ISP_ADDRL:用于存放EEPROM 要寻址的地址,复位后为0000H。ISP/IAP 命令寄存器ISP_CMD:用于选择

14、EEPROM 的模式。ISP/IAP 命令触发寄存器ISP_TRIG:操作时的命令触发寄存器。在ISPEN(ISP_CONTR.7)=1 时,对ISP_TRIG 先写入46 好,在写入B9h,ISP/IAP 命令才会生效。每次ISP/IAP 操作前。都要对ISP_TRIG 先写入46 好,在写入B9h,ISP/IAP 命令才会生效。ISP/IAP 命令寄存器ISP_CONTR:用于配置ISP/IAP。建议:由于扇区擦除一次是一个扇区,所以同一次修改的数据放在一个扇区,不同次修改的数据放在不同的扇区较好。(每个扇区512 字节)。特别得注意的是在修改扇区内容时,无法覆盖。只有扇区擦除才能把原来的

15、“0”修改为“1”。第四节 液晶显示模块本系统为了方便现场观察数据和调试,加上了液晶显示。这里液晶采用Nokia5110。Nokia5110是一款经典机型,可能由于经典的缘故,旧机器很多,所以很多电子工程师就把旧机器的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示,取代LCD1602。通过取字幕软件可以提取汉字、字母、图形的编码,然后通过5110显示。本系统主要用液晶实时显示线圈 状态和寄存器的值,很直观。该模块具有以下特点:84x48 的点阵LCD,可以显示4 行汉字,采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。支持多种串行通信协

16、议(如AVR 单片机的I、MCS51 的串口模式等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。LCD 控制器驱动器芯片已绑定到LCD 晶片上,模块的体积很小。采用低电压供电,正常显示时的工作电流在200A 以下,且具有掉电模式。图 3.4 液晶引脚图图 3.5 液晶指令表命令字符解释:图 3.6 命令字符解释要注意的是“功能设置”命令的“H”和“V”。H=0使用基本指令集命令,H=1使用扩展指令集命令。V=0水平寻址,V=1垂直寻址。第五节 DS18B20温度采集模块本

17、系统主要利用Modbus总线来实现温度的报警功能,这里温度的测量使用了DS18B20温度传感器。温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。一、DS18B20的主要特征:(1) 全数字温度转换及输出。(2) 先进的单总线数据通信。(3) 最高12位分辨率,精度可达土0.5摄氏度。(4) 12位分辨率时的最大工作周期为750毫秒。(5) 可选择寄生工作方式。(6) 检测温度范围为55C +125C (67F +257F) (7) 内

18、置EEPROM,限温报警功能。(8) 64位光刻ROM,内置产品序列号,方便多机挂接。(9) 多样封装形式,适应不同硬件系统。二、DS18B20引脚功能:GND 电压地 DQ 单数据总线 VDD 电源电压三、特点 独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0 V至5.5 V无需备用电源测量温度范围为-55 C至+125 。华氏相当于是-67 F到257华氏度-10 C至+85 C范围内精度为0.5 C 。温度传感器可编程的分辨率为912位 温度转换为12位数字格式最大值为750毫秒 用户可定义的非易失性温度报警设置 应用范

19、围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统 。描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。信息被发送到/从DS18B20 通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。四、温度计算 1、Ds1820用9位存贮温值度最高位为符号位下图为18b20的温度存储方式负温度

20、S=1正温度S=0如00AAH为+85,0032H为25FF92H为-55 2、Ds18b20用12位存贮温值度最高位为符号位下图为18b20的温度存储方式负温度S=1正温度S=0如0550H为+850191H为25.0625,FC90H为-55五、时序主机使用时间隙(time slots)来读写DSl820的数据位和写命令字的位。第四章 系统调试第一节 硬件调试本系统用老师发的板子,自己按照原理图焊接了板子,这个由于都是现成的材料,所以也没有什么难度,自己以前也做过很多东西,所以很快就焊接好,经测试没有问题,下面就进行软件的编写了。第二节 软件件调试一、调试平台 软件调试也是此系统最关键的一

21、步了,也是有难度的一步。本系统采用Keil软件编写程序,调试,如图4.2。图4.2 调试平台二、调试问题1、关于工程的建立:.C、.h文件的处理。在程序编译中会遇到不少关于这个的问题,其中有一些包含的问题,变量定义的问题,函数同名的问题,数据类型重定义的问题,不过经过查找资料,咨询有经验的同学都一个一个解决了这个问题。2、关于具体函数的问题:这都怪自己C语言功底还不够扎实,会出现一些有关语法、函数的问题,所以这也提醒我去把知识学扎实,学深入。3、关于串口:自己写的程序发送少了一个字符,所以老是出问题,通过用软件调试发现了这个问题,并且改掉了。4、LRC校验出了问题:我当时对LRC理解的错误,我

22、是用ASIIC码相加得到了结果,正确的应该是把ASIIC码转换为16进制的值相加取反在加1。5、关于EEPROM:这时第一次用EEPROM功能,所以调试中也遇到不少问题,有的寄存器设置出错。6、调试中的协议问题:有的时候对帧的处理出了问题,所以这个也比较头疼,经过对帧的理解,一步步解决所有问题。7、程序中判断一个帧是否接受完的方法不是很好,我是通过接收的个数去判断的,后来发现这样不够稳定,所以我又改成通过判断一个帧结尾的0X0D、0X0A来判断。三、调试结果1.硬件调试在对硬件和软件综合调试后,经标准上位机验证,基本满足课题要求。可以实现读写线圈和寄存器的功能,同时参数的储存也可以达到要求,还

23、可以去实时显示线圈的状态和寄存器的值。图4.3.1 开机画面图4.3.2 系统运行时的照片其中第一行显示的是8个线圈的状态,第二行显示的是测量上限,第三行显示的是测量下限,第四行显示的是报警上限,第五行显示的是报警下限,第六行显示的是实时的温度值。2、软件调试截图功能1:功能3:功能5:功能6:功能15:功能16:第五章 心得体会通过此次课程设计,我更进一步地熟悉了单片机的结构及掌握了单片机的工作原理和其具体的使用方法,了解了单片机程序设计与特点,同时也更加深入的掌握了51 系列单片机的相关知识。并且我懂得了单片机程序设计的基本思路,增强了实践动手能力。除此以外,我还深深地认识到严谨、认真的科

24、学态度在科学实验中发挥的重要作用。对于这次课设,我是把它当做一个项目来做,所以一开始就抱着很负责很严谨的态度去面对。这也是我在大学以来第一次去用51单片机去调试一个关于串口的协议,也是算我亲自写的最长的程序了,所以很有感慨。将一个复杂的工程分成若干个基本模块进行分步设计和测试,最后将这些模块连接起来是本实验基本的设计思想。从老师刚布置这个题目,感觉这个好难啊,从来没有接触过啊,到自己亲手去查资料,去写成程序,去一步一步解决问题,去实现基本功能,去实现附加功能,感觉自己成长了不少。一个东西刚开始接触可能会觉的有难度,但是自己亲手认真去作,一个一个解决问题,到最后会发现其实这个大的难题也没有什么。

25、这次我学到的最多的不是单片机知识,不是Modbus协议,是这种过程,这种态度,这种方法,和这种感觉。同样自己还有很多方面的不足有待于改善,所以,我要更加的努力去学习,更加静下心去完善自己。参考文献1 张友德,赵志英,涂时亮.单片微型机原理、应用与实验(第五版). 复旦大学出版社,2006.2 朱大奇,邬勤文,袁芳. 单片机原理、应用与实验. 科学出版社,2009.3 李朝青.单片机原理及接口技术. 北京航空航天大学出版社,2005.4 张凤登.现场总线技术及应用. 科学出版社,2008.附录一、硬件部分原理图二、部分程序代码#include main.hintrins.hnokia_5110.

26、hds18b20.hEEPROM.huint8 sendBuf_12435,receBuf_12435; /发送接收缓冲区uint16 reg_1245; /寄存器uint16 wendu_124; /温度值unsigned int zhengshu_124,xiaoshu_124;char temperature_124= . ;uint8 code table_124= /数码管码0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;uint8 receTimeOut_124; /接收超时bit f1ms_124=0,f10ms_124=0,f100ms_124=0; /定时标志位uint8 c10ms_124,c100ms_124; /定时计数void commIntProc_124() interrupt 4 / 串行中断程序if(TI)TI = 0;if(sendPosi_124 =10)c10ms_124 = 0; /10ms计时器清零f10ms_124=1; / void Timer0IntProc()void save_124(void) /保存掉电寄存器数据uint8 tempdata_124;tempdata_1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1