摘要
随着社会的进步,互联网和通信技术的发展将传感器、嵌入式设备和智能控制系统紧密地联系在了一起,另一方面,工业现场协议也被广泛地应用。其中MODBUS协议被越来越广泛地接受和应用。它具有简单便携的远程监控操作,在工业现场中具备适用于多种通讯设备之间、多种传播介质之上的网络连接能力。而本论文将在STM32F103C8T6单片机平台上,通过载入了MODBUS协议的温湿度传感器,来实现温度湿度数据的采集,最终通过OLED显示屏显示出来当前环境下的温湿度。同时利用MODBUS-RTU通信接口实现与上位机的通信,其中使用到组态王软件进行PC端模拟,将测量出的温湿度数据通过串口上传到PC端,进行数据的界面显示和曲线分析。
关键词:MODBUS协议;RS485;STM32F103C8T6单片机;温湿度数据;通信
前言
现如今,在国家政策的大力支持下,电子信息技术和网络通信得到了极大的发展,集成硬件的开发和传感遥控的使用使得远程监控运用起来更加方便。渐渐地,很多工业协议也开始应用于各种工业设备中,在计算机、物联网等控制领域取得了突破性成果。但是,由于需要监控的设备及其相关的信息也越来越多,使得自动化监控和远程控制变得具有挑战性。目前工业远程控制系统有待完善,人们更多地希望能通过网络发送设备控制命令实现对现场环境及设备的参数远程监控,采集设备数据信息并进行实时处理。
Modbus协议因为其协议结构简单、适应多种传播媒介的特点得到工业上的广泛推广。同时,单片机在工业自动化领域已经有较大的发展,STM32单片机功耗低、片上资源丰富、下载和移植方便、驱动代码简单、经济实用,是能更加便携的应用到协议分析仪上的不二之选,所以本课题研究是通过单片机与协议的结合实现对数据的分析与监控。
1.绪论
1.1概述
本文的数据协议分析仪是基于MODBUS通讯协议,而且比较可靠,在整个传输通讯过程中就体现了它高效利用通讯设备、实时控制数据的特点,并且凭借它操作简单和开源免费的强大优势在工厂自动化的领域应用十分普遍。
该协议是在1979年创建的,现在它可以称作上是全球排名第一的被广泛应用于工业的现场总线协议。MODBUS协议大多是被应用在各种电子控制器上起到操控不同设备之间通讯的作用。通过这个协议,控制器和控制器之间,控制器和其它外围设备之间都可以获得高效的通讯。这样,不同的工业生产商之间只需要调试控制一个由无数个操控器设备组建的网络,就可以使得数据进行跨空间的传输,还可以将数据进行集中分析和监控管理。[1]
运用MODBUS协议进行网络间的通讯时,该协议内容中就定义了消息域和公共格式,还规定了接收端通过读取到的消息采取什么样相应的行为。通讯时,发送端通过协议发送给接收端其设备地址,接收端获取接收到的发送端地址,进而识别消息类型、读取消息内容、而后如果需要回复消息则再次通过MODBUS协议发送回反馈消息至发送端。由此也可以看出,在这个协议中,规定了主机请求访问其他从机设备的过程。比如,主机如何向从机发送请求,从机如何回应来自主机的请求,以及怎样侦测通讯过程中的错误并显示记录下来。[2]
MODBUS具有以下几个特点:
(1)MODBUS协议的使用无关乎知识产权纠纷问题,所以可以不用上交许可证费用,使用这种通信协议,相对来说放心安全又节约成本和时间。
(2)和MODBUS相关联的PC端接口及线路可以采用RS-232或者是RS-485,此外,MODBUS协议还几乎支持在各种介质上进行高速的信号传输,例如双绞线、光纤、WIFI等。
(3)生产商在开发该协议时的过程十分简单,所以该协议使用的帧格式也简单易懂。
随着MODBUS现场总线系统被大量使用,该协议也被发展的越来越完善。MODBUS主要是被应用于各生产电子厂,通过这个通讯协议将不同生产商的设备连接起来构成大型网络,然后通过后台操作,对收集到的产品数据进行整合、分析,而且也可以对数据实行监控网络化。协议分析仪就是被使用到这里的一种数据流,在监视数据通信系统中,它是一种专用测试工具,能够用来检验数据交换是否正确地按照此协议的规定进行,现在是主要被用在通信协议的开发、评价以及分析中。便携式MODBUS协议分析仪能帮助工程技术人员进行MODBUS现场总线系统的安装和配置,在实现数据的监测分析和网络故障诊断上具有很大的实际应用价值。[3]
经过了41年的发展,MODBUS协议已经成为了一种通用工业标准并于2004年正式作为国家标准,现在正一直为中国工业通信做出巨大的贡献。
1.2课题的意义
一方面,在现代社会的工业生产中,因为被控制对象以及检测控制装备等设备位置的分散,再加上控制和监控等一些工作的要求,设备和设备之间的现场信息交互和传递也越来越多。由于传统的工业控制软件存在着不开放、每个部分联系紧密、系统复杂程度高等问题,使得系统在进行维护、扩展和更新的时候变得较为困难,系统任何一部分的修改都可能对其他部分产生很大的影响,再次修改可能需要大幅度地调整软件和硬件。如果调整软件,就是重复编写代码,但是软件不能重复的利用和修改,即使是使用了高级语言的函数库,也只能对源代码进行重复使用,不可能对可执行的工程文件进行重复使用。如果修改电路硬件,也容易造成人力和物力的浪费。
无论是在家庭生活中还是现代工业生产中,温湿度的监测在各个领域都有着极其重要的作用,所以就需要创造这样一种监控系统,本课题就是采用计算机科学技术和工业现场总线技术集成了一个温湿度监测系统。在这样的系统里面,温度和湿度的变化情况是上位机通过智能节点来监测的,上位机会把监测到的温度和湿度数据传输到对应的智能节点,然后利用界面显示温度和湿度。在工厂里面,可以通过增加驱动设备来监测环境中的温度和湿度的数据,然后根据需求,对环境中的温度和湿度进行调控。
另一方面,现在工业现场控制领域广泛的运用现场总线控制技术和网状网络监控技术,而MODBUS协议分析仪就是这样一个可以应用在工业领域内的数据分析仪。协议分析仪实质上就是一种专用的测试在数据通信的过程中数据流的流量和使用、检验数据的交换过程是否按照MODBUS协议规定执行的工具。便捷的MODBUS分析仪在通信的开发和检测过程中起到了重要的作用。为广大工业工程技术监管人员的现场总线分析、数据交换通信、进行网络互连故障诊断提供很大的实际应用价值。[4]
因此,如果不同的生产设备之间相互连接构成一个大的网络结构,更能实现集中的控制管理。因此,可以在组网连接时,将工业现场设备连接到中枢总控制系统或者总的计算机操作系统、PLC系统,将传统的采用双绞线或者电缆直接连接控制换成更高效便捷的MODBUS网络方式。通过这样来实现工业生产设备中的数据采集和信息传输,也方便控制系统进行统一的数据调度、保存、管理,还能实时地监控设备生产状况。[5]
所以本课题设计基于MODBUS协议的对温湿度数据分析的仪器,能远程监控室内温湿度的变化,这不但解决了人们的日常焦点关注问题,也在一定程度上满足了工业生产线上的需要。
1.2.1课题的研究和应用
(1)协议的研究和问题
首先,MODBUS协议是由Modicon公司在1971年首次提出的,此后就又发展产生了MODBUS RTU和MODBUS ASCII。后来,Modicon公司被施耐德公司收购。为了更好地在以太网上的分布式普及和推动MODBUS使用,随后,施耐德公司建立了MODBUS-IDA组织,将MODBUS协议的所有权分离出去。[6]
现在MODBUS协议的所有使用权已经全部移交给了IDA组织进行系统化的管理,但是这种工控网协议仍然有很多的安全性问题,在诸多安全防护机制方面有很多不足,如认证、授权缺失,功能码滥用,加密有风险等。MODBUS协议系统在涉及安全时出现的功能实现问题很少被充分考虑,这造成了缓冲区溢出,再加上TCP/IP协议的自身存在安全问题,容易受到非法网络数据获取,病毒木马,IP欺骗等攻击。
(2)协议分析仪的研究和应用
MODBUS分析仪现在已经有很成熟的研究,比如:英国比克科技公司推出的Picoscope示波器能够针对MODBUS(RS-232/RS-485)信号进行解码和分析。在2017年7月,该公司又发布了针对MODBUSASCII和MODBUSRTU的解码软件,这进一步增强了Picoscope的分析能力。这样使工业总线上的调试更加理想化,使协议分析仪能更普遍的应用在程序自动化、工业自动化、智能家居、移动通讯等方面。[7]
随着MODBUS和单片机技术的大量使用,MODBUS协议分析仪被广泛应用到三大市场能源与基础设施、工业以及建筑行业中。并且,能源与基础设施市场、机场、隧道、数字通讯、电信、水处理、油气、能源等行业也大大得益于单片机的远程控制能力。现如今在建筑市场,医疗机构、公用建筑、民用住宅、船舶等行业中,使用他们原有的单片机网络,极大程度上降低了实施的费用。另外,工业市场,食品与饮料、微电子、制药、汽车等行业则高度的受益于单片机,已经从IT系统贯通到车间层单片机的统一全局网络架构中。
(3)温湿度监控的应用现状
对于温湿度的监控,现如今主要被应用于农业生产监控并分析农作物的生长环境因素,在食品行业掌握温湿度变换便于保存食物,避免食物降低口感和品质;在文物资料馆中合理控制温度便于保存纸质文档资料和书籍;在建筑材料方面,如混凝土的干燥过程是评价产品指标的重要因素;在道路的维护中,空气流通湿度是造成管道发霉破坏的重要因素。[8]
1.3研究内容和设计方法
1.3.1研究方向和内容
在自动化控制系统中,完成信息的下达、数据的上传和组态的开发是最重要的三个步骤。因此设定研究方向如下:
(1)首先需要研究MODBUS协议
MODBUS协议通讯时由两个模块组成,主机和从机。两个从站之间是不能相互通信,总线上只允许有一个主机,并且MODBUS协议对事务进行处理时,在同一个时间段内,主站只能同时处理一个事务。通讯就是首先由该主机发出信息,传输到从机,可允许的从机有多个,实际生产应用中,从机最多可达到247个。MODBUS协议采用主从方式传输数据,当断开连接时,能检测出现网络故障并开始自动修复故障,当网络再次连通后,通讯就可以恢复,重新发起请求。从站若未收到主站发出的请求,就不会作出应答响应,结果就是通讯失败,不能收到主站发送的数据。所以,主站和从站之间没有成功通信。另外,当发送一些重复数据时,主站不需要发送请求,直接由从站开始发送数据,这样不但降低了数据流量,还提高了数据传输能力。所以,MODBUS协议的可靠性和数据传输能力都是较好的。
MODBUS协议支持的通讯方式有两种串行模式:RTU和ASCII。在ASCII模式下,一个字节只能传输两个字符,校验数据的方式采用的LRC校验;在RTU模式下,报文包含有八个字节,其中传输的是两个四位的十六进制字符,采用的是十六位的CRC校验。综合上述特点,采用RTU模式,能有较高的传输效率和较简单精准的数据校验。
(2)研究温湿度传感器的工作原理和在整个电路中起到的作用
温湿度传感器工作原理就是将采集到的物理信号转换为数字信号,通过串口服务器输入到电脑端,方式是通过RS-485总线传给上位机;并且能够以以太网的形式,将收集到的数据在OLED上显示出来。
(3)研究好单片机的最小系统电路构造,进行硬件电路的相关设计
(4)研究好OLED显示设置
(5)研究好通过串口进行上下位机间的通讯
(6)研究好组态王的程序编写
组态王是一种被广泛应用于工业自动化控制中的一款监控系统开发软件,不过由于组态王运行速度快而且稳定,十分方便、经济适用、开发周期短的特点而主要适用于低端的自动化操作系统中。本项目研究过程中使用的监控模拟就比较简单,因此使用组态王模拟合适,故用组态王来模拟PC端进行温湿度数据的监控。
在设计监控界面时,需要考虑三方面问题:友好的画面感、数据显示直观、动画链接丰富。组态软件就为开发者提供了方便的可视化监控界面,是通过利用Windows的图形编辑功能,进行实时趋势曲线分析。组态王中有丰富的、方便操作的配置界面,提供了很多图库精灵,方便进行运行系统的开机界面、数据显示界面的设计。
使用组态王的基本方法:
(1)进行图形界面设计
(2)创建数据库
(3)建立动画链接
(4)建立串口链接
(5)链接程序,运行和调试系统监控和画面
1.3.2设计的步骤
(1)查找资料,理解MODBUS通讯协议。
(2)了解所选用的STM32F103C8T6单片机的最小系统结构及各管脚,参照单片机使用手册和模拟电路的基础原理,进行硬件单片机外围电路的的初步设计。设计好滤波电路、复位电路、时钟电路和下载调试电路。
(3)运用微处理器理论原理和编程语言C语言,完成MODBUS协议通讯采集的温湿度传感器的程序的编写。
(4)理解RS-485通信电路,使用该通信电路实现单片机向PC端的通信。
(5)确定该分析仪可以基于检测数据为温湿度的传感器,购买元器件并焊接,制作分析仪。
(6)按照开题报告中设计的各模块功能,连接起来各模块,利用Altium Designer软件画出完整的电子原理图。
(7)编写组态程序和协议相关程序。
(8)利用组态王模拟电脑端,设计好组态王开机画面及分析数据分析显示界面,配置好组态王相关硬件。
(9)将 PC和硬件电路连接,将代码下载到开发板上,在Keil5中进行软件调试。
1.3.3软硬件设计方案
本次课题是基于STM32F103C8T6单片机和MODBUS协议的温湿度数据测量分析仪的设计,主要研究的方法步骤如下:
(1)对整个MODBUS通讯协议的传输方式、通讯条件和要求、协议的应用范围和实例等进行大概的了解,确定好所要采集的数据,可以为温湿度,则所需要硬件就应该借助温湿度传感器。明确课题的定位,所要解决的问题是基于MODBUS通信协议,实现室内温湿度的测量,一方面借助温湿度传感器并使用OLED显示所采集到的数据,另一方面使用组态王模拟PC端,实现对所采集的数据通过RS-485通信电路上传到PC端的功能。
(2)对单片机程序编程的理论和MODBUS通信协议以及涉及到的相关知识界面设计和电路通讯系统的学习。使用的MODBUS-RTU协议通讯,编程时,相关配置有:查询回应周期,传输方式配置,地址域和功能域、数据域、错误校验方法、寄存器收发数据、相应数据帧格式。
(3)选择单片机的型号为STM32F103C8T6,通过对keil5编译软件相关建立工程的过程的熟悉,结合对基础电路、模拟电路、单片机、编程软件、串口调试软件等的理论学习和对开发板的使用了解,以及参考大量文献后总结到的经验,初步设计到方案如下:选用单片机STM32F103C8T6作为主机,0.96寸OLED显示屏做温湿度采集显示界面,通过USB串口上传到PC,设计从机端显示界面,有数值和曲线显示,显示实现协议分析的功能。
(4)搭建硬件调试环境,将选定的单片机STM32F103C8T6对应的最小系统以及电源电路、稳压电路、传感器电路在洞洞板上等焊接起来,并使用软件作出实际的电路图。
(5)将编码下载到开发板上,进行软件调试,测试温湿度传感器显示屏测量值与电脑端数据传输显示分析图是否正常工作,确保软硬件完美结合。
2.系统设计基础
2.1通讯方案的选择
使用STM32F103C8T6模块作为MCU,温湿度传感器通过MODBUS协议采集环境中的温湿度,OLED显示屏显示当前状态下的环境温湿度,同时温湿度传感器也利用MODBUS协议进行数据的初步采集到的数据的显示,通过RS485通讯线路与上位机相连,电脑端作为主站向单片机作为的从站发送请求,从站接收后然后将数据返回给主机。PC通过串口助手读取串口,配置组态王模拟软件。其中利用组态王仿真PC上位机端的运用,主机就可以操控监控界面,通过显示屏实时查看更新的数据,进行温湿度数据的监控分析;最终完成MODBUS分析仪的显示和简单曲线分析功能。
一方面,该方案的编码过程简单,只要是开发单片机模块,使其与电脑上位机进行通讯,编写温湿度数据采集的基于MODBUS通讯协议的通讯代码即可。
另一方面,方案线路连接简单。故采用本方案。
系统的通信结构图如图2.1所示:
图2.1 系统的通讯结构图
2.2所用芯片的简单介绍
2.2.1温湿度传感器
SD123-T10温湿度传感器是一种将温度和湿度集成起来的高精度的温湿度传感器。它使用的是MO内核单片机,而且还是低功耗的,可以采集温度、湿度的数据信息,相对于传统模式温度和湿度传感器比较稳定、误差小、不易受干扰。[8]输出给单片机的信号为数字信号,可以方便和其它的主机或者是从机来进行联网,温度和湿度数值可以通过RS485通讯传输出来,具有数据准确、使用稳定、使用寿命长等特点。
其技术参数指标如表2.1所示:
表2.1 技术参数指标
参数指标 | |
供电电压 | 6~28V直流 |
功率 | 0.1W |
湿度测量精度 | 2% |
温度测量精度 | 0.2°C |
湿度测量范围 | 0~100% |
温度测量范围 | -40~125°C |
长期稳定性 | 湿度:<1%/y温度:<0.1°C/y |
响应时间 | 8S |
通讯方式 | 485Modbus-RTU |
设备地址 | 默认1 |
通讯波特率 | 默认9600 |
2.2.2单片机
本系统选择的单片机是一个增强型的中等容量的单片机STM32F103C8T6,它是一个32位的微型单片机,是基于ARM Cortex-M内核STM32系列的单片机。在设计方面,其具有以下几个重要的符合设计条件的特点:
(1)该单片机工作的最高频率是72MHZ,内部有闪速存储器, FLASH型程序存储器。有许多的增强型I/O端口以及外设和外部连接的总线。
(2)单片机里面有1个12 bit的ADC、2个比较器、2个16 bit通用定时器、2个32 bit通用定时器、2个16 bit基本定时器、2个16 bit高级定时器。它的通信接口是标准的有1个USB接口、1个CAN接口、、2个IIC接口、3个SPI接口以及8个UART接口。[9]
(3)单片机的正常工作电压为2.0V~5.5V,正常的工作温度范围常规型是在-40°C~+85°C,扩展型是在 -40°C~+105°C。为了满足低功耗的使用要求,还有多种省电工作模式。
(4)它有五种封装形式分别是LQFP100、LQFP64、LQFP48、LQFP32和QFN32。
(5)该单片机的编程简易,价格实惠,可使用的资源丰富,程序下载通过RS485接口下载到单片机就行。
2.2.3显示屏
OLED又被叫做发光二极管,因为OLED有自发光,所以不需要背光源、它有很高的对比度、厚度相对适中、重量不大,数据更新和缓冲速度快、可以测量的温度范围广、构造比较简单,所以本设计选用0.96寸OLED显示屏
该显示屏有以下特点:
(1)0.96寸OLED有三种颜色可以供你选择分别是黄蓝、白、蓝;其中黄蓝色的屏幕是上1/4的部分是黄光,下3/4的部分是蓝光,而且是在固定的区域内显示固定的颜色,颜色和显示区域都不可以随意修改;白色屏是纯白色的光,也就是所谓的黑底白字;蓝色屏是纯蓝色的光,也就是所谓的黑底蓝字。[10]
(2)分辨率为128*64。
(3)OLED屏的接口方式多种多样。具体的接口方式有:6800并行接口方式、8080并行接口的方式、3线和4线的串行SPI接口的方式,还有简单的两端控制IIC接口的方式,所有的接口方式只需要通过OLED屏上的BS0~BS2来设置即可。
2.2.4与上位机的串行通讯及下载调试
温度传感器实际上采集到的是一个随着温度线性变化的电压,传感器能接受到的电压的变化范围在2V~3.6V之间。通过温度传感器和ADC12_IN16的输入通道相连接,这样的方式就将传感器输出的模拟信号转换成了数字信号。内部安装ARM的是SWJ-DP接口,这个串口是结合了JTAG和串行单线调试的一个接口,所以它能够在串行单线调试接口和JTAG接口之间进行连接。JTAG的TMS信号与SWDIO信号使用了同一个引脚,TCK信号和SWCLK使用的是另外一个相同的引脚,此外,TMS引脚上还主要有一个特殊的信号序列用于在JTAG-DP和SW-DP转接口之间进行切换。当PLL时钟的输入为HIS时,系统的时钟频率最高只能是64MHz。在使用USB串口功能的时候, HSE和PLL一定要一起使用,此时,单片机的频率为48MHz或72MHz。当ADC采样时间设置是1μs的时候,APB2必须设置在14MHz、28MHz或56MHz这三个频率上。[11]
故软件方案的设计图如图2.2所示:
图2.2 软件方案的设计图
3.硬件电路设计
3.1单片机模块
本项目研究中使用的是STM32F103C8T6型号的单片机,该单片机的核心板硬件图如图3.1所示:
图3.1 核心板硬件图
该单片机一共有两个IIC总线接口,能够在从模式和多主模式下工作,而且可以在标准和快速两种模式下。IIC的总线接口可以用七位寻址或十位寻址,在七位的从模式的时候可以双从地址寻址。而且在单片机的内部有CRC发生器/效验器。它们可以用两种总线:一个是SM Bus总线2.0版,另一个是PM Bus总线。还支持DMA操作。
在单片机的内部有一个设备控制器可以兼容全速USB,它通过遵循全速USB设备(12兆位/秒)国标,将端点通过软件配置,设置为待机和唤醒两个状态。内部的主PLL可以产生48MHz时钟,该时钟是USB专用的而且时钟源只能使用HSE晶体振荡器。
该单片机所包含的最小系统内部电路比较简单,其最小系统电路如图3.2所示:
图3.2芯片最小系统电路图
3.2电源模块
电子设备中最为基础的是电源,串口服务器中的输入的电源使用12V的直流电流供电,系统的各个模块使用5V直流电流。
该课题中所使用的电源模块电路如图3.3所示:
图3.3 电源模块电路
采用12V转5V电路如图3.4所示:
图3.4 12V转5V电路
3.3OLED模块
本系统使用OLED显示屏将收集到的温度和湿度参数显示,因为OLED可以自己发光,而且不要用背光源,还有清晰、比较薄,响应快、使用起来比较简单等优点。所以与LCD相比较,OLED的显示效果要比较好一些。
OLED模块如图3.5所示:
图3.5 OLED模块
本系统使用的0.96寸OLED显示屏,它有以下特点:
(1)采用接口方式:4线的IIC接口方式,这种接口方式简单,只需要用两根信号线控制OLED;在IIC接口中需要将BS1配置为1,BS0为0;所以R1,R4焊接,R2,R3不焊接,R8可焊接也可不焊接。
(2)选用的四针的IIC模块。
(3)VCC电源选用3.3V。
(4)SCLOLED的D0脚,它在IIC通信中被叫做时钟管脚。
(5)SDAOLED的D1脚,它在IIC通信中被叫做数据管脚。[12]
3.4程序调试下载模块
(1)单片机的内部有一个ARM的SWJ-DP接口,它是JTAG和串行单线调试相结合的一个接口,是用来连接串行单线调试接口或者是JTAG接口的。JTAG的TMS与SWDIO使用一个引脚,而TCK信号和SWCLK使用一个引脚,在TMS的脚上有个特别的信号序列,是被用在JTAG-DP和SW-DP间进行切换。
(2)单片机的里面有JTAG调试模块,是通过在线编程来使用,用在芯片的内部进行测试,开始时先把所有固定器件到电路板上,然后通过JTAG编程,提高工程进度。
(3)标准的JTAG接口是四线:TMS、TCK、TDI、TDO。
TCK是测试时钟输入;
TDI是测试数据输入,数据经过TDI到JTAG口;
TDO是测试数据输出,数据经过TDO到JTAG口输出;
TMS是测试模式选择,调试JTAG口,使它在某种特定的测试模式;
TRST是测试复位,输入引脚,它在低电平时有效。[13]
3.5串口通信模块
RS485是一种相对简单的以组网方式的通信电路。对温湿度进行数据采集的设计过程中使用RS485通信电路,使用这个电路可以实现温湿度采集的数据稳定传输,也能保障数据传输的安全性。
在硬件的电路设计中,RS485收发控制器所使用的是一种带磁耦隔离的ADM2483芯片,这个芯片它使用的是5V的电压。因为这个元器件在进行通信的时候,不可能在用一个时间发送和接收到信息,所以在进行硬件电路设计的时候要把这两个控制端接在同一个引脚上。
RS485总线通信约定是在RS485电路中用Modbus协议,此协议是一种通用的语言,它被用在电子控制器上,可以做单点监控以及多点测量。工业设备通过这个协议可以实现在设备之间经过网络等一些数据传输的方式进行相互通信。使用这种通信协议,仪器仅仅只要认识消息的结构,而不必要知道它是怎么样通信的。
RS485通信电路如图3.6所示:
图3.6 通信电路
3.6温湿度模块
本设计采用的温湿度传感器为SD123-T10,该温湿度传感器具有以下特点:
(1)它是最新的高精度数字温湿度传感器(SHT30),具备灵敏度高、稳定性好等优点,并且全量程自动实现温度补偿。
(2)标准RS485输出通讯接口,加入自恢复保险丝,增强其稳定性,其中RS485能够实现长距离通讯。
(3)使用的是Modbus-RTU通讯协议。
(4)内部有DCDC转换芯片,将高电压转换为模块使用的5V电压,为模块工作提供稳定电源,不会发热,转换效率高。可以输出float型和整数型温湿度数据,本论文采用的是float型。
(5)数据帧的格式是,起始位是一位,数据位是八位,奇偶校验位是零位或者一位,停止位是一位或者两位,本模块默认采用的是9600,无奇偶校验,八位数据位,一位停止位。值得注意的是,此时设备地址是1,MODBUS地址也是1。
(6)RTU信息帧格式规定为:
设备的地址为1字节,功能码为1字节,数据区为N字节,CRC的校验为2字节。
(7)测量温度时,寄存器地址4×0200/512,PLC组态地址为40513;温度偏移值,寄存器地址4×0103/259,PLC组态地址为40260;湿度偏移值,寄存器地址4×0102/258,PLC组态地址为40259;测量湿度时,寄存器地址4×0201/513,PLC组态地址为40514;Modbus设备地址码,寄存器地址4×0100/256,PLC组态地址为40257。[14]
Sht30传感器电路如图3.7所示:
图3.7 传感器电路
将传感器通过USB串口与电脑相连后,通过串口调试助手查询所使用的串口号,查询结果显示,正在使用COM5串口,则在于上位机相连的组态王模拟软件中填入该串口号,打开开机画面,进入监控系统。
4.软件设计
4.1串口通信模块
本系统是基于RS485接口加入MODBUS通信协议实现温湿度的测量,通过串行通信实现单片机与PC端进行通信的一种基本方式。则主从机的参数设置如下表4.1所示:
表4.1 主从机参数设置表
通信参数 | PC端 | 数据采集系统端 |
串口 | COM1 | Modbus RTU |
波特率 | 9600 bit/s | 9600 bit/s |
奇偶校验 | 无 | 无 |
数据长度 | 8位 | 8位 |
停止位 | 1位 | 1位 |
MODBUS协议规定了两个串行传输模式:一个是RTU模式,另一个是ASCII模式,在Modbus串行链路上,全部设备的传输模式一定相同。串行通信程序设计主要包含单片机双串口初始化程序,完成传输模式、站点地址、数据格式、通信速率和主从站工作模式等功能。
采用RTU模式通信,实现的三类通信函数有:关联接口函数,帧处理接口函数和发送接收数据的接口函数,相关接口类函数如表4.2所示:
表4.2 接口类函数
RTU接口函数名 | TCP接口函数名 | 说明 |
_modbus_rtu_connect | _modbustcp_connect | 连接物理设备 |
_modbus_rtu_close | _modbus_tep_close | 断开物理设备 |
_modbus_set_slave | _modbus_set_slave | 设置从站地址 |
_modbus_rtu_filter_request | _modbus_tep_filterrequest | 从站地址过滤 |
_modbus_1tu_build_request_basis | _modbus_tcp_build_request.basis | 创建请求帧头 |
_modbus_rtu_build_response_basis | _modbus_tcp_build_response_basis | 创建响应帧头 |
_modbus_1tu_send_msg_pre | _modbustcp_send_msg.pre | 组帧 |
_modbus_rtu_check_confinmation | _modbus_tcp_precheck_confinmation | 接收校验 |
_modbus_rtu_send | _modbus_tep_send | 数据帧发送 |
_modbus_rtu_recv | _modbus_teprecv | 数据帧接收 |
_modbus_rtu_select | _modbus_tcp_select | 接受数据IO复用 |
_modbus_ptu_flush | _modbustcp_flush | 接受数据缓冲清空 |
4.2数据帧处理模块
现场总线技术中系统的最核心问题是数据帧处理,在MODBUS协议中,其RTU模式数据帧的格式如表4.3所示:
表4.3 RTU模式数据帧格式
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
从机
地址 | MODBUS命令 | 起始寄存器高字节 | 起始寄存器低字节 | 寄存器数高字节 | 寄存器数低字节 | CRC
低字节 | CRC
高字节 |
设计帧处理函数流程:
(1)首先,在主站中设置从站地址,同时发送确认信息,从站需要验证主站的地址。
(2)生成相应帧头部并发出请求;_modbus_rtu_bulid_response_based()函数创建响应帧头部有子设备地址和功能码两个字节,基本长度为2。其中,_modbus_tcp_bulid_response_based()函数创建响应帧头部有MBAP、设备地址和功能码等8个字节,基本长度为8。其中,_modbus_rtu_check_integrity()函数计算接收数据CRC16校验值,并与接收帧中校验域比较,判断帧是否出错。通过使用_modbus_rtu_send_msg_pre()函数计算出CRC16值,并附加到请求帧上,完成组帧。发送端生成了CRC,接收端校验CRC。[15]
代码过程实现如下所示:
u16 CRC16(u8 *puchMsgg,u8 usDataLen)
{ u8 uchCRCHi = 0xFF ;
u8 uchCRCLo = 0xFF ;
u8 uIndex ;
while (usDataLen–)
{
uIndex = uchCRCHi ^ *puchMsgg++ ;
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;
uchCRCLo = auchCRCLo[uIndex] ;
}
return ((uchCRCHi<< 8) | uchCRCLo) ;
}
void MessageHandle(u8 *pointer_in,u8 *pointer_out)
{
u16 CalKey;
u16 RcvKey;
HaveMes=0;
RcvKey=(u16)*(pointer_in+(*pointer_in-1)); RcvKey=RcvKey<<8;
RcvKey=RcvKey|(u16)*(pointer_in+(*pointer_in));
CalKey=CRC16(pointer_in+1,*pointer_in-2);
if(CalKey==RcvKey)
{
switch(*(pointer_in+2))
{
case 0x03:ReadHoldingReg(pointer_in,pointer_out); break;
case 0x06: PresetSingleReg(pointer_in,pointer_out);break;
default:
{
*(pointer_out+2)=*(pointer_in+2);
ErrorHandle(1,pointer_out);
} break;
}
}
else
{
Comu_Busy=0;
}
}
基本实现的流程图如图4.1所示:
图4.1 流程图
5.系统调试
5.1硬件调试
5.1.1单片机电路板的调试
(1)买到的相关元器件列表有:USB转串口,电源,温湿度传感器,OLED显示屏,STM32F103C8T6最小系统。
(2)通过参考出来的原理图,将各个模块焊接在电路板上,焊接后的效果图如图5.1所示:
图5.1 硬件电路图
5.2软件调试
5.2.1调试平台
使用keil5调试程序,调试最终结果如图5.2所示:
图5.2 程序调试图
5.2.2调试问题
在研究过程中出现的调试问题有以下几点:
(1)读取传感器测量值和设置参数时,注意PLC中需要将地址码加1,如果03功能码读取512号寄存器,需要写入40513。
(2)在调试过程中所使用的通讯协议出现了问题:主机向从机输出MODBUS命令,错误的数据发送给从机,使得从机读取数据有误,通过查看MODBUS协议,检查出是由于从机在调试定时器接收数据帧的时间调整的不对。
(3)单片机通过串口上传到PC端时,串口出现不匹配问题,连接失败,直接无法显示数据,更不能更新数据,如图5.3所示:
图5.3 信息窗口图
5.2.3调试结果
(1)经过硬件焊接检查和软件综合调试后,上位机检验效果,完成了本次设计的要求。
(2)能够实现的功能就是使用stm32F103C8T6实现modbus协议对温湿度数据的分析,提取,缓存,并可根据需要通过串口,将数据上传至pc。能够实现读写寄存器并实时显示读出的数值,也即显示采集到的数值。效果如图5.4所示:
图5.4 电路板图
(3)组态王模拟上位机,实现单片机与PC端通讯后,数据的采集和分析。
设计温湿度采集系统的开机界面如图5.5所示:
图5.5 开机界面图
通过USB串口上传至PC,进入模拟系统打开后,调试采集到的数据界面,可通过实时曲线,动态查看温湿度变化情况及其时间范围,并有仪表盘直观显示当前温湿度如图5.6所示:
图5.6 数据界面
6.总结与展望
6.1结论
本课题的研究是基于MODBUS/RTU协议和RS-485通讯电路,在温湿度传感器和与上位机的连接中使用工业协议,进行基本数据的采集获取和上位机、下位机之间数据传输,利用STM32F103C8T6为主控制器,结合简单的外围电路搭建了硬件平台,程序编程基于Keil5,组态王模拟PC上位机,实现上下位机基于MODBUS协议的数据传输。
现在伴随着科技的发展进步,不只是在工业现场中需要对生产线上的产品,或者生产环境了解温湿度的变化情况,日常生活中,人们也是越来越想了解和控制环境中温湿度的变化,能采取措施调整更适宜的生活。因此,选择借助一个温湿度传感器采集环境中的温湿度数据,并通过界面设计分析出当前信息数据的变化情况。
本次的毕业设计是理论和实践真正的结合,让我对以前所学的模拟电路知识又有了新的理解,能够分析设计电路图,根据实际需要对电路进行分压和分流的设计,合理利用三极管稳压电路、变压电路实现系统的稳定。在这次实践是对学到的第一个新型工业协议MODUBS的理解和应用,在设计过程中我更加熟悉了单片机的结构和工作原理,掌握了其使用方法和技巧。也锻炼了对单片机的程序设计,整个创作设计过程锻炼了我的查阅资料能力,也培养了耐心修改程序的习惯,不仅提升了我的实践动手能力,还让我深深地认识到了严谨治学,认真钻研的科学实践态度在实验工程中的重要作用。
6.2研究对象的未来发展期望
本课题研究完成了最基础的设计部分,但是在使用和设计的过程中还是发现了一些需要改进的地方。
比如数据在采集时,温度的测量,数据的变化比较缓慢。上位机的可视化界面做的可以,但是仅仅完成了对于数据的实时观察变动情况和当前的数值,将来可以使用ADD将数据存入Access数据库中,记录最高温度和最低温度,通过曲线的设定和库的查询,能随意查询显示出一天中各个时刻的温度,这样便于对数据随时间变化的情况进行进一步的分析,也可以在以后需要的时候随时查询,随着时间的变化温湿度的变化情况,能够指导今后工作的方向并提示人们在此环境状况下需要注意在哪些时间采取必要的措施。
参考文献
[1]宋磊,彭道刚,赵斌斌,黄丽.基于嵌入式STM32的ModbusRTU协议实现[M], 2000,9
[2]王振力,林森,李冰.便携式Modbus现场总线协议分析仪研究与设计.科技创新导报.Science and Technology Innovation Herald[J],2017.4(28):12
[3]王佩.面向物联网的Modbus协议栈设计与应用[M],2018
[4]刘禹辰,张仁杰,刘虎.STM32与上位机Modbus协议的通信方法[J]电子科技,2015
[5]贺洪江,程琳.基于STM32和Modbus的电参数采集系统.自动化与仪表报刊[J],2014
[6]刘绍辉.基于STM32单片机的MODBUS通讯器设计[M],2013
[7]林填达,张泉宏,曾敏,胡小芳.基于Modbus协议的STM32与触摸屏通讯的实现.自动化与仪表报刊[J],2015
[8]常一鸣.基于MODBUS_TCP协议的上下位机通信监控功能的实现[M],2014
[9]贺洪江,程琳.基于STM32与MODBUS协议的超声波测距仪设计.仪表技术与传感器报刊[J],2014.3(10):23-24
[10]李振江.Linux系统下Modbus主协议栈设计与实现[M],2012
[11]李明海.MODBUS_RTU转TCP协议远程通讯在海上平台的应用.技术应用与研究[J],2019
[12]罗旋.Modbus_TCP安全协议的研究与设计
[13]杨焕峥,杨国华,徐玲.基于 Modbus 协议和 ARM 的电能监控系统设计[J],2017,11(11):72-76
[14]潘丰,王胜阳,刘凯,樊广晓,洪源.基于ModBus的远程数据采集器设计.河南科技学院学报[J],2019,4(2):65-71
[15]何建忠.基于MODBUS协议的工业网关设计与实现[M],2013
致谢
在本论文完成之后,首先,我向所有帮助、关心和指导我的老师、同学、家人致以最衷心的感谢!
首先要感谢我的指导老师,他对我进行了无私的指导和帮助,不厌其烦的对我的论文格式进行修改和指导。
另外,在查阅各种资料和绘制图形、安装新软件、修改格式上,我的同学给了我极大的帮助,这样节省了我很多时间。
感谢我的学长和前辈,在我写论文和程序设计时,提供了很多素材和知识上的帮助,而且,在撰写和排版论文上,调整和焊接硬件电路上,在改错和设计过程中都提供了必不可少的帮助。
还要感谢这篇论文所涉及到的各位前辈们的研究和发展,让我能有机会参考和引用无数优秀学者的研究文献和先进思想。如果没有各位学者的研究成果和更先进的发现和应用,我很难完成本篇论文的创作。
由于我的学术水平非常有限,个人所做论文难免会有不足之处,恳请各位老师和同学进行批评和指导!
1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。
2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。
原创文章,作者:1158,如若转载,请注明出处:https://www.447766.cn/chachong/132024.html,