资源描述
目 录
1. 概述 -----------------------------------------------------------------------------------------
2. ModBus协议 -----------------------------------------------------------------------------
1) 遥测 ---------------------------------------------------------------------------------------
2) 遥信 ---------------------------------------------------------------------------------------
3) 遥调 ---------------------------------------------------------------------------------------
4) 遥控 ---------------------------------------------------------------------------------------
5) 错误返回 ---------------------------------------------------------------------------------
6) CRC16校验码计算方法 --------------------------------------------------------------
3. CDT规约 ----------------------------------------------------------------------------------
1) 帧定义 ------------------------------------------------------------------------------------
2) 关键遥测 ---------------------------------------------------------------------------------
3) 遥信 ---------------------------------------------------------------------------------------
4) 遥调 ---------------------------------------------------------------------------------------
5) 遥控 ---------------------------------------------------------------------------------------
4. 测试报文 -----------------------------------------------------------------------------------
1. 概述
本文所叙述通信协议仅适适用于本企业所生产第二代电力电源监控系统PSM-C20系列产品。
物理接口: PSM-C20系列监控同时提供RS232和RS485通信接口, 用户可任意选择其中之一与后台设备联机, 注意, 若选择RS485接口连接到电脑串行通信口, 则需外加一个RS485-RS232转换头转接。
通信波特率支持1200bps、 2400bps、 4800bps和9600bps四种速率。每一帧由10位(1位起始位, 8位数据位, 1位停止位, 无校验位)组成。
在开始通信前, 请先设定好监控系统通信参数, 如通信地址、 通信速率和通信协议, PSM-C20系列监控同时兼容CDT和ModBus规约。通信地址从1到99可选。
在以后产品升级过程中, 本通信协议若有修改, 恕本企业不另行通知, 请立刻垂询本企业或访问本企业网站。
2. ModBus协议
1) 遥测
定义
地址
功效码
STAR ADDR
数据长度
CRC校验
数据
ADDR
03H
0000H
000dH
CRC 16
字节数
1
1
2
2
2
Ø ADDR: 监控设备地址。
Ø START ADDR为一特定值, 不可随便更改。
Ø 数据长度: 指请求设备返回数据长度。不可超出指定长度。
Ø CRC校验: 采取CRC16校验法, 发送时高位在前, 低位在后, 计算方法请参阅下面章节。
遥测返回:
定义
地址
功效码
长度
返回数据
CRC校验
数据
ADDR
03H
1a
DATA
CRC 16
字节数
1
1
1
“数据长度”
2
返回数据长度是指数据中字节数量, 即为请求数据长度2倍。
遥测返回DATA定义:
寄存器序号
定义
传输方法
放大系数
单位
0000~0001
交流1路A相电压
L—H
10
V
0002~0003
交流1路B相电压
L—H
10
V
0004~0005
交流1路C相电压
L—H
10
V
0006~0007
交流2路A相电压
L—H
10
V
0008~009
交流2路B相电压
L—H
10
V
000a~000b
交流2路C相电压
L—H
10
V
000c~000d
合母电压
L—H
10
V
000e~000f
控母电压
L—H
10
V
0010~0011
控母电流
L—H
10
A
0012~0013
电池电压
L—H
10
V
0014~0015
电池电流
L—H
10
A
0016~0017
环境温度
L—H
10
℃
0018~0019
电池温度
L—H
10
℃
2) 遥信
遥信下传:
定义
地址
功效码
STAR ADDR
数据长度
CRC校验
数据
ADDR
02H
7000H
0018H
CRC 16
字节数
1
1
2
2
2
遥信返回:
定义
地址
功效码
长度
返回数据
CRC校验
数据
ADDR
02H
18H
DATA
CRC 16
字节数
1
1
1
18H
2
遥信返回DATA定义: 0: 表示浮充、 开机、 正常、 接触器备用; 1: 表示均充、 关机、 告警、 接触器工作。
寄存器序号
Bit0
Bit1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
7000
交流一路接触器状态
交流二路接触器状态
电池充电方法1
电池充电方法2
×
×
×
系统总故障
7001
充电模块01开关机
充电模块02开关机
充电模块03开关机
充电模块04开关机
充电模块05开关机
充电模块06开关机
充电模块07开关机
充电模块08开关机
7002
充电模块09开关机
充电模块10开关机
充电模块11开关机
充电模块12开关机
充电模块13开关机
充电模块14开关机
充电模块15开关机
充电模块16开关机
7003
预留
7004
预留
7005
故障信息
…
…
7019
故障信息
故障信息定义表
故障序号
定义
占用字节数
备注
7005~7006
X号模块通信故障
2
1~16号模块
7007~7008
预留
2
7009~700A
X号模块故障
2
1~16号模块
700B~700C
预留
700D
Bit0
交流1路停电
Bit1
交流1路缺相
Bit2
交流1路欠压
Bit3
交流1途经压
Bit4
交流2路停电
Bit5
交流2路缺相
Bit6
交流2路欠压
Bit7
交流2途经压
700E
Bit0
合母电压过高
Bit1
合母电压过低
Bit2
控母电压过高
Bit3
控母电压过低
Bit4
电池电压过低
Bit5
电池充电过流
Bit6
未定义
Bit7
未定义
当开关信号为故障节点时, 代表告警信息; 当开关信号为开关状态时, 代表开关状态(合或分)。
700F~7011
直流开关1~24跳闸
3
7012
Bit0
直流开关25跳闸
Bit1
直流开关26跳闸
Bit2
直流开关27跳闸
Bit3
直流开关28跳闸
Bit4
直流开关29跳闸
Bit5
直流开关30跳闸
Bit6
防雷器故障
Bit7
熔断器故障
7013
巡检仪通信故障
1
取值1~5
7014
预留
1
7015
Bit0
单体电池过压
Bit1
单体电池欠压
Bit2
单体电池差压
Bit3
预留
Bit4
预留
Bit5
预留
Bit6
预留
Bit7
预留
7016
绝缘检测仪通信故障
1
取值1~8
7017
Bit0
母线电压超差
Bit1
绝缘支路接地故障
3) 遥调
遥调下传:
定义
地址
功效码
DATA REG
VALUE
CRC校验
数据
ADDR
06H
DATA
CRC 16
字节数
1
1
2
2
2
DATA REG定义: (低位在前, 高位在后)
DATA REG
遥调内容
单位
系数
设定范围
7100H
浮充电压
V
10
100~320
7200H
均充电压
V
10
110~320
遥调返回:
定义
地址
功效码
DATA REG
VALUE
CRC校验
数据
ADDR
06H
DATA
CRC 16
字节数
1
1
2
2
2
4) 遥控
遥控下传:
定义
地址
功效码
遥控编号
VALUE
CRC校验
数据
ADDR
0FH
78XXH
DATA
CRC 16
字节数
1
1
2
2
2
遥控编号
遥控内容
DATA
7800H~780FH
01~16号模块开关机控制
0=开机, 1=关机
7810H~781FH
预留
7840H
第一组电池均浮充控制
0=浮充, 1=均充
7841H
预留
遥控返回:
定义
地址
功效码
遥控编号
VALUE
CRC校验
数据
ADDR
0FH
78XXH
DATA
CRC 16
字节数
1
1
2
2
2
5) 错误返回
定义
地址
功效码
CODE
CRC校验
数据
ADDR
COM+80H
1
CRC 16
字节数
1
1
1
2
6) CRC16校验码计算方法
CRC添加到消息中时, 低字节先加入, 然后高字节。
CRC简单函数以下:
unsigned short CRC16(puchMsg, usDataLen)
unsigned char *puchMsg ; /* 要进行CRC校验消息 */
unsigned short usDataLen ; /* 消息中字节数 */
{
unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */
unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */
unsigned uIndex ; /* CRC循环中索引 */
while (usDataLen--) /* 传输消息缓冲区 */
{
uIndex = uchCRCHi ^ *puchMsgg++ ; /* 计算CRC */
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;
uchCRCLo = auchCRCLo[uIndex] ;
}
return (uchCRCHi << 8 | uchCRCLo) ;
}
/* CRC 高位字节值表 */
static unsigned char auchCRCHi[] = {
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
} ;
/* CRC低位字节值表*/
static char auchCRCLo[] = {
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
0x43, 0x83, 0x41, 0x81, 0x80, 0x40
} ;
3. CDT规约
1) 帧定义
同时字
控制字
信息字1
….
信息字N
帧结构:
同时字: EBH 90H EBH 90H EBH 90H, 共6个字节
序号
控制字
1
控制字节
2
帧类别码
3
每帧中信息字数量
4
源站地址
5
目站地址
6
校验码
控制字: 由6字节组成。
n 控制字节固定为71H;
n 源站地址: 下行时指上位机地址, 固定为01H, 上行时指监控设备地址;
n 目站地址: 下行时指监控设备地址, 上行时指上位机地址, 固定为01H;
n 信息字数量, 信息字数n表示该帧中所含信息字数量; n=0表示本帧无信息。
n 校验码, 本协议采取CRC校验, 校验多项式为107H,为信息字前5字节组成码流, 后面加8个0, 得到48位码流, 用校验多项式作为除数除以码流, 相除时做异或; 最终得到8位余数取反后既为校验码。
比如: 信息字为; 43h E8h 7DH 33H 56H 计算余数为2FH,取反后为D0H,发送序列为: 43h E8h 7DH 33H 56H D0H。
n 帧类别码定义
帧类别码
定义
上行 E=0
下行 E=0
61H
关键遥测
遥控选择
C2H
次要遥测
遥控实施
B3H
通常遥测
遥控撤销
F4H
遥信状态
57H
设定命令
信息字: 每个信息字由6个字节组成, 即功效码1字节, 信息4字节, 校验码1字节。
功效码定义:
功效码
用途
00H – 7FH
遥测
E0H
遥控选择
E1H
遥控返校
E2H
遥控实施
E3H
遥控撤销
E8H
遥调
F0H – F6H
遥信
2) 关键遥测
每个信息字传送2路遥测量, 每个遥测量包含2字节, 先送低字节, 后送高字节。最高位为符号位。(全部数据放大系数都为10)
功效码
信息1
信息2
00H
交流1路A相电压
交流1路B相电压
01H
交流1路C相电压
交流2路A相电压
02H
交流2路B相电压
交流2路C相电压
03H
合母电压
控母电压
04H
控母电流
电池电压
05H
电池电流
环境温度
3) 遥信
功效码
字节序号
Bit0
Bit1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
F0H
000
交流一路接触器状态
交流二路接触器状态
第一组电池充电方法
×
×
×
×
系统总故障
F1H
004
充电模块01开关机
充电模块02开关机
充电模块03开关机
充电模块04开关机
充电模块05开关机
充电模块06开关机
充电模块07开关机
充电模块08开关机
005
充电模块09开关机
充电模块10开关机
充电模块11开关机
充电模块12开关机
充电模块13开关机
充电模块14开关机
充电模块15开关机
充电模块16开关机
006
预留
007
预留
功效码
信息字
定义
说明
备注
F2H
1~2
1~16号模块通信故障
3~4预留
F3H
1~2
1~16号模块故障
4
3~4预留
F4H
1
Bit0
交流1路停电
1
Bit1
交流1路缺相
1
Bit2
交流1路欠压
Bit3
交流1途经压
Bit4
交流2路停电
Bit5
交流2路缺相
Bit6
交流2路欠压
Bit7
交流2途经压
2
Bit0
合母电压过高
Bit1
合母电压过低
Bit2
控母电压过高
Bit3
控母电压过低
Bit4
电池电压过低
Bit5
电池充电过流
Bit6
未定义
Bit7
未定义
3
Bit0
合母2电压过高
Bit1
合母2电压过低
Bit2
控母2电压过高
Bit3
控母2电压过低
Bit4
电池2电压过低
Bit5
电池2充电过流
Bit6
未定义
Bit7
未定义
4
预留
F5H
1
直流开关1~8跳闸
2
直流开关9~16跳闸
3
直流开关17~24跳闸
4
Bit0
直流开关25跳闸
Bit1
直流开关26跳闸
Bit2
直流开关27跳闸
Bit3
直流开关28跳闸
Bit4
直流开关29跳闸
Bit5
直流开关30跳闸
Bit6
防雷器故障
Bit7
熔断器故障
F6H
1
电池巡检仪通信故障
2
Bit0
单体电池过压
Bit1
单体电池欠压
Bit2
单体电池差压
3
绝缘检测仪通信故障
4
Bit0
母线电压超差
Bit1
绝缘支路接地故障
4) 设定
设定命令控制字格式同遥控命令, 但设定命令只有一个下行帧, 无返校、 实施和撤销命令帧; 控制字帧类别改为57H。信息字格式以下:
功效码(E8H)
设定(C3H)
设定对象号
设定值(低8位)
设定值(高8位)
校验码
对象号
设定内容
单位
系数
设定范围
00
浮充电压
V
10
100~320
01
均充电压
V
10
110~320
5) 遥控
遥控过程:
后台
遥控命令
遥控实施命令
遥控返校
实施
直流屏
(或撤销命令)
遥控过程信息字字格式
遥控选择(下行)
遥控返校(上行)
遥控实施(下行)
遥控撤销(下行)
0
功效码(E0H)
功效码(E1H)
功效码(E2H)
功效码(E3H)
1
合/分(CCH/33H)
合/分/错(CCH/33H/FFH)
实施(AAH)
撤销(55H)
2
开关序号
开关序号
开关序号
开关序号
3
合/分(反复)
合/分/错(反复)
实施(反复)
撤销(反复)
4
开关序号(反复)
开关序号(反复)
开关序号(反复)
开关序号(反复)
5
校验码
校验码
校验码
校验码
l 开关序号为二进值码
l 遥控返校插在上行信息中不跨帧地连送三遍。
l 遥控返校后超时30秒未收到实施命令, 此次命令自动撤销。
遥控开关定义
序号
定义
含义
00H
1#模块开关机
合: 开机, 分: 关机
01H
2#模块开关机
合: 开机, 分: 关机
…
…
…
1FH
32#模块开关机
合: 开机, 分: 关机
40H
电池充电方法
合: 浮充, 分: 均充
提议: 依据本协议开发上位机软件时, 若需用RS485往下发送数据, 必需在完整地接收到一帧上行数据后进行。
4. 测试报文
CDT:
设定浮充电压235.0V: eb 90 eb 90 eb 90 71 57 01 01 01 e4 e8 c3 00 2e 09 0a;
ModBus:
遥测: 01 03 00 00 00 0d 84 0f
遥信: 01 02 70 00 00 18 62 c0
转均充: 01 0f 78 40 00 01 8d 7f
转浮充: 01 0f 78 40 00 00 4c bf
1号模块关机: 01 0f 78 00 00 01 8c ab
1号模块开机: 01 0f 78 00 00 00 4d 6b
设定浮充电压235.0V: 01 06 71 00 2e 09 4f 50
展开阅读全文