八路4-20mA转Modbus TCP网络数据采集模块 IBF80
产品特点:
● 八路4-20mA输入Modbus TCP 通讯协议
● 四路开关量输入,两路开关量输出
● 内置网页功能,可以通过网页查询数据
● 可以通过网页设定模块数据
● 4-20mA信号输入与电源之间3000V隔离
● 宽电源供电范围:8 ~ 32VDC
● 可靠性高,编程方便,易于应用
● 标准DIN35导轨安装,方便集中布线
● 用户可在网页上设置模块IP地址和其他参数
● 网页登录可设置密码,更安全
● 低成本、小体积、模块化设计
● 外形尺寸:120 x 70 x 43mm
典型应用:
● 工业以太网模拟信号监测和控制
● 用于物联网、实时监控网及现场设备通信
● 智能楼宇控制、安防工程等应用系统
● 以太网工业自动化控制系统
● 工业现场信号隔离及长线传输
● 设备运行监测与控制
● 传感器信号的测量
● 工业现场数据的获取与记录
● 物联网模拟量信号采集
产品概述:
IBF80系列产品包括电源调理,模拟量采集与输出、开关量采集、开关量输出和RJ-45网络接口通信。通讯方式采用MODBUS TCP协议。TCP是基于传输层的协议,它是使用广泛,面向连接的可靠协议。用户可直接在网页上设置模块IP地址、子网掩码、通讯协议等。可用来对传感器设备的运行监测与控制。
IBF80系列产品是基于单片机的智能监测和控制系统,用户设定的模块IP地址、子网掩码等配置信息都储存在非易失性存储器EEPROM里。
IBF80系列产品按工业标准设计、制造,模拟信号和数字信号之间互相隔离,抗干扰能力强,可靠性高。工作温度范围- 45℃~+85℃。
功能简介:
IBF80 远程I/O模块,可以用来测量八路模拟量信号,四路开关量信号,并有两路开关量输出和一路0~4.8V电压信号输出。
1、 模拟信号输入
16位采集精度,8路模拟信号输入。产品出厂前所有信号输入范围已全部校准。在使用时,用户也可以很方便的自行编程校准。具体电流或电压输入量程请看产品选型。
2、 开关量信号输入与输出,一路0~4.8V电压信号输出
8路开关量信号输入,可接干接点和湿接点,详细请参考接线图部分;8路开关量信号输出集电极开路输出。
一路0~4.8V电压信号输出,可以用于模拟信号控制。
3、 通讯协议
通讯接口: RJ-45网络接口。网口位置的两个指示灯,网线插上之后Link灯(绿灯)长亮,Data灯(黄灯)会不定时的闪烁。
通讯协议:采用MODBUS TCP协议,实现工业以太网数据交换。也可以通过网页直接访问控制模块。
网络缓存:2K Byte(收与发都是)
通信响应时间:小于100mS。
4、 抗干扰
模块内部有瞬态抑制二极管,可以有效抑制各种浪涌脉冲,保护模块。
产品型号:
IBF80 - U(A)□ - RJ45
输入电压或电流信号值 通讯接口
U1:0-5V A1:0-1mA RJ45: 输出为RJ-45网络接口
U2:0-10V A2:0-10mA
A3:0-20mA
U4:0-2.5V A4:4-20mA
U8:用户自定义 A8:用户自定义
选型举例1: 型号:IBF80-A4-RJ45 表示8路4-20mA信号输入,输出为RJ-45网络接口
选型举例2: 型号:IBF80-U1-RJ45 表示8路0-5V信号输入,输出为RJ-45网络接口
IBF80通用参数:
(typical @ +25℃,Vs为24VDC)
模拟量输入: 电流输入 / 电压输入
精 度: 0.1%
温度漂移: ±50 ppm/℃ (±100 ppm/℃, 最大)
输入电阻: 100Ω (4-20mA/0-20mA/0-10mA电流输入)
2KΩ (0-1mA电流输入)
大于200K(5V/10V电压输入)
开关量输入: 4通道(DI0~DI3)。
低电平: 输入 < 1V
高电平: 输入 4 ~ 30V
输入电阻: 3KΩ
开关量输出: 集电极开路输出,电压0~30V,最大负载电流30mA,2通道(DO0~DO1)。
模拟量输出: 电压0 ~ 4.8V, 输出负载大于2K欧姆。
通 讯: MODBUS TCP通讯协议
网 页: 支持网页访问模块,支持网页设置模块参数。
接 口: RJ-45网络接口。
工作电源: +8 ~ 32VDC宽供电范围,内部有防反接和过压保护电路
功率消耗: 小于2W
工作温度: - 45 ~ +80℃
工作湿度: 10 ~ 90% (无凝露)
存储温度: - 45 ~ +80℃
存储湿度: 10 ~ 95% (无凝露)
隔离耐压: 模拟信号和开关量信号3000V隔离,开关量信号和电源共地。
外形尺寸: 120 mm x 70 mm x 43mm
1,如何恢复出厂设置?
- 在模块通电工作的状态下,将INIT开关拨到INIT位置,然后再拨回NORMAL位置。
- 等待30秒钟,模块自动恢复为出厂设置。参数如图3所示。网页登录密码自动恢复为123456。
引脚定义与接线:
引脚 |
名 称 |
描 述 |
引脚 |
名 称 |
描 述 |
1 |
DI0 |
通道0开关量信号输入端 |
12 |
IN1 |
通道1模拟信号输入正端 |
2 |
DI1 |
通道1开关量信号输入端 |
13 |
IN2 |
通道2模拟信号输入正端 |
3 |
DI2 |
通道2开关量信号输入端 |
14 |
IN3 |
通道3模拟信号输入正端 |
4 |
DI3 |
通道3开关量信号输入端 |
15 |
IN4 |
通道4模拟信号输入正端 |
5 |
DO0 |
通道0开关量信号输出端 |
16 |
IN5 |
通道5模拟信号输入正端 |
6 |
DO1 |
通道1开关量信号输出端 |
17 |
IN6 |
通道6模拟信号输入正端 |
7 |
PW+ |
电源正端 |
18 |
IN7 |
通道7模拟信号输入正端 |
8 |
GND |
电源负端,开关量信号公共地 |
19 |
A.GND |
模拟信号公共地 |
9 |
RJ-45 |
网络接口 |
20 |
A.GND |
模拟信号公共地 |
10 |
A.GND |
模拟信号公共地 |
21 |
OUT |
模拟信号输出端 |
11 |
IN0 |
通道0模拟信号输入正端 |
22 |
A.GND |
模拟信号公共地 |
在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式。图3所示,Modbus TCP数据帧包含报文头、功能代码和数据3部分。
(2)、MBAP报文头描述:
MBAP报文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节,如表1所示。
表1:MBAP报文头
域 |
长度(B) |
描述 |
传输标识 |
2 个字节 |
标志某个MODBUS 询问/应答的传输 |
协议标志 |
2 个字节 |
0=MODBUS协议 |
长度 |
2 个字节 |
后续字节计数 |
单元标识符 |
1 个字节 |
串行链路或其它总线上连接的远程从站的识别码 |
(3)、Modbus功能代码:
Modbus功能码分为3种类型,分别是:
(1)公共功能代码:已定义好的功能码,保证其唯一性,由认可;
(2)用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但不保证代码使用的唯一性。如变为公共代码,需交RFC认可;
(3)保留的功能代码,由某些公司使用在某些传统设备的代码,不可作为公共用途。
在常用的公共功能代码中,IBF80支持部分的功能码,详见如下:
功能码 |
名称 |
说明 |
|
01 |
Read Coil Status |
读取线圈状态 |
1表示高电平, 0表示低电平。 |
03 |
Read Holding Register |
读保持寄存器 |
1表示高电平, 0表示低电平。 |
05 |
Write Single Coil |
写单个线圈 |
1表示三极管导通, 0表示三极管断开。 |
06 |
Write Single Register |
写单个寄存器 |
1表示三极管导通, 0表示三极管断开。 |
(4)、支持的功能码描述
01(0x01)读线圈
在一个远程设备中,使用该功能码读取线圈的1 至2000 连续状态。请求PDU详细说明了起始地址,即指定的第一个线圈地址和线圈编号。从零开始寻址线圈。因此寻址线圈1-16 为0-15。
根据数据域的每个位(bit)将响应报文中的线圈分成为一个线圈。指示状态为1= ON 和0= OFF。第一个数据作为字节的LSB(最低有效位),后面的线圈数据依次向高位排列,来组成8位一个的字节。如果返回的输出数量不是八的倍数,将用零填充最后数据字节中的剩余位(bit)(一直到字节的高位端)。字节数量域说明了数据的完整字节数
功能码01举例,读8通道DI数据,寄存器地址00033~00040:
请求 |
响应 |
||||
字段名称 |
十六进制 |
字段名称 |
十六进制 |
||
MBAP报文头 |
传输标识 |
01 |
MBAP报文头 |
传输标识 |
01 |
00 |
00 |
||||
协议标志 |
00 |
协议标志 |
00 |
||
00 |
00 |
||||
长度 |
00 |
长度 |
00 |
||
06 |
04 |
||||
单元标识符 |
01 |
单元标识符 |
01 |
||
功能码 |
01 |
功能码 |
01 |
||
起始地址Hi |
00 |
字节数 |
01 |
||
起始地址Lo |
20 |
输出状态DI7-DI0 |
00 |
||
输出数量Hi |
00 |
|
|
||
输出数量Lo |
08 |
|
|
03(0x03)读保持寄存器
在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。请求PDU说明了起始寄存器地址和寄存器数量。从零开始寻址寄存器。因此,寻址寄存器1-16 为0-15。在响应报文中,每个寄存器有两字节,第一个字节为数据高位,第二个字节为数据低位。
功能码03举例,读8通道DI数据,寄存器地址40033:
请求 |
响应 |
||||
字段名称 |
十六进制 |
字段名称 |
十六进制 |
||
MBAP报文头 |
传输标识 |
01 |
MBAP报文头 |
传输标识 |
01 |
00 |
00 |
||||
协议标志 |
00 |
协议标志 |
00 |
||
00 |
00 |
||||
长度 |
00 |
长度 |
00 |
||
06 |
05 |
||||
单元标识符 |
01 |
单元标识符 |
01 |
||
功能码 |
03 |
功能码 |
03 |
||
起始地址Hi |
00 |
字节数 |
02 |
||
起始地址Lo |
20 |
寄存器值Hi(0x00) |
00 |
||
寄存器编号Hi |
00 |
寄存器值Lo(DI7-DI0) |
00 |
||
寄存器编号Lo |
01 |
|
|
05(0x05)写单个线圈
在一个远程设备上,使用该功能码写单个输出为ON 或OFF。请求PDU说明了强制的线圈地址。从零开始寻址线圈。因此,寻址线圈地址1为0。线圈值域的常量说明请求的ON/OFF 状态。十六进制值0xFF00请求线圈为ON。十六进制值0x0000请求线圈为OFF。其它所有值均为非法的,并且对线圈不起作用。
正确的响应应答是和请求一样的。
功能码05举例,设置通道DO0为ON,也就是为1,寄存器地址00001:
请求 |
响应 |
||||
字段名称 |
十六进制 |
字段名称 |
十六进制 |
||
MBAP报文头 |
传输标识 |
01 |
MBAP报文头 |
传输标识 |
01 |
00 |
00 |
||||
协议标志 |
00 |
协议标志 |
00 |
||
00 |
00 |
||||
长度 |
00 |
长度 |
00 |
||
06 |
06 |
||||
单元标识符 |
01 |
单元标识符 |
01 |
||
功能码 |
05 |
功能码 |
05 |
||
输出地址Hi |
00 |
输出地址Hi |
00 |
||
输出地址Lo |
00 |
输出地址Lo |
00 |
||
输出值Hi |
FF |
输出值Hi |
FF |
||
输出值Lo |
00 |
输出值Lo |
00 |
06(0x06)写单个寄存器
在一个远程设备中,使用该功能码写单个保持寄存器。请求PDU说明了被写入寄存器的地址。从零开始寻址寄存器。因此,寻址寄存器地址1为0。
正确的响应应答是和请求一样的。
功能码06举例,设置通道DO0~DO7全部为1,16进制为0xFF,寄存器地址40001:
请求 |
响应 |
||||
字段名称 |
十六进制 |
字段名称 |
十六进制 |
||
MBAP报文头 |
传输标识 |
01 |
MBAP报文头 |
传输标识 |
01 |
00 |
00 |
||||
协议标志 |
00 |
协议标志 |
00 |
||
00 |
00 |
||||
长度 |
00 |
长度 |
00 |
||
06 |
06 |
||||
单元标识符 |
01 |
单元标识符 |
01 |
||
功能码 |
06 |
功能码 |
06 |
||
寄存器地址Hi |
00 |
寄存器地址Hi |
00 |
||
寄存器地址Lo |
00 |
寄存器地址Lo |
00 |
||
寄存器值Hi |
00 |
寄存器值Hi |
00 |
||
寄存器值Lo |
FF |
寄存器值Lo |
FF |
(5)、IBF80的寄存器地址说明
支持功能码01和05
地址0X(PLC) |
地址(PC,DCS) |
数据内容 |
属性 |
数据说明 |
00031 |
0030 |
输入的开关量 |
只读 |
开关量输入通道0~3的电平状态,1表示高电平, 0表示低电平。 |
00032 |
0031 |
输入的开关量 |
只读 |
|
00033 |
0032 |
输入的开关量 |
只读 |
|
00034 |
0033 |
输入的开关量 |
只读 |
|
|
|
|
|
|
00041 |
0040 |
输出的开关量 |
读/写 |
通道0~1的输出状态,1表示三极管导通, 0表示三极管断开。 |
00042 |
0041 |
输出的开关量 |
读/写 |
|
00043 |
0042 |
开关量上电输出 |
读/写 |
通道0~1的上电和复位输出状态。 |
00044 |
0043 |
开关量上电输出 |
读/写 |
支持功能码03和06
地址4X(PLC) |
地址(PC,DCS) |
数据内容 |
属性 |
数据说明 |
40001 |
0000 |
输入的模拟量 |
只读 |
整数,通道0~7数据, 0x0000-0x7FFF |
40002 |
0001 |
输入的模拟量 |
只读 |
|
40003 |
0002 |
输入的模拟量 |
只读 |
|
40004 |
0003 |
输入的模拟量 |
只读 |
|
40005 |
0004 |
输入的模拟量 |
只读 |
|
40006 |
0005 |
输入的模拟量 |
只读 |
|
40007 |
0006 |
输入的模拟量 |
只读 |
|
40008 |
0007 |
输入的模拟量 |
只读 |
|
|
|
|
|
|
40021 |
0020 |
4-20mA专用 |
只读 |
整数,通道0~7数据, 4mA=0x0000,20mA=0x7FFF |
40022 |
0021 |
4-20mA专用 |
只读 |
|
40023 |
0022 |
4-20mA专用 |
只读 |
|
40024 |
0023 |
4-20mA专用 |
只读 |
|
40025 |
0024 |
4-20mA专用 |
只读 |
|
40026 |
0025 |
4-20mA专用 |
只读 |
|
40027 |
0026 |
4-20mA专用 |
只读 |
|
40028 |
0027 |
4-20mA专用 |
只读 |
|
|
|
|
|
|
40031 |
0030 |
输入的开关量 |
只读 |
整数,开关量输入通道0~3的电平状态,1表示高电平, 0表示低电平。 |
40032 |
0031 |
输入的开关量 |
只读 |
|
40033 |
0032 |
输入的开关量 |
只读 |
|
40034 |
0033 |
输入的开关量 |
只读 |
|
|
|
|
|
|
40041 |
0040 |
输出的开关量 |
读/写 |
整数,通道0~1的输出状态,1表示三极管导通, 0表示三极管断开。 |
40042 |
0041 |
输出的开关量 |
读/写 |
|
40043 |
0042 |
开关量上电输出 |
读/写 |
整数,通道0~1的上电和复位输出状态。 |
40044 |
0043 |
开关量上电输出 |
读/写 |
|
|
|
|
|
|
|
|
|
|
|
地址4X(PLC) |
地址(PC,DCS) |
数据内容 |
属性 |
数据说明 |
40051 |
0050 |
模拟量输出 |
读/写 |
整数,0 ~ 4800表示0 ~ 4.8VDC |
40052 |
0051 |
模拟量上电输出 |
读/写 |
整数,上电和复位输出的电压值 |
|
|
|
|
|
40061 |
0060 |
输入的模拟量 |
只读 |
整数,通道0~7数据, 量程由40161~40168寄存器定义 |
40062 |
0061 |
输入的模拟量 |
只读 |
|
40063 |
0062 |
输入的模拟量 |
只读 |
|
40064 |
0063 |
输入的模拟量 |
只读 |
|
40065 |
0064 |
输入的模拟量 |
只读 |
|
40066 |
0065 |
输入的模拟量 |
只读 |
|
40067 |
0066 |
输入的模拟量 |
只读 |
|
40068 |
0067 |
输入的模拟量 |
只读 |
|
|
|
|
|
|
40081 ~ 40088 |
0080 ~ 0087 |
自定义4-20mA |
只读 |
整数,通道0~7数据, 量程由40181~40188寄存器定义。 数据小于4mA时显示为0,数据为20mA时显示为设定值。中间按比例显示。 |
|
|
|
|
|
40101 |
0100 |
通道0校准 |
读/写 |
产品出厂时已经校准,用户无需校准即可直接使用,如果确实需要重新校准,请查看校准章节,按步骤执行。 |
40102 |
0101 |
通道1校准 |
读/写 |
|
40103 |
0102 |
通道2校准 |
读/写 |
|
40104 |
0103 |
通道3校准 |
读/写 |
|
40105 |
0104 |
通道4校准 |
读/写 |
|
40106 |
0105 |
通道5校准 |
读/写 |
|
40107 |
0106 |
通道6校准 |
读/写 |
|
40108 |
0107 |
通道7校准 |
读/写 |
|
|
|
|
|
|
40160 |
0159 |
通道0 ~ 7量程 |
写 |
整数,0x0001-0x7FFF,如果所有通道的量程是一样的,可以设置此寄存器,设置完成后会一次性修改40161 ~ 40168寄存器为当前寄存器同样的值。 |
40161 |
0160 |
通道0量程 |
读/写 |
整数,0x0001-0x7FFF,修改后40061~40068寄存器的数据按这个量程换算 |
40162 |
0161 |
通道1量程 |
读/写 |
|
40163 |
0162 |
通道2量程 |
读/写 |
|
40164 |
0163 |
通道3量程 |
读/写 |
|
40165 |
0164 |
通道4量程 |
读/写 |
|
40166 |
0165 |
通道5量程 |
读/写 |
|
40167 |
0166 |
通道6量程 |
读/写 |
|
40168 |
0167 |
通道7量程 |
读/写 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
地址4X(PLC) |
地址(PC,DCS) |
数据内容 |
属性 |
数据说明 |
40180 |
0179 |
自定义4-20mA 通道0 ~ 7量程 |
写 |
整数,0x0001-0x7FFF,如果所有通道的量程是一样的,可以设置此寄存器,设置完成后会一次性修改40181 ~ 40187寄存器为当前寄存器同样的值。 |
40181 ~ 40188 |
0180 ~ 0187 |
自定义4-20mA 通道0 ~ 7量程 |
读/写 |
整数,0x0001-0x7FFF,修改后40081~40088寄存器的数据按这个量程换算 |
|
|
|
|
|
40204 |
0203 |
转换速率 |
读/写 |
整数,范围0x0000-0x0009, 出厂默认为2,修改后请重新校准模块。 0x0000 = 2.5 SPS,0x0001 = 5 SPS, 0x0002 = 10 SPS, 0x0003 = 20 SPS, 0x0004 = 40 SPS, 0x0005 = 80 SPS, 0x0006 = 160 SPS,0x0007 = 320 SPS, 0x0008 = 500 SPS,0x0009 = 1000 SPS |
40211 |
0210 |
模块名称 |
只读 |
高位:0x00 低位:0x80 |
40221 |
0220 |
通道状态 |
读/写 |
高位:0x00低位:通道状态 (0xFF) |
字符协议Socket通讯
在Websocket,TCP Server,TCP Client,UDP Mode等工作方式下,可以使用以下字符协议通讯。
如果在配置设置里把自动上传数据设置为“是”,
在Websocket,TCP Server,TCP Client工作方式下,
通讯连接成功后会自动上传数据。UDP Mode不会自动
上传数据,需要发命令读取数据。
1、读测量数据命令
说 明:以当前配置的数据格式,从模块中读回所有通道模拟输入端的测量数据,以及开关量的状态。
命令格式:#00
应答格式:>(AI data) ,(DI data), (DO data), (DO Reset data), (AO data), (AO Reset data) (cr) 命令有效。
?00(cr) 命令无效或非法操作。
参数说明:> 分界符。十六进制为3EH
(AI data) 代表AI模拟量数据。数据格式可以是工程单位,FSR的百分比,16进制补码。详细说明见命令集第3条。十六进制为每个字符的ASCII码。
(DI data) 代表DI开关量状态。4个数,排列顺序为DI3~DI0, 值为 0: 输入为低电平;
值为 1:输入为高电平
(DO data) 代表DO开关量状态。2个数,排列顺序为DI1~DI0, 值为 0: 输出三极管断开;
值为 1:输出三极管导通
(DO Reset data) 代表复位后DO开关量状态。2个数,排列顺序为DI1~DI0,
值为 0: 输出三极管断开;值为 1:输出三极管导通
(AO data) 代表AO模拟量输出值。4个数,范围0000~4800,代表电压0~4.8V
(AO Reset data) 代表复位后AO模拟量输出值。4个数,范围0000~4800,代表电压0~4.8V
(cr) 结束符,上位机回车键,十六进制为0DH。
其他说明:假如格式错误或通讯错误,模块不响应。
如果某个通道已经被关闭,那么读出的数据显示为空格字符或者0。
应用举例: 用户命令(字符格式) #00
模块应答(字符格式):
>+12.000+16.000+16.000+16.000+16.000+16.000+16.000+18.168,1110,11,00,2000,0000 (cr)
说 明:模块上输入是(数据格式是工程单位):
通道0:+12.000mA 通道1:+16.000mA 通道2:+16.000mA 通道3:+16.000mA
通道4:+16.000mA 通道5:+16.000mA 通道6:+16.000mA 通道7:+18.168mA
DI3, DI2, DI1为高电平,DI0为低电平;
DO1和DO0当前状态为输出三极管导通,DO1和DO0复位后三极管断开;
AO输出的电压是2V,AO复位后输出0V。
2、读通道N数据命令
说 明:以当前配置的数据格式,从模块中读回通道N的模拟输入数据。
命令格式:#00N
参数说明:N