【应用笔记】【AN001】VC#开发环境下基于以太网的4-20mA电流采集(基于modbus tcp 协议)...
版本:第一版 作者:毛鹏 杨帅 日期:20151108
简介
4-20mA电流环具有广泛的应用前景,在许多行业中都发挥着重要作用。本文主要介绍了以太网接口的4-20mA电流采集模块在VC#环境下进行温度采集,实现WINDOWS平台对数据的采集、分析及显示。
系统组成及工作原理
系统组成主要包括PT100铂电阻、SBWZ温度变送器、4-20mA电流采集模块(GM4008)以及上位机软件组成,如图1所示。
图1 系统组成框图
PT100铂电阻温度传感器:利用铂金属阻值随温度的变化而变化的特性制成的一种温度传感器,主要用来测量温度的变化量。
SBWZ温度变送器:一种现场安装式温度变送单元,主要将铂电阻的信号变换成线性的4-20mA的输出信号。
4-20mA电流采集模块(GM4008):以太网接口的GM4008电流采集模块,主要实现数据的传输,并通过以太网接口与上位机进行通讯。
上位机:制作上位机界面,实现被测数据的采集、分析和显示。
系统工作过程中,当温度发生变化时,PT100铂电阻温度传感器的电阻值发生变化,其阻值经过SBWZ温度变送器转
换为4-20mA的电流信号,并通过4-20mA电流采集模块(GM4008)与上位机通讯,从而实现温度的采集、分析及显示。
电流采集模块
系统采用以太网接口的8通道4-20mA电流采集模块(GM4008),不仅能更加快速、精确的把测量数据传送给上位机,保证系统的效率,而且可以使系统的信息传输更加稳定。
GM4008简介
GM4008 8通道4-20mA电流采集模块(以下简称模块)采用全电器隔离方案,配合高性能微处理器及8通道12位ADC在较小的体积下完成了电流测量功能。
模块内置高性能电源变换电路,供电电压范围宽至7.5V-36V,且效率高达90%以上。此特性为长时间使用的电源稳定性提供保障。模块内置1500V双隔离电源模块,使得供电输入、模拟测量精度、模块稳定性及通用性提供保证。
模块内置百兆以太网电路,可完成远距离4-20mA数据采集功能。长时间使用稳定可靠,抗干扰强、不掉线。
模块内置32位的高性能ARM微处理器,它不但完成8通道、12位电流采集,而且支持固件升级功能,为后期功能升级和bug修复提供技术保证。
VC#上位机程序设计
VC#开发环境介绍
该通信测试界面采用Visual studio2015(VC#)实现,软件界面如图2所示。Visual studio2015是微软公司推出的开发软件,具有基本完整的开发工具集,包括了如UML工具、代码管控工具、集成开发环境等工具,可实现基于C#的Modbus串口通信,该界面设计简洁清晰,操作简单,便于实现。
图2 软件界面
软件使用方法
软件界面如图2所示,操作方法如下:
1. 在IP Address里设置IP;
2. 在Port里面设置端口,一般固定为502端口;
3. 点击connect按键,此时会自动连接以太网,此按键变为disconnect;
4. 点击start按键,开始采集电流;
5. 点击stop按键,停止采集;
6. 点击disconnect按键后,则断开以太网,清除数据。
软件核心代码
(1)Modbus function3功能读取保持寄存器
Modbus function3功能读取保持寄存器如附录1所示,该段程序由一个调用函数组成,程序的第128至148行,是寄存器的设置。第149至第162行,是将数据存入寄存器并读取数据。第163至166是将data的数据转换成float类型存入value中。
(2)显示通道数据
显示通道数据代码如附录2所示,此段程序主要截取的为0通道显示数据,由三个主要函数组成,其余的7个通道可用与之相同的方法实现。
测量采集演示及说明
配备工具或软件
1. 12V直流电源;
2. 两个PT100铂电阻温度传感器;
3. 两个SBWZ温度变送器;
4. 一个以太网接口8通道4-20mA电流采 集模块(GM4008);
5. Aligent 3440A台式六位半数字万用表;
6. 开发环境:Visual Studio 2015(所需软件 由用户自行下载);
7. 操作系统:WIN7以上。
系统连接方法
本次实验主要采集两个通道的电流数据,为了保持图片连线清楚整洁,只接入1个SBWZ,另一个连接方式相同。系统主要硬件连接如图3所示。
图3 系统主要硬件连接图
测试步骤
1. 根据系统主要硬件连接图(图3)连接各组件;
2. 接入两个温度变送器,GM4008配置两个通道,将CH0设定为打火机火焰测试数据采集通道,CH1设定为热水数据采集通道;
3. 然后在程序界面设置好IP以及端口;
4. 将两个温度变送器的PT100铂电阻分别放入热水中与打火机火焰中(具体操作为点击界面的connect按钮,连接以后点start按钮,系统会自动连接以太网采集数据,操作简单方便)。
测试结果
实验采集到的数据如图4所示,为了证明测试结果的准确性以及得到准确的温度,进行精度验证与实验验证算两个步骤。
图4 实验采集数据图
(1)精度验证
为了验证所测电流值的准确度,把Aligent 34401A 六位半高精度万用表串联到SBWZ温度变送器后端的电路中,将万用表的电流读数与上位机显示的电流度数进行对比。实验结果如表1所示,经过多次实验,两组数据结果基本相同。
表1 实验各项数据表
被测对象 |
GM4008测量值 |
万用表 测量值 |
换算温度 |
火焰(CH0) |
19.57mA |
19.58mA |
389℃ |
热水(CH1) |
7.60mA |
7.61mA |
90℃ |
(2)实验验证
由SBWZ温度变送器以及PT100铂电阻的量程之间的关系,得出实际测得电流与温度之间符合关系式:
y=25*x-100
对应测量的电流值对照计算知所测水温为大约90℃,火焰大约为389℃(由于火焰温度高于量程,所以到19mA以后停止实验,以免损坏设备)与实际相符。
由测试可知:本系统基于VC#开发环境通过以太网测得的数据是真实可靠的,可应用于实际中。
总结
本文通过Visual studio 2015上位机编程实现了VC#环境下以太网的Modbus通信,可完成工业自动化控制系统中的远程数据采集及监测等功能。该通信系统编程模式简单、易于使用、有较强的实用性。
参考资料
1. 《C#高级编程》
2. 《C#图解教程》
相关资源下载
1、Visual Studio 2015下载地址:
https://www.visualstudio.com/downloads/download-visual-studio-vs
2、GM4008 简易手册:
http://files.cnblogs.com/files/xiaomagee/GM4008%E7%AE%80%E6%98%93%E6%89%8B%E5%86%8CV1.0.pdf
3、GM4008 用户手册:
http://files.cnblogs.com/files/xiaomagee/GM4008%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8CV1.0.pdf
4、GM4008 购买地址:
https://item.taobao.com/item.htm?id=522185223217
==================================
本文完整PDF版 及 代码包下载:
完整版 PDF 下载:
http://pan.baidu.com/s/1mgLCzmo
源代码包下载:(基于 VC#2015)
http://pan.baidu.com/s/1i3hMXvf
若下载失效,请发邮件索取: gingko[AT]vip.163.com [AT]替换成 @
==================================
【应用笔记】【AN001】VC#开发环境下基于以太网的4-20mA电流采集(基于modbus tcp 协议)...相关推荐
- 基于node.js开发环境下创建及开发vue.js项目的环境配置骤
基于node.js开发环境下创建开发vue.js项目的环境配置骤如下: 步骤一:安装node.js,安装完后运行node -v命令检安装node的查版本,判断是否安装成功.Npm是node.js包管理 ...
- 痞子衡嵌入式:在MDK开发环境下将关键函数重定向到RAM中执行的几种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在MDK开发环境下将关键函数重定向到RAM中执行的几种方法. 这个关键函数重定向到 RAM 中执行系列文章,痞子衡已经写过 <IA ...
- Polyworks脚本开发学习笔记(一)-脚本开发环境
Polyworks脚本开发学习笔记(一)-脚本开发环境 背景 Polyworks的扫描尺寸测量分析模块是我工作中经常用到的一个模块,我不是做测量的,但是利用Polyworks对扫描获得的点云来进行尺寸 ...
- 微信小程序中开发环境下的POST请求
写在前面 不得不说,开发环境下,微信小程序要是在发起网络请求的话,遇到的坑也是有的.尽管,微信提供了十分便捷的API 供开发者调用.今天在小程序中写了一个表单,需要提交到服务器上,于是发起了一个 PO ...
- spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)...
不多说,直接上干货! 前言 其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. ...
- Redis学习笔记~Redis在windows环境下的安装
Redis是一个key-value的存储系统,它最大的特点就是可以将数据序列化到文件中. redis存储在服务器的内存或者文件中,它不是session,不是cookies,它只是个更安全,更稳定,更可 ...
- Myeclipse开发环境下文件中出现的提示错误与解决方法:The import javax.servlet cannot be resolved?
Myeclipse开发环境下文件中出现的提示错误与解决方法:The import javax.servlet cannot be resolved? 参考文章: (1)Myeclipse开发环境下文件 ...
- 解决thinkphp在开发环境下文件模块找不到的问题
win10系统下,phpstudy开发环境下小问题描述: 找不到public公共模块. Not Found The requested URL /public/admin/login.html was ...
- 在win7系统 Keil 开发环境下 Jlink 仿真器连不上解决办法
Keil 开发环境下 Jlink仿真器,在win7系统下,仿真器连不上解决办法 进入设备管理器,发现黄色问号,即windows不识别设备,分别右键点击属性,更新驱动程序.在安装keil目录下自动查找, ...
最新文章
- KDD Cup 2021城市大脑赛题解析!报名倒计时3天
- python开发工具排名-Python程序员必备的四款开发工具
- MySQL带关系运算符的查询
- Java文件读取 中文乱码
- js 月份加6个月_美国切削工具6月份订单较上月增加10.1
- [转载]EmitMapper,AutoMapper,NLiteMapper和手工映射性能大比拼
- Extjs, each中实现break、continue
- useradd和adduser的区别
- python3 input函数
- SAP 标准TCODE ME2L ME2N VL31等设置清单范围默认值(ME2L默认ALV显示)
- 教学用计算机房活荷载,计算机机房承重标准及承重计算方法
- 微服务,软件应用开发的新纪元
- 计算机网络局域网的组建实验报告,小型局域网组建实验报告
- 一、VMware及win10虚拟机的安装及环境配置
- 【每日一题】一起冲击蓝桥杯吧——Day1【蓝桥真题】
- iOS 开发中遇到的各种证书的详细说明以及申请讲解
- 在java中如何对数组实现添加、删除和插入操作呢?
- QStackWidget使用 踩坑
- 使用hive制作一张日历表
- 联机/中断网络磁盘驱动器对话框
热门文章
- 四种方式主导你的第一个敏捷项目
- Java JDBC
- WINDOWS故障修复台 免去重装的烦恼
- 编写Java程序最容易犯的21种错误
- 实现当UILable的内容超出其范围后自动滚动效果
- 第一个程序 - Windows程序设计(SDK)001
- JDK1.5官方下载_JDK5官方下载_JDK1.5API(chm)下载_JDK5APICHM中文参考下载_JDK1.5下载_JDK5下载...
- 【实战】烂泥:net use命令使用(一)
- 每天5分钟玩转python3算法:二分查找法
- 数独高阶技巧入门之四:简单异数链