当前位置: 首页 > news >正文

基于单片机和组态王的温度监控系统的设计

摘 要 : 介绍了以 MSP430 单片机为核心 , 建立基于 DS18B20 和组态王的温度采集和监控系统。主要研究了单片机和组态王的通用通讯协议。按照 KingView 提供的通信协议 , 设计组态王与单片机的通信程序 , 实现了组态王与M SP430 单片机的直接串行通讯。在中药提取装置的温度监控系统应用中 , 该通讯方法可以将提取装置中的实时温度快速传输到上位机。实验证明, 该系统运行状况稳定、实时性好、硬件设计简单、数据传输稳定等特点。适合在工业场合中应用。
关键词 : M SP430 单片机 ; 组态王 ; 串行通讯 ; DS18B20

0 引 言

温度的测量和控制在工业过程和科学研究中非常重要, 所以在上位机对温度的实时监控是很有必要的。单片机以其强大的现场数据处理能力、低廉的价格、紧凑的系统结构、高度的灵活性, 微小的功耗等一系列优良特性已广泛应用于工业测量和控制系统中。组态王则以其工作性能稳定可靠、人机界面友善、硬件配置方便以及方便与管理或控制计算机联网通信等优良特性, 提供了对工业控制现场大量数据进行采集、监控、处理的解决方案, 在各种工业控制领域中同样得到了大量的使用。本文设计了基于单总线数字温度传感器 DS l8B20 的小型中药提取装置测温系统 ,主控芯片采用美国 T I 公司的 MSP430 单片机 , 采用通用单片机通讯协议, 通过串口实现了单片机与组态王的通讯 , 最后将采集到的数据通过串口传送到通用机或工控机, 由组态王对采集到的现场数据进行分析、存储或显示。

1 测温系统设计

1. 1 温度传感器的选择

传统的温度测量元件比如热电阻、热电偶之类的模拟传感器的优点是成本低, 但是为了实现精确的温度测量 , 需要比较复杂的电路设计。首先保证提供 1 个稳定的恒流源, 其次模拟传感器的输出信号都比较微弱 , 需要设计后续放大电路和A /D 转换电路 , 从而获取所测量到温度值的数字信号。目前 , 数字传感器由于其高精度、多功能和总线标准化广泛应用在工业生产中。在中药提取过程中, 提取液温度变化范围为室温到 80   , 误差不超过 0. 5 , 温度显示分辨率为 0. 1 。所以本系统选择美国 DA LLAS公司生产的单总线数字温度传感器 DS18B20 。单总线是美国 DA LLAS 公司专有的 1 种特殊的串行数据通信方式, 通 过 1 条连接线就可以实现控制、通信和供电。单总线技术的一大特点是可以在 1 根总线上挂接多个单总线器件 , 从而实现多点测量。DS18B20 采用 3 T O 92 封装 , 外形像三极管( 如图 1) 。测温范围 - 55~ + 125 , - 10~ + 85范围内精度可以达到 0. 5   , 测温分辨率 最高可 达0. 062 5

1. 2 硬件电路设计

测温系统主控芯片采用美国 TI 公司的超低功耗 16 位单片机 M SP430F149   , 温度检测采用单总线数字温度传感器 DS18B20, 本系统在单总线上挂了 3 个温度传感器 , 分别对提取装置3 个不同工作点进行检测 , 通过 RS232 接口近距离的和上位机进行通信, 由于单片机的串行发送和接收是 TT L 电平 , PC COM 1 EIA 电平 , 因此单片机需加接 M AX3232 芯片 , 通过串行电缆线和 PC 相连接。整个测温系统电路图如图 2 所示 , 采用 3. 3 V 供电 , 功耗低 ,结构简单。

1. 3 测温系统软件设计

该测温系统程序包括主程序、 DS18B20 温度采集子程序和组态王与单片机串口通信子程序。其中温度采集模块定时的采集 3 个温度传感器的温度值 ; DS18B20 的操作必须严格按照时序进行, 访问 DS18B20 的顺序如下 : 初始化、ROM 命令、 RAM 命令 。每次 DS 18B20 被访问时 , 都必须严格按照这个顺序进行操作, 否则 DS18B20 就不会有响应。系统在开始时要读取所有在线的 DS18B20 的序列号, 在读取一路温度之前要发送 1 DS18B20 序列号 , 进行寻址。温度采集模块流程图如图 3 所示。

RS232 通信模块主要完成和上位机组态王的通信。RS232 接收组态王采用的是中断方式 , 发送给组态王采用的是查询方式 , 在具体软件编写过程中要注意 RS232 接收和发送切换的时序, 否则 RS232 不能正常工作。单片机与组态王通讯流程图如图 4 所示。

2 单片机与组态王的通信协议

单片机与组态王有 3 种通讯方法 : 1) 用户根据组态王提供的驱动程序开发包开发自己的通讯驱动程序; 2) 通过比较复杂的动态数据交换( DDE) 方式进行通讯 ; 3) 利用组态王提供的与单片机的通用通讯协议[8] 。本系统采用第3) 种方法 , 严格按照 K ingView 提供的通信协议 , 设计组态王与单片机通信。

2. 1 组态王的通讯设置

在组态王的工程浏览器中点击设备 COM 1, 在右面窗口中双击新建, 出现设备配置向导 , 选智能模块 单片机 通用单片机 HEX 串口 , 点下一步 , 设备命名为单片机 , 选择串口 COM 1, 配置设备地址为 0, 一直点下一步到完成( 如图 5 所示 )   , 需要注意的是组态王中配置的设备地址是单片机的 RA M 地址 , 由单片机中的程序决定。单片机这个设备建好后, 双击左侧设备 COM 1 对通讯参数进行设置, 与单片机程序中的一致即可   。本系统设置的通讯参数: 8 位数据位 , 2 位停止位 , 波特率为 9 600 bps, 无奇偶校验位( 如图 6 所示) 。

2. 2 采用串口调试助手研究组态王与单片机的通信协议

采用串口调试助手 S SCom3. 2 模拟组态王 , 对组态王与单片机通信协议 进行研究 : 运行单片机 , 串口调试助手发送 05000401, 即组态王发送地址请求格式 , 对照组态王与单片机的通用通讯协议中的数据传输格式 1, 05 是请求帧的开始代码 ENQ, 00 是设备地址 S ta, 04 是请求帧的结束代码 EOT , 对十六进制数 05 00、 04 做 CRC 校验 , 结果为01 。串口调试助手接收到 06000305 的字串 , 对照通用通讯协议, 可以看出收到的是格式 2 的数据 , 即单片机应答地址格式( 如图 7 所示 )

根据组态王读数据的时序 : 组态王发送地址请求格式1, 单片机应答地址格式 2, 接着组态王进行读数据请求格式 3: 0552010000010453, 对照格式 3, 05 是请求帧的开始代码 ENQ, 52 是读标志 R, 01 是需要交换的数据 类型DataType, 0000 为数据偏移地址 DataAddr, 01 为要读取的数据的数量 Dat aNum, 04 是请求帧的结束代码 EOT , 对十六进制数 05 、50、01、0000、01、04 做 CRC 校验 , 结果为 53
串口调试助手接收到 060100710305 的字串 , 对照组态王的协议, 可以看出收到的是格式 4 的数据 , 即单片机应答读数据格式( 如图 8 所示 )

2. 3 单片机通讯程序设计

M SP430F149 单片机工作在多机通信位方式时 , 单片机的U RXWIE 置位为 1 。当组态王开始运行后 , 就向单片机不停的发送地址请求格式, 单片机收到请求后 , 首先 , 对其进行 CRC 校验 , 然后对地址请求格式中的地址与单片机程序中预设的地址进行匹配, 如果满足条件 , 则按单片机答应地址格式通过串行口进行应答, 并将 URXWIE 复位为 0, 即单片机下次接收数据处于正常状态。下位机进行地址 判断的程序框架如下:      

   
if( ( rx0dat a[ 0] = = 0x05) & & ( rx0data[ 1] = = 0x00)
& & ( rx0data [ 2] = = 0x04) & & ( U RCTL0& URXWIE)
& & ( CRCok= = 1) ) / / 判断是否为本机地址
{
/ / 准备发送区数据
URCT L0& = ~ URXWIE;
}
组态王接收到单片机的应答地址格式后发出读数据请求格式, 单片机收到请求后 , 把温度模块 DS18B20 采集的数据, 按单片机应答读数据的格式组成应答帧 ( 格式 4) , 通过串口发送给组态王, 并把 URXWIE 置位为 1 完成一次完整通信。读数据请求程序框架如下:
if( ( rx0data[ 0] = = 0x05) & & ( rx0data [ 1] = = 0x52)
& & ( rx0data[ 2] = = 0x03) & & ( ! ( URCTL0& URXWIE) )
& & (CRCok= = 1) ) / / 判断组态王要求的数据格式
{
/ / 准备发送区数据
URCT L0= URXWIE;
/ / 只有收到地址字符时才允许中断
}

3 系统验证

将所设计的系统 , 应用在超声波中药提取过程中 , 对提取过程中的温度实时监测, 并将装置顶部、中部以及底部的温度测量值进行平均值计算和显示, 如图 9 所示。从监控画面中可以看出提取装置中的顶部温度为 24. 375 , 中部温度为24. 375 , 底部温度为 24. 500 0   。结果表明该通讯系统实现了温度的实时显示, 并且达到了很高的精度。

4 结 论

本文采用通用单片机通讯协议 , 设计了基于组态王和M SP430 单片机的测温系统 , 实现了温度曲线的实时显示和历史曲线的查询。实践表明, 该系统运行状况稳定 , 实时性好, 设计简单 , 成本低廉 , 适合在工业场合中应用。

相关文章:

基于单片机和组态王的温度监控系统的设计

摘 要 : 介绍了以 MSP430 单片机为核心 , 建立基于 DS18B20 和组态王的温度采集和监控系统。主要研究了单片机和组态王的通用通讯协议。按照 KingView 提供的通信协议 , 设计组态王与单片机的通信程序 , 实现了组态王与M SP430 单片机的直接串行通讯。在中药提取装置的…...

unity 导入的模型设置讲解

咱们先讲Model这一栏 Model Scene:场景级属性,例如是否导入灯光和照相机,以及使用什么比例因子。 Scale Factor:缩放因子(也就是模型导入后大小如果小了或者大了在这里直接改是相当于该模型的大小的,而且在…...

汽车 vSOC安全运营管理平台开发解决方案

汽车 vSOC 安全解决方案 一、引言 随着汽车行业的快速发展,汽车的智能化和互联化程度越来越高,汽车网络安全问题也日益凸显。汽车 vSOC(Vehicle Security Operations Center)作为汽车网络安全的重要组成部分,其作用越来越受到重视。本方案旨在提供一套可实施落地的汽车 vS…...

python 第三方库

一、什么是第三方库 python的三方库指的是,需要通过pip install 安装后才能使用的 python 工具 三方库有很多: 做web自动化测试的库:selenium单元测试框架:pytest、unittest做app自动化测试:Python-Appium-Client做接…...

VMware Workstation环境下,DHCP服务的安装配置,用ubuntu来测试

需求说明: 某企业信息中心计划使用IP地址17216.11.0用于虚拟网络测试,注册域名为xyz.net.cn.并将172.16.11.2作为主域名的服务器(DNS服务器)的IP地址,将172.16.11.3分配给虚拟网络测试的DHCP服务器,将172.16.11.4分配给虚拟网络测试的web服务器,将172.16.11.5分配给FTP服务器…...

CSS实现文字颜色渐变

直接上代码和效果图&#xff1a; <p class"linecolor">文字颜色渐变</p><style type"text/css">.linecolor{font-size: 30px;background-image:-webkit-linear-gradient(bottom,red,#fd8403,yellow);-webkit-background-clip:text;-web…...

《每天5分钟用Flask搭建一个管理系统》第4章:模板渲染

第4章&#xff1a;模板渲染 4.1 模板的概念和使用 模板是一种用于生成输出的方法&#xff0c;它允许您将Python代码和HTML标记混合在一起&#xff0c;从而创建动态网页。 示例代码&#xff1a;基本模板 <!-- templates/home.html --> <!DOCTYPE html> <html…...

逆向学习汇编篇:指令的操作

本节课在线学习视频&#xff08;网盘地址&#xff0c;保存后即可免费观看&#xff09;&#xff1a; ​​https://pan.quark.cn/s/660c759dea95​​ 在逆向工程中&#xff0c;深入理解汇编语言的指令操作是至关重要的。汇编指令是计算机硬件与软件之间的桥梁&#xff0c;它们直…...

VB.net实战(VSTO):VSTOwpf体验框架打包教程

如果是考虑到Wps用户较多&#xff0c;就不建议采用侧边栏的形式 只是个体验框架&#xff0c;界面未作美化&#xff0c;office的用户可以用任意一种窗体&#xff0c;喜欢那个界面就写那个界面&#xff0c;wps的侧边栏只能弹出一部分&#xff0c;每次需要的手动拖动。 打包了案例…...

Jquery 获得Form下的所有text、checkbox等表单的值

Jquery使用表单我主要是想获得某一个表单下的所有text获得checkbox的值: 可以这样写: var parameter{}; $("input[typetext]",document.forms[0]).each(function(){ alert(this.name); }); 获得所有名为hobby的选中的checkbox的值和form2下的所有text的值 function s…...

stl之string

构造函数 void test1() {string s1;//不传参cout << s1 << endl;string s2("123456");cout << s2 << endl;string s3(s2);cout << s3 << endl;string s4(s2, 1, 5);cout << s4 << endl;string s5("123456&quo…...

Vue3学习笔记<->nginx部署vue项目

安装nginx vue项目通常部署到nginx上&#xff0c;所以先安装一个nginx。为了方便安装的是windows版nginx&#xff0c;解压就能用。 项目参考上一篇文章《Vue3学习笔记&#xff1c;-&#xff1e;创建第一个vue项目》《Vue3学习笔记&#xff1c;-&#xff1e;创建第一个vue项目》…...

使用 WebGL 创建 3D 对象

WebGL Demohttps://mdn.github.io/dom-examples/webgl-examples/tutorial/sample5/index.html 现在让我们给之前的正方形添加五个面从而可以创建一个三维的立方体。最简单的方式就是通过调用方法 gl.drawElements() 使用顶点数组列表来替换之前的通过方法gl.drawArrays() 直接…...

百度地图3d区域掩膜,最常见通用的大屏地图展现形式

需求及效果 原本项目使用的是百度地图3.0,也就是2d版本的那个地图&#xff0c;客户不满意觉得不够好看&#xff0c;让把地图改成3d的&#xff0c;但是我们因为另外的系统用的都是百度地图&#xff0c;为了保持统一只能用百度地图做 经过3天的努力&#xff0c;最后我终于把这个…...

小区物业管理收费系统源码小程序

便捷、透明、智能化的新体验 一款基于FastAdminUniApp开发的一款物业收费管理小程序。包含房产管理、收费标准、家属管理、抄表管理、在线缴费、业主公告、统计报表、业主投票、可视化大屏等功能。为物业量身打造的小区收费管理系统&#xff0c;贴合物业工作场景&#xff0c;轻…...

C++实现一个简单的Qt信号槽机制

昨天写这个文章《深入探讨C的高级反射机制&#xff08;2&#xff09;&#xff1a;写个能用的反射库》的时候就在想&#xff0c;是不是也能在这套反射逻辑的基础上&#xff0c;实现一个类似Qt的信号槽机制&#xff1f; Qt信号槽机制简介 所谓的Qt的信号槽&#xff08;Signals …...

微信小程序常用的传值

1.通过 URL 传参 在页面跳转时&#xff0c;可以在 URL 中携带参数进行传递&#xff0c;然后在目标页面的 onLoad 生命周期中获取参数。 // 在页面 A 中跳转到页面 B 并传递参数 wx.navigateTo({url: /pages/detail/index?id123 });// 在页面 B 的 onLoad 生命周期中获取参数…...

SQL面试真题解答 数据统计分析,求“同比、环比”等(SQL窗口函数使用)

SQL面试真题解答 数据统计分析&#xff0c;求“同比、环比”等&#xff08;SQL窗口函数使用&#xff09; 环比、环比增长率、同比、同比增长率&#xff0c;根据百度百科上的 说明&#xff1a; 环比增长率 环比增长率&#xff0c;一般是指和上期相比较的增长率。 环比增长率&a…...

【递归、搜索与回溯】floodfill算法二

floodfill算法二 1.被围绕的区域2.太平洋大西洋水流问题3.扫雷游戏4.衣橱整理 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.被围绕的区域…...

Dataease安装,配置Jenkins自动部署

Dataease安装&#xff0c;配置Jenkins自动部署 一.安装Dataease 安装前准备&#xff1a;1.Ubuntu20.04 LTS国内源安装指定版本Docker 2.docker-compose安装 下载离线安装的安装包&#xff0c;下载地址&#xff1a;https://community.fit2cloud.com/#/download/dataease/v1-…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...