【应用笔记】【AN005】Qt开发环境下基于RS485的4-20mA电流采集
简介
4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用。本文主要介绍在Qt开发环境下基于RS485实现4-20mA电流采集,实现WINDOWS平台对数据的采集、分析及显示。
系统组成及工作原理
系统组成主要包括PT100铂电阻、SBWZ温度变送器、4-20mA电流采集模块(GM4008)以及上位机软件组成,如图1所示。

PT100铂电阻温度传感器:利用铂金属阻值随温度的变化而变化的特性制成的一种温度传感器,主要用来测量温度的变化量。
SBWZ温度变送器:一种现场安装式温度变送单元,主要将铂电阻的信号变换成线性的4-20mA的输出信号。
4-20mA电流采集模块(GM1008):RS485接口的GM1008电流采集模块,主要实现数据的采集与传输,并通过RS485接口与上位机进行通讯。
USB转485模块(EVC8001):实现GM1008的RS485接口与上位机的USB接口成功连接。
上位机Qt:制作上位机界面,实现被测数据的采集、分析和显示。
系统工作过程中,当温度发生变化时,PT100铂电阻温度传感器的电阻值发生变化,其阻值经过SBWZ温度变送器转换为电流信号,并通过4-20mA电流采集模块(GM1008)及USB转RS485模块(EVC8001)与上位机通讯,从而实现温度的采集、分析及显示。
电流采集模块
系统采用RS485接口的8通道4-20mA电流采集模块(GM1008),不仅能更加快速、精确的把测量数据传送给上位机,保证系统的效率,而且可以使系统的信息传输下回稳定。
GM1008简介
GM1008 8通道4-20mA电流采集模块(以下简称模块)采用全电器隔离方案,配合高性能微处理器及8通道12位ADC在较小的体积下完成了电流测量功能。
模块内置高性能电源变换电路,供电电压范围宽至7.5V-36V,且效率高达90%以上。此特性为长时间使用的电源稳定性提供保障。模块内置1500V双隔离电源模块,使得供电输入、模拟测量精度、模块稳定性及通用性提供保证。
模块内置基于耦合隔离的高品质RS485电路,长期使用稳定可靠,抗干扰强、不掉线。
模块内置32位的高性能ARM微处理器,它不但完成8通道、12位电流采集,而且支持固件升级功能,为后期功能升级和bug修复提供技术保证。
Qt上位机程序设计
Qt开发环境介绍
Qt是一个跨平台C++图形用户界面应用程序开发框架。它既可开发GUI程序,也可用于开发非GUI程序,提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。它是面向对象的框架,使用特殊的代码生成扩展以及一些宏,易于扩展,允许组件编程。
软件使用方法

图2 软件界面
软件界面如图2所示,操作方法如下:
1、在Port里设置端口(商品号由查询设备管理器获得);
2、在Baudrate里面设置波特率,一般固定为9600;
3、在Parity里面设置奇偶校验,一般固定为None(无校验);
4、在 Stop Bits里面设置停止位,一般固定为1(一个停止位);
5、在Address里面设置从机地址,固定为1;
6、点击Open按键,自动连接RS485,此按键变为Close;
7、点击Start按键,开始采集电流;
8、点击Stop按键,停止采集;
9、点击Close按键,则断开RS485,清除数据。
软件的核心代码
核心代码主要是数据的接收与显示,附录1所示。
其中,从87行到91行是通道分配的代码,分配置8个通道;105到112行是数据转换与显示代码。
测量采集演示及说明
配备工具或软件
- 1. 12V直流电源;
- 2. PT100铂电阻温度传感器;
- 3. SBWZ温度变送器;
- 4. RS485接口8通道4-20mA电流采集模块(GM1008)
- 5. USB转RS485模块(EVC8001)
- 6. Aligent 34401A台式六位半数字万用表;
- 7. 应用平台:Qt5.2.1(用户自行下载);
- 8. 电脑操作系统:Windows8.1 x32。
系统连接方法
本次实验主要采集两个通道的电流数据,为了保持图片连线清楚整洁,只接入1个SBWZ,另一个连接方式相同。系统主要硬件连接如图3所示。

图3 系统主要硬件连接图
1、电源(12V)导线1:正极连接温度变送器正接线柱,负极连接GM1008的接地端口(GND);
2、导线2:连接GM1008的接地端口与GM1008的供电处(POWER)的一个端口;
3、导线3:连接温度变送器与GM1008供电处(POWER)的另一个端口;
4、导线4:连接通道与温度变送器负接线柱;
5、导线5:连接EVC8001与GM1008的RS485模块的B-端口;
6、导线6:连接EVC8001与GM1008的RS485模块的A+端口;
7、方口USB线:连接EVC8001与电脑。
测试步骤
- 1. 根据系统主要硬件连接图(图3)连接各组件;
- 2. 接入两个温度变送器,GM1008配置两个通道,将CH1设定为开水数据采集通道,CH0设定为 打火机火焰数据采集通道;
- 3. 然后在程序界面设置好端口以及相关参数;
- 4. 将两个PT100铂电阻分别放入开水与打火机火焰中(具体操作为点击界面的Open按钮,连接以 后点Start按钮,系统会自动采集数据,操作简单方便)。
测试结果
实验采集数据界面如图4所示,为了验证测试结果的准确性以及得到准确的温度,对其进行了实验测试。

图4 实验采集数据图
(1)精度验证
为了验证所测电流值的准确性,把Aligent 34401A 台式六位半数字万用表串联到SBWZ温度变送器后端的电路中,将万用表的电流读数与上位机显示的电流值进行对比。实验结果如表1所示,经过多次实验,两组数据结果基本相同。

(2)实验验证
由SBWZ温度变送器以及PT100铂电阻的量程之间的关系,得出实际测得电流与温度之间符合关系式:
y=25*x-100
根据测得的电流值,计算得到所测水温约为93℃,火焰约为394℃(由于火焰温度高于PT100的最大测量值,所以到19mA以后停止实验,以免损坏设备),测试结果与实际相符。
总结
本应用系统的测试成功,充分证明了在Qt开发环境下基于RS485的4-20mA电流采集是可行的,上位机软件制作的界面使得测量的操作简单,数据清晰,便于用户对工业自动化系统的数据进行实时监控,满足行业对数据的需求。
参考资料
- 《Qt Creator快速入门》
- 《C程序设计语言》
相关资源下载
1、Qt下载地址:
2、GM1008 简易手册:
http://files.cnblogs.com/files/xiaomagee/GM1008%E7%AE%80%E6%98%93%E6%89%8B%E5%86%8CV1.0.pdf
3、GM1008 用户手册:
http://files.cnblogs.com/files/xiaomagee/GM1008%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8CV1.0.pdf
4、GM1008 购买地址:
https://item.taobao.com/item.htm?spm=a1z10.3c.w4002251610686.9.zoJaPi&id=522203245449
5、本资料源代码包、PDF 文档下载:
链接:http://pan.baidu.com/s/1ge2OAbx密码:739s
附录1:数据的接收与显示代码

【应用笔记】【AN005】Qt开发环境下基于RS485的4-20mA电流采集的更多相关文章
- 【应用笔记】【AN004】VB环境下基于RS-485的4-20mA电流采集
版本:第一版作者:周新稳 杨帅 日期:20160226 =========================== 本资料高清PDF 下载: http://pan.baidu.com/s/1c1uuhLQ ...
- 【应用笔记】【AN001】VC#开发环境下基于以太网的4-20mA电流采集(基于modbus tcp 协议)
版本:第一版 作者:毛鹏 杨帅 日期:20151108 简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍了以太网接口的4-20mA电流采集模块在VC#环境下进行温 ...
- 配置Qt开发环境下的OpenCV开发
1.使用CMake工具(http://www.cmak.org),选择MinGW Makefile. *一定要注意编译的版本要与Qt的mingw32的版本相同.否则容易出现undefined refe ...
- 【笔记】.NET开发环境下使用PostgreSQL+Oracle_fdw 实现两个数据库之间数据交互操作(二)
一 新的可视化工具 因为前文所提到的,看不到外部服务器和外部表的问题,我更换了可视化工具. 好用的新工具PostgreSQL Maestro! 当然如此好用的工具不是免费的,如果想免费使用还请自己去找 ...
- 开发环境下的 Kubernetes 容器网络演进之路
马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech 使用 Docker+Kubernetes 来简化开发人员的工作流,使应用更加快速地迭代,缩短发布周期,在很多研发团队中已经是常见的做法. 如果 ...
- Ubuntu 12.04下搭建Qt开发环境
http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...
- windows下VisualStudio和QtCreator搭建Qt开发环境
一.简介 集成开发平台IDE都有各自的长处,编写Qt程序可根据自己的喜好来选择相应的IDE.下述文章都是装载博友的文章,其中有很多细节还得自己调整. 二.详解 1.VisualStudio搭建Qt开发 ...
- 【Qt开发】Linux下Qt开发环境的安装与集成
近期工作需要在Linux下用Qt进行C++开发,所以就在linux下尝试装QT开发环境.本人用的linux是CentOS 6.5.现在对安装过程做出总结.有两种安装方式,下面分别详述: 1 图形化安装 ...
- 初学Qt——vs2012开发环境下的窗体跳转
最近接了份外快,要求使用vs+qt开发一个简单的数据管理系统.qt开发使用的语言是c++,然而c++只是大一第二学期有教过而已,基本也差不多忘光了,废话不多说,讲下今天遇到的问题吧 如标题所说,窗体跳 ...
随机推荐
- 忙里偷闲写的小例子---读取android根目录下的文件或文件夹
最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还要搞,自己的东西还在文档阶段,真的是让人想死啊!! 近半个月来,C#这方面的编码比较多,android和 ...
- C++11 中值得关注的几大变化(详解)
源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里. ...
- CTreeCtrl获得鼠标点击时的节点
原文链接: http://blog.csdn.net/lcalqf/article/details/21321923 1.添加图标 HICON icon[10]; icon[0]=AfxGetApp( ...
- Redis 的安装与使用(单节点)
Redis 的安装与使用(单节点) 环境:CentOS 6.5 Redis 版本:redis-3.0 (考虑到Redis3.0 在集群和性能提升方面的特性,rc 版为正式版的候选版,而且 很快就出 ...
- Python 文件 seek() 方法
概述 Python 文件 seek() 方法用于移动文件读取指针到指定位置. 语法 seek() 方法语法如下: fileObject.seek(offset[,whence]) 参数 offset ...
- javaScript的变量
1.声明 用 var 或 let 声明的未赋初值的变量,值会被设定为undefined(译注:即未定义值,本身也是一个值) 试图访问一个未初始化的变量会导致一个 ReferenceError 异常被抛 ...
- MongoDB常用操作一查询find方法(转)
来:http://blog.csdn.net/wangli61289/article/details/40623097 https://docs.mongodb.org/manual/referenc ...
- talend 连接mysql数据库没有权限
使用talend连接一个mysql数据库,提示没有权限,最后发现mysql服务器的配置中只监听了127.0.0.1的端口,拒绝非本地的请求.通过将/etc/mysql/my.cnf中的bind_add ...
- SecureCRT中使用 rz 上传文件 遇到 rz: command not found 的解决办法
-bash: rz: command not foundrz命令没找到?执行sz,同样也没找到. 安装lrzsz: # yum -y install lrzsz 现在就可以正常使用rz.sz命令上传. ...
- 给现有MVC项目增加Web API支持
在MVC4中自带了Web API不再需要从Nuget中下载. Step1:增加System.Web.Http,System.Web.Http.WebHost,System.Net.Http三个程序集的 ...