modbus通讯标准协议.docx

上传人:b****0 文档编号:9341813 上传时间:2023-05-18 格式:DOCX 页数:88 大小:171.79KB
下载 相关 举报
modbus通讯标准协议.docx_第1页
第1页 / 共88页
modbus通讯标准协议.docx_第2页
第2页 / 共88页
modbus通讯标准协议.docx_第3页
第3页 / 共88页
modbus通讯标准协议.docx_第4页
第4页 / 共88页
modbus通讯标准协议.docx_第5页
第5页 / 共88页
modbus通讯标准协议.docx_第6页
第6页 / 共88页
modbus通讯标准协议.docx_第7页
第7页 / 共88页
modbus通讯标准协议.docx_第8页
第8页 / 共88页
modbus通讯标准协议.docx_第9页
第9页 / 共88页
modbus通讯标准协议.docx_第10页
第10页 / 共88页
modbus通讯标准协议.docx_第11页
第11页 / 共88页
modbus通讯标准协议.docx_第12页
第12页 / 共88页
modbus通讯标准协议.docx_第13页
第13页 / 共88页
modbus通讯标准协议.docx_第14页
第14页 / 共88页
modbus通讯标准协议.docx_第15页
第15页 / 共88页
modbus通讯标准协议.docx_第16页
第16页 / 共88页
modbus通讯标准协议.docx_第17页
第17页 / 共88页
modbus通讯标准协议.docx_第18页
第18页 / 共88页
modbus通讯标准协议.docx_第19页
第19页 / 共88页
modbus通讯标准协议.docx_第20页
第20页 / 共88页
亲,该文档总共88页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

modbus通讯标准协议.docx

《modbus通讯标准协议.docx》由会员分享,可在线阅读,更多相关《modbus通讯标准协议.docx(88页珍藏版)》请在冰点文库上搜索。

modbus通讯标准协议.docx

modbus通讯标准协议

优选文档

 

Modbus通讯协议

 

图片:

 

图片:

 

图片:

 

.

优选文档

 

Modbus协议最初由Modicon公司开发出来,在1979年关该公司成为施耐德自动化

 

(SchneiderAutomation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。

此协议支持传统的RS-232、RS-422、RS-485和以太网设备。

好多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。

有了它,不同样厂商生产的控制设备能够连成工业网络,进行集中监控。

 

当在网络上通讯时,Modbus协议定定了每个控制器须要知道它们的设备地址,鉴别按地址发来的信息,决定要产生何种行动。

若是需要回应,控制器将生成应答并使用Modbus协议发送给咨询方。

 

Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。

此协议定义了控制器

 

能够认识和使用的信息结构,而无论它们是经过何种网络进行通讯的。

标准的

 

Modicon控制器使用RS232C实现串行的Modbus。

Modbus的ASCII、RTU协议规定

 

了信息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master

 

端发出数据央求信息,Slave端接收到正确信息后就可以发送数据到Master端以

 

响应央求;Master端也能够直接发信息更正Slave端的数据,实现双向读写。

 

.

优选文档

 

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用

 

LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,由于TCP

 

协议是一个面向连接的可靠协议。

其他,Modbus采用主从方式准时收发数据,在本质使用中若是某Slave站点断开后(如故障或关机),Master端能够诊断出来,

 

而当故障修复后,网络又可自动接通。

因此,Modbus协议的可靠性较好。

 

下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其

 

中TCP和RTU协议特别近似,我们只要把RTU协议的两个字节的校验码去掉,尔后在RTU协议的开始加上5个0和一个6并经过TCP/IP网络协议发送出去即可。

因此在这里我仅介绍一下Modbus的ASCII和RTU协议。

 

下表是ASCII协讲和RTU协议进行的比较:

 

经过比较能够看到,ASCII协讲和RTU协议对照拥有开始和结束标记,因此在进行

 

程序办理时能更加方便,而且由于传输的都是可见的ASCII字符,因此进行调试时

 

就更加的直观,其他它的LRC校验也比较简单。

但是由于它传输的都是可见的ASCII

 

字符,RTU传输的数据每一个字节ASCII都要用两个字节来传输,比方RTU传输一

 

个十六进制数0xF9,ASCII就需要传输’F’’9’的ASCII码0x39和0x46两个字

 

节,这样它的传输的效率就比较低。

因此一般来说,若是所需要传输的数据量较小

 

能够考虑使用ASCII协议,若是所需传输的数据量比较大,最好能使用RTU协议。

 

.

优选文档

 

下面对两种协议的校验进行一下介绍。

 

1、LRC校验

 

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

LRC值由传输设备来计算并放到

 

信息帧中,接收设备在接收信息的过程受骗算LRC,并将它和接收到信息中

 

LRC域中的值比较,若是两值不等,说明有错误。

 

LRC校验比较简单,它在ASCII协议中使用,检测了信息域中除开始的冒号及

 

结束的回车换行号外的内容。

它可是是把每一个需要传输的数据按字节叠加

 

后取反加1即可。

下面是它的VC代码:

 

BYTEGetCheckCode(constchar*pSendBuf,intnEnd)//获得校验码

 

{

 

BYTEbyLrc=0;

 

charpBuf[4];

 

intnData=0;

 

for(i=1;i

 

.

优选文档

 

{

 

//每两个需要发送的ASCII码转变为一个十六进制数

 

pBuf[0]=pSendBuf;

 

pBuf[1]=pSendBuf[i+1];

 

pBuf[2]='\0';

 

sscanf(pBuf,"%x",&nData);

 

byLrc+=nData;

 

}

 

byLrc=~byLrc;

 

byLrc++;

 

returnbyLrc;

 

.

优选文档

 

}

 

2、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增加到信息中时,低字节先加入,尔后高字节。

下面是它的VC代码:

 

WORDGetCheckCode(constchar*pSendBuf,intnEnd)//获得校验码

 

.

优选文档

 

{

 

WORDwCrc=WORD(0xFFFF);

 

for(inti=0;i

 

{

 

wCrc^=WORD(BYTE(pSendBuf));

 

for(intj=0;j<8;j++)

 

2、{

 

if(wCrc&1)

 

{

 

3、wCrc>>=1;

 

wCrc^=0xA001;

 

}

 

.

优选文档

 

else

 

{

 

wCrc>>=1;

 

}

 

}

 

}

 

returnwCrc;

 

}

 

对于一条RTU协议的命令能够简单的经过以下的步骤转变为ASCII协议的命

 

令:

 

1、把命令的CRC校验去掉,而且计算出LRC校验代替。

 

.

优选文档

 

2、把生成的命令串的每一个字节转变为对应的两个字节的ASCII码,比方

 

0x03转变为0x30,0x33(0的ASCII码和3的ASCII码)。

 

3、在命令的开头加上初步标记“:

”,它的ASCII码为0x3A。

 

4、在命令的尾部加上结束标记CR,LF(0xD,0xA),此处的CR,LF表示回车

 

和换行的ASCII码。

 

因此以下我们仅介绍RTU协议即可,对应的ASCII协议能够使用以上的步骤来生成。

 

下表是Modbus支持的功能码:

 

在这些功能码中较长使用的是1、2、3、4、5、6号功能码,使用它们即可实现对下位机的数字量和模拟量的读写操作。

 

1、读可读写数字量寄存器(线圈状态):

 

计算机发丧命令:

[设备地址][命令号01][初步寄存器地址高8位][低8

 

位][读取的寄存器数高8位][低8位][CRC校验的低8位][CRC校验的高

 

8位]

 

.

优选文档

 

例:

[11][01][00][13][00][25][CRC低][CRC高]

 

意义以下:

 

<1>设备地址:

在一个485总线上能够挂接多个设备,此处的设备地址表示想

 

和哪一个设备通讯。

例子中为想和17号(十进制的17是十六进制的11)通讯。

 

<2>命令号01:

读取数字量的命令号固定为01。

 

<3>初步地址高8位、低8位:

表示想读取的开关量的初步地址(初步地址为

 

1)。

比方例子中的初步地址为19。

 

<4>寄存器数高8位、低8位:

表示从初步地址开始读多少个开关量。

例子中为37个开关量。

 

<5>CRC校验:

是从开头素来校验到此从前。

在此协议的最后再作介绍。

此处需要注意,CRC校验在命令中的高低字节的序次和其他的相反。

 

设备响应:

[设备地址][命令号01][返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位][CRC校验的高8位]

 

例:

[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高]

 

.

优选文档

 

意义以下:

 

<1>设备地址和命令号和上面的同样。

 

<2>返回的字节个数:

表示数据的字节个数,也就是数据1,2...n中的n的

 

值。

 

<3>数据1...n:

由于每一个数据是一个8位的数,因此每一个数据表示8个

 

开关量的值,每一位为0表示对应的开关断开,为1表示闭合。

比方例子中,

 

表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,

 

25断开,26闭合,27闭合...若是咨询的开关量不是8的整倍数,那么最后

 

一个字节的高位部分没心义,置为0。

 

<4>CRC校验同上。

 

2、读只可读数字量寄存器(输入状态):

 

和读取线圈状态近似,可是第二个字节的命令号不再是1而是2。

 

3、写数字量(线圈状态):

 

.

优选文档

 

计算机发丧命令:

[设备地址][命令号05][需下置的寄存器地址高8位][低

 

8位][下置的数据高8位][低8位][CRC校验的低8位][CRC校验的高8

 

位]

 

例:

[11][05][00][AC][FF][00][CRC低][CRC高]

 

意义以下:

 

<1>设备地址和上面的同样。

 

<2>命令号:

写数字量的命令号固定为05。

 

<3>需下置的寄存器地址高8位,低8位:

表示了需要下置的开关的地址。

 

<4>下置的数据高8位,低8位:

表示需要下置的开关量的状态。

例子中为把

 

该开关闭合。

注意,此处只能够是[FF][00]表示闭合[00][00]表示断开,其

 

他数值非法。

 

<5>注意此命令一条只能下置一个开关量的状态。

 

设备响应:

若是成功把计算机发送的命令原样返回,否则不响应。

 

.

优选文档

 

4、读可读写模拟量寄存器(保持寄存器):

 

计算机发丧命令:

[设备地址][命令号03][初步寄存器地址高8位][低8

 

位][读取的寄存器数高8位][低8位][CRC校验的低8位][CRC校验的高

 

8位]

 

例:

[11][03][00][6B][00][03][CRC低][CRC高]

 

意义以下:

 

<1>设备地址和上面的同样。

 

<2>命令号:

读模拟量的命令号固定为03。

 

<3>初步地址高8位、低8位:

表示想读取的模拟量的初步地址(初步地址为

 

1)。

比方例子中的初步地址为107。

 

<4>寄存器数高8位、低8位:

表示从初步地址开始读多少个模拟量。

例子中为3个模拟量。

注意,在返回的信息中一个模拟量需要返回两个字节。

 

设备响应:

[设备地址][命令号03][返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位][CRC校验的高8位]

 

.

优选文档

 

例:

[11][03][06][02][2B][00][00][00][64][CRC低][CRC高]

 

意义以下:

 

<1>设备地址和命令号和上面的同样。

 

<2>返回的字节个数:

表示数据的字节个数,也就是数据1,2...n中的n的

 

值。

例子中返回了3个模拟量的数据,由于一个模拟量需要2个字节因此共6

 

个字节。

 

<3>数据1...n:

其中[数据1][数据2]分别是第1个模拟量的高8位和低8

 

位,[数据3][数据4]是第2个模拟量的高8位和低8位,以此类推。

例子中

 

返回的值分别是555,0,100。

 

<4>CRC校验同上。

 

5、读只可读模拟量寄存器(输入寄存器):

 

和读取保留寄存器近似,可是第二个字节的命令号不再是2而是4。

 

6、写单个模拟量寄存器(保持寄存器):

 

.

优选文档

 

计算机发丧命令:

[设备地址][命令号06][需下置的寄存器地址高8位][低

 

8位][下置的数据高8位][低8位][CRC校验的低8位][CRC校验的高8

 

位]

 

例:

[11][06][00][01][00][03][CRC低][CRC高]

 

意义以下:

 

<1>设备地址和上面的同样。

 

<2>命令号:

写模拟量的命令号固定为06。

 

<3>需下置的寄存器地址高8位,低8位:

表示了需要下置的模拟量寄存器的地址。

 

<4>下置的数据高8位,低8位:

表示需要下置的模拟量数据。

比方例子中就

 

把1号寄存器的值设为3。

 

<5>注意此命令一条只能下置一个模拟量的状态。

 

设备响应:

若是成功把计算机发送的命令原样返回,否则不响应。

 

.

优选文档

 

Modbus通讯协议

mym

MODBUS通讯协议简介

 

工业控制已从单机控制走向集中监控、集散控制,现在已进入网

级别:

总版主

络时代,工业控制器连网也为网络管理供应了方便。

Modbus就

精华:

41

是工业控制器的网络协议中的一种。

发帖:

3956

 

声威:

9957点

一、归纳

金钱:

9431Gold

 

贡献值:

601点

Modbus协议是应用于电子控制器上的一种通用语言。

经过此协

朋友圈:

ifix技

议,控制器相互之间、控制器经由网络(比方以太网)和其他设

术群

备之间能够通讯。

它已经成为一通用工业标准。

有了它,不同样厂

在线时

商生产的控制设备能够连成工业网络,进行集中监控。

间:

539(小时)

 

注册时

此协议定义了一个控制器能认识使用的信息结构,而无论它们是

间:

2005-02-02

经过何种网络进行通讯的。

它描述了一控制器央求接见其他设备

最后登

的过程,若是回应来自其他设备的央求,以及怎样侦测错误并记

录:

2008-01-25

录。

它拟定了信息域格局和内容的公共格式。

 

.

优选文档

 

当在一Modbus网络上通讯时,此协议定定了每个控制器须要知道它们的设备地址,鉴别按地址发来的信息,决定要产生何种行

 

动。

若是需要回应,控制器将生成反响信息并用Modbus协议发出。

在其他网络上,包括了Modbus协议的信息变换为在此网络上使用的帧或包结构。

这种变换也扩展了依照详尽的网络解决节地址、路由路径及错误检测的方法。

 

1、在Modbus网络上转输

 

标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。

控制器能

 

直接或经由Modem组网。

控制器通讯使用主—从技术,即仅一设备(主设备)能初始化传输(盘问)。

其他设备(从设备)依照

 

主设备盘问供应的数据作出相应反响。

典型的主设备:

主机和可编程仪表。

典型的从设备:

可编程控制器。

 

主设备可单独和从设备通讯,也能以广播方式和全部从设备通讯。

若是单独通讯,从设备返回一信息作为回应,若是是以广播方式盘问的,则不作任何回应。

Modbus协议建立了主设备盘问的格式:

设备(或广播)地址、功能代码、全部要发送的数据、一错误检测域。

 

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

若是在信息接收过程中发

 

.

优选文档

 

生一错误,或从设备不能够执行其命令,从设备将建立一错误信息并把它作为回应发送出去。

 

2、在其他种类网络上转输

 

在其他网络上,控制器使用同等技术通讯,故任何控制都能初始和其他控制器的通讯。

这样在单独的通讯过程中,控制器既可作为主设备也可作为从设备。

供应的多个内部通道可赞同同时发生的传输进度。

 

在信息位,Modbus协议仍供应了主—从原则,尽管网络通讯方法是“同等”。

若是一控制器发送一信息,它可是作为主设备,并希望从从设备获得回应。

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

 

Modbus是Modicon公司为其PLC与主机之间的通讯而发明的串

 

行通讯协议。

其物理层采用RS232、485等异步串行标准。

由于

 

其开放性而被大量的PLC及RTU厂家采用。

 

Modbus通讯方式采用主从方式的盘问-相应体系,只有主站发

 

出盘问时,从站才能给出响应,从站不能够主动发送数据。

主站可

 

以向某一个从站发出盘问,也能够向全部从站广播信息。

从站只

 

响应单独发给它的盘问,而不响应广播信息。

 

.

优选文档

 

Modbus的串行口的通讯参数(如波特率、奇偶校验)可由用户

 

选择。

 

二、MODBUS协议传达方式

 

MODBUS通讯协议有两种传达方式:

RTU方式和ASCII方式,两种方

 

式以下所示:

 

项目RTU方式ASCII方式

 

字节长度8BITS7BITS

 

奇偶校验1BITOR0BIT1BITOR0BIT

 

字节中止1BITOR2BITS1BITOR2BITS

 

开始标记不要:

(冒号)

 

结束标记不要CR,LF

 

数据间隔<24BIT<1S

 

出错检验方式CRC-16LRC

 

控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在

 

标准的Modbus网络通讯。

用户选择想要的模式,包括串口通讯参数(波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的全部设备都必定选择同样的传输模式和串口

 

.

优选文档

 

参数。

 

三、Modbus信息帧

 

两种传输模式中(ASCII或RTU),传输设备以将Modbus信息转为有起点和终点的帧,这就赞同接收的设备在信息初步处开始工作,读地址分配信息,判断哪一个设备被选中(广播方式则传给

 

全部设备),判知何时信息已完成。

部分的信息也能侦测到而且错误能设置为返回结果。

 

1、ASCII帧

 

使用ASCII模式,信息以冒号(:

)字符(ASCII码3AH)开始,以回车换行符结束(ASCII码0DH,0AH)。

 

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

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

”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断可否发给自己的。

 

信息中字符间发送的时间间隔最长不能够高出1秒,否则接收的设

 

备将认为传输错误。

 

.

优选文档

 

2、RTU帧

 

使用RTU模式,信息发送最少要以3.5个字符时间的逗留间分开

 

始。

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

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

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

网络设备不断侦测网络总线,包括逗留间隔时间内。

当第一个域(地址域)接收到,

 

每个设备都进行解码以判断可否发往自己的。

在最后一个传输字符此后,一个最少3.5个字符时间的逗留标定了信息的结束。

一个新的信息可在此逗留后开始。

 

整个信息帧必定作为一连续的流转输。

若是在帧完成从前有高出

 

1.5个字符时间的停即刻间,接收设备将刷新不完满的信息并假

 

定下一字节是一个新信息的地址域。

同样地,若是一个新信息在

 

小于3.5个字符时间内接着前个信息开始,接收的设备将认为它

 

是前一信息的连续。

这将以致一个错误,由于在最后的CRC域的

 

值不能能是正确的。

 

3、地址域

 

信息帧的地址域包括两个字符(ASCII)或8Bit(RTU)。

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

单个设备的地址范围是

 

.

优选文档

 

1...247。

主设备经过将要联系的从设备的地址放入信息中的地

 

址域来选通从设备。

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

 

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

当Modbus协议用于更高水平的网络,广播可能不同样意或以其他方式代替。

 

4、怎样办理功能域

 

信息帧中的功能代码域包括了两个字符(ASCII)或8Bits(RTU)。

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

自然,有些代码是适用于全部控制器,有此是应用于某种控制器,还有些保留以备后用。

 

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

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

 

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

对正常回应,从设

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2