ADAM-4117快速入门手册-4-20模块知识及编程

4-20模块知识及编程,本文以ADAM-4117为例来说明

ADAM-4117快速入门手册

一、ADAM-4117概述

ADAM-411716A/D8通道的模拟量输入模块,可以采集电压、电流等模拟量输入信号,并且为所有通道都提供了独立的可编程的输入范围。在工业测量和监控的应用中,ADAM-4117具有良好的性价比。它不仅能够用于恶劣的环境中,而且还具有更加坚固型的设计。

ADAM-4117支持8路差分信号,还支持MODBUS协议。在模块的右侧有一个白色的拨码开关来设置初始化状态(INIT*)和正常工作状态的切换。ADAM-4117具有4-20ma0-20ma±20ma等电流量程,当

您需要测量电流时,不需要外接电阻,只需打开盒盖,按照电路板上的标识来设置跳线即可。

 

1

ADAM-4117快速入门手册-4-20模块知识及编程_第1张图片



ADAM-4117规格说明

AI 模拟量输入

l 有效分辨率:16

l 通道:8路差分,可独立设置量程

l 高共模电压:200Vdc

l 通讯协议:ASCII命令,Modbus协议

l 输入类型:mVV(支持单双极性),mA

l 输入量程:0~150mV, 0~500mV, 0~1V, 0~5V, 0~10V, 0~15V,±150 mV, ±500 mV,

±1V, ±5 V, ±10 V, ±15V, 0~20mA,±20 mA, 4~20mA

l 隔离电压:3000VDC

l 过压保护:±60V

l 采样速率:10/100 采样点每秒(通过测试软件设置)

l 输入内阻:电压20MΩ,电流120Ω

l 精确度:电压模式:±0.1% or better 电流模式:±0.2% or better

l 零点漂移:±6μV/

l 跨度漂移:±25 ppm/° C

l 共模抑制(CMR@50/60Hz dB min

l 内置看门狗

l 内置 TVS/ESD保护

l 功耗


跳线设置:

ADAM-4117测量电流时,需要跳线。将盒盖拆开,可以看到电路板上有八个跳线,按照下图或者按照电路板上的标识进行跳线,测量电流需要将跳线跳到“I”端,测量电压则需要保持跳线在“V”端的出厂设置不变。跳线完成后,可以使用万用表测量V+V-之间,正常应该有120Ω的电阻。

2

ADAM-4117快速入门手册-4-20模块知识及编程_第2张图片

二、ADAM-4117硬件连线
如果需要连接二线制变送器,可以参考下图的接线方法。如果变送器是电流变送器,请注意模块内部的电流跳线。

ADAM-4117快速入门手册-4-20模块知识及编程_第3张图片

ADAM-4117快速入门手册-4-20模块知识及编程_第4张图片
三、测试软件(Utility)的使用

ADAM-4117适用ADAM-4000-5000 Utility(old)ADAM .Net Utility(new). 下面以ADAM .Net Utility为例,演示ADAM-4117的安装、配置和测试过程。

1. Utility的安装

ADAM-4117盒子里附带的小光盘放入计算机的光驱中,取消自动播放,使用右键打开,先按照如下路径安装Microsoft DotNet framework,即下图中的dotnetfx.exe
安装完Microsoft .net fx之后,再安装测试软件Advantech Adam.Net Utility 注意:如果PCWin 2000/XP操作系统,需要运行的是Win 32下的安装文件


安装完成之后,可以通过如下路径打开Adam .net Utility


如果希望使用年代比较久一些的ADAM-4000-5000 Utility,也可以通过光盘上的如下路径安装这个测试软件:


2. Adam .net Utility的快速使用

Step 1 选择连接到ADAM-4117com口,点击上面的放大镜图标search 注意:如果使用串口扩展卡,扩展出来的com口序号较大(例如com5),可能需要您点击Utility上面Setup菜单中的refresh

按钮来显示所有的com

一般情况下,鼠标点击到com1时,右侧setting中的参数无需改变,除非您确认您已经修改了ADAM-4520以及ADAM-4117的串口通讯参数(例如波特率、数据位等)

:

 

 ADAM-4117快速入门手册-4-20模块知识及编程_第5张图片

Step 2 一般情况下,无需更改弹出窗口的Starting address,直接点击Start即可。这项参数的含义是从哪个RS-485地址开始搜索,一直搜索到Address 255为止。


Step 3 搜索到模块后,可以点击Cancel按钮取消搜索,点击左侧菜单中的模块名称进入模块配置页面。

 :

 

在上面的Utility画面中,可以配置RS-485 地址(Address)、波特率(Baudrate)、通讯协议(Procotol)等。修改完毕后,点击右上角的“Apply change”保存设置到模块的芯片里。

注意:上面截图中的ADAM-4117为初始化状态,所以可以修改波特率和通讯协议等参数。切换初始化状态的开关在模块右侧,拨到INIT为初始化状态(配置状态),拨到Normal为用户正常使用状态

。切换开关的操作必须在模块断电状态下进行才有效。


3. ADAM-4117MODBUS协议

ADAM-4117支持MODBUS RTU协议,在模块初始化状态的情况下,可以在Utility下通过“Protocol”项的下拉菜单将协议更改为“Modbus”

更改协议之后,将拨码开关拨到Normal,可以通过MODBUS寄存器地址4000140008来读取CH0CH8的数值。更加详细的MODBUS地址对照表参见ADAM-4100系列的英文手册。

Modbus协议读到的数值为16进制或10进制的整数,数值从0-65535,分别对应量程的上下限。例如,当量程为±10V时,如果输入的电压值为0V,则读取到的Modbus数值为32767
4. ADAM-4117 ASCII协议

ADAM-4117的拨码开关拨到Normal状态后上电,用鼠标点一下ADAM-4117所在的com口,再点一下上面的黄色闪电工具。

如果希望读取ADAM-4117全部8个通道的数值,可以使用的ASCII命令是“#”+“地址”+“回车(cr)”;例如当4117地址为1时,可以发送命令“#01(cr)”.

更加详细的ASCII指令表参见ADAM-4100系列英文手册。

图标,打开Terminal

:

ADAM-4117快速入门手册-4-20模块知识及编程_第6张图片


注意:在ADAM Utility中,已经默认在ASCII命令后面增加回车,所以看不出来需要使用回车。如果使用网络上的串口调试助手或自己编写程序,那么一定要在命令后面添加回车(对应的ASCII

0D)才会收到4117的回复。


5. 校准(警告:非必要无需自行校准!)

ADAM-4117出厂时已经经过校准,所以一般情况下,用户无需自行校准。当模块使用几年后,可能会产生一些零点漂移,在这种情况下,如果您有标准信号源,您可以自行校准,也可以寄到研华维

修部门来校准。

校准过程如下:


Step1:将模块右侧的拨码开关拨到INIT状态

Step2:点击Zero calibration按钮,会弹出一个对话框提示请提供0.0mV的电压到模块的CH0通道。此时,在CH0通过标准信号源接入0.0mV的信号后,点击“Apply”

如果您没有接入标准信号源,不小心误点了Zero calibration按钮,请点击弹出窗口右上角的红叉,退出校准过程。务必不要在没有外接0.0mV信号的情况下点击“Apply”按钮!!!!!

注意:如果您使用的不是+/-10V的量程,需要您在CH0输入的信号可能不是0mV,请您按照弹出对话框的提示来输入实际信号!

:

ADAM-4117快速入门手册-4-20模块知识及编程_第7张图片


Step3:点击Span calibration按钮,会弹出一个对话框提示请提供10.0V的电压到模块的CH0通道。此时,在CH0通过标准信号源接入10.0V的信号后,点击“Apply”

如果您没有接入标准信号源,不小心误点了Zero calibration按钮,请点击弹出窗口右上角的红叉,退出校准过程。务必不要在没有外接10.0mV信号的情况下点击“Apply”按钮!!!!!

注意:如果您使用的不是+/-10V的量程,需要您在CH0输入的信号可能不是0mV,请您按照弹出对话框的提示来输入实际信号!

:

ADAM-4117快速入门手册-4-20模块知识及编程_第8张图片

四、ADAM-4100的软件编程

ADAM-4117的编程,主要的流程就是通过串口发出命令,然后收取模块的回复。当使用Modbus协议时,通过串口发出的命令就是Modbus命令,具体可以参考Modbus RTU的标准协议内容,由于是公开

的通用协议,在此不再赘述。如果使用VS.Net 2003/2005Modbus进行编程,可以参考下面Step3的例程。


下面主要讲解如何通过ASCII协议来对ADAM-4117模块进行编程。 注意:更加详细的ASCII指令表参见ADAM-4100系列英文手册。

Step1 使用Utility上的Terminal功能测试(参见上面3.4小节中的内容),确认ADAM-4117配置正确,可以接收ASCII命令。如果使用Visual Studio6.0编程,请参考Step2的内容;如果使用Visual

Studio200/2005,请参考Step3.

Step2 (使用VS6.0编程)参考ADAM-4100系列英文手册18-23页的内容,有VB 6.0编程的讲解。

:

 ADAM-4117快速入门手册-4-20模块知识及编程_第9张图片

 

如果使用VCLabview等编程,可以参考如下的程序流程图进行编程

:

 ADAM-4117快速入门手册-4-20模块知识及编程_第10张图片ADAM-4117快速入门手册-4-20模块知识及编程_第11张图片

Step3 (使用VS2003/2005编程)安装光盘里的ADAM .Net class library,安装之后可以在C盘的如下路径找到VBVC#的例程:

C:\Program Files\Advantech\Adam.NET Class Library\VS2003\Samples\Win32


对于ADAM-4117模块,

使用ASCII协议时,可以参考Adam4017P_18PComporttest例程; 使用Modbus协议时,可以参考ModbusRTU例程。


五、ADAM-4117的特殊功能

1. 高速(100Hz)采样:通过Utility里的“Integration Time”更改,将50/60Hz更改为“High Speed”,即为4117的高速采样模式

2. 地址模式:在带电状态下,将4117右侧的拨码开关拨到INIT状态,41178个绿色小指示灯会以二进制的形式显示当前4117的地址

3. Adam .net Utility的画图功能:点击Utility画面上的“Trend Log”按钮,可以选择通道进行画图,在画图开始之前点击“Save”按钮,可以将绘制图形的数据以Excel表格的形式保存下来。

 

六编程部分源码

源码部分以.net(4.0)为例说明

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Advantech.Adam;

using Advantech.Common;

using Advantech.Protocol;

using System.Windows.Forms;

 

namespace AdditionModule

{

    public class _4_20Module

    {

        public int m_iCom, m_iAddr, m_iCount;

        private Adam4000Config m_adamConfig;

        //private Adam4000Type m_Adam4000Type;

        private AdamCom adamCom;

        bool isOpen = false;

        public _4_20Module(int port)

        {

            m_iCom = port;        // using COM1

            m_iAddr = 1;  // the slave address is 1

            m_iCount = 0; // the counting start from 0

            //m_Adam4000Type = Adam4000Type.Adam4117;

            adamCom = new AdamCom(m_iCom);

            adamCom.Checksum = false; // disbale checksum

            //Open();

        }

        ///

        ///打开a4-20

        ///

        ///

        public bool Open()

        {

            adamCom.OpenComPort();

            //if (adamCom.OpenComPort())

            //{

            isOpen = true;

            adamCom.SetComPortState(Baudrate.Baud_9600, Databits.Eight, Parity.None, Stopbits.One);

            // set COM port timeout

            adamCom.SetComPortTimeout(500, 500, 0, 500, 0);

            m_iCount = 0; // reset the reading counter

            // get module config

            adamCom.Configuration(m_iAddr).GetModuleConfig(out m_adamConfig);

            //if (!adamCom.Configuration(m_iAddr).GetModuleConfig(out m_adamConfig))

            //{

            //    adamCom.CloseComPort();

            //    MessageBox.Show("Failed to get module config!", "Error");

            //    return false;

            //}

            return true;

            //}

            //return true;

        }

        ///

        ///4-20

        ///

        public void Close()

        {

            adamCom.CloseComPort();

            isOpen = false;

        }

        ///

        /// 4-20读原-始数据

        ///

        ///

        ///

        public bool Read(out  float[] response)

        {

            if (!isOpen)

            {

                Open();

            }

            response = new float[8];

            Adam4000_ChannelStatus[] status;

            ushort[] response2 = new ushort[8];

            adamCom.AnalogOutput(m_iAddr).GetValues(1, 8, out response2);

            return adamCom.AnalogInput(m_iAddr).GetValues(8, out response, out status);

        }

    }

}

 

 

 

你可能感兴趣的:(C#)