SEARCH
Tastek Information
了解更多塔石的讯息
首页 / 新闻资讯 / 技术交流
News

Modbus通信协议大全,它不仅仅只是个协议

2021-03-10

Modbus通信协议大全,它不仅仅只是个协议


ModBus,分解开来翻译成中文为移动的公交?

哈哈哈,当然不是,其实ModBus网络就是工业通信系统而已,它并不神奇,整体由PLC和智能终端的计算机通过公共线路或本地专用线路连接而成。

系统结构由硬件和软件组成。适用于各种类型的数据采集和过程监控。

modBus网络非常之专一,它有且仅有一个主人(主机),并且ModBus网络所具备的全部通信系统都是通过这个唯一的主人(主机)而操作进行的。

一网可支持247个远程依赖器,但实际支持的依赖器数量取决于所使用的通信设备。

使用该系统,每个电脑都可以在不影响自己控制任务的情况下与主机交换信息。

Modbus通信协议大全

在现场使用各种第三方app软件也可以测试到Modbus通讯协议。

该协议包括ASCII、RTU、TCP等,但没有指定物理层。

无论在哪个网络上通信,控制器都可以识别和使用定义的信息结构。

采用RS232C实现标准模型控制器串行模型。

RTU协议中有Modbus的ASCII、数据结构、RTU协议中的回复方式和命令;

数据通信采用Maser/Slave方式,在Master端发送数据请求信息,接着Slave端收到正确的信息时,将数据发送到Master端的串行协议中ASCII为LRC,RTU为16位CRC,TCP为面向连接的可靠协议TCP,检查次数没有增加。

此外,ASCII采用基于16位数的CRC模式。

另外,Modbus采用主从式定时收发数据。

实际使用时,如果某个Slave站点断开,Master端可以诊断,但网络在故障排除后自动连接。

因此,Modbus协议是可靠的。

Modbus通信协议大全

关于Modbus的ASCII、RTU和TCP协议,TCP和RTU协议非常相似,可以简单地删除RTU协议的两个字节检查代码,在RTU协议的开始部分增加5个0、1个6,通过TCP/IP网络协议发送。


1.通信传输方式:


通信传输分为独立的发送头和数据代码。

ModBusRTU通信法规也与通信传输模式兼容,定义如下:

初始化的结构时间=≥4字节。

地址代码=1字节。

功能代码=1字节。

data=N字节。

错误报告=16位CRC码。

类型为≥4字节。

地址代码:地址代码是通信传输的第一个字节。这个字节表示用户设置地址代码后从主机收到的信息。每个依赖设备都有唯一的地址代码,回信的反应从各自的地址代码开始。主机发送的地址代码显示要发送的从属地址,主机发送的地址代码显示要返回的从属地址。

功能代码:用于通信传输的第二个字节。ModBus通讯“规范在1到127之间定义了函数代码。该装置只有部分功能代码。向主机发送请求,告诉从机执行的操作。举个例子于从机响应,从机发送的函数代码与从主机发送的函数代码相同,表示从机响应到主机。如果从机发送的最大功能代码为1(如同时127功能代码),则表示从机没有响应操作或发送错误。

DataFlow:根据功能代码的不同而不同。数据区可以是实际数值、设置点、主机向主机或主机发送的地址。

crc代码:双字节错误。


2.交流条约:


通信指令送达仪器后,符合通信指令对应地址代码的设备接收通信指令,清除地址代码,读取信息,如果没有错误,采取相应的措施,将执行结果返执行结果。返回的资料包括地址代码、作业功能、作业结果资料和作业后的错误检查代码。发生错误,没有发送信息。


①信息系统的结构。

地址码功能代码在数据区校验代码错误。

8条8N×8条16条。

在信息框中,地址代码是第一个字节(8位),从0到255。这个字节表示用户设定地址后收到的主机信息。每个机器必须有唯一的地址代码,只有符合该地址代码的机器才能回应。当信息在计算机上返回时,相应的地址代码显示信息源。

功能代码:宿主发送功能代码,告诉机器如何运行。表1-1所列所有函数代码都有特定的含义和功能。

Designloads:设计区域包括需要在机器上操作或从机器上收集返回的返回信息。这些信息可以是数字、参考地址等。例如,函数代码告诉你从机器读取寄存器的值,数据区必须包含起始地址和读取寄存器的长度。不同的机器有不同的地址和数据信息。

错误检查代码:收到的信息可以通过主机或从机器提供的检查代码来判断是否有错误。有时,由于电子噪音和其他干扰因素,信息在传输过程中会发生微小的变化,错误的检查代码可以保证机器和主机不能正常工作。这样可以提高安全和系统效率。用CRC-16验证法检查错误。

注:信息帧格式基本相同:地址代码、数字、数据区、错误检查代码。


②错误的检查。

由两个字节(即16位)构成的多馀循环代码(CRC)。发送方计算CRC代码,并将其放在发送信息的结尾。接收信息的设备将重新计算其CRC码,比较计算所得的CRC码是否与接收的信息一致,如果两者不一致,则表示错误。


3.Modbus支持的功能代码:

功能代码。

姓名。

性能效果。

Modbus通信协议大全

1)读取线圈状态。

取得当前逻辑线圈状态(ON/OFF)。


2)读到状态。

取得开关输入(输出/输出)集合的当前状态。


3)保留读取阅读器。

取得一个或多个保留登录的当前二进制数值。


4)读取输入表。

为一个或多个输入寄存器获得当前的二进制值。


5)强制单线圈。

强制切断状态的逻辑线圈。


6)预定注册日期。

在保留寄存器中装载特定的二进值。


7)异常读取。

取得8个内圈的断开状态,由控制器决定地址。


8)复诊检查法。

为了评估通信处理过程,将诊断验证信息发送到相关机器。


9)编程(仅484)

允许主机模拟器修改PC从机逻辑。


10)对照查询(仅484个)

可以让主机和执行长程序任务的从机进行通信,询问从机是否完成了操作任务,发送包括功能代码9的信息后再发送本功能代码。


11)在事件数量中阅读。

主机可以进行查询,然后判断操作是否成功,尤其是在命令或其他响应导致通信错误的情况下。


12)阅读通讯事件的记录。

但宿主会从网站上获得每个ModBus事务处理的通讯事件记录。完成交易处理后,记录会出现相关错误。


13)编程(184/38484584)

允许主机模拟器改变电脑从机逻辑。


14)咨询文件184/38484584。

允许托管和从机通信,允许从机定期控制程序,只有发送包含功能13的消息,才能发送功能代码。


15)高强度多线。

一系列逻辑线圈的强连接。


16)创建多个登录。

在一系列连续的保留存储器中装载特定的二进制数字。


17)报告来自机器标志。

主机可用于判断网站的类型和网站运行指示灯的状态。


18)(884和MICRO84)

完成主机模拟程序功能,可修改PC状态逻辑。


19)重建通信链接。

当发生不可修改的错误时,它是打工,从机器复位到已知的重置状态。


20)通用阅读参数(584L)

显示扩展内存文件中的数据信息。


21)写字常用参数(584L)

将共同参数写入扩展存储文件或修改。


22)~64)在扩展功能时,保留备用


65)~72)保持用户特性。

扩展代码保留用户功能。


73)~119)非法功能。


120)~127)保持住,就放在里面


128)~255)保持住。


4.功能码命令详解:

这类功能代码中长期使用的是1,2,3,4,5,6号功能代码,可实现低位机的数模读写操作。

指令01.可读取的数字存储器(线圈状态):

电脑传送指令:[设备地址][指令号01][起始寄存器地址高8位][低8位][读取寄存器的数量高8位][低8位][CRC检查低8位][CRC检查高8位]

举例来说,[11][01][00][13][00][25][CRC较低][高]


其含义:

设备地址:485公共汽车可以连接多个设备,设备地址在此表示您希望与哪个设备通信。举例来说,想要与17(10的17就是16的11)通信。

命令号码01:用于读取数字的命令号码固定为01。

“3”的起始地址高8位,低8位:一个起始地址,表示要读取的开关数量(0)。举例来说,开始地址就是19。

寄存器的个数,高8位,低8位:从起始地址读取开关的数量。比如37个开关数量。

CRC检查:<5>从头到尾。

装备反应:[设备地址][命令号01][返回字节数][数据1][数据2]...[数据n][CRC检查高8位[低8位]

举例来说,[11][01][05][CD][6B][B2][0E][1B][CRC高[低]


其含义:

设备地址和命令号<1>与上面相同。

返回的字节数<2>:表示数据的字节数,也就是数据1,2..n的n值。

<3>数据1..n:每个都是8位数,所以每一个都显示8个开关量的值,每一个0都显示相应的断开,每一个0都显示关闭。

举例来说,开关在20(索引号为19),开关在21,关断22,关断23,关断24,关断25,关断26,关断27…如果问到开关的数量是否等于8,最后一个字节的上位值就毫无意义,变成了0。

CRC检测结果<4>相同。

命令2,05,写入数值(线圈状态):

电脑发出下列命令:[设备地址][命令号][8位高][8位高][8位高][8位低][8位高][CRC检查低8位][8位高][8位高]

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


其含义:

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

命令编号2>:对于写入数值的命令编号,固定为05。

“3”下的寄存器地址8位高,8位低:表示开关地址必须位于下面。

<4>下图中数据的8位高8位,下图中数据的8位低:表示需要的开关。举例来说,关闭此开关。

要注意,这里只有[FF][00]表示关闭,[00][00]表示关闭,其他数字不一致。

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

设备响应:如果计算机发送的命令成功返回,则不响应。

命令3,03,可读可写的模拟寄存器(寄存器保存):

电脑发出指令:[设备地址][指令号03][起存地址8位][起存地址8位][起存编号8位][起存编号8位][起存编号8位][起存编号8位][起存编号8位]

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


其含义:

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

命令编号2>:读取模拟量命令编号03。

“3”的起始地址高8位,低8位:一个起始地址,它代表您想要读取的模拟数量(0)。

举例来说,开始地址就是107。

寄存器的个数,高8位,低8位:从起始地址读取的模拟量的数量。

例如,有三个模拟量。请注意,返回的信息中有一个mock量返回两个字节。

装备反应:[设备地址][命令号03][返回字节数][数据1][数据2]...[数据n][CRC检查高8位[低8位]

举例来说,[11][03][06][02][2B][00][64][CRC高[低]


其含义:

设备地址和命令号<1>与上面相同。

返回的字节数<2>:表示数据的字节数,也就是数据1,2..n的n值。

举例来说,由于一个模拟需要2个字节,因此返回的模拟数据共有6个字节。

[3]数据1..n:其中[数据1][数据2]分别是高8位和低8位,[数据3][数据4]分别是高8位和低2位,[数据3][数据4]。

比如,返回值分别是555、0,100。

CRC检测结果<4>相同。

命令4,06,写入一个模拟量寄存器(寄存器保存)

电脑发出下列命令:[设备地址][命令号06][高8位下载寄存器地址][高8位下载数据][高8位][高8位][高8位][低8位CRC检查8位]

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


其含义:

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

命令编号2>:用于编写模拟量的命令编号固定为06。

“3”下的寄存器地址8位高8位低:代表模拟寄存器地址在“3”下。

<4>下图中的数据高8位,低8位:代表需要模拟数据,如下。

举例来说,将第一个寄存器的值设置为3。

注意此命令仅可下载模拟量的状态。<5>

设备响应:如果计算机发送的命令成功返回,则不响应。

命令5,16,编写多个模拟寄存器(寄存器保持)

电脑发出指令:[设备地址][指令号码16][要求以下寄存器地址高8位][较低8位][数据高8位][较低8位][较低8位][较低8位][较低8位][…][较低8位][CRC检查8位][CRC检查8位低8位]

[11][16][00][01][00][01][00][05][CRC高[低]


其含义:

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

命令编号2>:用于编写模拟量的命令编号固定在16。

“3”下的寄存器地址8位高8位低:代表模拟寄存器地址在“3”下。

<4>要求下面的数据高8位,低8位:表示要求下面的数据高1位。

“5”下的数据有8位高,有8位低:表示需要以下模拟数据。举例来说,将第一个寄存器的值设置为5。

设备响应:如果计算机的命令返回成功,则不响应。

设备响应:[设备地址][命令号码16][8位高][低8位][数据高][数据低8位][CRC检查高8位][低8位][低8位][低8位][低8位]例如返回。

[11][16][00][01][00][01][CRC高[低]



以上便是由塔石物联网提供的Modbus通信协议大全的全部内容分析。