版本:第一版作者:周新稳 杨帅 日期: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

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

  1. 【应用笔记】【AN005】Qt开发环境下基于RS485的4-20mA电流采集

    简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍在Qt开发环境下基于RS485实现4-20mA电流采集,实现WINDOWS平台对数据的采集.分析及显示. 系统组成 ...

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

    本文是基于已构建的struts2项目基础上整合 spring+hibernate,若读者还不熟悉struts2项目,请先阅读 eclipse环境下基于tomcat-7.0.82构建struts2项目 ...

  3. .NET环境下基于RBAC的访问控制

    .NET环境下基于RBAC的访问控制 Access Control of Application Based on RBAC model in .NET Environment 摘 要:本文从目前信息 ...

  4. Windows 环境下基于 nginx 的本地 PyPI 源

    Windows 环境下基于 nginx 的本地 PyPI 源的搭建: 1.登录 nginx 官网,下载安装包

  5. CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点 以下 ...

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

    简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍了以太网接口的4-20mA电流采集模块在VC++环境下进行温度采集,实现WINDOWS平台对数据的采集.分析及显示 ...

  7. 【应用笔记】【AN001】VC#开发环境下基于以太网的4-20mA电流采集(基于modbus tcp 协议)

    版本:第一版 作者:毛鹏 杨帅 日期:20151108 简介 4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用.本文主要介绍了以太网接口的4-20mA电流采集模块在VC#环境下进行温 ...

  8. Go学习笔记(一):Ubuntu 环境下Go的安装

    本文是根据<Go Web 编程>,逐步学习 Ubuntu 环境下go的安装的笔记. <Go Web 编程>的URL地址如下: https://github.com/astaxi ...

  9. [Done]SnowFlake 分布式环境下基于ZK构WorkId

    Twitter 的 Snowflake  大家应该都熟悉的,先上个图: 时间戳 序列号一般不会去改造,主要是工作机器id,大家会进行相关改造,我厂对工作机器进行了如下改造(估计大家都差不多吧,囧~~~ ...

随机推荐

  1. mongodb学习04 操作详解(2)

    查找文档 筛选查找 db.collection.find(); 返回一个集合中文档的子集,子集的 范围从 0 个文档到整个集合; db.collection.findOne(); 返回筛选的一个文档; ...

  2. 01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

    1. Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字(被Java赋予特殊意义的单词,注意所有关键字都是小写):   goto和const保留了它们,但是 ...

  3. html中frameset的详细使用方法

    http://blog.csdn.net/csb5201314/article/details/5695417

  4. Spring进阶—如何用Java代码实现邮件发送(二)

    http://www.cnblogs.com/itsource/p/4266905.html

  5. HDU 3078 (LCA+树链第K大)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3078 题目大意:定点修改.查询树中任意一条树链上,第K大值. 解题思路: 先用离线Tarjan把每个 ...

  6. ACM Binary String Matching

    Binary String Matching 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Given two strings A and B, whose alp ...

  7. 【BZOJ2038】【2009国家集训队】小Z的袜子(hose) 分块+莫队

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...

  8. tornado 学习笔记1 引言

    从事软件开发这行业也快5年啦,其实从事的工作也不完全是软件开发,软件开发只是我工作中的一部分.其中包括课题研究.信息化方案设计.软件开发.信息系统监理.项目管理等工作,比较杂乱.开发的软件比较多,但是 ...

  9. 转 Datatables中文API——基本参数

    鉴于自己一直在使用datatables,发现这是个很不错的表格插件,但是好的东西都是英文的,所以我结合自己的使用经验,把官网的英文api做下简单的翻译,同时也希望大家把自己的使用经验一起分享出来,让我 ...

  10. $.ajax等相关用法

    下面是jquery一些方法的相关用法: $.ajax: $.ajax({ type: "GET", url: "url", data: {username:$( ...