应用笔记AN004VB环境下基于RS-485的4-20mA电流采集
Posted 银杏公司-XiaomaGee 的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用笔记AN004VB环境下基于RS-485的4-20mA电流采集相关的知识,希望对你有一定的参考价值。
版本:第一版作者:周新稳 杨帅 日期:20160226
===========================
本资料高清PDF 下载:
http://pan.baidu.com/s/1c1uuhLQ
源代码包下载:
===========================
简介
本应用笔记主要说明如何在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程序设计语言》
相关资源下载
1、Visual 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
附录1:CRC校验代码
|
|
|
以上是关于应用笔记AN004VB环境下基于RS-485的4-20mA电流采集的主要内容,如果未能解决你的问题,请参考以下文章
西门子200PLC 用的是PPI-RS485 还是PPI-RS232?我用PPI-485与笔记本的USB通讯不是啊 ,用的是PC/PPI通讯协
Python 3.4.4 学习笔记(004)python manuals/the python tutorial -- 3. An Informal Introduction to Python(示例