16路开关量输入转RS-485/232,数据采集远程DI模块 IBF61
产品特点:
● 16路开关量采集,隔离转换 RS-485/232输出
● 支持16路干接点输入或16路湿接点输入
● 通过RS-485/232接口可以读取每通道电平状态
● 信号输入 / 输出之间隔离耐压3000VDC
● 宽电源供电范围:8 ~ 32VDC
● 可靠性高,编程方便,易于应用
● 标准DIN35导轨安装,方便集中布线
● 用户可编程设置模块地址、波特率等
● 支持Modbus RTU 通讯协议,自动识别协议
● 低成本、小体积模块化设计
● 外形尺寸:120 mm x 70 mm x 43mm
典型应用:
● 电平信号测量、监测和控制
● RS-485远程I/O,数据采集
● 智能楼宇控制、安防工程等应用系统
● RS-232/485总线工业自动化控制系统
● 工业现场信号隔离及长线传输
● 设备运行监测
● 传感器信号的测量
● 工业现场数据的获取与记录
● 医疗、工控产品开发
● 开关量信号采集
产品概述:
IBF61产品实现传感器和主机之间的信号采集,用来检测模拟信号。IBF61系列产品可应用在 RS-232/485总线工业自动化控制系统,开关量信号测量和监测,高低电平信号的测量以及工业现场信号隔离及长线传输等等。
产品包括电源隔离,信号隔离、线性化,A/D转换和RS-485串行通信。每个串口最多可接255只IBF61系列模块,通讯方式采用ASCII码通讯协议或MODBUS RTU通讯协议,波特率可由代码设置,能与其他厂家的控制模块挂在同一RS-485总线上,便于计算机编程。
IBF61系列产品是基于单片机的智能监测和控制系统,所有的用户设定的地址,波特率,数据格式,校验和状态等配置信息都储存在非易失性存储器EEPROM里。
IBF61系列产品按工业标准设计、制造,信号输入 / 输出之间隔离,可承受3000VDC隔离电压,抗干扰能力强,可靠性高。工作温度范围- 45℃~+85℃。
功能简介:
IBF61 开关量信号隔离采集模块,可以用来测量16路开关量信号。
1、 开关量信号输入
16路开关量信号输入。输入与RS232/485输出之间互相隔离。支持16路干接点输入或16路湿接点输入。
2、 通讯协议
通讯接口: 1路标准的RS-485通讯接口或1路标准的RS-232通讯接口,订货选型时注明。
通讯协议:支持两种协议,命令集定义的字符协议和MODBUS RTU通讯协议。模块自动识别通讯协议,能实现与多种品牌的PLC、RTU或计算机监控系统进行网络通讯。
数据格式:10位。1位起始位,8位数据位,1位停止位。
通讯地址(0~255)和波特率(2400、4800、9600、19200、38400、57600 、115200bps)均可设定;通讯网络最长距离可达1200米,通过双绞屏蔽电缆连接。
通讯接口高抗干扰设计,±15KV ESD保护,通信响应时间小于100mS。
3、 抗干扰
可根据需要设置校验和。模块内部有瞬态抑制二极管,可以有效抑制各种浪涌脉冲,保护模块,内部的数字滤波,也可以很好的抑制来自电网的工频干扰。
产品选型:
IBF61 - □
通讯接口
485: 输出为RS-485接口
232: 输出为RS-232接口
选型举例1: 型号:IBF61 -232 表示输出为RS-232接口
选型举例2: 型号:IBF61 -485 表示输出为RS-485接口
IBF61通用参数:
(typical @ +25℃,Vs为24VDC)
输入类型: 湿接点输入
低电平(0): 输入 < 3V
高电平(1): 输入 10 ~ 50V
干接点输入
低电平(0): 断开
高电平(1): 接通到D.GND
输入电阻: 5.1KΩ
通 讯: 协议 RS-485 或 RS-232 标准字符协议 和 MODBUS RTU通讯协议
波特率(2400、4800、9600、19200、38400、57600 、115200bps)可软件选择
地址(0~255)可软件选择
通讯响应时间:100 ms 最大
工作电源: +8 ~ 32VDC宽供电范围,内部有防反接和过压保护电路
功率消耗: 小于0.5W
工作温度: - 45 ~ +80℃
工作湿度: 10 ~ 90% (无凝露)
存储温度: - 45 ~ +80℃
存储湿度: 10 ~ 95% (无凝露)
隔离耐压: 输入 / 输出 之间: 3KVDC,1分钟,漏电流 1mA
其中RS-232 / RS-485输出和电源共地。
耐冲击电压: 3KVAC, 1.2/50us(峰值)
外形尺寸: 120 mm x 70 mm x 43mm
引脚定义:
引脚 |
名 称 |
描 述 |
引脚 |
名 称 |
描 述 |
1 |
D.GND |
开关量信号地线 |
14 |
DI0 |
通道0开关量信号输入 |
2 |
DI11 |
通道11开关量信号输入 |
15 |
DI1 |
通道1开关量信号输入 |
3 |
DI12 |
通道12开关量信号输入 |
16 |
DI2 |
通道2开关量信号输入 |
4 |
DI13 |
通道13开关量信号输入 |
17 |
DI3 |
通道3开关量信号输入 |
5 |
DI14 |
通道14开关量信号输入 |
18 |
DI4 |
通道4开关量信号输入 |
6 |
DI15 |
通道15开关量信号输入 |
19 |
DI5 |
通道5开关量信号输入 |
7 |
DI COM |
开关量信号公共端 |
20 |
DI COM |
开关量信号公共端 |
8 |
NC |
空脚 |
21 |
DI6 |
通道6开关量信号输入 |
9 |
NC |
空脚 |
22 |
DI7 |
通道7开关量信号输入 |
10 |
DATA+ |
RS-485信号正端 |
23 |
DI8 |
通道8开关量信号输入 |
11 |
DATA- |
RS-485信号负端 |
24 |
DI9 |
通道9开关量信号输入 |
12 |
PW+ |
电源正端 |
25 |
DI10 |
通道10开关量信号输入 |
13 |
GND |
电源负端 |
26 |
D.GND |
开关量信号地线 |
表1 引脚定义
IBF61字符协议命令集:
模块的出厂初始设置,如下所示:
地址代码为01
波特率9600 bps
禁止校验和
如果使用 RS-485网络,必须分配一个独一无二的地址代码,地址代码取值为16进制数在00和FF之间,由于新模块的地址代码都是一样的,他们的地址将会和其他模块矛盾,所以当你组建系统时,你必须重新配置每一个IBF61模块地址。可以在接好IBF61模块电源线和RS485通讯线后,通过配置命令来修改IBF61模块的地址。波特率,校验和状态也需要根据用户的要求而调整。而在修改波特率,校验和状态之前,必须让模块先进入缺省状态,否则无法修改。
让模块进入缺省状态的方法:
IBF61模块边上都有一个INIT的开关,在模块的侧面位置。将INIT开关拨到INIT位置,再接通电源,此时模块进入缺省状态。在这个状态时,模块的配置如下:
地址代码为00
波特率9600 bps
禁止校验和
这时,可以通过配置命令来修改IBF61模块的波特率,校验和状态等参数。在不确定某个模块的具体配置时,也可以将INIT开关拨到INIT位置,使模块进入缺省状态,再对模块进行重新配置。
注: 正常使用时请将INIT开关拨到NORMAL位置。
字符协议命令由一系列字符组成,如首码、地址ID,变量、可选校验和字节和一个用以显示命令结束符(cr)。主机除了带通配符地址“**”的同步的命令之外,一次只指挥一个IBF61模块。
命令格式:(Leading Code)(Addr)(Command)[data][checksum](cr)
(Leading code) 首码是命令中的第一个字母。所有命令都需要一个命令首码,如%,$,#,@,...等。 1- 字符
(Addr) 模块的地址代码, 如果下面没有指定,取值范围从 00~FF (十六进制)。 2- 字符
(Command) 显示的是命令代码或变量值。 变量长度
[data] 一些输出命令需要的数据。 变量长度
[checksum] 括号中的Checksum(校验和)显示的是可选参数,只有在启用校验和时,才需要此选项。 2- 字符
(cr) 识别用的一个控制代码符,(cr)作为回车结束符,它的值为0x0D。 1- 字符
当启用校验和(checksum)时,就需要[Checksum]。它占2-字符。命令和应答都必须附加校验和特性。校验和用来检查所有输入命令,来帮助你发现主机到模块命令错误和模块到主机响应的错误。校验和字符放置在命令或响应字符之后,回车符之前。
计算方法:两个字符,十六进制数,为之前所发所有字符的ASCII码数值之和,然后与十六进制数0xFF相与所得。
应用举例:禁止校验和(checksum)
用户命令 $002(cr)
模块应答 !00020600 (cr)
启用校验和(checksum)
用户命令 $002B6 (cr)
模块应答 !00020600 A9 (cr)
‘$’ = 0x24 ‘0’ = 0x30 ‘2’ = 0x32
B6=(0x24+0x30+0x30+0x32) AND 0xFF
‘!’ = 0x21 ‘0’ = 0x30 ‘2’ = 0x32 ‘6’ = 0x36
A9=(0x21+0x30+0x30+0x30+0x32+0x30+0x36+0x30+0x30) AND 0xFF
命令的应答 :
应答信息取决于各种各样的命令。应答也由几个字符组成,包括首代码,变量和结束标识符。应答信号的首代码有两种, ‘!’或 ‘>’表示有效的命令而‘?’ 则代表无效。通过检查应答信息,可以监测命令是否有效
注意:1、在一些情况下,许多命令用相同的命令格式。要确保你用的地址在一个命令中是正确的,假如你用错误的地址,而这个地址代表着另一个模块,那么命令会在另一个模块生效,因此产生错误。
2、必须用大写字母输入命令。
3、(cr)代表键盘上的回车符,不要直接写出来,应该是敲一下回车键(Enter键)。
1、读取开关状态命令
说 明:从模块中读回所有通道开关量输入端状态。
命令格式:$AA6(cr)
参数说明:$ 分界符。十六进制为24H
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!(dataInputHigh) (dataInputLow)00(cr) 命令有效。
?AA(cr) 命令无效或非法操作。
参数说明:! 分界符。十六进制为21H
(dataInputHigh) 代表读取到的开关状态,两个16进制数,
IN15 |
IN14 |
IN13 |
IN12 |
IN11 |
IN10 |
IN9 |
IN8 |
Bit7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit2 |
Bit 1 |
Bit 0 |
dataInputHigh |
第一个数代表15~12通道
第二个数代表11~8通道
位值为 0:输入为低电平
位值为 1:输入为高电平。
十六进制为每个字符的ASCII码。
(dataInputLow) 代表读取到的开关状态,两个16进制数,
IN7 |
IN6 |
IN5 |
IN4 |
IN3 |
IN2 |
IN1 |
IN0 |
Bit7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit2 |
Bit 1 |
Bit 0 |
dataInputLow |
第一个数代表7~4通道
第二个数代表3~0通道
位值为 0:输入为低电平
位值为 1:输入为高电平。
十六进制为每个字符的ASCII码。
(cr) 结束符,上位机回车键,十六进制为0DH。
其他说明:假如格式错误或通讯错误或地址不存在,模块不响应。
如果某个通道已经被关闭,那么读出的数据显示为空格字符。
如果你使用的串口通讯软件输入不了回车键字符,请切换到十六进制格式进行通讯。
应用举例: 用户命令(字符格式) $016(cr)
(十六进制格式) 243031360D
模块应答(字符格式) !221100 (cr)
(十六进制格式):213232313130300D
说 明:读取到的数据是18,转成2进制是0001 0001,那么地址01H模块上输入开关状态是:
通道0:高电平 通道1:低电平 通道2:低电平 通道3:低电平
通道4:高电平 通道5:低电平 通道6:低电平 通道7:低电平
通道8:低电平 通道9:高电平 通道10:低电平 通道11:低电平
通道12:低电平 通道13:高电平 通道14:低电平 通道15:低电平
2、配置IBF61模块命令
说 明:对一个IBF61模块设置地址,波特率,校验和状态。配置信息储存在非易失性存储器EEPROM里。
命令格式:%AANNTTCCFF(cr)
参数说明:% 分界符。
AA 模块地址,取值范围 00~FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H和31H。
NN 代表新的模块16进制地址,数值NN的范围从00到FF。转换成十六进制为每个字符的ASCII码。如地址18换成十六进制为31H和38H。
TT 用16进制代表类型编码。IBF61产品必须设置为00。
CC 用16进制代表波特率编码。
波特率代码 |
波特率 |
04 |
2400 baud |
05 |
4800 baud |
06 |
9600 baud |
07 |
19200 baud |
08 |
38400 baud |
09 |
57600 baud |
0A |
115200 baud |
表2 波特率代码
FF 用16进制的8位代表数据格式,校验和。注意从bits0 到bits5不用必须设置为零。
Bit7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit2 |
Bit 1 |
Bit 0 |
表3 数据格式,校验和代码
Bit7:保留位,必须设置为零
Bit6:校验和状态,为0:禁止; 为1:允许
Bit5-bit0:不用,必须设置为零。
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!AA(cr) 命令有效。
?AA(cr) 命令无效或非法操作,或在改变波特率或校验和前,没有将INIT开关拨到INIT位置。
参数说明:! 分界符,表示命令有效。
? 分界符,表示命令无效。
AA 代表输入模块地址
(cr) 结束符,上位机回车键,十六进制为0DH。
其他说明:假如你第一次配置模块,AA=01H,NN等于新的地址。假如重新配置模块改变地址、输入范围、数据格式,AA等于当前已配置的地址,NN等于当前的或新的地址。假如要重新配置模块改变波特率或校验和状态,则必须将INIT开关拨到INIT位置,使模块进入缺省状态,此时模块地址为00H,即 AA=00H,NN等于当前的或新的地址。
假如格式错误或通讯错误或地址不存在,模块不响应。
应用举例: 用户命令 %0111000600(cr)
模块应答 !11(cr)
说 明:% 分界符。
01 表示你想配置的IBF61模块原始地址为01H。
11 表示新的模块16进制地址为11H。
00 类型代码,IBF61产品必须设置为00。
06 表示波特率9600 baud。
00 表示禁止校验和。
3、读配置状态命令
说 明: 对指定一个IBF61模块读配置。
命令格式:$AA2(cr)
参数说明:$ 分界符。
AA 模块地址,取值范围 00~FF(十六进制)。
2 表示读配置状态命令
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!AATTCCFF(cr) 命令有效。
?AA(cr) 命令无效或非法操作。
参数说明:! 分界符。
AA 代表输入模块地址。
TT 代表类型编码。
CC 代表波特率编码。见表2
FF 见表3
(cr) 结束符,上位机回车键,十六进制为0DH。
其他说明:假如格式错误或通讯错误或地址不存在,模块不响应。
应用举例: 用户命令 $302(cr)
模块应答 !300F0600(cr)
说 明:! 分界符。
30 表示IBF61模块地址为30H 。
00 表示输入类型代码。
06 表示波特率9600 baud。
00 表示禁止校验和。
4、读模块名称命令
说明:对指定一个IBF61模块读模块名称。
命令格式:$AAM(cr)
参数说明:$ 分界符。
AA 模块地址,取值范围 00~FF(十六进制)。
M 表示读模块名称命令
(cr) 结束符,上位机回车键,十六进制为0DH。
应答格式:!AA(ModuleName)(cr) 命令有效。
?AA(cr) 命令无效或非法操作
参数说明:! 分界符,表示命令有效。
? 分界符,表示命令无效。
AA 代表输入模块地址。
(ModuleName) 模块名称IBF61
(cr) 结束符,上位机回车键,十六进制为0DH。
其他说明:假如格式错误或通讯错误或地址不存在,模块不响应。
应用举例: 用户命令 $08M(cr)
模块应答 !08IBF61 (cr)
说 明:在地址08H模块为IBF61。
Modbus RTU 通讯协议:
模块的出厂初始设置,如下所示:
Modbus地址为01
波特率9600 bps
让模块进入缺省状态的方法:
IBF61模块边上都有一个INIT的开关,在模块的侧面位置。将INIT开关拨到INIT位置,再接通电源,此时模块进入缺省状态。在这个状态时,模块暂时恢复为默认的状态:地址为01,波特率为9600。在不确定某个模块的具体配置时,用户可以查询地址和波特率的寄存器40201-40202,得到模块的实际地址和波特率,也可以跟据需要修改地址和波特率。
注: 正常使用时请将INIT开关拨到NORMAL位置。
支持Modbus RTU通讯协议,命令格式按照标准Modbus RTU通讯协议。
支持功能码01,读线圈状态。1表示高电平, 0表示低电平。
支持功能码03(读保持寄存器)和功能码06(写单个寄存器),
Modbus RTU 通讯协议应用举例:
1,支持Modbus RTU通讯协议功能码01(读线圈状态),命令格式按照标准Modbus RTU通讯协议。
通讯举例:假如模块地址为01,以16进制发送:0101002000103DC6 ,即可取得寄存器的数据。
01 |
01 |
00 |
20 |
00 |
10 |
3C |
0C |
模块地址 |
读线圈状态 |
线圈地址高位 |
线圈地址低位 |
线圈数量高位 |
线圈数量低位 |
CRC校验低位 |
CRC校验高位 |
假如模块回复:0101020003F9FD即读到的数据为0x0003,换成2进制即 0000 0000 0000 0011。
即表明现在输入的通道2~15为低电平,通道1和0高电平。
01 |
01 |
02 |
00 |
03 |
F9 |
FD |
模块地址 |
读线圈状态 |
数据的字节数 |
数据 |
数据 |
CRC校验低位 |
CRC校验高位 |
寄存器说明:
地址0X(PLC) |
地址(PC,DCS) |
数据内容 |
属性 |
数据说明 |
00033 |
0032 |
输入的开关量 |
只读 |
通道0的电平状态 |
00034 |
0033 |
输入的开关量 |
只读 |
通道1的电平状态 |
00035 |
0034 |
输入的开关量 |
只读 |
通道2的电平状态 |
00036 |
0035 |
输入的开关量 |
只读 |
通道3的电平状态 |
00037 |
0036 |
输入的开关量 |
只读 |
通道4的电平状态 |
00038 |
0037 |
输入的开关量 |
只读 |
通道5的电平状态 |
00039 |
0038 |
输入的开关量 |
只读 |
通道6的电平状态 |
00040 |
0039 |
输入的开关量 |
只读 |
通道7的电平状态 |
00041 |
0040 |
输入的开关量 |
只读 |
通道8的电平状态 |
00042 |
0041 |
输入的开关量 |
只读 |
通道9的电平状态 |
00043 |
0042 |
输入的开关量 |
只读 |
通道10的电平状态 |
00044 |
0043 |
输入的开关量 |
只读 |
通道11的电平状态 |
00045 |
0044 |
输入的开关量 |
只读 |
通道12的电平状态 |
00046 |
0045 |
输入的开关量 |
只读 |
通道13的电平状态 |
00047 |
0046 |
输入的开关量 |
只读 |
通道14的电平状态 |
00048 |
0047 |
输入的开关量 |
只读 |
通道15的电平状态 |
|
|
|
|
|
|
|
|
|
|
地址4X(PLC) |
地址(PC,DCS) |
数据内容 |
属性 |
数据说明 |
40001 |
0000 |
输入的开关量 |
读/写 |
0x0000~0xFFFF, 15~0通道 |
|
|
|
|
|
40201 |
0200 |
模块地址 |
读/写 |
整数,重启后生效,范围0x0000-0x00FF |
40202 |
0201 |
波特率 |
读/写 |
整数,重启后生效,范围0x0004-0x000A 0x0004 = 2400 bps, 0x0005 = 4800 bps 0x0006 = 9600 bps, 0x0007 = 19200 bps 0x0008 = 38400 bps, 0x0009 = 57600 bps 0x000A = 115200bps |
|
|
|
|
|
40211 |
0210 |
模块名称 |
只读 |
高位:0x00 低位:0x61 |
表5 Modbus Rtu寄存器说明