新普惠自动气象站通讯协议110831.docx

上传人:b****4 文档编号:12207653 上传时间:2023-04-17 格式:DOCX 页数:15 大小:21.27KB
下载 相关 举报
新普惠自动气象站通讯协议110831.docx_第1页
第1页 / 共15页
新普惠自动气象站通讯协议110831.docx_第2页
第2页 / 共15页
新普惠自动气象站通讯协议110831.docx_第3页
第3页 / 共15页
新普惠自动气象站通讯协议110831.docx_第4页
第4页 / 共15页
新普惠自动气象站通讯协议110831.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

新普惠自动气象站通讯协议110831.docx

《新普惠自动气象站通讯协议110831.docx》由会员分享,可在线阅读,更多相关《新普惠自动气象站通讯协议110831.docx(15页珍藏版)》请在冰豆网上搜索。

新普惠自动气象站通讯协议110831.docx

新普惠自动气象站通讯协议110831

新普惠自动气象站通讯协议

V20110831

一、协议特性

1、支持XPH通讯、标准MODBUS通讯两种格式。

2、支持RS-232、RS-485通讯总线。

3、支持19200波特率,特殊版本可达38400.

4、支持最大设备数254个。

5、数据帧最小间隔100ms以上。

6、使用CRC16数据帧错误检查,多项式码0xA001。

二、协议说明

新普惠气象站支持两种格式的通讯协议工作,任一时刻只能使用一种通讯协议进行通讯。

下面分别对两种通讯协议进行详细说明。

1、XPH通讯协议

通讯参数:

波特率9600数据位8位无校验位

XPH通讯协议是效仿标准MODBUS通讯的一个自定义版本,其并不兼容MODBUS通讯协议。

其特点是召唤式工作,气象站仅作为服务器,使用上位机客户端进行通讯。

气象站收到正确数据帧后,就回复相应的内容,无效数据帧则不回复任何内容。

不回复是便于多台气象站进行485总线组网,避免数据通讯冲突。

1)XPH通用帧格式

序号

内容

字节数

说明

备注

1

地址域

1

气象站通讯地址

唯一

2

读写域

1

读(0x03)/写(0x10)操作码

2选1

3

命令域

2

命令码,前1字节必须为0

00xx

4

数据长度域

2

数据域长度,不包括本域

发送时可无

5

数据域

N

数据

6

校验域

2

CRC16检验码

低前高后

2)XPH协议通讯码

序号

命令码

含义

类型

备注

1

0x00

实时环境参数数据

通用类型

仅读

2

0x20

系统参数配置

通用类型

读写

3

0x37

读历史数据

通用类型

仅读

4

0x38

历史数据重读

通用类型

仅读

5

0x61

配置登录GPRS服务器密码

需支持

读写

6

0x80

复位气象站

通用类型

仅写

3)XPH通讯协议详细说明

对于每条通讯命令码,进行收发过程的详细描述,假定气象站的地址为0x01。

返回的通道数据都以有符号16进制数表示,如通道1的数据(包括实时数和历史数据)为0x120x34,表示为十进制数即4660(0x1234)。

即数据字节的高位在前,低位在后,此顺序不能错,否则数据值将错误。

另外,对不不同的传感器类型,某些通道数据值需要表示N位小数,此时,该通道16位有符号数扩大10的N次方倍。

如通道1表示风速,带一位小数,其数据为0x000x7B(十进制123),则实际风速为12.3m/s,即读取的数据扩大了10倍,其他小数以此类推。

传感器精度参数详见说明书。

红色字:

命令码

绿色字:

CRC16校验码(低字节在前,高字节在后)

蓝色字:

数据(高字节在前,低字节在后,0x7FFF表示无效数据)

紫色字:

数据长度(高字节在前,低字节在后)

 

A、读取实时环境参数数据

客户端发送:

01030000F1D8

气象站返回:

(38字节)

010300207FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF693F

返回数据格式说明:

序号

含义

偏移

字节数

说明

备注

1

地址域

0

1

地址(0x01)

0x01

2

操作码

1

1

仅读(0x03)

0x03

3

数据长度域

2

2

0x000x20

高前低后

4

数据域

4

2

通道1

0x7FFF(无效/未接)

6

2

通道2

0x7FFF(无效/未接)

8

2

通道3

0x7FFF(无效/未接)

10

2

通道4

0x7FFF(无效/未接)

12

2

通道5

0x7FFF(无效/未接)

14

2

通道6

0x7FFF(无效/未接)

16

2

通道7

0x7FFF(无效/未接)

18

2

通道8

0x7FFF(无效/未接)

20

2

通道9

0x7FFF(无效/未接)

22

2

通道10

0x7FFF(无效/未接)

24

2

通道11

0x7FFF(无效/未接)

26

2

通道12

0x7FFF(无效/未接)

28

2

通道13

0x7FFF(无效/未接)

30

2

通道14

0x7FFF(无效/未接)

32

2

通道15

0x7FFF(无效/未接)

34

2

通道16

0x7FFF(无效/未接)

5

校验域

36

2

低前高后

0x690x3F

16通道对应的配置出厂时定义,根据需要而定。

B、读取系统参数配置

客户端发送:

(6个字节)

01030020F000

气象站返回:

(14字节)

010300080B081F0B000A010198E0

返回数据说明:

序号

含义

偏移

字节数

说明

备注

1

地址域

0

1

地址(0x01)

0x01

2

操作码

1

1

读(0x03)

0x03

3

数据长度域

2

2

0x000x08

高前低后

4

数据域

3

1

0B(2011年)

4

1

08(8月)

5

1

1F(31日)

6

1

0B(12点/24小时制)

7

1

00(00分钟)

8

1

存储间隔

10(分钟)

9

1

语言类型0/1

1-英语/0-中文

10

1

设备地址

01(0x01-0xFE)

5

校验域

11

2

低前高后

0x980xE0

存储间隔:

即历史数据保存的间隔,单位为:

分钟

设备地址:

设置范围0-254,

0为广播地址,一般不要随便使用,主要用于组网或多播;

1-254为正常设备地址,同一总线上必须保证唯一;

若无返回数据,则说明读取不成功。

 

C、写入系统参数配置

客户端发送:

(17字节)

011000200004080B081F0B0010000059DD

气象站返回:

(8个字节)

011000200004C000

发送数据说明:

序号

含义

偏移

字节数

说明

备注

1

地址域

0

1

地址(0x01)

0x01

2

操作码

1

1

写(0x10)

0x10

3

命令码

2

2

0x000x20

高前低后

4

寄存器数量

4

2

0x000x04

高前低后

5

数据长度

6

1

0x08

8个数据字节

6

数据域

7

1

0B

0B(2011年)

8

1

08

08(8月)

9

1

1F

1F(31日)

10

1

0B

0B(12点/24小时制)

11

1

00

00(00分钟)

12

1

10

存储间隔16(分钟)

13

1

00

1-英语/0-中文

14

1

00

保留/地址

5

校验域

15

2

低前高后

0x590xDD

寄存器数量:

该域无意义,保留该域为了向前兼容,请尽量使用说明的数值;

数据域最后一个字节,目前为设备地址设置,之前的通讯版本选择为保留,故在20110831之后都要小心设置。

最好是先读取系统参数,然后使用读取的设备地址填充该字节。

若无返回数据,则说明写入不成功,否则写入成功。

 

D、读取历史数据

客户端发送:

(6个字节)

01030037B00E

气象站返回:

(1044个字节)

0103040E001CD0~DNCRC16

返回数据说明:

序号

含义

偏移

字节数

说明

备注

1

地址域

0

1

地址(0x01)

0x01

2

操作码

1

1

读(0x03)

0x03

3

数据长度

2

2

0x040x0E

高前低后

4

有效数据帧数

4

2

0x000x1C

高前低后

5

数据域

6

1036

历史数据包

分成N帧

6

校验域

1042

2

低前高后

CRC16低前高后

数据长度域:

为“有效数据帧数”和“数据域”两个域字节总和。

数据域:

固定大小为1036个字节,每帧37字节,故最大有效帧1036/37=28帧。

有效数据帧数:

由于历史数据包是等长的,该域指示数据域中包含的有效帧数,有效帧从数据域的0位置开始,顺序往后排列。

最大有效帧为28帧。

历史数据帧说明:

(37字节)

序号

偏移

字节数

说明

1

0

1

年(2000年以后的偏移)

2

1

1

3

2

1

4

3

1

时(24小时制)

5

4

1

分钟

16通道数据值

5

2

通道1

7

2

通道2

9

2

通道3

11

2

通道4

13

2

通道5

15

2

通道6

17

2

通道7

19

2

通道8

21

2

通道9

23

2

通道10

25

2

通道11

27

2

通道12

29

2

通道13

31

2

通道14

33

2

通道15

35

2

通道16

E、重读历史数据

客户端发送:

01030038F00A

气象站返回:

返回数据与“[D]读取历史数据”返回数据格式相同。

说明:

由于远程数据读取时,且历史数据包比较大,可能会发生数据错误。

就可能造成读取的历史数据在传输过程中出错,从而导致某些上位机接口程序误判读取历史数据错误。

而气象站一旦读取了历史数据后不能重读的话,就会造成某包历史数据丢失的现象。

重读历史数据命令用于重复读取上一次读取的历史数据,从而解决错误丢失历史问题。

 

F、读取登录密码(该命令需额外支持,默认不支持)

客户端发送:

(8个字节)

01030061000415d7

气象站返回:

(12个字节)

010300610004YYYYYYYYCRC16

返回数据说明:

序号

含义

偏移

字节数

说明

备注

1

地址域

0

1

地址(0x01)

0x01

2

操作码

1

1

读(0x03)

0x03

3

命令码

2

2

0x000x61

高前低后

4

数据长度域

4

2

0x000x04

高前低后

5

数据域

6

4

4位密码数据

从左到右

6

校验域

10

2

低前高后

CRC16低前高后

数据域:

4位ASCII码表示的密码,每位的范围0-9,即0x30-0x39。

数据域0-3字节对应界面输入的左-右顺序。

G、写入登录密码(该命令需额外支持,默认不支持)

客户端发送:

(12字节)

011000610004YYYYYYYYCRC16

气象站返回:

(8个字节)

011000610004CRC16

写入数据说明:

数据域:

4位ASCII码表示的密码,每位的范围0-9,即0x30-0x39。

数据域0-3字节对应界面输入的左-右顺序。

 

H、复位气象站

客户端发送:

(4字节)

01800180

气象站返回:

无返回

 

2、标准MODBUS通讯协议

通讯参数:

波特率9600数据位8位无校验位

气象站标准MODBUS通讯协议使用RTU模式。

消息帧发送至少要以3.5个字符时间的停顿间隔开始,即在传输完每帧的最后一个字节,至少需要3.5个字符时间的停顿来标定消息帧的结束。

下一个新的消息帧可在此停顿后开始,整个消息帧必须作为一连续的流传输。

气象站标准MODBUS通讯协议仅支持读功能,不支持配置气象站寄存器的功能,即不能写入任何数据。

其特点有:

①气象站共有16个通道寄存器,对应16个通道的传感器测量输出值;

②寄存器最小编号固定于0,最大编号固定于15,不可更改;

③支持一次读取单个、多个(寄存器编号必须连续)寄存器;

④每一通道数据占2个字节,高字节在前,低字节在后,16位有符号整形值;

⑤数据小数位定义,同XPH协议的小数定义,即N位小数,数据值扩大10的N次方倍。

 

气象站标准MODBUS通讯协议帧

外部设备发送帧:

如0103000000104406

序号

含义

偏移

字节数

说明

1

设备地址

0

1

设备唯一标识

2

操作码(读)

1

1

固定值0x03

3

寄存器起始编号

2

2

读取的第一个寄存器编号

4

寄存器结束编号

4

2

读取的最后个寄存器编号-1

5

CRC16检验

6

2

低前高后

设备地址:

假定为0x01,有效范围0-254,0为广播地址。

操作码:

固定为0x03,即读取操作,不支持其他操作。

起始编号:

范围0-15,表示要读取的第一个寄存器编号。

结束编号:

范围1-16,表示读取最后一个寄存器编号+1,读取的数据不包括本编号的寄存器内容,仅作为结束标记,其值必须保证大于等于“起始编号”。

气象站返回数据帧:

如0103207FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF8C45

序号

含义

偏移

字节数

说明

1

设备地址

0

1

设备唯一标识

2

操作码(读)

1

1

固定值0x03

3

数据长度

2

1

不含本字节

4

数据域

3

N

最多32个字节

5

CRC16检验

3+N

2

低前高后

数据长度:

不含本身,仅表示数据域的字节数量。

最大32,最小0。

根据读取指令序列的“起始编号”和“结束编号”来确定。

数据长度=(结束编号–起始编号)*2

三、附录

1、CRC16校验码的计算

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

(2).把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低

8位相异或,把结果放于CRC寄存器;

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

(4).如果移出位为0:

重复第3步(再次右移一位);

如果移出位为1:

CRC寄存器与多项式A001(1010000000000001)进行异或;

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

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

(7).将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低

字节进行交换;

(8).最后得到的CRC寄存器内容即为CRC16码。

(注意得到的CRC码即为低前高后顺序)

2、通道数据转换

例如温度十六进制编码为“00C3”,换算成二进制为“000000011000011”,其二进制的第一位为“0”,所以它的值为正数,此时则可以用1中的的方法换算出十进制值“195”,最后将它除以10后得到最终结果“19.5”。

又例如温度十六进制编码为“FF3D”,换算成二进制为“1111111100111101”,其二进制的第一位为“1”,所以它的值为负数。

其具体换算步骤如下:

(1)将其二进制的的第一位替换为“0”得到:

“0111111100111101”

(2)后15位取反后得到:

“0000000011000010”

(3)加上“1”后得到:

“0000000011000011”

(4)按照1中的正数表示方法得到十进制值“195”

(5)因为是负值所以为“-195”

(6)结果除以10,最终结果为“-19.5”

所以:

00C3→19.5℃

FF3D→-19.5℃

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

当前位置:首页 > 外语学习 > 法语学习

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

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