一、产品概述
本产品为一款实时测量24路交流电流的数据采集模块,采用高精密电流互感器实现信号的隔离与传感,信号测量采用专用的真有效值测量芯片,可准确测量各种波形的电流真有效值,且精度高,稳定性好;采用标准RS-485总线接口和MODBUS-RTU协议。广泛应用于路灯监控、生产自动化检测、LED灯老化检测等。本产品具有特点以下:
Ø 24路同步采样相互独立AD,0.1秒完成所有通道的数据采集更新;
Ø 精度高,采用24位AD采样;
Ø 稳定性好,测量精度不受环境温度影响;
Ø 电流穿孔输入,使用方便;
二、产品型号
RS-40242A-14 (穿孔式输入方式) RS-40242B-14
(端子式输入方式)(<10A)
三、性能指标
Ø
精度等级:0.5%FS;
Ø
电流量程:0-5A/0-10A/0-15A/0-20A
AC;
Ø
电流输入孔径:Φ5mm;
Ø 工作温度:-20℃~+60℃;
Ø 数据更新时间:100mS;
Ø 隔离耐压:>2500V DC;
Ø 辅助电源:24V DC(15V~30V);
Ø 额定功耗:2W;
Ø
输出接口:RS-485;
Ø
数据输出:24路交流电流值;
Ø
通讯波特率:4800、9600、19200、28800 bps;
Ø
数据格式:无校验、8个数据位、1个停止位
Ø 通讯协议:MODBUS-RTU协议;
四、产品外观与安装尺寸

安装方式:螺钉固定或导轨固定;
五、产品接线说明

图四、产品接线参考图
说明:电流输入通过互感器穿孔输入,互感器孔径为5mm,必须保证电流的线头与线径小于5mm,否则电流导线无线穿入。
表一、引脚定义
|
引脚
|
1
|
2
|
3
|
4
|
5
|
6
|
|
名称
|
VCC
|
GND
|
INIT
|
G
|
D+
|
D-
|
|
描述
|
供电电源正
|
供电电源地
|
初始化引脚
|
初始化接地
|
RS485正
|
RS485负
|
说明:初始化端为地址与波特率初始化,短接后给产品上电,地址与波特率将初始化为1与9600。
六、MODBUS通讯协议
1、报文格式
(1)、功能码0x03---查询从设备寄存器内容
主设备报文
|
从设备地址 (0x01-0xFF 1字节)
|
|
功能码 (0x03 1字节)
|
|
起始寄存器地址 (2字节)
|
|
寄存器个数 (2字节)
|
|
CRC校验码 (2字节)
|
从设备正确报文
|
从设备地址 (0x01-0xFF 1字节)
|
|
功能码 (0x03 1字节)
|
|
数据区字节数 (2*寄存器个数1字节)
|
|
数据区 (寄存器内容 2*寄存器个数字节)
|
|
CRC校验码 (2字节)
|
(2)、功能码0x10---对从设备寄存器置数
主设备报文
|
从设备地址 (0x01-0xFF 1字节)
|
|
功能码 (0x10 1字节)
|
|
起始寄存器地址 (2字节)
|
|
寄存器个数 (2字节)
|
|
数据区字节数 (2*寄存器个数 1字节)
|
|
写入寄存器的数据 (2*寄存器个数个字节)
|
|
CRC校验码 (2字节)
|
从设备正确报文
|
从设备地址 (0x01-0xFF 1字节)
|
|
功能码 (0x10 1字节)
|
|
起始寄存器地址 (2字节)
|
|
寄存器个数 (2字节)
|
|
CRC校验码 (2字节)
|
注:1、CRC检验码低位在前、高位在后,寄存器地址, 寄存器个数,数据均为高位在前、低位在后;
2、寄存器字长为16bit(两个字节)
2、寄存器说明与命令格式
(1)、电参量数据寄存器定义表
|
寄存器地址(Hex)
|
寄存器内容
|
寄存器个数
|
寄存器状态
|
数据范围
|
|
0000
|
放01通道电流值
|
1
|
只读
|
0~10000
|
|
0001
|
放02通道电流值
|
1
|
只读
|
0~10000
|
|
0002
|
放03通道电流值
|
1
|
只读
|
0~10000
|
|
0003
|
放04通道电流值
|
1
|
只读
|
0~10000
|
|
0004
|
放05通道电流值
|
1
|
只读
|
0~10000
|
|
0005
|
放06通道电流值
|
1
|
只读
|
0~10000
|
|
0006
|
放07通道电流值
|
1
|
只读
|
0~10000
|
|
0007
|
放08通道电流值
|
1
|
只读
|
0~10000
|
|
0008
|
放09通道电流值
|
1
|
只读
|
0~10000
|
|
0009
|
放10通道电流值
|
1
|
只读
|
0~10000
|
|
000A
|
放11通道电流值
|
1
|
只读
|
0~10000
|
|
000B
|
放12通道电流值
|
1
|
只读
|
0~10000
|
|
000C
|
放13通道电流值
|
1
|
只读
|
0~10000
|
|
000D
|
放14通道电流值
|
1
|
只读
|
0~10000
|
|
000E
|
放15通道电流值
|
1
|
只读
|
0~10000
|
|
000F
|
放16通道电流值
|
1
|
只读
|
0~10000
|
|
0010
|
放17通道电流值
|
1
|
只读
|
0~10000
|
|
0011
|
放18通道电流值
|
1
|
只读
|
0~10000
|
|
0012
|
放19通道电流值
|
1
|
只读
|
0~10000
|
|
0013
|
放20通道电流值
|
1
|
只读
|
0~10000
|
|
0014
|
放21通道电流值
|
1
|
只读
|
0~10000
|
|
0015
|
放22通道电流值
|
1
|
只读
|
0~10000
|
|
0016
|
放23通道电流值
|
1
|
只读
|
0~10000
|
|
0017
|
放24通道电流值
|
1
|
只读
|
0~10000
|
数据范围说明:0~10000为额定范围值,*大输出数据为12000。
(2)、模块名、地址与波特率寄存器定义表
|
寄存器地址(Hex)
|
寄存器内容
|
寄存器个数
|
寄存器状态
|
数据范围
|
|
0030H
|
地址与
波特率
|
1
|
写
|
地址(0-256)
波特率(0-3)
|
(3)、命令举例
命令中所有寄存器地址字节、寄存器个数字节、数据字节高位在前,低位在后;CRC校验码低位字节在前,高位字节在后;
A:读所有24组电流数据发送命令举例:
|
从设备地址
|
功能码
|
起始寄存器地址
|
寄存器个数
|
CRC-L
|
CRC-H
|
|
01H
|
03H
|
00H
|
00H
|
00H
|
18H
|
45H
|
C0H
|
|
|
|
|
|
|
|
|
|
说明:从寄存器0开始连续读24个寄存器数据,每一路电流数据占用一个寄存器;
数据返回格式:
|
从设备地址
|
功能码
|
数据区字节个数
|
返回数据区
|
CRC-L
|
CRC-H
|
|
01H
|
03H
|
30H
|
……
|
XX
|
XX
|
说明:数据区总共有24组数据,48个字节;CRC校验码要根据实际数据得出;
B:修改地址与波特率发送命令举例:(地址由原来的01号变为02号,波特率改为9600<代码为01>)
|
从设备地址
|
功能码
|
起始寄
存器地址
|
寄存器
个数
|
数据字
节个数
|
写入寄存
器的数据
|
CRC-L
|
CRC-H
|
|
01H
|
10H
|
00H
|
30H
|
00H
|
01H
|
02H
|
02H
|
01H
|
63H
|
00H
|
|
|
|
|
|
|
|
|
|
|
|
|
说明:”写入寄存器的数据”**字节为修改后的地址码(此数据为02H);**字节为修改后的波特率代码;代码定义:0--4800bps 1--9600bps 2--19200bps
3--28800bps
数据返回格式:
|
从设备地址
|
功能码
|
起始寄存器地址
|
寄存器个数
|
CRC-L
|
CRC-H
|
|
01H
|
10H
|
00H
|
30H
|
00H
|
01H
|
85H
|
CFH
|
|
|
|
|
|
|
|
|
|
C:新增硬件拨盘地址与软件地址选择功能
本板设有一个硬件地址和软件地址选择开关,当DZ01短接时,为硬件设置通讯地址和波特率方式;不插短接块时为软件设置通讯地址和波特率方式。
硬
件设置地址和波特率:
软件设置地址和波特率:
本板设有一个8位DIP双列拨盘开关,当选择硬件设置通讯地址和波特率方式时,用于地址和波特率设定,开关位于“ON“时为“0”;“OFF”时为“1”。
1~6为地址设置,可选地址为:00H~3FH(十六进制)0~63D(十进制)
7~8为波特率设置,可选波特率为,00H~03H(十六进制)0~3D(十进制)
代码定义:0--4800bps 1--9600bps 2--19200bps 3--28800bps
开关选择举例:
地址:00H
波特率:00H(4800bps)
地址:01H(01D)
波特率:01H(9600bps)
地址:02H(02D)
波特率:01H(9600bps)
地址:3EH(62D)
波特率:01H(9600bps)
地址:3FH(63D)
波特率:01H(9600bps)
3、数据说明与数据还原计算
(1)、读到的所有数据格式如下表(例:电流输入量程等于5A时):
|
序号
|
通道
代码
|
输入
电流
|
读到的十六
进制数据(Id)
|
十进制
数据
|
备注
|
|
高字节
|
低字节
|
|
1
|
I1
|
5A
|
27
|
10
|
10000
|
真有效值
|
|
2
|
I2
|
5A
|
27
|
10
|
10000
|
真有效值
|
|
3
|
I3
|
5A
|
27
|
10
|
10000
|
真有效值
|
|
…
|
…
|
|
|
|
|
|
|
23
|
I23
|
5A
|
27
|
10
|
10000
|
真有效值
|
|
24
|
I24
|
5A
|
27
|
10
|
10000
|
真有效值
|
(2):实际电流值计算方法
I=Id/10000*电流量程 (AAC)
其中:Id----从设备读到的电流数据(将二字节转为十进制数据)
如:模块电流量程为5A,从模块中读到的数据值Id=26F1H(十六进制)=9969D(十进制),即实际电流值I=9969/10000*5=4.9845A。
附1:地址码对照表
|
序号
|
地址码
(HEX)
|
地址码
(十进制)
|
序
号
|
地址码
(HEX)
|
地址码
(十进制)
|
|
1
|
01
|
1
|
|
21
|
33
|
|
2
|
02
|
2
|
|
22
|
34
|
|
3
|
03
|
3
|
|
23
|
35
|
|
4
|
04
|
4
|
|
24
|
36
|
|
5
|
05
|
5
|
|
25
|
37
|
|
6
|
06
|
6
|
|
26
|
38
|
|
7
|
07
|
7
|
|
27
|
39
|
|
8
|
08
|
8
|
|
28
|
40
|
|
9
|
09
|
9
|
|
29
|
41
|
|
10
|
10
|
16
|
|
30
|
48
|
|
11
|
11
|
17
|
|
31
|
49
|
|
12
|
12
|
18
|
|
32
|
50
|
|
13
|
13
|
19
|
|
33
|
51
|
|
14
|
14
|
20
|
|
34
|
52
|
|
15
|
15
|
21
|
|
35
|
53
|
|
16
|
16
|
22
|
|
36
|
54
|
|
17
|
17
|
23
|
|
37
|
55
|
|
18
|
18
|
24
|
|
38
|
56
|
|
19
|
19
|
25
|
|
39
|
57
|
|
20
|
20
|
32
|
|
40
|
64
|
附2:MODBUS_CRC16检验码计算方法
循环冗余校验CRC区为2字节,含一个16位二进制数据。由发送设备计算CRC值,并把计算值附在信息中,接收设备在接收信息时,重新计算CRC值,并把计算值与接收的在CRC区中实际值进行比较,若两者不相同,则产生一个错误。
CRC开始时先把寄存器的16位全部置成“1”,然后把相邻2个8位字节的数据放入当前寄存器中,只有每个字符的8位数据用作产生CRC,起始位,停止位和奇偶校验位不加到CRC中。
产生CRC期间,每8位数据与寄存器中值进行异或运算,其结果向右移一位(向LSB方向),并用“0”填入MSB,检测LSB,若LSB为“1”则与预置的固定值异或,若LSB为“0”则不作异或运算。
重复上述处过程,直至移位8次,完成第8次移位后,下一个8位数据,与该寄存器的当前值异或,在所有信息处理完后,寄存器中的*终值为CRC值。
产生CRC的过程:
1. 把16位CRC寄存器置成FFFFH.
2. **个8位数据与CRC寄存器低8位进行异或运算,把结果放入CRC寄存器。
3. CRC寄存器向右移一位,MSB填零,检查LSB.
4. (若LSB为0):重复3,再右移一位。
(若LSB为1):CRC寄存器与A001 H 进行异或运算
5. 重复3和4直至完成8次移位,完成8位字节的处理。
6. 重复2至5步,处理下一个8位数据,直至全部字节处理完毕。
7. CRC寄存器的*终值为CRC值。
8. 把CRC值放入信息时,高8位和低8位应分开放置。
把CRC值放入信息中
发送信息中的16 位CRC值时,先送低8位,后送高8位。
若CRC值为1241(0001 0010 0100 0001):
|
Addr
|
Func
|
Data Count
|
Data
|
Data
|
Data
|
Data
|
CR CLo
|
CR
CHi
|
|
|
|
|
|
|
|
|
41
|
12
|
图1:CRC字节顺序
版本:V1307