PSM-E01 监控单元 MODBUS 通讯协议
PSM-E01 监控单元 MODBUS 通讯协议
xxx网络能源有限公司
目 录
1 概述 3
2 适用范围 3
3 引用标准 3
4 术语定义 3
5 物理接口 3
6 帧 3
7 命令解释 4
1 概述
PSM-E01监控模块内置两种后台通信协议,通过设置监控模块可以选择使用何种协议,后台协议分为CDT协议和MODBUS协议,本文描述MODBUS协议。
2 适用范围
本文适用于xxx网络能源有限公司的开发人员及测试人员,也适用于采用通讯方式接入我司直流屏设备的各自动化厂家。
3 引用标准
MODICON公司的MODBUS PROTOCOL标准。
4 术语定义
状态量:用于描述系统运行时的采集量,取值为有限的几个值,并不表示系统的故障情况。在本协议中一般指系统控制方式、电池充电状态两个量,在本协议的遥信量中包括了此类量。
告警量:用于描述系统处于异常时的采集量,取值为0或1,当取值为1时表示系统有故障存在。在本协议上送遥信量中的大部分都是此类量。
5 物理接口
通讯方式:串行RS232或RS485。
传输速率:600、1200、2400、4800、9600(缺省)、19200六种通讯xx率。字符格式:8位数据位、1位停止位、无校验。
6 帧
6.1帧结构
帧结构如图所示,每帧内容包括:地址1BYTE,功能号1BYTE,数据nBYTE,校验2BYTE, PSM-E01采用MODBUS规约中的RTU方式,通讯帧以HEX码传送。
地址(ADDR) | 功能号(FC) | 数据(DATA) | 校验(CRC) |
6.2 地址(ADDR)
指监控单元PSM-E01的地址,范围为1-254可设。
6.3 功能号
上级监控程序PSM-E01监控单元的命令代码。
6.4 数据
下行命令帧是命令的附加信息,上行响应帧是具体的数据。
6.5 校验
采用CRC校验,CRC生成函数,请参阅附录E内容。
7 命令解释
各命令必须严格按下面给出的格式下发,PSM-E01则按响应格式响应,否则 PSM-E01不响应。--表示根据实际数值填写。
7.1 读xx(DI)命令
01H 命令 | |
Slave Address | -- |
Function Code | 01H |
Start Point Hi | 00H |
Start Point Lo | 00H |
No.Point Hi | 00H |
No.Point Lo | 0FH |
CRC Hi | -- |
CRC Lo | -- |
01H 命令响应 | |
Slave Address | -- |
Function Code | 01H |
Byte Count | 02H |
Data Lo | -- |
Data Hi | -- |
CRC Hi | -- |
CRC Lo | -- |
03H 命令 | 03H 命令响应 | ||
Slave Address | -- | Slave Address | -- |
Function Code | 03H | Function Code | 03H |
Start Point Hi | 00H | Byte Count | 02H |
Start Point Lo | 00H | Data Hi | -- |
No.Point Hi | 00H | Data Lo | -- |
No.Point Lo | 01H | CRC Hi | -- |
CRC Hi | -- | CRC Lo | -- |
CRC Lo | -- |
可通过FC=01H或FC=03H命令读取DI,PSM-E01共有DI量16个点,必须一次全部读入。各DI的内容参见附录B。
7.2读遥测(AI)命令 | |
03H 命令 | |
Slave Address | -- |
Function Code | 03H |
Start Point Hi | 00H |
Start Point Lo | 64H |
No.Point Hi | 00H |
No.Point Lo | 0EH |
CRC Hi | -- |
CRC Lo | -- |
03H 命令响应
Slave Address | -- |
Function Code | 03H |
Byte Count | 1CH |
Data0 Hi | -- |
Data0 Lo | -- |
: | : |
Data8 | Hi | -- |
Data8 | Lo | -- |
CRC Hi | -- | |
CRC Lo | -- |
通过FC=03H命令读取AI,PSM-E01共有AI量14个点。各AI的表示参见附录C。
7.3遥控命令
05H 命令 Slave Address Function Code Reg. Hi | -- 05H --H | 05H 命令响应 Slave Address Function Code Reg. Hi | -- 05H --H |
Reg. Lo | --H | Reg. Lo | --H |
Data Hi | --H | Data Hi | --H |
Data Lo | 00H | Data Lo | 00H |
CRC Hi | -- | CRC Hi | -- |
CRC Lo | -- | CRC Lo | -- |
PSM-E01共有DO量2个点,Data Hi = FFH表示OFF,Data Hi = 00H表示ON如果控制成功则将命令原样返回,如果控制不成功则不响应
7.4 对时命令
10H 命令 10H 命令
Slave Address | -- |
Function Code | 0x10 |
Start Point Hi | 0x02 |
Start Point Lo | 0xBC |
No.Point Hi | 0x00 |
No.Point Lo | 0x04 |
Byte Count | 0x08 |
Data0 Hi | 年高 8 位 |
Data0Lo | 年低 8 位 |
Data1 Hi | 月 |
Data1 Lo | 日 |
Data2 Hi | 时 |
Data2 Lo | 分 |
Data3 Hi | 毫秒高 8 位 |
Data3 Lo | 毫秒低 8 位 |
CRC Hi | -- |
CRC Lo | -- |
注:毫秒 =当前秒*1000+当前毫秒值。
广播对时(地址=0xff):监控器不需要应答。
10H 命令响应
Slave Address | -- |
Function Code | 0x10 |
Start Point Hi | 0x02 |
Start Point Lo | 0xBC |
No.Point Hi | 0x00 |
No.Point Lo | 0x04 |
CRC Hi | -- |
CRC Lo | -- |
举例:
设置时间为 2006-8-18 ,15:22:06,0ms .
下发数据包如下: FF 10 02 BC 00 04 08 07 D6 08 12 0F 16 13 88 3D B0
附录A:寄存器分配
寄存器号 | 寄存器类型 |
000~099 | DI |
100~199 | AI |
200~299 | DO控制寄存器 |
附录B:DI信号表
寄存器0
位号 | 信号名称 | 备注 |
B0 | 系统运行方式 | 0:自动,1:手动 |
B1 | 电池充放电状态 | 0:充电,1:放电 |
B2 | 电池均浮充状态 | 0:均充,1:浮充(注 1) |
B3 | 系统绝缘下降 | 0:正常,1:下降 |
B4 | 电池单体电压异常 | 0:正常,1:异常 |
B5 | 充电模块通讯离线 | 0:在线,1:离线 | ||
B6 | 保留 | 保留 | ||
B7 | 母线电压异常 | 0:正常,1:异常 | ||
B8 | 电池组电压异常 | 0:正常,1:异常 | ||
B9 | 电池组充电过流 | 0:正常,1:过流 | ||
B10 | 电池组熔芯熔断 | 0:正常,1:熔断 | ||
B11 | 馈出支路跳闸 | 0:正常,1:跳闸 | ||
B12 | 交流输入空开跳闸 | 0:正常,1:跳闸 | ||
B13 | 防雷器故障 | 0:正常,1:故障 | ||
B14 | 交流停电 | 0:正常,1:停电 | ||
B15 | 监控器自身故障 | 0:正常,1:故障 |
注1 :当B1=1(即电池处于放电状态)时,B2无意义。寄存器1~99保留
附录C:AI信号表
寄存器号 | 信号名称 |
100 | 屏内交流输入 AB 电压 |
101 | 屏内交流输入 BC 电压 |
102 | 屏内交流输入 CA 电压 |
103 | 合闸母线电压 |
104 | 控制母线电压 |
105 | 负载电流 |
106 | 电池组电压 |
107 | 电池组电流 |
108 | 电池房温度 |
109 | 正母线对地电压 |
110 | 负母线对地电压 |
111 | 屏内交流输入 A 相电压 | ||
112 | 屏内交流输入 B 相电压 | ||
113 | 屏内交流输入 C 相电压 | ||
114~199 | 保留 |
每个AI量有两个字节构成,对应关系为0~65535 🡺 -2500.0~+2500.0,计算关系如下( W =上送的16BIT值, V = 实际的AI值)
V = (W/32767 – 1)*2500.0
附录D:DO信号表
寄存器号 | 信号名称 | 备注 |
200 | 系统运行方式控制 | 0000H:自动,FF00H:手动 |
201 | 电池均浮充控制 | 0000H:均充,FF00H:浮充 |
202~299 | 保留 | 无效 |
PSM-E01必须处于手动运行方式,才可控制电池进行均浮充转换,因此如果要控制电池均浮充转换,必须先将系统运行方式转换到手动运行。在自动运行方式下,如果下发电池状态转换命令,PSM-E01不响应,无应答。
附录E:CRC校验的计算方法
CRC(Cyclical Redundancy Check)由两字节组成,生成函数如下:
1.CRC计算函数
ChkSum(BYTE* pData,UINT nDataLen)
{
BYTE uchCRCHi = 0xff; BYTE uchCRCLo = 0xff;
UINT uIndex;
while(nDataLen--)
{
uIndex = uchCRCHi ^ *pData++;
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex]; uchCRCLo = auchCRCLo[uIndex];
}
return (uchCRCHi<<8|uchCRCLo);
}
2。CRC表高字节:
BYTE 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
};
低字节:
BYTE 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
};