基于MODBUS数据采集系统的设计Word文件下载.docx
- 文档编号:17357877
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:28
- 大小:708.32KB
基于MODBUS数据采集系统的设计Word文件下载.docx
《基于MODBUS数据采集系统的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于MODBUS数据采集系统的设计Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。
设计时间共三周(2014.3.3~2014.3.23),具体安排如下表:
周安排
设计内容
设计时间
第一周
1.掌握SST89E516RD单片机体系结构;
2.设计采样电路和调试,并应用Protel画出其电路原理图。
2014.3.3~2014.3.9
第二周
1.学习Modbus通信协议和组态王;
2.编写实验程序。
2014.310~2014.3.16
第三周
1.整机调试;
2.撰写综合设计报告;
3.答辩。
2014.3.17~2014.3.23
五.指导教师评语及学生成绩
指导教师评语:
年月日
成绩
指导教师(签字):
摘要
此次专业综合设计采用89E516RD单片机、ADM2582隔离型RS-485收发器,利用SIPEXSP3223EEY芯片RS232转换器构成的系统,89E516RD单片机作为下位机,应用组态王6.55软件编制的上位机监控程序,应用单片机内部集成A/D转换器完成对实时电位器电阻模拟量的采集和处理,而组态王用于对下位机参数读写、显示、报警等,从而实现了一套完整可靠的电阻采集监控系统。
上位机和下位机通过Modbus通讯协议来进行数据的采集。
该系统具有使用方便、测量精确、稳定性高、可性强等优点,可以在很多领域应用,如温度、液位、压力等物理量的采集和监控。
关键字:
89E516RD,MAX232,PCF8591,组态王6.52,Modbus协议
第1章概述
计算机网络、通信与控制技术的发展,导致自动化系统的深刻变革。
随着微处理器与计算机功能的不断增强,价格急剧降低,计算机与计算机网络系统得到迅速发展。
而处于企业生产过程底层的测控自动化系统,由于设备之间采用传统的一对一连线,用电压、电流的模拟信号进行测量控制,或采用自成体系的封闭式的集散系统,难以实现设备之间以及系统与外界之间信息变换,使自动化系统成为“信息孤岛”。
随着现代工业的发展,对工业设备的控制逐步从单一独立系统向集散控制监控系统发展,因此,我们设计了基于Modbus协议实现下位机对电压信号的采集和组态王通信的智能工业控制器监控系统,它的数据通信系统由数据的发送设备、接收设备、作为传输介质的总线、通信协议组成。
本设计虽然是简单的用单片机内部集成A/D转换器进行电压采样,但是利用此原理,并将设计稍加改动,就会演变成很多工业自动化监控系统,例如对温度、压力、液位等工业现场参数的精确控制,并且可以利用上位组态软件实现现场参数的读写、显示、越限报警等实现了一个完整的工业监控系统。
现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。
它的出现,将对该领域的技术发展产生重要影响,而本设计所运用的Modbus协议更是现场总线中应用较为广泛的一种总线技术。
第2章方案选取
2.1通信方式选择
用通信方式来看,有两种总线方式即:
RS232总线和RS485总线。
方案一:
采用采用RS232串行总线方式,它是外部串行总线,通常我们用9针线接口进行通信,实际上只用到TXD、RXD、GND三根线,单端传输方式,最大传输距离是15米,最大传输速度20Kbit/s,具有串行传输只需要一根传输线即可,在成本上可以有一定的节约。
但是典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端的驱动器输出正电平在+5~+15V,负电平在-5~-15V之间。
当没有数据传输时,线上未TTL,从开始传输数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。
接收器典型的正工作电平再+3~+12V,负电平在-3~-12V。
由于发送电平和接收电平的差仅为2V到3V,所以共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为15M,最高速率为20Kbit/s。
由于RS-232用于一对收发设备通讯,所以它只适合本地设备之间的通讯。
方案二:
采用RS485串行总线方式,它也是外部串行总线,RS-485可以采用二线与四线方式,二线制可以真正实现多点双向通讯。
而在采用四线连接时,只能实现点对多的通信,也就是只有一个主设备,其他全为从设备。
它的特点是输入为差分输入方式,最大传输距离为1200米,最大传输速率为10Mbit/s,其优点是在RS232基础上其抗干扰能力极强,同一根电缆线的数据传输可以不受其他线路的干扰,还具有总线收发器灵敏度很高,能检测很低的电压(200mV),在远距离传输时也能使信号得以恢复。
RS-485的接口信号电平较RS-232低,不易是接口电路的芯片受到损坏。
由于RS-485的种种优点,使它成为众多工程师的首选串行接口。
所以基于RS-485的优点,本设计也采用方案二作为通信方式。
2.2PCF8591的选择
PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。
PCF8591具有4个模拟输入、1个模拟输出和1个串行I²
C总线接口。
PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I²
C总线上接入8个PCF8591器件,而无需额外的硬件。
在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I²
C总线以串行的方式进行传输。
PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。
PCF8591的最大转化速率由I²
C总线的最大速率决定。
第3章硬件电路设计
3.1设计流程图
在设计方案选定好之后,需要对整个系统的实现过程有个具体的思考分析,并拿出一个具体的系统实现方案框图,将整个实现过程模块化,便于硬件电路的设计和分工焊接,便于硬件的检错和硬件的调试。
图3-1,便是选定的方案一的系统实现框图。
图3-1工作流程图
3.2RS485通信电路图
RS-485数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。
RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信。
RS-485总线,在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线标准。
RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。
加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。
RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。
RS-485用于多点互连时非常方便,可以省掉许多信号线。
应用RS-485可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。
RS-485驱动器可以用在RS-422网络中应用。
RS-485的最大传输距离约为1219米,最大传输速率为10Mbps。
平衡双绞线的长度与传输速率成反比,在100Kbps速率以下,才可能使用规定最长的电缆长度。
只有在很短的距离下才能获得最高速率传输。
一般100米长双绞线最大传输速率仅为1Mbps。
在短距离的信息传输过程中,可以忽略大部分的干扰,即可以不使用双绞线。
在没有强干扰的影响时,信号传输的终端也可以不加抗共模干扰的电阻。
有的情况,485总线芯片的供电电源也会引起干扰,在这种情况下,需要对供电电源进行隔离,图3-3所示的电路就是消除电源干扰的一种电路设计方案。
图3-2RS485通信原理图
3.3单片机最小系统
单片机最小系统包括电源电路,复位电路和定时电路。
如图示为3-3单片机最小系统。
图3.3单片机最小系统
第4章主要元器件的介绍
4.1SST89E516RD单片机
STT89E516RD是8位集成储存器的51系列兼容单片机,和51系列单片机软件兼容、管脚也兼容。
SST89E516RD片内有两块SuperFlashEEPROM,分为64k主块(BLOCK0)和8k次块(BLOCK1).BLOCK0的地址范围是0000h~ffffIBLOCK1的地址范围是10000h~11fffh。
做仿真器时BLOCK1储存区烧写SOFtIC仿真监控程序。
SST89E516RD具有在应用可编程(IAP)和在系统可编程(ISP)的功能,其中IAP是通过串口实现的。
仿真器就是利用了SST89E516RD的IAP功能。
由于SST89E516RD具有两块独立的SuperFlash程序储存区,当监控程序在Block1储存区运行时可以改写Block0程序储存区中的程序,这就是仿真器的基本特性。
图4-1单片机原理图
4.1.1储存器
1.程序FLASH存储器:
单片机内部有两块FLASH存储器,第一块(BLOCK0)是64Kbyte,第二块(BLOCK1)是8Kbyte。
因为全部程序地址空间限制为64Kbyte,SFCF[1:
0]用来控制程序区的选择。
请参考图3-1和图3-2的程序空间的配置。
64K/32K
x8的第一块由512/256个扇区组成,每个扇区有128Byte。
8K
x8的第二块由64个扇区组成,每个扇区有128Byte。
2.程序存储器块的切换:
单片机的程序存储器块切换功能使BLOCK1或BLOCK0的低8Kbyte占用程序地址空间的最低8Kbyte地址。
SFCF[1:
0]控制程序存储器的块切换。
3.程序存储器块切换的复位初始值:
程序存储器块切换的复位初始值是由起动配置位SC0及SC1的状态确定。
SC0和SC1位可通过外部主机模式命令或IAP模式的命令来编程。
请看表4-2和表4-7。
RESET完成后,SFCF[0]可以由程序动态地修改,改变SFCF[0]值不会改变SC0位。
在改变SFCF[0]的值时需要小心,因为会使不同的物理空间印射到逻辑程序地址空间,使用者必须防止在地址范围0000H到1FFFH执行块切换指令。
4.数据RAM储存器:
数据RAM有1024字节的内部存储器,RAM能寻址到64Kbyte的外部数据存储器。
5.扩展数据RAM的寻址:
SST89E/V554RC和SST89E/V564RD都有1K的RAM,对内部数据存储器有四个部分:
(1)RAM的低128Byte(00H到7FH)可以直接或间接寻址。
(2)RAM的高128Byte(80H到FFH)可以间接寻址。
(3)特殊功能寄存器(80H到FFH)只能直接寻址。
(4)768Byte的扩展RAM(00H到2FFH)由转移外部指令MOVX间接寻址和清除EXTRAM位。
由于高位128Byte字节和SFR占用相同的地址,RAM必须间接访问,RAM和SFR空间尽管有相同的地址,但是它们在物理上是分开的。
当指令访问高位128Byte(高于7FH),单片机访问SFR还是RAM由指令的类型,如果是间接,将访问RAM;
如果是直接,将访问SFR。
4.1.2定时器
器件有3个16位寄存器做定时器或事件计数器。
3个定时器或计数器分别是T0、T1和T2。
每个都有一对8位特殊功能寄存器指定。
各自的寄存器是TL0,TH0,TL1,TH1,TL2,TH2。
下面的表提供设置T0、T1、T2的TMOD值。
除了在波特率发生器模式,T2CON不包括TR2位的设置,TR2位需要单独设置来启动定时器。
4.1.3端口输入/输出
SST89E516有4个8位I/O口(32个I/O引脚)和1个4位口,共36个I/O口。
SST89E516端口的工作情况与标准8051相似,但有一些改进。
1.P0是八位双向I/O端口,当作输出口时每个引脚可以接收LS
TTL电平输入,可以写为1使其状态为悬浮用做高阻输入。
P0
也可以在访问外部程序存储器时作地址的低字节,在访问外部数据存储器时作数据总线,此时通过内部强上拉输出1。
P0在外部主机模式编程时接收代码,外部主机模式校验是输出代码。
在编程校验或是当作通用I/O口时需要外接上拉。
2.P1口是8位带内部上拉的双向I/O口,P1输出可以驱动LS
TTL输入。
向P1口写入1时P1口被内部上拉为高电平,可用作输入口。
当作为输入脚时被外部拉低的P1口会因为内部上拉而输出电流(见DC
电气特性)
。
P1[5,6,7]可以驱动16mA的大电流。
P1口在外部主机模式编程和校验时接收低位地址数据。
3.P2口是8位带内部上拉的双向I/O口。
向P2口写入1时P2口被内部上拉为高电平,可用作输入口。
当作为输入脚时,被外部拉低的P2口会因为内部上拉而输出电流(见DC电气特性)。
在访问外部程序存储器和外部数据时分别作为地址高位字节和16位地址(MOVX
@DPTR),此时通过内部强上拉传送1。
P2口在外部主机模式编程和校验时接收一些控制信号和部分的高位地址数据。
4.P3口是8位带内部上拉的双向I/O口。
P3口输出缓冲器可以驱动LSTTL输入。
向P3口写入1时P3口被内部上拉为高电平,可用作输入口。
当作为输入脚时,被外部拉低的P3口会因为内部上拉而输出电流(见DC电气特性)。
P3口在外部主机模式编程和校验时接收一些控制信号和部分的高位地址数据.
4.2数/模转换元件PCF8591
PCF8591是一款单电源、低功耗8位COMS型A/D、D/A转换芯片,它具有4路模拟量输入通道、一路模拟量输出通道和1个I²
该器件I2C从地址的低三位由芯片的A0、A1和A2三个地址引脚决定,所以在不增加任何硬件的情况下同一条I²
C总线最多可以连接8个同类型的器件。
图4-2PCF8591与单片机转换原理图
\
第5章系统电源
本次综合设计中介绍的直流稳压电源一般是线性稳压电源,它是将起电压调整的作用器件始终工作在线性放大区,由50Hz工频变压器、整流器、滤波器和串联调整稳压器组成。
它的基本工作原理为:
工频交流电源经过变压器降压、整流、滤波、再次滤波后成为一稳定的直流电源。
图中其余部分是起电压调节,实现稳压作用的控制部分。
电源接上负载后,通过采样电路获得输出电压,将此输出电压与基准电压进行比较。
如果输出电压小于基准电压,则将误差值经过放大电路放大后送入调节器的输入端,通过调节器调节使输出电压增加,直到与基准值相等;
如果输出电压大于基准电压,则通过调节器使输出减小,最后直至与基准电压相等。
这种稳压电源具有优良的纹波及动态响应特性。
此次设计所用到的电源是5V直流电源,采用变压器实现220V到5V的转换,变压器如下图;
图5-1AY-MPU89C51A核心板电源连接方式
第6章软件设计
6.1编程软件
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍KeilC51开发系统各部分功能和使用。
我们用开发软件KeiluVision3来编写、修改所需程序和下载程序到单片机运行。
其下介绍KeiluVision3的使用步骤:
1.双击KeiluVision3,得到主画面,如图6-1所示:
2.新建界面Project--newproject,如图6-2所示:
3.单片机的选择,如图6-3所示:
图6-3单片机选择
4.C文件的创建和添加,如图6-4所示:
图6-4C文件创建
6.2编程语言的介绍
C语言[1]是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。
它由美国贝尔研究所D.M.Ritchie于1972年推出。
1978后,C语言已先后被移植到大、中、小及微型机上。
C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
许多著名的系统软件,如DBASEⅣ都是由C语言编写的。
用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,像PC-DOS、WORDSTAR等就是用这种方法编写的。
C语言主要有以下特点:
1.C是中级语言。
它把高级语言的基本结构和语句与低级语言的实用性结合起来。
C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2.C是结构式语言。
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3.C语言功能齐全。
具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。
另外C语言也具有强大的图形功能,支持多种显示器和驱动器。
而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
4.C语言适用范围大。
适合于多种操作系统,如Windows、DOS、UNIX等等;
也适用于多种机型。
C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。
它是数值计算的高级语言。
基于C语言的这些特点,我们选用C语言来作为编程语言。
6.3组态王软件
组态王开发监控系统软件,是新型的工业自动控系统,它以标准的工业计算机软、硬件平台构成的集成系统取代传统的封闭式系统。
它具有适应性强、开放性好、易于扩展、经济、开发周期短等优点。
通常可以把这样的系统划分为控制层、监控层、管理层三个层次结构。
其中监控层对下连接控制层,对上连接管理层,它不但实现对现场的实时监测与控制,且在自动控制系统中完成上传下达、组态开发的重要作用。
尤其考虑三方面问题:
画面、数据、动画。
通过对监控系统要求及实现功能的分析,采用组态王对监控系统进行设计。
组态也为试验者提供了可视化监控画面,有利于试验者实时现场监控。
而且,它能充分利用Windows的图形编辑功能,方便地构成监控画面,并以动画方式显示控制设备的状态,具有报警窗口、实时趋势曲线等,可便利的生成各种报表。
它还具有丰富的设备驱动程序和灵活的组态方式、数据链接功能。
下面介绍组态监控界面的建立,其步骤如下:
1.双击组态王6.55,得到主画面,启动“组态王”工程管理器(ProjManager),选择菜单“文件\新建工程”或单击“新建”按钮,弹出如图6-5所示
2.点击下一步,按照步骤进行建立工程和存档,直到出现如下界面则创建成功。
如图6-6所示
图6-6建立工程完成
3.点击设备串口设置,选择数据传输波特率等相关参数。
如图6-7所示
图6-7设置串口
4.双击COM2,新建I/O设备,按照提醒设置需要的参数。
如图6-8所示
图6-8设备配置向导
5.监控画面的建立,单击画面,出现新建画面,根据操作手册进行画面建立。
如图6-9所示
图6-9新画面
结论
本设计运用组态王和SST89E516RD单片机,串口通信及PCF8951设计的一个简单、实用、测量精度高的电压采集和组态监控画面系统。
这是一次将书本知识与实际运用有效结合的一次实习。
在这次硬件课程设计过程中,我得到了童老师和杨老师悉心的指导,是我在短期内学会了Modbus通信协议和crc校验的计算方法,以及组态王上位机与下位机通信的波特率等参数设定。
我学会了如何去调试硬件电路以及怎样利用万用表等器件去检测电路的通断与线路连接是否有错。
这次设计不仅让我在知识上有所增长,动手设计能力有所提高,还让我学会了团队合作的重要性,团队的高效率才是整个设计学习过程的高效率。
知识的应用和经验的积累还是来源于自己动手操作,让我巩固了课本知识,学会应用到实际。
一次简单的课程设计过程包含着多种技巧,老师的经验传授让我更加容易的去面对设计中的各种困难,感谢童老师和杨老师的悉心讲授。
我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了这一年的学习成果。
虽然在这次设计中对于知识的运用和衔接还不够熟练。
但是我将在以后的工作和学习中继续努力、不断完善。
这三星期的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。
参考文献
[1]翟玉文,梁伟,艾学忠.电子设计与实践.中国电力出版社,2005.5
[2]童诗白,华成英.模拟电子技术基础.高等教育出版社出版社,2009.3
[3]阎石.数字电子技术基础(第五版)[M].高等教育出版社,2006.5
[4]时景荣,李立春.C语言程序设计.中国铁道出版社,2008.12
[5]张齐,朱宁西..单片机系统设计与开发.北京:
机械工业出版社,2008.8
[6]张毅刚.
单片机原理及应用.
北京:
高等教育出版社,2008
[7]
申琢玉.吉林化工学院毕业设计说明书.2009.6.12
[8]
黄松岭,吴静.虚拟仪器设计基础教程.北京:
清华大学出版社2008.10
附录1电路原理图
串口转换电路A/D转换电路
单片机最小系统
采集器原理图
附录2程序
#include<
REG52.H>
intrins.h>
sbitLED=P0^0;
sbitSDA=P3^7;
sbitSCL=P3^6;
bitack;
#defineAddWr0x90//写数据地址
#defineAddRd0x91//读数据地址
unsignedcharrd_dat[20],td_dat[20],rd_cont,ad[10];
/*CRC发送校验,函数返回校验结果,整形*/
unsignedinttd_crc(unsignedchartd_cont)
{
unsignedintidatab=65535,c=40961,l;
unsignedcharidatai,j,k;
for(i=0;
i<
td_cont;
i++)
{
l=b;
l=l>
>
8;
l=l<
<
k=b;
k=k^td_dat[i];
b=l+k;
for(j=0;
j<
j++)
k=k<
7;
k=k>
b=b>
1;
if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MODBUS 数据 采集 系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)