基于MODBUS协议的温湿度检测模块设计.docx
- 文档编号:10749217
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:51
- 大小:948.69KB
基于MODBUS协议的温湿度检测模块设计.docx
《基于MODBUS协议的温湿度检测模块设计.docx》由会员分享,可在线阅读,更多相关《基于MODBUS协议的温湿度检测模块设计.docx(51页珍藏版)》请在冰点文库上搜索。
基于MODBUS协议的温湿度检测模块设计
基于MODBUS协议的温湿度检测模块设计
摘要:
我国自古以来就是农业大国,但现代设施农业生产起步较晚。
而我国农业正处于从传统农业向以优质、高产、高效益为目标的现代农业转化的新阶段,环境控制作为农业生物速生、优质、高产的手段,是农业现代化的重要标志。
本文在对国内外温室智能控制进行深入分析的基础上,针对温室大棚智能化控制存在的温湿度,将智能传感器监测和单片机控制相结合,提出一套基于Modbus协议的检测模块解决方案,并对其硬件和软件进行了详细的设计。
结合RS485总线搭配Modbus通信协议组成网络,实现对温室大棚内温度和湿度的实时测量。
关键词:
Modbus通信协议;RS485;SHT10温湿度传感器;STC59C51单片机;
TemperatureAndTumidityDetectionModuleDegignofBasedonModbusProtocol
Abstract:
Chinaisoneoftheworld’smajoragriculturalcountriessinceancienttime,yettheProtectedAgriculturestartedlate.Chineseagricultureisinanewstageoftransformationfromtraditionalagriculturetomodernagricultureasthegoalofquality,highyield,highefficiency,environmentalcontrolasagriculturalbiotechnologyfast-growing,high-quality,high-yieldingmeansisanimportantsymbolofthemodernizationofagriculture.Inthispaper,onthebasisofin-depthanalysisofgreenhouseintelligentcontrolathomeandabroad,fortheintelligentcontrolofgreenhousetemperatureandhumidity,theintelligentsensormonitoringandMCUcontrolcombination,proposeasetofbasedModbusprotocoldetectionmodulesolutions,anditshardwareandsoftwaredesignindetail.RS485buswithModbuscommunicationprotocolnetwork,real-timemeasurementoftemperatureandhumidityinthegreenhouse.
Keywords:
Modbuscommunicationprotocol;RS485;SHT10temperatureandhumiditysensor;STC59C51microcontroller;
1前言
1.1研究目的和意义
目前我国农业正处于从传统农业向以优质、高产、高效益为目标的现代农业转化的新阶段。
环境控制作为农业生物速生、优质、高产的手段,是农业现代化的重要标志[1]。
温室大棚中的环境由多个因素组成,如温度和湿度等。
时下,我国温室环境控制目前仍靠人工经验来管理,严重影响了农业生产的效益,阻碍了农业生产的发展。
而目前市场上普遍存在的温、湿度检测仪器大多都是单点测量,同时也会有温、湿度信息传递不及时、精度不够等许多缺点,不利于工业控制的操作者根据温、湿度变化及时做出正确的决定;以前的温、湿度传感器都是经有线的方式传输数据,线路复杂冗余,不适合大范围或者异地多数量的测量,线路故障也很难排查,若设备重新布局则要重新布线等一系列问题,连线成本也相对要高,线路的老化问题也会影响设备的可靠性,尤其是有线网络不通畅或由于现场环境因素的限制;而不便于架设线路的情况下,给温、湿度的数据测量带来了很大的麻烦[2]。
因此,采用先进的人工智能技术,科学、合理地控制影响作物的环境因素,通过计算机控制设备进行环境控制,以便给作物生长创造一个最佳的环境条件,做到既提高产品的质量、产量和经济价值,同时尽量降低生产成本,这对温室环境施行自动检测和控制是非常必要的[3]。
而Modbus是目前工业领域较流行的协议,它定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了一控制器如何请求访问其它的设备、如何回应来自其它设备的请求,以及怎样侦测错误并予以记录错误的过程,具有开放性、用户范围广、易实现、扩展性好、可靠性强等优点[4]。
工业控制已从单机控制走向集中监控、集散控制,Modbus作为工业领域最流行的网络应用协议,在仪器仪表和测控系统设计中得到了广泛应用。
基于这种现状,应用Modbus在温湿度监控系统中的具体软硬件开发能够实现温室环境中的温度、湿度等基本环境参数测控的低成本实用型温室配套装置具有重要的现实意义[5]。
1.2研究现状
1.2.1国外研究现状
在温室环境测控技术的研究领域,欧美等西方发达国家一直处于领先地位。
20世纪40年代,美国开展了人工干预温室种植环境及基本环境参数对作物影响的应用研究,并建成第一个作物人工气候室。
60年代,小规模生产型温室开始应用于奥地利农业生产,简易温室环境监控装置进入使用阶段。
70年代后期,温室生产规模继续扩大,在日本、以色列、美国、荷兰、英国等国家,温室设施广泛应用于作物生产、畜牧养殖等行业,电子技术的快速发展和单片机的出现,使温室环境测控技术发生了巨大的变化。
80年代,单片机的性能大幅度提高、价格不断下降,以微控制器为核心的温室环境测控技术在西方发达国家得到了长足的进步[6]。
目前,国外温室的测控技术己经比较成熟,很多国家都实现了基于环境模型以及专家系统的温室智能控制系统,能够对各种执行机构实现综合控制,如通风降温、热风加温、加湿、除湿光照调节、灌溉、施肥等。
世界上温室生产最发达的国家是荷兰,其温室以大型玻璃温室为主体,现有大型连栋玻璃温室面积达1.1万公顷,约占世界玻璃温室的1/4左右,其规模位居世界之首。
荷兰瓦赫宁根大学通过将作物田间管理模型与环境控制模型相结合,成功地把人工经验应用于自动控制过程,实现了温室的智能化管理,同时大幅度降低了系统能耗和运行费用。
英国的智能型温室调控系统、西班牙和奥地利的远程遥控式温室系统都是计算机控制与管理系统在温室中的成功应用。
美国开发的计算机控制与管理系统可以根据温室内种植作物的特点和要求,对温室内光照、温度、水、气、肥等诸多环境因子进行自动调控,还可利用差温管理技术实现对花卉、果蔬等产品开花和成熟期的控制,以满足生产和市场的需要。
以色列研发的温室环境控制系统能够根据控制对象的不同特点选用型式各异的传感器、控制器及外围辅助设备,充分实现了现代化温室内部的环境监控需求[7]。
综上所述,温室环境测控技术在许多发达国家(如荷兰、美国、以色列等)已经相当先进,能够达到对多环境因素综合控制的水平,但其具有价格昂贵、维护不方便等缺点,于是,为了降低生产成本、提高系统性能,以荷兰为代表的欧美国家温室测控系统开始向网络化、无线化的方向发展[8]。
1.2.2国内研究现状
我国对于温室控制技术的研究较晚,始于20世纪80年代。
我国工程技术人员在吸收发达国家温室控制技术的基础上,才掌握了人工气候室内微机控制技术,该技术仅限于温度、湿度和CO2浓度等单项环境因子的控制,大部分设施农业从业者还是使用传统的温度计、湿度计来采集温室中的温、湿度值,并通过人工调节方式加温、降温、加湿、除湿和通风来控制温室环境参数。
我国温室设施计算机应用正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展[9]。
在技术上,以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统。
在总体上,虽然一些高校和科研机构都在进行温室环境控制系统的研究工作,但是到目前为止,能够真正满足现代设施农业实际需求的案例还非常少,我国温室环境测控技术研究水平与荷兰、日本、美国、英国、以色列等国家相比,仍有一定差距,自动化控制水平低,可靠性不高,价格也不容易被接受,同时我国温室现状还远远没有达到工厂化农业的境地,生产实际中仍然有许多问题困扰着我们,存在着温室装备配套能力差,产业化程度低,环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。
依据实际情况开发出适合我国温室发展水平的温室环境自动测控装置,努力降低生产成本、提高生产水平,已经成为现代设施农业生产的当务之急[10]。
1.3主要研究内容
本文提出了一套基于Modbus协议温湿度检测模块的解决方案,通过RS485总线组成系统网络,以STC89C51单片机为核心,以SHT10的温湿度传感器为检测,Modbus实现数据传输,从而满足农业现场对于标准温湿度检测设备的需求。
首先介绍Modbus协议和RS485通讯,然后讲述温湿度模块主要硬件和组成,并对模块的硬件和软件做出详细的设计,接着详细阐述采用Modbus通讯具体的软硬件实现过程。
实际运行显示效果良好,能达到了预期目的。
2Modbus协议介绍
2.1Modbus协议简介
Modbus协议是一种广泛应用于电子控制器上的通用语言,通过该协议,控制器相互之间、控制器和其它设备之间经网络可以互相通信。
该协议现己成为工业控制领域中的一种通用标准。
利用Modbus协议,可以让不同厂商生产的控制设备连成网络,进行系统集中的监控。
由于开放性、可扩充性和标准化使Modbus协议成为工业控制领域中最流行的协议之一[11]。
Modbus协议通过定义一个能够被控制器认识和使用消息结构,而不考虑他们之间是通过哪种网络通信。
它描述控制器请求访问设备的过程、设备如何回应控制器的请求。
在Modbus网络上通信时,Modbus协议规定每个从机须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动,从机回应生成的反馈信息。
而在其它网络上传输时,只需将Modbus协议的消息转换为能够此网络上通信的帧结构[12]。
2.1.1在Modbus网络上传输
在Modbus网络上传输,控制设备之间通信通常使用主从技术,通常选取一个设备做主机,其它设备做从机。
通信时从设备根据主设备查询提供的数据做出相关反应。
主设备可以单独和一个从设备通信,也可以通过广播方式和所有从设备通信。
单独通信时从设备要有一回应消息返回主设备。
对于从设备的回应消息,要按Modbus协议规定的格式建立回应帧。
如果从设备在消息接收或者处理过程中发生异常,Modbus协议根据对应异常码的建立异常回应消息返回主设备[13]。
2.1.2在其它类型网络上传输
在其它网络传输时,控制器采用对等技术进行通信,所以任意一个控制器都可以初始化并能和其它控制器通信。
因此,一台控制器既可作为主设备,也可作为从设备。
但在信息位,Modbus协议仍采用主从方式。
如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。
同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。
2.1.3查询—回应周期
查询消息中的功能代码告之被选中的从设备要执行何种功能。
数据段包含了从设备要执行功能的任何附加信息。
例如功能代码03是要求从设备读保持寄存器并返回它们的内容。
数据段必须包含要告之从设备的信息:
从何寄存器开始读及要读的寄存器数量。
错误检测域为从设备提供了一种验证消息内容是否正确的方法。
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。
数据段包括了从设备收集的数据:
象寄存器值或状态。
如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。
错误检测域允许主设备确认消息内容是否可用[14]。
2.2Modbus两种传输方式
Modbus网络通信传输有两种模式:
ASCll模式或RTU模式,用户可以选用自己需要的模式,但是在同一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数进行通信。
ASCII模式:
设备以ASCII模式在Modbus串行链路上通信时,信息帧中的每一个字节要用2个ASCII字符传输,该模式允许字符之间的时间间隔长达1s,所以当通信链路中不能满足RTU模式的时间要求时大都使用该模式,但该模式效率比RTU模式效率低。
RTU模式:
设备以RTU模式在Modbus串行链路上进行通信时,信息帧中的每一个字节分成2个16进制的字符,该模式在相同波特率下其传输的字符的密度高于ASCll模式,每个信息必须连续传输,传输效率高于ASCll模式[15]。
2.3Modbus信息帧
不管是ASCll模式还是RTU模式,Modbus信息传输方式都是以数据帧的形式,每帧数据都有确定的起始点和结束点,数据帧要传送的设备在数据帧的起始点开始读地址,并检测要寻址的设备和信息传输的结束时间。
在使用ASCll模式传输时,用冒号表示一帧数据开始,在消息帧结束时用回撤—换行键(CRLF)表示一帧数据结束。
除开始和结束外的帧内容,允许发送字符只能是16进制字符0~9和A~F。
通信时网络中所有设备都检测接收消息帧开始标志(冒号),然后检测消息帧中的地址码是否和本设备地址相同,若相同则接受帧,不同则舍弃。
消息帧传输时,每个字符之间的时间间隔最大为1s,如果大于1s接收设备认为出现了错误。
在使用RTU模式传输时,要开始接收一帧数据至少需要有3.5个字符的静止时间,根据使用的波特率可以计算出这个静止的。
帧数据允许发送的字符均为16进制的0~9和A~F。
消息帧接收时第一个数据区的为要发送设备的设备地址。
在通信时,网络上的设备监测包括静止时间在内的信息,当设备接收到地址数据时,对照本设备地址检测是否是本机地址,如果是本设备地址则接受该消息帧,否则舍弃。
在每帧数据发完后,到接收到下一帧数据,在两帧数据之间也要有3.5个字符的静止时间。
在发送一帧数据期间,如果两字符之间出现大于1.5个字符的静止时间时,认为数据出错,接收设备刷新不完整信息等待接收下一帧数据[16]。
2.4Modbus错误检查方法
标准的Modbus串行网络采用两种错误检测方法:
奇偶校验和帧校验。
传输的每个字符用奇偶校验,每帧消息用帧检测(LRC或CRC)。
ASCll模式时消息帧采用LRC校验,RTU模式时采用CRC校验。
主设备在消息发送前产生校验码,从设备在接收过程中校验每个字符和消息帧。
奇偶校验
用户通过配置控制器奇偶校验来设置每个传输字符中的奇偶校验位,也可以设置成无校验。
无论是何种校验,都要计算每个字符数据中值为“1”的个数,在根据“10”的位数值(奇数或偶数)设置奇偶位为“0”或“1”。
发送设备发送信息时,把计算奇偶位加到数据帧中,接收设备接收字符计算位值为“1”的个数,如果与该设备要求的不一致时产生错误。
所有设备在Modbus总线上的采用的奇偶校验方式必须相一致。
LRC校验
采用ASCll模式传输时,消息帧中校验区使用LRC校验方式生产校验码。
LRC校验检测消息帧中除开始的冒号和结束的回车一换行号外的所有内容。
LRC校验码是含1个8位二进制值的字节。
发送设备发送的消息帧中包含LRC值,接收设备在接收信息帧时计算LRC校验码,把计算的LRC值与接收到的LRC值进行比较,如果二者不一致,说明产生一个错误。
CRC校验
采用RTU模式传输时,消息帧中的校验码采用CRC方法计算。
CRC校验码是含有2个16位的二进制值的字节。
发送设备把计算CRC值附加到信息帧中去,接收设备在接收信息过程中再次计算CRC值并与接收到的实际CRC值进行比较,如果二者不一致,说明产生一个错误[17]。
为了便于与基于单片机的仪表进行通信,本设计采用RTU传输模式,CRC方法校验消息帧。
RTU模式以传输间隔来标识整个消息帧的开始和结束,典型的RTU消息帧为/设备地址(1byte)功能代码(1byte)数据(nbytes)CRC校验(2bytes)0。
此协议要求每个控制器必须知道作为从机的设备地址,并能识别按地址发来的消息和根据消息来执行相应的请求,如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
2.5Modbus协议指令
本设计modbus协议指令采用的是03(0x03)读保持寄存器,在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。
请求PDU说明了起始寄存器地址和寄存器数量。
从零开始寻址寄存器。
因此,寻址寄存器1-16为0-15。
将响应报文中的寄存器数据分成每个寄存器有两字节,在每个字节中直接地调整二进制内容。
对于每个寄存器,第一个字节包括高位比特,并且第二个字节包括低位比特。
表1,表2,表3分别表示请求,错误,响应的指令信息[18]。
表1请求
Table1Request
功能码
1个字节
0x03
起始地址
2个字节
0x0000至0xFFFF
寄存器数量
2个字节
1至125(0x7D)
表2错误
Table2Error
差错码
1个字节
0x83
异常码
1个字节
01或02或03或04
表3响应
Table3Response
功能码
1个字节
0x03
字节数
1个字节
2×N*
寄存器
N*×2个字节
N*=寄存器的数量
3RS485通讯介绍
此处省略 NNNNNNNNNNNN字。
如需要完整说明书和设计图纸等.请联系 扣扣:
九七一九二零八零零另提供全套机械毕业设计下载!
该论文已经通过答辩
4系统方案的设计
无线收发模块
单片机STC89C51
温湿度器
传感
四位七段数码管
电源
RS485接口
数据储
存器
图1系统模块结构图
Fig.1Systemblockdiagram
本设计STC89C51单片机系统为核心,以SHT10的温湿度传感器为检测,Modbus实现数据传输,从而满足农业现场对于标准温湿度检测设备的需求。
SHT10温湿度传感器进行实时采集温湿度,将采集到的数据经过算法分析处理,然后按Modbus协议格式返回到单片机系统中心,显示出大棚内的温湿度,从而有利于调节大棚内的环境状况来达到种植物所需要的环境。
系统模块结构图如图1所示。
5系统模块的硬件设计
5.1模块的硬件的选择及电路设计
5.1.1单片机芯片的选择及电路设计
STC89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的STC89C51是一种高效微控制器。
STC89C51单片机主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
STC89C51单片机具有44个管脚,42个I/O口和2个电源端口,其管脚分配如2图所示[20]。
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
图2STC89C51引脚
Fig.2STC89C51pin
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出
单片机系统的扩展是以基本最小系统为基础的,故应首先熟悉应用应用系统的结构。
单片机最小系统包括晶体振荡电路、复位电路,其电路图如图3所示。
图3单片机最小系统
Fig.3Thesmallestsingle-chipsystem
单片机复位的原理是在时钟电路开始工作后,在单片机的RST引脚施加24个时钟振荡脉冲(即两个机器周期)以上的高电平,单片机便可以实现复位。
在复位期间,单片机的ALE引脚和\P\S\E\N引脚均输出高电平。
当RST引脚从高电平跳变为低电平后,单片机便从0000H单元开始执行程序。
在实际应用中,一般采用既可以手动复位,又可以上电复位的电路,这样可以人工复位单片机系统,这种电路如图3复位部分所示。
时钟电路是用于产生单片机工作时所必需的时钟信号。
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准的,有条不紊地一拍一拍地工作。
时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
电路中的电容C1、C2典型值为30±10pF。
外接代内容的值虽然没有严格的要求,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MODBUS 协议 温湿度 检测 模块 设计