zoukankan      html  css  js  c++  java
  • 【应用笔记】【AN001】VC#开发环境下基于以太网的4-20mA电流采集(基于modbus tcp 协议)

    版本:第一版 作者:毛鹏 杨帅 日期:20151108

    简介

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

    系统组成及工作原理

    系统组成主要包括PT100铂电阻、SBWZ温度变送器、4-20mA电流采集模块(GM4008)以及上位机软件组成,如图1所示。

    clip_image001[4]

    图1 系统组成框图

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

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

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

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

    系统工作过程中,当温度发生变化时,PT100铂电阻温度传感器的电阻值发生变化,其阻值经过SBWZ温度变送器转

    clip_image002

    换为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串口通信,该界面设计简洁清晰,操作简单,便于实现。

    clip_image004

    图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所示。

    clip_image005

    图3 系统主要硬件连接图

    测试步骤

    1. 根据系统主要硬件连接图(图3)连接各组件;

    2. 接入两个温度变送器,GM4008配置两个通道,将CH0设定为打火机火焰测试数据采集通道,CH1设定为热水数据采集通道;

    3. 然后在程序界面设置好IP以及端口;

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

    测试结果

    实验采集到的数据如图4所示,为了证明测试结果的准确性以及得到准确的温度,进行精度验证与实验验证算两个步骤。

    clip_image007

    图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#图解教程》

    相关资源下载

    1Visual 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]替换成 @

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

  • 相关阅读:
    汇编语言LAHF和SAHF指令
    JSONHelper
    【CSS】利用宽高比例的媒体查询
    swiftmailer时没有设置https的选项,才可以发送成功。在linux下面
    DevExpress
    IntelliJ IDEA2017 激活方法 最新的激活注册方式方法,破解,密钥
    vue.js 列表追加项写法
    RedisCache 缓存
    时间通用类 datetime
    LogHelper 日志
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/4954173.html
Copyright © 2011-2022 走看看