远程IO模块,是工业级远程采集与控制模块,该模块提供了无源节点的开关量输入采集,继电器输出,高频计数器等功能。
可将系列内多个模块进行总线组网,使得IO点数得到灵活扩展。模块可以由远程命令进行控制。该模块采用工业级元器件,10-30VDC宽电压输入,能够在-30℃~60℃范围内正常工作,支持RS232、RS485通信模式,通信协议采用工业标准的Modbus RTU协议。
参数
供电电压: 10-30 VDC 支持反极性保护
静态功耗: ≤0.3W
开关量输入:无源节点,2500VDC光电隔离
继电器触点:1A@30VDC 0.5A@150V动作时长5ms
通信接口: RS485/RS232
波特率: 1200/2400或4800/9600/19200
校验位: N
数据位: 8
停止位: 1
通信协议: Modbus RTU
看门狗:内置、外置2路
工作温度:-30℃~60℃
工作湿度: 5%~90%RH,无凝露
设备尺寸:124mm x 73mm x 34mm
(长x宽x厚)
安装方式:导轨固定/螺钉固定
RIO-8100-4DI4DO 4路开关量输入/4路计数器,4路继电器输出
RIO-8100-4DI 4路开关量输入/4路计数器RIO-8100-4DO 4路继电器输出
RIO-8100-6DO 6路继电器输出
RIO-8100-2DI5DO 2路开关量输入/2路计数器,5路继电器输出
RIO-8100系列远程采集与控制模块,采用 RS232、RS485通信模式与上位进行数据交互,通信协议为工业标准的Modbus RTU协议,ModBus协议定义了一个控制器能认识使用的消息结构,而不管它们是通过何种网络进行通信的,它制定了消息域的格局和内容的公共格式,描述了一个控制器请求访问其它设备的过程,回应来自其它设备的请求,以及侦测并记录错误信息。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以完成信息和数据的交换与传送,使各种不同的公司和厂家的可编程逻辑控制器(PLC)、RTU、SCADA系统、DCS或与兼容ModBus协议的第三方设备之间可以连成工业网络,构建各种复杂的监控系统,并利于系统的维护和扩展,这个通讯协议已广泛被国内外各行业作为系统集成的一种通用工业标准协议。
1.通信协议格式
远程IO设备实现Modbus通信时,均作为从机,遵循Modbus通信过程,采用了MODBUS-RTU协议的命令子集,使用读寄存器命令(03)和单寄存器设置命令(06)。每消息的开头和结尾至少有3.5个字节时间的间隔。
注:03命令用于主机读取远程IO设备的采集数据或端口状态;
06命令用于设置设备参数或远程控制IO设备继电器动作;
功能码03(读指令)
利用Modbus通信协议的03功能码,读取设备的数值。
主机请求数据格式:从机地址、功能码、起始地址、数据个数及CRC码
主机发送 |
字节数 |
信息内容 |
备注 |
从机地址 |
1 |
xx |
向地址为xx的从机要数据 |
功能码 |
1 |
03 |
读取寄存器 |
寄存器起始地址Rn |
2 |
NN Rn |
起始地址=NNRn NN为00-FF的任意数值 |
数据长度Ln |
2 |
00 XX |
读取XX个数据,每数据2个字节 |
CRC码 |
2 |
CRCL、CRCH |
由主机计算得到的CRC码,低位在前、高位在后。 |
01 |
03 |
00 |
00 |
00 |
01 |
84 |
0A |
从机发送 |
字节数 |
信息内容 |
备注 |
从机地址 |
1 |
xx |
从机地址 |
功能码 |
1 |
03 |
读取寄存器 |
数据长度 |
1 |
00 XX |
读取XX个字节(共2倍数据个数) |
寄存器0高字节 |
1 |
DATA0H |
寄存器0数据,高位在前,低位在后。 |
寄存器0低字节 |
1 |
DATA0L | |
寄存器n高字节 |
1 |
DATAnH |
寄存器n数据,高位在前,低位在后。 |
寄存器n低字节 |
1 |
DATAnL | |
CRC码 |
2 |
CRCL、CRCH |
由从机计算得到的CRC码,低位在前,高位在后。 |
寄存器数据为二个字节,高位在前。CRC码都是二个字节,低位在前。
例如: 从机地址为01返回:
01 03 02 DATA0H DATA0L CRCL CRCH
功能码06(写指令)
利用Modbus通信协议的06功能码,设置设备的一个寄存器的数值。
信息帧格式:
①主机请求数据格式:从机地址、功能码、寄存器地址、设置的数据及CRC码
主机发送 |
字节数 |
信息内容 |
备注 |
从机地址 |
1 |
ADDxx |
向地址为XX的从机预置数据 |
功能码 |
1 |
06 |
预置单个寄存器 |
寄存器地址 |
2 |
00-Rn |
需要预置的寄存器 |
数据值高位 |
1 |
DATAH |
需要预置数据 |
数据值低位 |
1 |
DATAL |
需要预置数据 |
CRC码 |
2 |
CRCL、CRCH |
由主机计算得到的CRC码,低位在前,高位在后。 |
2.寄存器
寄存器地址
(16进制) |
功能
(每寄存器数值16bit,即2字节) |
存取属性
读功能码:03
写功能码:06 |
0001 |
485地址 |
读写 |
0002 |
串口波特率 |
读写 |
0000:1200;0001:2400;0002:4800;0003:9600;0004:19200 | ||
0003 |
所有DO输出状态,返回值1-16bit,按位表示第x路输出状态,所在位 |
只读 |
为0:继电器常态(开路),所在位为1:继电器闭合(合路) | ||
注:当前仅有前6个bit有效。 | ||
0004 |
所有DI输入状态,返回值1-16bit,按位表示第x路输入状态, |
只读 |
所在位为0:无输入,所在位为1:有输入 | ||
注:当前仅有前4个bit有效。 | ||
0005 |
第1路继电器状态 |
读写 |
0000:继电器常态(开路) | ||
0001:继电器闭合(合路) | ||
0006 |
第2路继电器状态 |
读写 |
0000:继电器常态(开路) | ||
0001:继电器闭合(合路) | ||
0007 |
第3路继电器状态 |
读写 |
0000:继电器常态(开路) | ||
0001:继电器闭合(合路) | ||
0008 |
第4路继电器状态 |
读写 |
0000:继电器常态(开路) | ||
0001:继电器闭合(合路) | ||
0009 |
第5路继电器状态 |
读写 |
0000:继电器常态(开路) | ||
0001:继电器闭合(合路) | ||
000A |
第6路继电器状态 |
读写 |
0000:继电器常态(开路) | ||
0001:继电器闭合(合路) | ||
000B |
读第1路DI输入状态 |
只读 |
0000:无输入(开路状态) | ||
0001:有输入(合路状态) | ||
000C |
第2路DI输入状态 |
只读 |
0000:无输入(开路状态) | ||
0001:有输入(合路状态) | ||
000D |
第3路DI输入状态 |
只读 |
0000:无输入(开路状态) | ||
0001:有输入(合路状态) | ||
000E |
第4路DI输入状态 |
只读 |
0000:无输入(开路状态) | ||
0001:有输入(合路状态) | ||
000F |
第1路输入计数值—高16位 |
读写 |
0010 |
第1路输入计数值—低16位 |
读写 |
0011 |
第2路输入计数值—高16位 |
读写 |
0012 |
第2路输入计数值—低16位 |
读写 |
0013 |
第3路输入计数值—高16位 |
读写 |
0014 |
第3路输入计数值—低16位 |
读写 |
0015 |
第4路输入计数值—高16位 |
读写 |
0016 |
第4路输入计数值—低16位 |
读写 |
设备串口出厂参数如下:
通信模式:RS485;可通过主板跳线更改为RS232通信模式。
485地址:1;另:设备同时接受地址为0的指令。此方式便于当忘记设备地址时对设备进行
操作,包括参数的设定,或者端口数据的访问。
波特率:9600bps;可通过软件或指令修改,范围为:1200、2400、4800、9600、19200。
校验位:N;
数据位:8;
停止位:1;
CRC值的计算可通过配套光盘内的CRC软件计算。
以下以设备485地址为1,举例:
1)读设备所有寄存器内容:0001至0016,共22个,每个寄存器内容占2个字节,
上位主机发送:01、 03、 00、 01、 00、 16 、95 、C4
从机设备返回:01、03 、2C、 (44字节数据) 、CRCL 、CRCH
2)读485地址(03读指令)
上位主机发送:01、 03 、00 、01、 00、 01、 D5 、CA
从机设备返回:01 、03、 02、 00 、01、 79、 84(地址为1)
3)设485地址(06写指令)
上位主机发送:00 、06 、00、 01 、00 、01 、18、 1B(设置地址为1)
从机设备返回:01、 06 、00 、01、 00、 01 、19 、CA
4)读波特率(03读指令)
上位主机发送:01、 03、 00、 02、 00 、01 、25、 CA
从机设备返回:01 、03、 02、 00 、03、 F8 、45(波特率为03:9600)
5)设波特率(06写指令)
上位主机发送:01、 06、 00、 02、 00、 02、 A9、 CB(波特率设为4800)
从机设备返回:设备串口波特率立即改变,因此返回数据无意义。
6)读所有DO状态(03读指令)
上位主机发送:01 、03 、00 、03 、00 、01 、74、 0A
从机设备返回:01、 03、 02、 00、 00、 B8、 44(所有DO为0时)
7)读所有DI状态(03读指令)
上位主机发送:01、 03、 00、 04、 00、 01、 C5、 CB
从机设备返回:01 、03、 02、 00、 00、 B8、 44(所有DI为0时)
8)第1路继电器合闸(06写指令)
上位主机发送:01 、06 、00 、05 、00 、01 、58 、0B
从机设备返回:01 、06、 00、 05、 00、 01、 58、 0B
9)第1路继电器分闸(06写指令)
上位主机发送:01 、06 、00 、05 、00 、00 、99 、CB
从机设备返回:01 、06 、00 、05 、00、 00、 99、 CB
10)第2路继电器合闸(06写指令)
上位主机发送:01 、06 、00 、06 、00 、01 、A8 、0B
从机设备返回:01、 06、 00、 06、 00、 01、 A8、 0B
11)第2路继电器分闸(06写指令)
上位主机发送:01 、06 、00 、06 、00 、00 、69、 CB
从机设备返回:01 、06 、00 、06 、00 、00 、69 、CB
12)第3路继电器合闸(06写指令)
上位主机发送:01 、06 、00 、07 、00 、01 、F9 、CB
从机设备返回:01 、06、 00、 07、 00、 01、 F9、 CB
13)第3路继电分闸(06写指令)
上位主机发送:01 、06 、00 、07 、00 、00 、38 、0B
从机设备返回:01 、06、 00、 07、 00、 00、 38、 0B
14)第4路继电器合闸(06写指令)
上位主机发送:01、 06、 00、 08 、00、 01、 C9、 C8
从机设备返回:01 、06 、00 、08 、00 、01 、C9 、C8
15)第4路继电器分闸(06写指令)
上位主机发送:01 、06、 00、 08、 00、 00、 08 、08
从机设备返回:01 、06 、00 、08 、00 、00 、08 、08
16)第5路继电器合闸(06写指令)
上位主机发送:01、 06、 00、 09、 00、 01、 98、 08
从机设备返回:01 、06 、00 、09 、00 、01 、98 、08
17)第5路继电器分闸(06写指令)
上位主机发送:01 、06、 00、 09、 00、 00、 59、 C8
从机设备返回:01 、06 、00 、09 、00 、00 、59 、C8
18)第6路继电器合闸(06写指令)
上位主机发送:01、 06、 00、 0A、 00、 01、 68、 08
从机设备返回:01 、06 、00 、0A 、00 、01 、68 、08
19)第6路继电器分闸(06写指令)
上位主机发送:01 、06 、00 、0A 、00、 00、 A9、 C8
从机设备返回:01 、06 、00 、0A 、00 、00 、A9、 C8
20)读第1路DI状态(03读指令)
上位主机发送:01 、03 、00、 0B、 00 、01 、F5 、C8
从机设备返回:01 、03 、02 、00 、00 、B8 、44(输入为0时)
01 、03 、02 、00 、01 、79 、84(输入为1时)
21)读第2路DI状态(03读指令)
上位主机发送:01、 03、 00、 0C、00、 01、 44、 09
从机设备返回:01 、03 、02 、00 、00 、B8、 44(输入为0时)
01 、03 、02 、00 、01 、79 、84(输入为1时)
22)读第3路DI状态(03读指令)
上位主机发送:01、 03、 00、 0D 、00 、01 、15 、C9
从机设备返回:01 、03 、02 、00 、00、 B8、 44(输入为0时)
01 、03 、02 、00 、01 、79 、84(输入为1时)
23)读第4路DI状态(03读指令)
上位主机发送:01 、03 、00 、0E 、00 、01 、E5 、C9
从机设备返回:01、 03、 02、 00、 00、 B8、 44(输入为0时)
01 、03 、02 、00 、01 、79 、84(输入为1时)
24)读第1路DI计数值(03读指令)
上位主机发送:01、 03、 00、 0F、00 、02 、F4 、08
从机设备返回:01 、03 、04 、4字节数据 、CRCL 、CRCH(4字节-32位整数)
25)写第1路DI计数值(06写指令)
上位主机发送:01、 06、 00、 10、 00 、0A、 08、 08(设置计数器为10)
从机设备返回:01 、06 、00 、10、 00 、0A 、08、 08
26)读第2路DI计数值(03读指令)
上位主机发送:01 、03 、00 、11 、00 、02、 94、 0E
从机设备返回:01、 03、 04、 00、 00、 00、 00、 FA、 33
27)写第2路DI计数值(06写指令)
上位主机发送:01 、06 、00 、12 、00 、0A 、A9 、C8(设置计数器为10)
从机设备返回:01 、06 、00 、12 、00 、0A 、A9 、C8
28)读第3路DI计数值(03读指令)
上位主机发送:01、 03、 00、 13、 00、 02、 35、 CE
从机设备返回:01、 03、 04、 00、 00、 00、 00、 FA 、33
29)写第3路DI计数值(06写指令)
上位主机发送:01 、06 、00 、14 、00 、0A 、49 、C9(设置计数器为10)
从机设备返回:01、 06 、00 、14、 00、0A、49、 C9
30)读第4路DI计数值(03读指令)
上位主机发送:01 、03 、00 、15 、00 、02 、D5 、CF
从机设备返回:01 、03 、04 、00 、00 、00 、00 、FA 、33
31)写第4路DI计数值(06写指令)
上位主机发送:01、 06、 00、 16、 00、 0A、 E8、 09(设置计数器为10)
从机设备返回:01 、06 、00 、16 、00 、0A 、E8、 09
32)读第1路DO状态(03读指令)
上位主机发送:01 、03 、00 、05 、00、 01、 94、 0B
从机设备返回:01 、03、 02、 00、 00、 B8、 44(输出为0时)
01 、03 、02 、00、 01、79、 84(输出为1时)
33)读第2路DO状态(03读指令)
上位主机发送:01、 03、 00、 06、 00、 01、 64、 0B
从机设备返回:01、 03、 02、 00、 00、 B8、 44(输出为0时)
01 、03 、02、 00、 01 、79 、84(输出为1时)
34)读第3路DO状态(03读指令)
上位主机发送:01、 03、 00、 07、 00、 01、 35、 CB
从机设备返回:01 、03 、02 、00 、00 、B8 、44(输出为0时)
01 、03 、02 、00 、01 、79 、84(输出为1时)
35)读第4路DO状态(03读指令)
上位主机发送:01、 03 、00、 08、 00、 01、 05、 C8
从机设备返回:01、 03、 02、 00、 00、 B8、 44(输出为0时)
01 、03、 02、 00 、01 、79 、84(输出为1时)
36)读第5路DO状态(03读指令)
上位主机发送:01 、03 、00 、09 、00 、01 、54 、08
从机设备返回:01、 03、 02、 00、 00、 B8 、44(输出为0时)
01 、03 、02 、00 、01 、79 、84(输出为1时)
37)读第6路DO状态(03读指令)
上位主机发送:01 、03、 00、 0A、00 、01、 A4、 08
从机设备返回:01 、03 、02 、00 、00 、B8 、44(输出为0时)
01 、03 、02 、00 、01、79、 84(输出为1时)
如忘记设备地址,可使用0地址进行访问,以完成上述功能。如忘记波特率,则可在1200/2400或4800/9600/19200之间轮选。校验位固定为N,数据位固定为8,停止位固定为1。CRC值,可使用光盘内CRC软件计算。您也可以通过光盘内设置软件的人机界面对设备进行设定。
以下为使用0地址进行设备通信的示例,使用0地址,设备应不在组网状态下进行,否则所有组网设备均对0地址的指令做出响应,示例如下:
1)读设备所有寄存器内容:0001至0016,共22个,每寄存器内容占2个字节,含义见章节3(设备寄存器说明)。
上位主机发送:00 、03、 00、 01、 00、 16、 94、 15
从机设备返回:01、 03、 2C (44字节数据) CRCL 、CRCH
(从机响应0地址,并以自身实际地址返回数据)
2)设定485地址为01
上位主机发送:00 、06、 00 、01、 00、 01 、18、 1B
从机设备返回:01、06、 00、 01 、00、 01、 19 、CA
3)设定485地址为02
上位主机发送:00、 06、 00、 01、 00 、02 、58 、1A
从机设备返回:02、 06、 00 、01、 00 、02、 59 、F8
4)设定485地址为03
上位主机发送:00、 06 、00 、01、 00、 03 、99 、DA
从机设备返回:03、 06、 00、 01、 00、 03、 99、 E9
5)设定485地址为04
上位主机发送:00、 06、 00、 01、 00、 04 、D8 、18
从机设备返回:04、 06、 00、 01、 00、 04、 D9、 9C
6)设定485地址为05
上位主机发送:00、 06、 00、 01、 00、 05、 19、 D8
从机设备返回:05 、06、 00、 01、 00、 05、 19、 8D
7)设定485地址为06
上位主机发送:00、 06、 00、 01、 00、 06、 59、 D9
从机设备返回:06、 06、 00、 01、 00、 06、 59、 BF
8)设定波特率为1200
上位主机发送:00、 06、 00 、02 、00 、00 、29、 DB
从机设备返回:因设备波特率立即改变,返回数据无意义
9)设定波特率为2400
上位主机发送:00 、06 、00 、02 、00 、01 、E8 、1B
从机设备返回:因设备波特率立即改变,返回数据无意义
10)设定波特率为4800
上位主机发送:00 、06 、00、 02、 00、 02、 A8、 1A
从机设备返回:因设备波特率立即改变,返回数据无意义
11)设定波特率为9600
上位主机发送:00 、06 、00 、02 、00 、03 、69 、DA
从机设备返回:因设备波特率立即改变,返回数据无意义
12)设定波特率为19200
上位主机发送:00 、06 、00 、02 、00 、04 、28 、18
从机设备返回:因设备波特率立即改变,返回数据无意义
0地址,同样可以对设备进行DI、DO状态的读写,具体参照设备地址为1的示例,CRC值可通过光盘内的CRC小工具计算。
远程IO设备采用标准的Modbus RTU协议,可容易配置到组态画面中