Modbus通信协议Word格式文档下载.docx

上传人:b****6 文档编号:20299558 上传时间:2023-01-21 格式:DOCX 页数:18 大小:27.79KB
下载 相关 举报
Modbus通信协议Word格式文档下载.docx_第1页
第1页 / 共18页
Modbus通信协议Word格式文档下载.docx_第2页
第2页 / 共18页
Modbus通信协议Word格式文档下载.docx_第3页
第3页 / 共18页
Modbus通信协议Word格式文档下载.docx_第4页
第4页 / 共18页
Modbus通信协议Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Modbus通信协议Word格式文档下载.docx

《Modbus通信协议Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Modbus通信协议Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

Modbus通信协议Word格式文档下载.docx

典型的从设备:

可编程操纵器。

主设备可单独和从设备通信,也能以广播方式和所有从设备通信。

假如单独通信,从设备返回一消息作为回应,假如是以广播方式查询的,那么不作任何回应。

Modbus协议建立了主设备查询的格式:

设备〔或广播〕地址、功能代码、所有要发送的数据、一错误检测域。

从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。

假如在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。

2、在其它类型网络上转输

在其它网络上,操纵器使用对等技术通信,故任何操纵都能初始和其它操纵器的通信。

如此在单独的通信过程中,操纵器既可作为主设备也可作为从设备。

提供的多个内部通道可承诺同时发生的传输进程。

在消息位,Modbus协议仍提供了主—从原那么,尽管网络通信方法是〝对等〞。

假如一操纵器发送一消息,它只是作为主设备,并期望从从设备得到回应。

同样,当操纵器接收到一消息,它将建立一从设备回应格式并返回给发送的操纵器。

3、查询—回应周期

〔1〕查询

查询消息中的功能代码告之被选中的从设备要执行何种功能。

数据段包含了从设备要执行功能的任何附加信息。

例如功能代码03是要求从设备读保持寄存器并返回它们的内容。

数据段必须包含要告之从设备的信息:

从何寄存器开始读及要读的寄存器数量。

错误检测域为从设备提供了一种验证消息内容是否正确的方法。

〔2〕回应

假如从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。

数据段包括了从设备收集的数据:

象寄存器值或状态。

假如有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。

错误检测域承诺主设备确认消息内容是否可用。

二、两种传输方式

操纵器能设置为两种传输模式〔ASCII或RTU〕中的任何一种在标准的Modbus网络通信。

用户选择想要的模式,包括串口通信参数〔波特率、校验方式等〕,在配置每个操纵器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。

ASCII模式

:

地址

功能代码

数据数量

数据1

...

数据n

LRC高字节

LRC低字节

回车

换行

RTU模式

CRC高字节

CRC低字节

所选的ASCII或RTU方式仅适用于标准的Modbus网络,它定义了在这些网络上连续传输的消息段的每一位,以及决定如何样将信息打包成消息域和如何解码。

在其它网络上〔象MAP和ModbusPlus〕Modbus消息被转成与串行传输无关的帧。

1、ASCII模式

当操纵器设为在Modbus网络上以ASCII〔美国标准信息交换代码〕模式通信,在消息中的每个8Bit字节都作为两个ASCII字符发送。

这种方式的要紧优点是字符发送的时刻间隔可达到1秒而不产生错误。

代码系统

∙十六进制,ASCII字符0...9,A...F

∙消息中的每个ASCII字符差不多上一个十六进制字符组成

每个字节的位

∙1个起始位

∙7个数据位,最小的有效位先发送

∙1个奇偶校验位,无校验那么无

∙1个停止位〔有校验时〕,2个Bit〔无校验时〕

错误检测域

∙LRC(纵向冗长检测)

2、RTU模式

当操纵器设为在Modbus网络上以RTU〔远程终端单元〕模式通信,在消息中的每个8Bit字节包含两个4Bit的十六进制字符。

这种方式的要紧优点是:

在同样的波特率下,可比ASCII方式传送更多的数据。

∙8位二进制,十六进制数0...9,A...F

∙消息中的每个8位域差不多上一个两个十六进制字符组成

∙8个数据位,最小的有效位先发送

∙CRC(循环冗长检测)

三、Modbus消息帧

两种传输模式中〔ASCII或RTU〕,传输设备以将Modbus消息转为有起点和终点的帧,这就承诺接收的设备在消息起始处开始工作,读地址分配信息,判定哪一个设备被选中〔广播方式那么传给所有设备〕,判知何时信息已完成。

部分的消息也能侦测到同时错误能设置为返回结果。

1、ASCII帧

使用ASCII模式,消息以冒号〔:

〕字符〔ASCII码3AH〕开始,以回车换行符终止〔ASCII码0DH,0AH〕。

其它域能够使用的传输字符是十六进制的0...9,A...F。

网络上的设备不断侦测〝:

〞字符,当有一个冒号接收到时,每个设备都解码下个域〔地址域〕来判定是否发给自己的。

消息中字符间发送的时刻间隔最长不能超过1秒,否那么接收的设备将认为传输错误。

一个典型消息帧如下所示:

起始位

设备地址

数据

LRC校验

终止符

1个字符

2个字符

n个字符

图2ASCII消息帧

2、RTU帧

使用RTU模式,消息发送至少要以3.5个字符时刻的停顿间隔开始。

在网络波特率下多样的字符时刻,这是最容易实现的(如以下图的T1-T2-T3-T4所示)。

传输的第一个域是设备地址。

能够使用的传输字符是十六进制的0...9,A...F。

网络设备不断侦测网络总线,包括停顿间隔时刻内。

当第一个域〔地址域〕接收到,每个设备都进行解码以判定是否发往自己的。

在最后一个传输字符之后,一个至少3.5个字符时刻的停顿标定了消息的终止。

一个新的消息可在此停顿后开始。

整个消息帧必须作为一连续的流转输。

假如在帧完成之前有超过1.5个字符时刻的停赶忙间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。

同样地,假如一个新消息在小于3.5个字符时刻内接着前个消息开始,接收的设备将认为它是前一消息的连续。

这将导致一个错误,因为在最后的CRC域的值不可能是正确的。

一典型的消息帧如下所示:

CRC校验

T1-T2-T3-T4

8Bit

n个8Bit

16Bit

图3RTU消息帧

3、地址域

消息帧的地址域包含两个字符〔ASCII〕或8Bit〔RTU〕。

可能的从设备地址是0...247(十进制)。

单个设备的地址范畴是1...247。

主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。

当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备明白是哪一个设备作出回应。

地址0是用作广播地址,以使所有的从设备都能认识。

当Modbus协议用于更高水准的网络,广播可能不承诺或以其它方式代替。

4、如何处理功能域

消息帧中的功能代码域包含了两个字符〔ASCII〕或8Bits〔RTU〕。

可能的代码范畴是十进制的1...255。

因此,有些代码是适用于所有操纵器,有此是应用于某种操纵器,还有些保留以备后用。

当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。

例如去读取输入的开关状态,读一组寄存器的数据内容,读从设备的诊断状态,承诺调入、记录、校验在从设备中的程序等。

当从设备回应时,它使用功能代码域来指示是正常回应(无误)依旧有某种错误发生〔称作异议回应〕。

对正常回应,从设备仅回应相应的功能代码。

对异议回应,从设备返回一等同于正常代码的代码,但最重要的位置为逻辑1。

例如:

一从主设备发往从设备的消息要求读一组保持寄存器,将产生如下功能代码:

00000011〔十六进制03H〕

对正常回应,从设备仅回应同样的功能代码。

对异议回应,它返回:

10000011〔十六进制83H〕

除功能代码因异议错误作了修改外,从设备将一专门的代码放到回应消息的数据域中,这能告诉主设备发生了什么错误。

主设备应用程序得到异议的回应后,典型的处理过程是重发消息,或者诊断发给从设备的消息并报告给操作员。

5、数据域

数据域是由两个十六进制数集合构成的,范畴00...FF。

依照网络传输模式,这能够是由一对ASCII字符组成或由一RTU字符组成。

从主设备发给从设备消息的数据域包含附加的信息:

从设备必须用于进行执行由功能代码所定义的所为。

这包括了象不连续的寄存器地址,要处理项的数目,域中实际数据字节数。

例如,假如主设备需要从设备读取一组保持寄存器〔功能代码03〕,数据域指定了起始寄存器以及要读的寄存器数量。

假如主设备写一组从设备的寄存器〔功能代码10十六进制〕,数据域那么指明了要写的起始寄存器以及要写的寄存器数量,数据域的数据字节数,要写入寄存器的数据。

假如没有错误发生,从从设备返回的数据域包含要求的数据。

假如有错误发生,此域包含一异议代码,主设备应用程序能够用来判定采取下一步行动。

在某种消息中数据域能够是不存在的〔0长度〕。

例如,主设备要求从设备回应通信事件记录〔功能代码0B十六进制〕,从设备不需任何附加的信息。

6、错误检测域

标准的Modbus网络有两种错误检测方法。

错误检测域的内容视所选的检测方法而定。

ASCII

当选用ASCII模式作字符帧,错误检测域包含两个ASCII字符。

这是使用LRC〔纵向冗长检测〕方法对消息内容运算得出的,不包括开始的冒号符及回车换行符。

LRC字符附加在回车换行符前面。

RTU

当选用RTU模式作字符帧,错误检测域包含一16Bits值(用两个8位的字符来实现)。

错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。

CRC域附加在消息的最后,添加时先是低字节然后是高字节。

故CRC的高位字节是发送消息的最后一个字节。

7、字符的连续传输当消息在标准的Modbus系列网络传输时,每个字符或字节以如下方式发送〔从左到右〕:

最低有效位...最高有效位

使用ASCII字符帧时,位的序列是:

有奇偶校验

启始位

1

2

3

4

5

6

7

奇偶位

停止位

无奇偶校验

图4.位顺序〔ASCII〕

使用RTU字符帧时,位的序列是:

8

图4.位顺序〔RTU〕

四、错误检测方法

标准的Modbus串行网络采纳两种错误检测方法。

奇偶校验对每个字符都可用,帧检测〔LRC或CRC〕应用于整个消息。

它们差不多上在消息发送前由主设备产生的,从设备在接收过程中检测每个字符和整个消息帧。

用户要给主设备配置一预先定义的超时时刻间隔,那个时刻间隔要足够长,以使任何从设备都能作为正常反应。

假如从设备测到一传输错误,消息将可不能接收,也可不能向主设备作出回应。

如此超时事件将触发主设备来处理错误。

发往不存在的从设备的地址也会产生超时。

1、奇偶校验

用户能够配置操纵器是奇或偶校验,或无校验。

这将决定了每个字符中的奇偶校验位是如何设置的。

假如指定了奇或偶校验,〝1〞的位数将算到每个字符的位数中〔ASCII模式7个数据位,RTU中8个数据位〕。

例如RTU字符帧中包含以下8个数据位:

11000101

整个〝1〞的数目是4个。

假如便用了偶校验,帧的奇偶校验位将是0,便得整个〝1〞的个数仍是4个。

假如便用了奇校验,帧的奇偶校验位将是1,便得整个〝1〞的个数是5个。

假如没有指定奇偶校验位,传输时就没有校验位,也不进行校验检测。

代替一附加的停止位填充至要传输的字符帧中。

2、LRC检测

使用ASCII模式,消息包括了一基于LRC方法的错误检测域。

LRC域检测了消息域中除开始的冒号及终止的回车换行号外的内容。

LRC域是一个包含一个8位二进制值的字节。

LRC值由传输设备来运算并放到消息帧中,接收设备在接收消息的过程中运算LRC,并将它和接收到消息中LRC域中的值比较,假如两值不等,说明有错误。

LRC方法是将消息中的8Bit的字节连续累加,丢弃了进位。

LRC简单函数如下:

staticunsignedcharLRC(auchMsg,usDataLen)

unsignedchar*auchMsg;

/*要进行运算的消息*/

unsignedshortusDataLen;

/*LRC要处理的字节的数量*/

{unsignedcharuchLRC=0;

/*LRC字节初始化*/

while(usDataLen--)/*传送消息*/

uchLRC+=*auchMsg++;

/*累加*/

return((unsignedchar)(-((char_uchLRC)));

}

3、CRC检测

使用RTU模式,消息包括了一基于CRC方法的错误检测域。

CRC域检测了整个消息的内容。

CRC域是两个字节,包含一16位的二进制值。

它由传输设备运算后加入到消息中。

接收设备重新运算收到消息的CRC,并与接收到的CRC域中的值比较,假如两值不同,那么有误。

CRC是先调入一值是全〝1〞的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。

仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。

CRC产生过程中,每个8位字符都单独和寄存器内容相或〔OR〕,结果向最低有效位方向移动,最高有效位以0填充。

LSB被提取出来检测,假如LSB为1,寄存器单独和预置的值或一下,假如LSB为0,那么不进行。

整个过程要重复8次。

在最后一位〔第8位〕完成后,下一个8位字节又单独和寄存器的当前值相或。

最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。

CRC添加到消息中时,低字节先加入,然后高字节。

CRC简单函数如下:

unsignedshortCRC16(puchMsg,usDataLen)

unsignedchar*puchMsg;

/*要进行CRC校验的消息*/

/*消息中字节数*/

{

unsignedcharuchCRCHi=0xFF;

/*高CRC字节初始化*/

unsignedcharuchCRCLo=0xFF;

/*低CRC字节初始化*/

unsigneduIndex;

/*CRC循环中的索引*/

while(usDataLen--)/*传输消息缓冲区*/

uIndex=uchCRCHi^*puchMsgg++;

/*运算CRC*/

uchCRCHi=uchCRCLo^auchCRCHi[uIndex};

uchCRCLo=auchCRCLo[uIndex];

return(uchCRCHi<

<

8|uchCRCLo);

/*CRC高位字节值表*/

staticunsignedcharauchCRCHi[]={

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,

0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,

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,

0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,

0x80,0x41,0x00,0xC1,0x81,0x40

};

/*CRC低位字节值表*/

staticcharauchCRCLo[]={

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,0x7

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

当前位置:首页 > 表格模板 > 合同协议

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

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