艾默生通讯规约.docx

上传人:b****2 文档编号:23492557 上传时间:2023-05-17 格式:DOCX 页数:18 大小:22.35KB
下载 相关 举报
艾默生通讯规约.docx_第1页
第1页 / 共18页
艾默生通讯规约.docx_第2页
第2页 / 共18页
艾默生通讯规约.docx_第3页
第3页 / 共18页
艾默生通讯规约.docx_第4页
第4页 / 共18页
艾默生通讯规约.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

艾默生通讯规约.docx

《艾默生通讯规约.docx》由会员分享,可在线阅读,更多相关《艾默生通讯规约.docx(18页珍藏版)》请在冰豆网上搜索。

艾默生通讯规约.docx

艾默生通讯规约

艾默生网络能源

有限公司

文档编号

软件版本

文档密级

共页

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1