艾默生通讯规约.docx
- 文档编号:23492557
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:18
- 大小:22.35KB
艾默生通讯规约.docx
《艾默生通讯规约.docx》由会员分享,可在线阅读,更多相关《艾默生通讯规约.docx(18页珍藏版)》请在冰豆网上搜索。
艾默生通讯规约
艾默生网络能源
有限公司
文档编号
软件版本
文档密级
共页
ENPC充电模块混合协议通讯规约
1.00
普通
ENPC充电模块混合协议通讯规约
拟制:
张志国
审核:
标准化:
批准:
Modbus通讯规约
1、概述
本文描述了电力电源10A模块数据上报的Modbus通讯规约标准,应用于10A模块向上级监控设备上报数据时的通讯规约。
2、适用范围
规约适用于艾默生网络能源有限公司开发的10A模块,是开发、测试10A模块通讯软件的依据。
3、参考文献
ModiconModbusProtocolReferenceGuidePI-MBUS-300Rev.J
4、物理接口
RS485,波特率9600,字符格式采用奇校验位、8位数据位、1位停止位(N81)的异步串行通讯格式。
5、帧结构
8Bit地址
8Bit功能码
nX8Bit数据
16BitCRC校验码
采用Modbus规约的RTU(RemoteTerminalUnit)方式,每个字节以2个十六进制数,有效的数据范围为0~9,A~F。
地址
指10A模块的地址,范围:
0~32
功能码
10A模块只支持功能码03(读数据)、06(设置数据)
数据
上报或下设的数据,按寄存器(数据地址)进行发送,每一个寄存器由两个字节组成,关于寄存器号的定义,请参阅附录A。
CRC校验码
CRC(CyclicalRedundancyCheck)对地址、功能码和数据进行校验,由两字节组成,CRC由传输设备生成,附加在数据帧中,如果由接收到数据计算出来的校验和与附加在数据后的校验和不一致,则有错误发生。
关于CRC生成函数,请参阅附录B内容。
6.命令解释
6.1查询数据,功能码03
上位机发送数据查询命令信息帧,10A模块接收到正确的查询命令后,对命令进行响应回送数据给上位机。
格式如下:
查询命令帧格式
字段值
字段说明
01
地址1
03
功能码3
00
起始地址高字节
起始地址低字节,起始地址0
00
00
数据个数高字节
数据个数低字节,读3个数据
03
CRCHi
CRC高字节
CRC低字节
CRCLo
10A模块响应帧格式
字段值
字段说明
01
地址1
03
功能码3
06
应答数据字节数
D0Hi
第1个数据高字节
第1个数据低字节
D0Lo
D1Hi
第2个数据高字节
第2个数据低字节
D1Lo
D2Hi
第3个数据高字节
第3个数据低字节
D2Lo
CRCHi
CRC高字节
CRCLo
CRC低字节
6.2设置数据,功能码06
上位机发送设置数据查询命令和设置数据,10A模块接收到正确的设置命令后,将指定的数据设置成命令帧中携带的数据,并将数据原样返回进行响应,若设置不成功时,不应答。
格式如下:
设置命令帧格式
字段值
字段说明
01
地址01
06
功能码06
00
设置数据地址高字节
设置数据地址低字节,地址02
02
00
设置数据高字节
设置数据低字节,数据值为03
03
CRCHi
CRC高字节
CRC低字节
CRCLo
10A模块响应帧格式
字段值
字段说明
01
地址01
06
功能码06
00
设置数据地址高字节
设置数据地址低字节,地址2
02
00
设置数据数据高字节
设置数据数据低字节,数据3
03
CRCHi
CRC高字节
CRC低字节
CRCLo
关于广播命令:
当上位机发送的设置命令数据包中地址字段为0xFF时,表示上位机发送广播命令,所有接收该类型数据包的模块都执行数据包中包含的命令,并且不对上位机应答。
注:
广播命令的定义不同于标准MODBUS协议的广播命令,在标准MODBUS命令中广播地址是0而不是0xFF。
附录A数据地址定义
数据类型
地址范围
模拟量AI
0~4,6~7
信号量DI
5
上位机如果读取设备不支持的数据地址或不存在的数据地址,设备不响应。
上位机如果设置设备不支持的数据地址或不存在的数据地址,设备不响应。
上位机如果下发设备不支持的功能码,则设备不响应。
AI量地址定义
地址
信号名称
备注
(上行指模块应答数据方向,下行指模块接收数据方向)
0
模块输出电压
上行模块输出实际电压
下行调节输出电压
1
模块输出电流
上行模块输出实际电流
下行无意义
2
模块限流点百分数
上行模块当前限流值
下行修改模块限流值
500表示50%限流,即此时模块最大能输出额定电流的50%
3
模块输出电压上限
上行模块当前输出电压上限
下行修改模块输出电压上限
4
模块输出电压下限
上行模块当前输出电压下限
下行修改模块输出电压下限
5
模块开关状态量DI
定义见下表(DI量地址和位定义定义)
6
模块自动电压
上行模块当前浮充电压
下行修改模块浮充电压
7
模块手动电压
上行模块均充电压
下行修改均充电压
每个模拟量(AI)用16Bit表示,满量程65535表示+6553.5,读回的16Bit的AI值Vh和实际表示的AI值Vf的对应关系为:
Vh/10=Vf,精度为0.1;
所有的开关量(DI)用一个16Bit字表示,16Bit字按下表解释。
DI量地址和位定义定义
DI5bit
信号名称
备注
0
模块开关机状态
上行1:
关机状态,0:
开机状态
下行1:
关机命令,0:
开机命令
1
模块自动/手动状态
上行1:
手动,0:
自动
下行无意义
2
保护状态
上行1:
保护,0:
正常
下行无意义
3
模块故障状态
上行1:
故障,0:
正常
下行无意义
4~15
保留
版本号
附录B:
CRC16校验的计算方法
CRC(CyclicalRedundancyCheck)由两字节组成,生成函数如下:
1、CRC计算函数
WORDModbusCRC(BYTE*pData,BYTElen)
{
BYTEbyCRCHi=0xff;
BYTEbyCRCLo=0xff;
BYTEbyIdx;
WORDcrc;
while(len--)
{
byIdx=byCRCHi^*pData++;
byCRCHi=byCRCLo^gabyCRCHi[byIdx];
byCRCLo=gabyCRCLo[byIdx];
}
crc=byCRCHi;
crc<<=8;
crc+=byCRCLo;
returncrc;
}
CRC码表高字节
BYTEgabyCRCHi[]=
{
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码表高字节
BYTEgabyCRCLo[]=
{
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
};
ENPC通讯规约
1物理接口
串行通信口采用RS485,采用半双工的查询工作方式。
通信波特率固定为9600bps,字符格式为8位数据位,1位停止位,奇校验,具体格式如下:
起始位
数据位
校验位
停止位
1
8
SM2
1
注释:
模块监控采用51单片机的多机通信方式工作。
由上位机发往整流模块的命令信息在发送SOI和ADR(SOI加ADR共三个字节,其注释参见6)时,应确保其校验位为1;而在发送命令信息其它数据时,应确保其校验位为0。
由整流模块往监控模块发的响应信息中每字节的校验位SM2都为0。
由监控模块发往整流模块的命令信息采用奇校验方式可通过将字节的最高位置1或置0来保证SM2位为1或0。
2数据包格式
2.1信息类型
上位机(HOST)与整流模块(SLAVE)之间交换的数据信息分为两种类型:
(1)命令信息:
由HOST发出到SLAVE的命令;
(2)响应信息:
由SLAVE返回到HOST的响应。
2.2信息帧格式
发送顺序号
1
2
3
4
5
6
7
解释字节数
1
1
1
2
X
2
1
发送字节数
1
2
2
4
2X
4
1
名称
SOI
ADR
CID/RTN
LENGTH
DATAINFO
CHKCODE
EOI
注:
格式表中各项除SOI和EOI以HEX解释及传输外,其余各项都是以HEX解释,以HEX-ASCII码的方式传输。
每个HEX字节用两个ASCII码传输,高四位一个ASCII码传输,低四位用一个ASCII码传输;先发送低四位对应的ASCII码,再发送高四位对应的ASCII码。
如CID1=4AH,则发送的是41H和34H。
2.3信息帧注解
2.3.1起始标志位SOI
起始标志位SOI(STARTOFINFORMATION)为7EH,对应HEX字符“~”,代表一个新信息帧的开始。
2.3.2整流模块地址ADR
整流模块地址ADR(ADDRESS)为各整流模块的识别标志,一个数据总线RS485上不可挂相同地址的整流模块。
整流模块编址范围:
00--31(00H—1FH)或255(FFH表示广播地址,以该地址下发的控制命令所有模块都动作,但不做应答)。
2.3.3命令标识符CID
命令标识符CID(COMMANDID)为各类型监控模块往整流模块命令的识别标志,详细内容请参见第4节描述。
2.3.4返回标识符RTN
整流模块往监控模块的应答数据包中,在CID的位置填上返回码RTN,其含义见下表:
序号
RTN的数值(HEX)
含义
备注
1
CIDH
命令正常执行
2
F1H
校验码错误
3
F2H
无效命令
命令码或命令数据无效
4
F3H~FFH
保留
2.3.5信息域长度LENGTH
信息域长度LENGTH为发送信息域DATAINFO的ASCII码字节数,当LENGTH=0时,DATAINFO为空,即无该项。
LENGTH由2个HEX字节构成,转换为4个ASCII码发送,先传低HEX字节,再传高HEX字节;每个字节用两个ASCII码传输,先传低四位对应ASCII码,再传高四位对应ASCII码。
如LENGTH=D012H,则依次发送32H,31H,30H,44H。
2.3.6信息域DATAINFO
信息域DATAINFO为数据信息,如果LENGTH为0,则没有该项数据。
DATAINFO由浮点数、整型数和字节数构成,组成方式随各种命令及配置的变化而变化。
2.3.7校验码CHKCODE
校验和码CHKCODE为不包括SOI、EOI和CHKCODE自身的校验码。
CHKCODE采用CRC校验码,用来完成简单的数据检验功能,校验多项式用180DH,校验对象包括SID、CID、LENGTH,DATAINFO。
例如:
当校验对象依次为31H、30H、34H、32H时,将31H、30H、34H、32H看作一二进制码流0011,0001,0011,0000,0011,0100,0011,0010并在其后加12个二进制0作为被除数,把180DH(0001,1000,0000,1101)作为除数,除法运算时不作减法运算,而是作异或运算,最后产生的余数即为校验码,按此方法,上面码流的CRC12的校验码为3CDH。
由监控模块往整流模块发命令信息前先计算CHKCODE,发送时才对每字节的最高位进行处理;整流模块收到命令信息后,先处理掉每字节的校验最高位,再计算CHKCODE。
同理,由整流模块往监控模块发响应信息前先计算CHKCODE,发送时才对每字节的校验位SM2进行处理;监控模块收到响应信息后,先处理掉每字节的校验位SM2,再计算CHKCODE。
CHKCODE由2个HEX字节构成,转换为4个ASCII码发送,先传低HEX字节,再传高HEX字节;每个字节用两个ASCII码传输,先传低四位对应ASCII码,再传高四位对应ASCII码。
如CHKCODE=09ADH,则依次发送44H,41H,39H,30H。
2.3.8结束标志符EOI
结束标志符EOI(ENDOFINFORMATION)为0DH,对应回车符,代表一个信息帧的结束。
3数据格式
3.1整型数
整型数(INTEGER,2BYTE)的存储格式为两个字节:
无符号整型数0––+65,535
两个字节的整型数传送顺序为:
先传低字节,再传高字节;每个字节用两个ASCII码传输,先传低四位对应ASCII码,再传高四位对应ASCII码。
如整型数1987H,传送顺序为:
先传87H,再传19H;实际发送ASCII码顺序37H,38H,39H,31H。
3.2浮点数
浮点数的存储格式为四个字节,转换为HEX-ASCII码后传输,发送时按尾数低位、尾数中位、尾数高位和阶码及符号位的先后顺序发送八个字节。
浮点数采用IEEE32位标准浮点数格式(标准C语言浮点数格式),长度为32bits,格式如下所示:
D31
D30—D23
D22—D16
D15—D8
D7—D0
浮点数符号S
阶码
尾数高位
尾数中位
尾数低位
若阶码为E,尾数为M,则有:
浮点数值=±(1+M×2-23)·2E-127
浮点数的正负取决于符号位S的值,S=1表示浮点数为负,S=0则表示浮点数为正。
例如:
当32位浮点数为40H,A0H,00H,00H时,即S=0,E=129,M=221,则:
浮点数值=(1+221×2-23)·2129-127=5.0
4命令总览
取模拟量数据
测量模拟量数据
41H
浮点数
取状态量数据
测量状态量数据
42H
CHAR
取告警量数据
告警量数据
43H
CHAR
取上下限数据
上下限数据
44H
浮点数
写单个上/下限命令
写模模块上限/下限参数
51H
写单次控制命令
执行一次控制
53H
5模块信号
信号类别
信号名称
信号编码(HEX)
高字节
低字节
测量模拟量
模块输出电压
10H
01H
模块输出电流
10H
02H
模块限流点
10H
04
状态量
控制开关机状态(1关,0开)
12H
01H
自动手动状态(0自动,1手动)
12H
02H
告警量
模块保护
14H
02H
模块故障
14H
01H
上下限设置
输出控制电压上限
16H
01H
输出控制电压下限
16H
02H
设浮充点
16H
04H
设均充点
16H
05H
控制量
限流点
1AH
01H
开关机(1关,0开)
1AH
04H
调至均充点
1AH
05H
调至浮充点
1AH
06H
调节模块输出电压
1AH
07H
6命令详解
如无特别说明,LENGTH均为转换后发送的ASCII码字节数。
6.2读取数据
6.2.1取模拟量数据
CID(命令)/RTN(应答)
LENGTH
DATAINFO
命令包
41H
0
无
应答包
RTN
N*8
N个模拟量数据
DATAINFO发送顺序:
第一个模拟量数据
……
第N个模拟量数据
6.2.2取状态量数据
CID(命令)/RTN(应答)
LENGTH
DATAINFO
命令包
42H
0
无
应答包
RTN
N*2
N个开关量状态
DATAINFO发送顺序:
第一个开关量状态
……
第N个开关量状态
6.2.3取告警量数据
CID(命令)/RTN(应答)
LENGTH
DATAINFO
命令包
43H
0
无
应答包
RTN
N*2
N个告警量数据
DATAINFO发送顺序:
第一个告警量数据
……
第N个告警量数据
6.2.4取上下限数据
CID(命令)/RTN(应答)
LENGTH
DATAINFO
命令包
44H
0
无
应答包
RTN
N*8
N个上下限设置数据
DATAINFO发送顺序:
第一个上下限设置数据
……
第N个上下限设置数据
6.3写命令
6.3.1写单个上/下限命令
CID(命令)/RTN(应答)
LENGTH
DATAINFO
命令包
51H
4+8
单个上/下限编码+对应上/下限数据
应答包
RTN
0
无
6.3.3写单次控制命令
CID(命令)/RTN(应答)
LENGTH
DATAINFO
命令包
53H
*
单个控制编码+对应控制值
应答包
RTN
0
无
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 艾默生 通讯 规约