完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ADAM-4117是什么?
ADAM-4117测量电流的跳线该如何去设置? ADAM-4117硬件是怎样进行连线的 ADAM-4117的安装、配置和测试过程是怎样的? |
|
相关推荐
1个回答
|
|
4-20模块知识及编程,本文以ADAM-4117为例来说明
ADAM-4117快速入门手册 一、ADAM-4117概述 ADAM-4117是16位A/D、8通道的模拟量输入模块,可以采集电压、电流等模拟量输入信号,并且为所有通道都提供了独立的可编程的输入范围。在工业测量和监控的应用中,ADAM-4117具有良好的性价比。它不仅能够用于恶劣的环境中,而且还具有更加坚固型的设计。 ADAM-4117支持8路差分信号,还支持MODBUS协议。在模块的右侧有一个白色的拨码开关来设置初始化状态(INIT*)和正常工作状态的切换。ADAM-4117具有4-20ma、0-20ma、±20ma等电流量程,当 您需要测量电流时,不需要外接电阻,只需打开盒盖,按照电路板上的标识来设置跳线即可。 图1 ADAM-4117规格说明 AI 模拟量输入 l 有效分辨率:16位 l 通道:8路差分,可独立设置量程 l 高共模电压:200Vdc l 通讯协议:ASCII命令,Modbus协议 l 输入类型:mV,V(支持单双极性),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硬件连线 如果需要连接二线制变送器,可以参考下图的接线方法。如果变送器是电流变送器,请注意模块内部的电流跳线。 三、测试软件(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: 注意:如果PC是Win 2000/XP操作系统,需要运行的是Win 32下的安装文件 安装完成之后,可以通过如下路径打开Adam .net Utility: 如果希望使用年代比较久一些的ADAM-4000-5000 Utility,也可以通过光盘上的如下路径安装这个测试软件: 2. Adam .net Utility的快速使用 Step 1 选择连接到ADAM-4117的com口,点击上面的放大镜图标search: 注意:如果使用串口扩展卡,扩展出来的com口序号较大(例如com5),可能需要您点击Utility上面Setup菜单中的refresh 按钮来显示所有的com口 一般情况下,鼠标点击到com1时,右侧setting中的参数无需改变,除非您确认您已经修改了ADAM-4520以及ADAM-4117的串口通讯参数(例如波特率、数据位等) 图: 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-4117的MODBUS协议 ADAM-4117支持MODBUS RTU协议,在模块初始化状态的情况下,可以在Utility下通过“Protocol”项的下拉菜单将协议更改为“Modbus”。 更改协议之后,将拨码开关拨到Normal,可以通过MODBUS寄存器地址40001~40008来读取CH0~CH8的数值。更加详细的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 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,请您按照弹出对话框的提示来输入实际信号! 图: Step3:点击Span calibration按钮,会弹出一个对话框提示“请提供10.0V的电压到模块的CH0通道”。此时,在CH0通过标准信号源接入10.0V的信号后,点击“Apply”。 如果您没有接入标准信号源,不小心误点了Zero calibration按钮,请点击弹出窗口右上角的红叉,退出校准过程。务必不要在没有外接10.0mV信号的情况下点击“Apply”按钮!!!!! 注意:如果您使用的不是+/-10V的量程,需要您在CH0输入的信号可能不是0mV,请您按照弹出对话框的提示来输入实际信号! 图: 四、ADAM-4100的软件编程 ADAM-4117的编程,主要的流程就是通过串口发出命令,然后收取模块的回复。当使用Modbus协议时,通过串口发出的命令就是Modbus命令,具体可以参考Modbus RTU的标准协议内容,由于是公开 的通用协议,在此不再赘述。如果使用VS.Net 2003/2005对Modbus进行编程,可以参考下面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编程的讲解。 图: 如果使用VC、Labview等编程,可以参考如下的程序流程图进行编程 图: Step3 (使用VS2003/2005编程)安装光盘里的ADAM .Net class library,安装之后可以在C盘的如下路径找到VB和VC#的例程: C:Program FilesAdvantechAdam.NET Class LibraryVS2003SamplesWin32 对于ADAM-4117模块, 使用ASCII协议时,可以参考Adam4017P_18P或Comporttest例程; 使用Modbus协议时,可以参考ModbusRTU例程。 五、ADAM-4117的特殊功能 1. 高速(100Hz)采样:通过Utility里的“Integration Time”更改,将50/60Hz更改为“High Speed”,即为4117的高速采样模式 2. 地址模式:在带电状态下,将4117右侧的拨码开关拨到INIT状态,4117的8个绿色小指示灯会以二进制的形式显示当前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; // di***ale checksum //Open(); } ///《summary》 ///打开a4-20 ///《/summary》 ///《returns》《/returns》 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; } ///《summary》 ///关4-20 ///《/summary》 public void Close() { adamCom.CloseComPort(); isOpen = false; } ///《summary》 /// 4-20读原-始数据 ///《/summary》 ///《param nam》《/param》 ///《returns》《/returns》 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); } } } |
|
|
|
只有小组成员才能发言,加入小组>>
934浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 16:48 , Processed in 0.686507 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号