当前位置: 首页 > 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-…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...