通讯功能

仪表采用 RS485 通信方式,波特率可设为 1200、2400bps、4800bps、9600bps。
同一条通讯线路上最多可以同时连接 32 个仪表,每个仪表均可设定其通讯地址,通讯连接应使用带有铜网的屏蔽双绞线,线径不小于 0.5mm2 。布线时应使通讯线远离强电电缆或其他强电场环境,最大传输距离为 1200m,典型的网络连接方式如图,用户可根据具体情况选用其他合适的连接方式。

正泰DDSU666 单相电能表 RS485-MODBUS RTU通讯说明插图1

DL/T 645-2007 协议切换到 ModBus-RTU 通讯协议的数据帧如下:

FE FE FE FE 68 xx xx xx xx xx xx 68 14 0E 33 33 35 3D 35 33 33 33 33 33 33 33 33 33 CS 16

注意:xx xx xx xx xx xx 即为屏显地址,如编号为 21 02 25 02 15 21 则填入 21 15 02 25 02 21,填入的是仪表侧边条形码标号的倒写.

正泰DDSU666 单相电能表 RS485-MODBUS RTU通讯说明插图3

CS为68 xx xx 至 33 33 33的校验和后两位,不包括前面4个FE;

更改后modbus 地址,波特率,数据位,校验位,停止位以仪表屏幕显示。

默认DL/T645连接参数为(8n2,2400bps),发送上述指令,观察电表屏显,当“DLT645”变成“Modbus”即为切换成功,观察屏显“Modbus”后一屏的数字,该数字为电表的modbus从机地址,以10进制显示,注意,modbus的默认波特率为9600。

仪表设置为 ModBus-RTU 传输模式时,ModBus-RTU 通讯协议在一根通讯线上采用主从应答方式的通讯连接方式。首先,主计算机的信号寻址到一台唯一地址的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机,即半双工的工作模式。该协议只允许在主机(PC,PLC 等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。
仪表提供 ModBus-RTU 通讯协议(见附录 A),通讯可读取或修改的参数信息,见下表。

参数地址参数代号参数说明数据类型数据长度Word读写属性
0000HUcodE编程密码 codEint1R
0001HREV.软件版本int1R/W
0002HCLrE电能清零 CLr.Eint1R/W
0003HRESERVED保留int1R/W
0004HRESERVED保留int1R/W
0005HChangeProtocol协议切换设置int1R/W
0006HAddr此地址只有 Modbus-RTU 时有效int1R/W
0007HRESERVED保留int1R/W
0008HRESERVED保留int1R/W
0009HRESERVED保留int1R/W
000AHRESERVED保留int1R/W
000BHRESERVED保留int1R/W
000CHBAud波特率int1R/W
000DHRESERVED保留int1R/W
000EHRESERVED保留int1R/W
000FHRESERVED保留int1R/W
0010HRESERVED保留int1R/W
2000HUA 相电压float2R/W
2002HIA 相电流float2R/W
2004HP瞬时总有功功率float2R/W
2006HQ瞬时总无功功率float2R/W
2008HS瞬时总视在功率float2R/W
200AHPF总功功率因数float2R/W
200CHRESERVED保留float2R/W
200EHFreq电网频率float2R/W
2010HRESERVED保留float2R/W
4000HEp有功总电能float2R/W
通讯参数信息

ChangeProtocol 协议切换模式字,数据为 2 为 Modbus-RTU 协议,数据为 1 时为 DL/T 645-2007协议;

CLr.E 电能清零写 1 清除总电能;

BAud 波特率: 0:1200bps; 1:2400bps; 2:4800bps; 3:9600bps;

通讯示例

功能码 03H:读寄存器

主机要读取从机地址为 01H,起始寄存器地址为 0CH 的 2 个寄存器数据,主机发送:

地址码功能码起始寄存器地址寄存器数量CRC 校验码
010300 0C00 0204 08

如果从机寄存器 0CH、0DH 的数据为 0000H、1388H,从机返回:

地址码功能码字节数寄存器 0CH 数据寄存器 0DH 数据CRC 校验码
01030400 0013 88F7 65

功能码 10H:写多路寄存器

例如:主机要把数据 0002H、1388H、000AH 保存到从机地址为 01H,起始寄存器地址为 00H的 3 个寄存器中。

主机发送:

地址码功能码起始寄存器地址寄存器数量写入字节数00H 寄存器待写入数据01H 寄存器待写入数据02H 寄存器待写入数据CRC 校验码
011000 0000 030600 0213 88 00 0A9B E9

从机返回:

地址码功能码起始寄存器地址寄存器数量CRC 校验码
011000 0000 0380 08

16 位CRC校验码

主机或从机可用校验码判别接收信息是否正确。由于电子噪声或一些其它干扰,信息在传

输过程中可能会发生错误,校验码可以检验主机或从机通讯信息是否有误。

16 位 CRC 校验码由主机计算,放置于发送信息帧的尾部。从机再重新计算接收到的信息的CRC,比较计算得到的 CRC 与接收到的 CRC 是否一致,如果不一致,则表明出错。在进行 CRC 计算时只用到 8 个数据位,起始位及停止位都不参与 CRC 计算。

CRC 校验码计算方法如下:

1) 预置 1 个 16 位的寄存器为十六进制 FFFF(即全为 1),称此寄存器为 CRC 寄存器;

2) 把第一个 8 位二进制数据(通讯信息帧的第 1 个字节)与 16 位 CRC 寄存器的低 8 位相异或,结果放于 CRC 寄存器;

3) 把 CRC 寄存器的内容右移一位(朝低位)并用 0 填补最高位,检查右移后的移出位;

4) 如果移出位为 0:重复第 3)步(再次右移一位);

如果移出位为 1:CRC 寄存器与多项式 A001(1010 0000 0000 0001)进行异或;

5) 重复步骤 3)和 4),直到右移 8 次,这样整个 8 位数据全部进行了处理;

6) 重复步骤 2)到步骤 5),进行通讯信息帧下一个字节的处理;

7) 将该通讯信息帧所有字节(不包括 CRC 校验码)按上述步骤计算完成后,得到的 CRC 寄存器内容即为:16 位 CRC 校验码。

出错处理

当仪表检测到了除 CRC 校验码出错以外的其它错误时,将向主机回送信息,功能码的最高位置为 1,即从机返送给主机的功能码是在主机发送的功能码的基础上加 128。从机返回的错误信息帧格式如下:

地址码功能码(最高位为 1)错误码CRC 校验码
1 字节1 字节1 字节2字节

错误码如下:

01H非法的功能码接收到的功能码仪表不支持
02H非法的寄存器地址接收到的寄存器地址超出仪表的寄存器地址范围
03H非法的数据值接收到的数据值超出相应地址的数据范围

Modbus技术交流QQ群

正泰DDSU666 单相电能表 RS485-MODBUS RTU通讯说明插图5

相关新闻

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
SHARE
TOP