【应用笔记】【AN004】VB环境下基于RS-485的4-20mA电流采集

版本:第一版作者:周新稳 杨帅 日期:20160226

===========================

本资料高清PDF 下载:

http://pan.baidu.com/s/1c1uuhLQ

源代码包下载:

http://pan.baidu.com/s/1LSuXw

===========================

简介

本应用笔记主要说明如何在VB开发环境下基于RS485实现4-20mA电流采集。

系统组成及工作原理

系统组成如图1所示,主要包括 PT100铂电阻温度传感器、SBWZ温度变送器、4-20mA电流采集模块(GM1008)、USB转RS485模块(EVC8001)以及上位机VB 。

图1 系统组成框图

PT100铂电阻温度传感器:利用铂金属阻值随温度变化而变化的特性制成的一种温度传感器,主要用来测量温度的变化量。

SBWZ温度变送器:一种现场安装式温度变送单元,主要将铂电阻的信号变换成线性4-20mA的输出信号。

4-20mA电流采集模块(GM1008):RS485接口的GM1008电流采集模块,主要实现数据的采集与传输,并通过RS485接口与上位机进行通讯。

USB转RS485模块(EVC8001):实现GM1008的RS485接口与上位机的USB接口成功连接。

上位机VB:制作上位机界面,实现被测数据的采集、分析和显示。

系统工作过程中,当温度发生变化时,

PT100铂电阻温度传感器的电阻值发生变化,其阻值经过SBWZ温度变送器转换为电流信号,并通过4-20mA电流采集模块(GM1008)及USB转RS485模块(EVC8001)与上位机通讯,从而实现DI电流的采集、分析及显示。

电流采集模块

系统采用RS485接口的8通道4-20mA电流采集模块(GM1008),不仅能更加快速、精确的把测量数据传送给上位机,保证系统的效率,而且可以使系统的信息传输更加稳定。

GM1008简介

GM1008 8通道4-20mA电流采集模块(以下简称模块)采用全电器隔离方案,配合高性能微处理器及8通道12位ADC在较小的体积下完成了电流测量功能。

模块内置高性能电源变换电路,供电电压范围宽至7.5V-36V,且效率高达90%以上。此特性为长时间使用的电源稳定性提供保障。模块内置1500V双隔离电源模块,使得供电输入、模拟测量电路及通信接口三者之间相互隔离,此特性为测量精度、模块稳定性及通用性提供保证。

模块内置基于磁耦合隔离技术的高品质RS485电路,长期使用稳定可靠,抗干扰强、不掉线。

模块内置32位的高性能ARM微处理器,它不但完成8通道、12位电流采集,而且支持固件升级功能,为后期功能升级和Bug修复提供技术保证。

VB上位机程序设计

VB开发环境介绍

VB全称为Visual Basic,是一种由微软公司开发的包含协助开发环境的时间驱动编程语言,拥有图形用户界面和快速应用程序开发系统,可以轻易的使用DAO、RDO、ADO连接数据库,或轻松的创建Active控件。鉴于VB的这些性能满足本系统的应用需求,故在此选择VB作为本实验的上位机开发环境。

软件使用方法

软件界面如图2所示。

图2 软件界面

软件的具体操作方法如下:

1. 在Port里设置端口(端口号由查询设备管理器获得);

2. 在Baudrate里面设置波特率,一般固定为9600;                                                                  

3. 在Parity里面设置奇偶校验,一般固定为None(无校验);

4. 在Stop Bits里面设置停止位,一般固定为One(一个停止位);

5. 在Address里面设置从机地址,固定为1;

6. 点击Open按键,自动连接RS485,此按键变为Close;

7. 点击Start按键,开始采集电流;

8. 点击Stop按键,停止采集;

9. 点击Close按键,则断开RS485,清除数据。

软件核心代码

核心代码主要有两部分:CRC校验代码(见附录1)和数据处理代码(见附录2)。

1. CRC校验代码:CRC校验是为了保证数据的准确传输,其中CRC校验的方法有多种,本程序采取的是查表法,大大提高了校验速度。

2. 数据处理代码:其中modbus_fun3表示选择modbus的功能代码为3,是读取保持寄存器功能。此部分代码从214行到221行为modbus通信格式的寄存器设置部分,接下来是数据的发送命令和接收命令,以及后面对接收到的数据进行处理以方便以物理量的形式显示。

测量采集演示及说明

配备工具或软件

1. 12V电源

2. PT100铂电阻温度传感器

3. SBWZ系列温度变送器

4. RS485接口8通道4-20mA电流采集模块(GM1008)

5. USB转RS485模块(EVC8001)

6. Aligent 34401A台式六位半数字万用表

7. 应用平台:Visual Studio 2015社区版(自行下载)

8. 电脑操作系统:Windows 8.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配置两个通道,将CH0设定为开水数据采集通道,CH1设定为打火机火焰数据采集通道;

3. 然后在程序界面设置好端口以及相关参数(从机地址Address一般固定为1);

4. 将两个PT100铂电阻分别放入开水与打火机火焰中(具体操作为点击界面的Open按钮,连接以后点Start按钮,系统会自动采集数据,操作简单方便)。

测试结果

实验采集数据界面如图4所示,为了验证测试结果的准确性以及得到准确的温度,对其进行了实验测试。

图4 实验采集数据图

(1)精度验证

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

表1 实验各项数据表

被测对象


GM1008测量值


万用表 测量值


SBWZ 对应温度


水(CH0)


7.68mA


7.64mA


92℃


打火机(CH1)


19.67mA


19.65mA


393℃

(2)实验验证

由SBWZ温度变送器以及PT100铂电阻的量程之间的关系,得出实际测得电流与温度之间符合关系式:

y=25*x-100

测得的电流值对照计算知所测水温约为92℃,火焰约为393℃(由于火焰温度高于PT100的最大测量值,所以到19mA以后停止实验,以免损坏设备),测试结果与实际相符。

故由测试可知:本系统在VB开发环境基于RS485测得的数据是真实可靠的,可应用于实际中。

总结

本应用系统的测试成功,充分证明了在VB开发环境下基于RS485的4-20mA电流采集是可行的,上位机软件制作的界面使测量的操作简单,数据清晰,便于用户对工业自动化系统的数据进行实时的监控,满足行业对数据的需求。


参考资料

1. 《VB语言程序设计》

2. 《C程序设计语言》

相关资源下载

1Visual Studio 2015下载地址:

https://www.visualstudio.com/downloads/download-visual-studio-vs

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

附录1CRC校验代码

121 ‘CRC校验

122 Function crc(data() As Byte, length As Integer, ByRef ReturnDatalo As Byte, ByRef ReturnDatahi As Byte) As String

123 Dim CRC16Hi As Byte

124 Dim CRC16Lo As Byte

125 CRC16Hi = &HFF

126 CRC16Lo = &HFF

127 Dim i As Integer

128 Dim iIndex As Long

129

130 For i = 0 To length - 1

131 iIndex = CRC16Hi Xor data(i)

132 CRC16Hi = CRC16Lo Xor GetCRCHi(iIndex) ‘低位处理

133 CRC16Lo = GetCRCLo(iIndex) ‘高位处理

134 Next i

135 ReturnDatahi = CRC16Hi ‘CRC高位

136 ReturnDatalo = CRC16Lo ‘CRC低位

137

138 Return 1

139 End Function

205 ‘数据处理

206 Private Function modbus_fun3(start_address As Integer, read_number As Integer) As Integer

207 Dim sendbyte = New Byte() {0, 0, 0, 0, 0, 0, 0, 0}

208 Dim recvbyte(256) As Byte

209 Dim length As Int32

210 Dim data(24) As Int16

211 Dim crc_value As Int16

212 Dim i As Int16

213 Dim text As String

214 sendbyte(0) = 1 ‘单位标识符

215 sendbyte(1) = 3 ‘功能码

216 sendbyte(2) = start_address >> 8 ‘读寄存器起始地址

217 sendbyte(3) = start_address

218 sendbyte(4) = read_number >> 8 ‘读寄存器数量

219 sendbyte(5) = read_number

220

221 crc_value = crc(sendbyte, 6,sendbyte(7),sendbyte(6))

222 Try

223 text = ""

224 ‘发送命令

225 SerialPort1.Write(sendbyte, 0, 8)

226 ‘接收数据

227 length = SerialPort1.BytesToRead()

228 While (length < 53)

229 length = SerialPort1.BytesToRead()

230 End While

231 i = SerialPort1.Read(recvbyte, 0, length)

232 For k = 0 To 23

233 data(k) = (recvbyte(k * 2 + 3) * 256) + recvbyte(k * 2 + 4)

234 Next k

235 ‘数值转换

236 For i = 0 To 7

237 display_value(i) = (data(i * 3 + 2) / 100.0)

238 Next i

附录2:显示通道数据程序

239 Catch ex As Exception

240

241 End Try

242 Return 1

243 End Function

时间: 2024-10-09 10:35:45

【应用笔记】【AN004】VB环境下基于RS-485的4-20mA电流采集的相关文章

在windows环境下基于sublime text3的node.js开发环境搭建

首先安装sublime text3,百度一堆,自己找吧.理论上sublime text2应该也可以.我只能说一句:这个软件实在是太强悍了. 跨平台,丰富的插件体系,加上插件基本上就是一个强悍的ide了.目前我在使用的主要是Emmet.Python.还有一些格式化的插件(xml,json),加上这次安装的node.js. node.js的安装就不用多说了,直接http://nodejs.org/ 点击install下载window版本的安装程序后安装即可.默认的安装会将安装目录加到path环境变量

CentOS7.X环境下基于docker安装部署RabbitMQ集群

1.IP地址规划(将信息配置到/etc/hosts中)主机名 IP地址RabbitMQ01 192.168.8.131RabbitMQ02 192.168.8.132RabbitMQ03 192.168.8.133RabbitMQ04 192.168.8.1342.RabbitMQ集群安装(1)四个节点同时运行,下载RabbitMQ镜像[[email protected]~]# docker pull rabbitmq:3-management(2)四个节点分别运行,启动RabbitMQ容器 [

【应用笔记】【AN003】VC++环境下基于以太网的4-20mA电流采集

简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍了以太网接口的4-20mA电流采集模块在VC++环境下进行温度采集,实现WINDOWS平台对数据的采集.分析及显示. 系统组成及工作原理 系统组成主要包括PT100铂电阻.SBWZ温度变送器.4-20mA电流采集模块(GM4008)以及上位机软件组成,如图1所示. PT100铂电阻温度传感器:利用铂金属阻值随温度的变化而变化的特性制成的一种温度传感器,主要用来测量温度的变化量. SBWZ温度变送器:一种现场安装

《高可用MySQL》读书笔记1 – Windows环境下压缩版MySQL安装

近日在读O'REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天天都用,遇到的问题自然也不少(如主从不同步,Master宕机),但操作权限非常有限.有些东西,只有自己看了.做了,才能真正知道原理是什么,也才能更好的去把握. 本文是高可用MySQL的第一篇读书笔记,主要记录Windows环境下压缩版MySQL(基于安装版的傻瓜式安装过程这里不再提及)的安装过程. 1. 从官

Apache2.4版本环境下基于虚拟主机、ssl、用户控制

环境说明:此篇博客是基于编译安装httpd2.4博客基础上进行的 一.虚拟主机: 1.1基于host [[email protected] apache]# vim/etc/httpd24/httpd.conf Include/etc/httpd24/extra/httpd-vhosts.conf   #开启虚拟主机 #DocumentRoot"/www/htdocs"    #将中心主机注释掉 [[email protected] apache]# cd/etc/httpd24/ex

eclipse环境下基于已构建struts2项目整合spring+hibernate

本文是基于已构建的struts2项目基础上整合 spring+hibernate,若读者还不熟悉struts2项目,请先阅读 实现步骤: 第一步:引入spring所需jar包,如下图所示: 第二步:导入hibernate所需jar包,如下图中被选中jar文件: 第三步:导入struts-spring整合包,暂且就这么称呼吧 第四步:导入MySQL驱动包: 第五步:所有准备工作就绪后,接下来创建spring与hibernate配置文件,命名为applicationContext.xml,配置如下所

php学习笔记64bit win7 环境下搭建php编译环境XAMPP

最近项目需要,开始使用php来开发Apache服务器,所以赶鸭子上架,开始学习php,这里第一步当然是搭建一个php编译环境 电脑是thinkpad t440,64位的Windows7 企业版,XAMPP官网并没有64 Windows下集成安装包,之前尝试了各种方法,发现32位的安装包也可在在64位下使用,只是需要经过一定的配置. 首先当然是,下载xampp安装包,直接在官网上下载即可

【VUE】vue在vue-cli3环境下基于axios解决跨域问题

网上的绝大部分教程解决vue+axios跨域问题都不能直接适用vue-cli3.这是因为vue-cli3不一样的配置方式导致的. 如果是使用vue-cli3构建的项目,那么默认是没有config.js文件的.按照官方文档介绍,每个人可以通过在项目根目录下建立vue.config.js文件,配置属于自己的config文件. 之后按照网上其他的解决axios跨域问题的方案实施即可. // vue.config.js module.exports = { publicPath: '/', devSer

学习笔记:在Opencv下基于ORB的图像特征提取

1.什么是ORB特征提取 看这篇文章 http://www.cnblogs.com/ronny/p/4083537.html” 2.Opencv ORB的参数含义 #nfeatures - 最多提取的特征点的数量: #scaleFactor - 金字塔图像之间的尺度参数,类似于SIFT中的k: #nlevels – 高斯金字塔的层数: #edgeThreshold – 边缘阈值,这个值主要是根据后面的patchSize来定的,靠近边缘edgeThreshold以内的像素是不检测特征点的. #fi