MODBUS协议蓄电池组在线监测Word格式文档下载.docx

上传人:b****5 文档编号:20350983 上传时间:2023-01-22 格式:DOCX 页数:27 大小:44.94KB
下载 相关 举报
MODBUS协议蓄电池组在线监测Word格式文档下载.docx_第1页
第1页 / 共27页
MODBUS协议蓄电池组在线监测Word格式文档下载.docx_第2页
第2页 / 共27页
MODBUS协议蓄电池组在线监测Word格式文档下载.docx_第3页
第3页 / 共27页
MODBUS协议蓄电池组在线监测Word格式文档下载.docx_第4页
第4页 / 共27页
MODBUS协议蓄电池组在线监测Word格式文档下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

MODBUS协议蓄电池组在线监测Word格式文档下载.docx

《MODBUS协议蓄电池组在线监测Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MODBUS协议蓄电池组在线监测Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。

MODBUS协议蓄电池组在线监测Word格式文档下载.docx

字段

字节数

描述

设备地址

1

BYTE型数据,对象的地址。

范围1~247。

每组蓄电池分配

一个访问地址,默认情况下组1地址为1,组2地址为组1

地址加1,以此类推。

监测多少组蓄电池,就占用连续的多

少个地址。

组1地址可以前台修改,相应组2地址也会在组

1地址上增1。

功能码

BYTE型数据。

见“命令解析”。

正常情况下发送和应答的

功能码一致,异常情况下参见“异常应答机制”。

数据区

N

校验

2

CRC16校验,校验生成函数参考附录七。

帧格式图解

▪在Modbus串行链路,地址域只含有子节点地址。

如前文所述,合法的子节点地址为十进制0–247。

每个子设备被赋予1–247范围中的地址。

主节点通过将子节点的地址放到报文的地址域对子节点寻址。

当子节点返回应答时,它将自己的地

址放到应答报文的地址域以让主节点知道哪个子节点在回答。

▪功能码指明服务器要执行的动作。

功能码后面可跟有表示含有请求和响应参数的数据域。

▪错误检验域是对报文内容执行"

冗余校验"

的计算结果。

根据不同的传输模式(RTUorASCII)

使用两种不同的计算方法。

4.串行传输模式RTU

它定义了报文域的位内容在线路上串行的传送。

它确定了信息如何打包为报文和解码。

Modbus串行链路上所有设备的传输模式(和串行口参数)必须相同。

4.1RTU传输模式

串行链路上第一个MODBUS执行的长度约束限制了MODBUSPDU大小(最大RS485ADU=256

字节)。

因此,对串行链路通信来说,MODBUSPDU=256-服务器地址(1字节)-CRC(2字节)=253

字节。

帧描述:

→ModbusRTU帧最大为256字节。

4.2Modbus报文RTU帧

由发送设备将Modbus报文构造为带有已知起始和结束标记的帧。

这使设备可以在报文的开始接收

新帧,并且知道何时报文结束。

不完整的报文必须能够被检测到而错误标志必须作为结果被设置。

在RTU模式,报文帧由时长至少为3.5个字符时间的空闲间隔区分。

在后续的部分,这个时间区

间被称作t3.5。

整个报文帧必须以连续的字符流发送。

如果两个字符之间的空闲间隔大于1.5个字符时间,则报文帧被认为不完整应该被接收节点丢弃。

串通讯的数据帧格式图解

串口通信输出格式为:

1位起始位,8位数据位,1位停止位,奇校验。

默认波特率为2400bps,可调节为1200bps,2400bps,4800bps,9600bps。

编码系统:

8–位二进制

报文中每个8位字节含有两个4位十六进制字符(0–9,A–F)

BitsperByte:

1起始位

8数据位,首先发送最低有效位

1位作为奇偶校验

1停止位

偶校验是要求的,其它模式(奇校验,无校验)也可以使用。

为了保证与其它产品的最大兼

容性,同时支持无校验模式是建议的。

默认校验模式模式必须为偶校验。

注:

使用无校验要求2个停止位。

字符是如何串行传送的:

每个字符或字节均由此顺序发送(从左到右):

最低有效位(LSB)...最高有效位(MSB)

下行数据结构(主机发送到从机数据协议)

起始码地址码功能码数据区CRC校验停止码

||||||

-------------------------------------------------------------------------------------------------------------

1、数据格式:

【起始码:

0xEB0x900xEB0x90】

起始码:

+从机地址码

(1)+【命令码】

(1)+【起始地址

(2)+寄存器数

(2)】+CRC16校验

(2)+停止码

(2)    (括号内为字节数)

 CRC16高字节在前低字节在后

2、从机地址码为0表示广播方式,所有从机都能收到并处理,否则地址码与从机地址相同时从机才响应;

因此从机地址范围:

1~247

三.上行数据结构(从机发送到主机数据协议)

起始码地址码功能码数据区CRC校验停止码

--------------------------------------------------------------------------------------------------------------

2、数据格式:

(1)+【寄存器数

(2)+N个数据】+CRC16校验

(2)+停止码

(2)    

(括号内为字节数)

 CRC16高字节在前低字节在后

4.4帧检验域:

循环冗余校验(CRC)

在RTU模式包含一个对全部报文内容执行的,基于循环冗余校验(CRC-CyclicalRedundancy

Checking)算法的错误检验域。

CRC域检验整个报文的内容。

不管报文有无奇偶校验,均执行此检

验。

CRC包含由两个8位字节组成的一个16位值。

CRC域作为报文的最后的域附加在报文之后。

计算后,首先附加低字节,然后是高字节。

CRC

高字节为报文发送的最后一个子节。

附加在报文后面的CRC的值由发送设备计算。

接收设备在接收报文时重新计算CRC的值,

并将计算结果于实际接收到的CRC值相比较。

如果两个值不相等,则为错误。

CRC的计算,开始对一个16位寄存器预装全1。

然后将报文中的连续的8位子节对其进行后

续的计算。

只有字符中的8个数据位参与生成CRC的运算,起始位,停止位和校验位不参与CRC

计算。

CRC的生成过程中,每个8–位字符与寄存器中的值异或。

然后结果向最低有效位(LSB)方向

移动(Shift)1位,而最高有效位(MSB)位置充零。

然后提取并检查LSB:

如果LSB为1,则寄存

器中的值与一个固定的预置值异或;

如果LSB为0,则不进行异或操作。

这个过程将重复直到执行完8次移位。

完成最后一次(第8次)移位及相关操作后,下一个8

位字节与寄存器的当前值异或,然后又同上面描述过的一样重复8次。

当所有报文中子节都运算之

后得到的寄存器忠的最终值,就是CRC。

5数据存储和传输顺序

5.116bit数据类型字节存储及传输顺序

MODBUS使用一个‘big-Endian’,对于16bit数据类型,先传输高字节,再传输低字节。

例如3A56H,先传送3AH,再传送56H。

输入寄存器和保持寄存器都是16bit寻址的寄存器。

可以认为单个寄存器的位存储顺序也是高字节在前,低子字节在后。

5.232bit数据类型字存储及传输顺序

MODBUS使用一个‘big-Endian’,对于32bit浮点型、32bit整型等32bit数据类型,先传输高16bit字,再传输低16bit字。

比如8DF377A2H数据,先传输8DF3H,再传输77A2H。

在输入寄存器和保持寄存器中,32bit数据占用连续的两个寄存器地址。

相应低地址存储高16位,高地址存放低16位。

8DF377A2H数值如果用地址12、13连个寄存器来存放,则地址12寄存器存放8DF3H,地址13寄存器存放77A2H。

5.3字符串数据类型存储及传输顺序

字符串数据传输时先传输较靠前的字符。

字符串数据类型在输入寄存器和保持寄存器存储时,顺序上较靠前的字符存储在较低地址的寄存器中。

在一个寄存器中,较靠前的8bit字符存储在高字节上,较靠后的8bit字符存储在低字节上。

5.4.布尔型数据类型存储及传输顺序

布尔型数据主要分布在离散输入寄存器中。

离散输入寄存器实际以字节为单位存储和传输。

较低地址的寄存器存储在一个字节的较低位上。

传输时,先传输较低地址的寄存器值。

存储较低地址的8个寄存器的字节先于

存储较高地址的8个寄存器的字节传输。

例如:

连续的16个离散输入寄存器的值从低地址到高地址依次为:

1,1,0,1,1,1,

0,0,1,1,0,1,1,1,0,1。

传输时分两个字节传输,先传输二进制1,1,0,1,1,

1,0,0八个位,实际存储的值为二进制00111011(注意低位先传),即3BH。

再传送1,

1,0,1,1,1,0,1八个位,实际存储的值为B,即BBH。

6.MODBUS应用层协议:

命令解析和“数据区”定义

命令解析

本章中所罗列的发送接收数据内容仅指“命令结构”一节中所提到的“数据区”。

6.1.标准MODBUS命令

读离散输入寄存器02H

在一个远程设备中,使用该功能码读取离散量输入的1至2000连续状态。

请求PDU详细说明

了起始地址,即指定的第一个输入地址和输入编号。

从零开始寻址输入。

因此寻址输入1-16为0-15。

根据数据域的每个比特将响应报文中的离散量输入分成为一个输入。

指示状态为1=ON和0=

OFF。

第一个数据字节的LSB(最低有效位)包括在询问中寻址的输入。

其它输入依次类推,一直

到这个字节的高位端为止,并在后续字节中从低位到高位的顺序。

如果返回的输入数量不是八的倍数,将用零填充最后数据字节中的剩余比特(一直到字节的高位端)。

字节数量域说明了数据的完整字节数。

响应PDU

1个字节

0x02

字节数1个字节

N*

输入状态

N*×

1个字节

*N=输出数量/8,如果余数不等于0,那么N=N+1

将离散量输入状态204-197表示为十六进制字节值AC,或二进制10101100。

输入204是这个

字节的MSB,输入197是这个字节的LSB。

将离散量输入状态218-213表示为十六进制字节值35,或二进制00110101。

输入218位于左侧

第3比特,输入213是LSB。

注:

用零填充2个剩余比特(一直到高位端)。

6.1.2读输入寄存器04H

在一个远程设备中,使用该功能码读取1至大约125的连续输入寄存器。

请求PDU说明了起始

地址和寄存器数量。

从零开始寻址寄存器。

因此,寻址输入寄存器1-16为0-15。

将响应报文中的寄存器数据分成每个寄存器为两字节,在每个字节中直接地调整二进制内容。

对于每个寄存器,第一个字节包括高位比特,并且第二个字节包括低位比特。

将输入寄存器9的内容表示为两个十六进制字节值000A,或十进制10。

6.1.3读保持寄存器03H

在一个远程设备中,使用该功能码读取保持寄存器连续块的内容。

请求PDU说明了起始寄存器

因此,寻址寄存器1-16为0-15。

将响应报文中的寄存器数据分成每个寄存器有两字节,在每个字节中直接地调整二进制内容。

将寄存器108的内容表示为两个十六进制字节值022B,或十进制555。

将寄存器109-110的内

容分别表示为十六进制0000和0064,或十进制0和100。

报告从站ID11H

表6-1-4-1报告从站ID命令发送数据区

说明:

为了及时监视到设备重启,要求每次轮训数据时都必须进行一次“报

告从站ID”。

6.1.5MODBUS异常响应

当客户机设备向服务器设备发送请求时,客户机希望一个正常响应。

从主站询问中出现下列四种可能事件之一:

●如果服务器设备接收到无通信错误的请求,并且可以正常地处理询问,那么服务器设备将返回一个正常响应。

●如果由于通信错误,服务器没有接收到请求,那么不能返回响应。

客户机程序将最终处理请求的超时状态。

●如果服务器接收到请求,但是检测到一个通信错误(奇偶校验、LRC、CRC、...),那么不能返回响应。

●如果服务器接收到无通信错误的请求,但不能处理这个请求(例如,如果请求读个不存在的输出或寄存器),服务器将返回一个异常响应,通知用户错误的本质特性。

异常响应报文有两个与正常响应不同的域:

功能码域:

在正常响应中,服务器利用响应功能码域来应答最初请求的功能码。

所有功能码的最高有效位(MSB)都为0(它们的值都低于十六进制80)。

在异常响应中,服务器设置功能码的MSB为1。

这使得异常响应中的功能码值比正常响应中的功能码值高十六进制80。

通过设置功能码的MSB,客户机的应用程序能够识别异常响应,并且能够检测异常码的数据域。

数据域:

在正常响应中,服务器可以返回数据域中数据或统计表(请求中要求的任何报文)。

在异常响应中,服务器返回数据域中的异常码。

这就定义了产生异常的服务器状态。

客户机请求和服务器异常响应的实例:

在这个实例中,客户机对服务器设备寻址请求。

功能码(01)用于读输出状态操作。

它将请求地址

1245(十六进制04A1)的输出状态。

值得注意的是,象输出域(0001)号码说明的那样,只读出一个输

出。

如果在服务器设备中不存在输出地址,那么服务器将返回异常码(02)的异常响应。

这就说明从站

的非法数据地址。

从下页开始异常码的列表。

异常判断流程参考图

7MODBUS对寄存器表访问模式

基本表格

对象类型

访问类型

内容

离散量输入寄存器表

单个比特

只读

/O系统提供这种类型数据

输入寄存器表

16-比特字

只读

I/O系统提供这种类型数据

保持寄存器表

读写

通过应用程序改变这种类型数据

8程序设计结构

当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称

为异常响应)。

对于一个正常响应来说,服务器仅对原始功能码响应。

对于异常响应,服务器返回一个与原始功能码等同的码,设置该原始功能码的最高有效位为逻

辑1。

MODBUS协议定义了三种PDU。

它们是:

●MODBUS请求PDU,mb_req_pdu

●MODBUS响应PDU,mb_rsp_pdu

●MODBUS异常响应PDU,mb_excep_rsp_pdu

定义mb_req_pdu为:

mb_req_pdu={function_code,request_data},其中

function_code-[1个字节]MODBUS功能码

request_data-[n个字节],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏移

量、子功能码等信息。

定义mb_rsp_pdu为:

mb_rsp_pdu={function_code,response_data},其中

response_data-[n个字节],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏

移量、子功能码等信息。

定义mb_excep_rsp_pdu为:

mb_excep_rsp_pdu={function_code,request_data},其中

function_code-[1个字节]MODBUS功能码+0x80

exception_code-[1个字节],在下表中定义了MODBUS异常码。

9.数据类型说明:

BYTEunsignedchar

INTunsignedshort

FLOATfloat

ULONGunsignedlong

9.1附录一离散输入寄存器表功能码:

起始地址

十进制

十六进制

说明

——(读写设置告警时标)——

0000

BYTE

0000~9999

0001

1~12

0002

1~31

3

0003

0~23

4

0004

0~59

5

0005

1号板电压过高

6

0006

0--无告警,1--告警

1号板电压过低

7

0007

1号板大板没放出电流

8

0008

1号板内阻电压异常

9

0009

1号板均充结束

10

000A

0---无提示;

1---核容放电结束提示。

在核容放电结束后

1号板核容放电结束提示

11

000B

在核容放电结束后,该提示信号维持1分钟,然后自动取消。

1号温度过高

12

000C

1号板通讯故障

13

000D

2号板电压过高

14

000E

2号板电压过低

15

000F

21号板大板没放出电流

16

0010

2号板内阻电压异常

17

0011

2号板均充结束

18

0012

1---放电结束提示。

2号板核容放电结束提示

19

0013

2号板通讯故障

20

0014

2号温度过高

21

0015

开关量1

22

0016

0—断,1—通

开关量2

23

0017

开关量3

24

0018

开关量4

25

0019

附录二保持寄存器表(读写)功能码:

0x03

起始

地址

十六

进制

(Byte)

数据类型

范围

单位

——(读写设置巡检时标)——

本次测量设备ID

INT

电池类型:

容量参数

电池类型:

电压参数

设备最大板数

0~5

1号板

测量电池数

2号板

电池组上限电压

0098

float

0~999

V

电池组下限电压

009C

——(读写设置巡检间隔时间)——

UNLLONG

——(读写快速巡检设置时间)——

UNLONG

——(读写设置内阻定检时标)——

28

001C

——(读写设置连接内阻定检时标)——

30

001E

电池报警设置

单节电池上限电压

50

0032

单节电池下限电压

54

0036

58

003A

62

003E

附录三输入寄存器表(只读)功能码:

0x04

(Byte)

——(巡检最新时间1)——

-----(巡检获取测量值1)---

1号板总电压

F

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

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

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

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