Modbus TCP通信协议详解

这篇具有很好参考价值的文章主要介绍了Modbus TCP通信协议详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Modbus TCP通信概述
MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC,I/O模块,以及连接其它简单域总线或I/O模块的网关服务的。

Modbus TCP协议是在RTU协议前面添加MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码。(使用上的主要区别)。MBAP报文头:

事务处理标识 ( 2字节 ) 协议标识( 2字节 ) 长度( 2字节 ) 单元标识符(1字节 )

二. 通讯所使用的以太网参考模型
Modbus TCP传输过程中使用了TCP/IP以太网参考模型的5层:

第一层:物理层,提供设备物理接口,与市售介质/网络适配器相兼容

第二层:数据链路层,格式化信号到源/目硬件址数据帧

第三层:网络层,实现带有32位IP址IP报文包

第四层:传输层,实现可靠性连接、传输、查错、重发、端口服务、传输调度

第五层:应用层,Modbus协议报文

三. Modbus TCP数据帧
由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,MODBUS TCP 报文中不再带有数据校验”CHECKSUM”,原有报文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS应用协议报文头中。

由MBAP 头和PDU 构成, MBAP= Modbus Application Protocol Header(Modbus应用协议) 头部

PDU = Protocol Data Unit (数据单元)

ADU:Application Data Unit

四. Modbus TCP使用的通讯资源端口号
在Modbus服务器中按缺省协议使用Port 502 通信端口,在Modbus客户器程序中设置任意通信端口,为避免与其他通讯协议的冲突一般建议2000开始可以使用。

五. Modbus TCP使用的功能代码
按照使用的通途区分,共有3种类型分别为:

  1. 公共功能代码:已定义好功能码,保证其唯一性,由Modbus.org认可;

  2. 用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但不保证代码使用唯一性,如变为公共代码,需交RFC认可;

  3. 保留功能代码,由某些公司使用某些传统设备代码,不可作为公共用途。

modbus的操作对象有四种:线圈、离散输入、输入寄存器、保持寄存器

线圈:PLC的输出位,开关量,在MODBUS中可读可写
离散量:PLC的输入位,开关量,在MODBUS中只读
输入寄存器:PLC中只能从模拟量输入端改变的寄存器,在MODBUS中只读
保持寄存器:PLC中用于输出模拟量信号的寄存器,在MODBUS中可读可写
根据对象的不同,modbus的功能码有:

0x01:读线圈
0x02:读离散量输入
0x03:读保持寄存器

0x04:读输入寄存器

0x05:写单个线圈
0x06:写单个保持寄存器
0x10:写多个保持寄存器
0x0F:写多个线圈

按照应用深浅,可分为3个类别:

  1. 类别0,客户机/服务器最小可用子集:读多个保持寄存器(fc.3);写多个保持寄存器(fc.16)。

  2. 类别1,可实现基本互易操作常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存器(fc.4);写线圈(fc.5);写单一寄存器(fc.6)。

  3. 类别2,用于人机界面、监控系统例行操作和数据传送功能:强制多个线圈(fc.15);读通用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)。

六. Modbus TCP通讯应用举例
在读寄存器的过程中,以Modbus TCP请求报文为例,具体的数据传输过程如下:

  1. Modbus TCP客户端实况,用Connect()命令建立目标设备TCP 502端口连接数据通信过程;

  2. 准备Modbus报文,包括7个字节MBAP内请求;

  3. 使用send()命令发送;

  4. 同一连接等待应答;

  5. 同recv()读报文,完成一次数据交换过程;

  6. 当通信任务结束时,关闭TCP连接,使服务器可以为其他服务。

七. Modbus TCP相比较Modbus RTU的优势

  1. 当多个网关共同接一个后台服务器,而一个网关下挂接多个485设备时,如果不同的网关挂接同样地址号的485设备时那么后台服务器无法区分是哪个485从设备,并且最多只能限制485设备个数254个,而modbus-tcp协议包含自定义报文头4个字节和数据长度,我们可以通过报文头标识不同的网关或者通过数据长度区分,从而增加了可拓展的485设备个数,很好的解决了问题。

  2. 目前Modbus TCP/IP协议主要应用领域Internet或Intranet中,而以太网传输距离远、传输速度快,使得应用范围广泛传输距离远、传输速度快,使得应用范围广泛。文章来源地址https://www.toymoban.com/news/detail-475454.html

到了这里,关于Modbus TCP通信协议详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Modbus TCP 协议详解及C语言示例

    Modbus TCP 是一种应用于以太网的通讯协议,基于Modbus RTU协议。Modbus协议是一种应用于串行数据通信的协议,广泛应用于工业控制系统。Modbus TCP 将传统的 Modbus RTU 消息封装在 TCP/IP 报文中,使其能够在现代的以太网环境中进行通信。本文将详细介绍 Modbus TCP 协议的报文格式、各

    2024年02月16日
    浏览(24)
  • Modbus协议详解2:通信方式、地址规则、主从机通信状态

    首先我们要清楚:Modbus是一种串行链路上的主从协议,在通信线路上只能有一个主机存在,不会有多主机存在的情况。虽然主机只有一个,但是从机是可以有多个的。 Modbus的通信过程都是由主机发起的,从机在接收到主机的请求后再进行响应,从机不会主动进行数据的发送。

    2024年02月09日
    浏览(26)
  • 工业控制系统:HSLCommunication可以与PLC进行通信详解:C# HSLCommunication可以与 modbus tcp通信demo

    当使用C#编程语言时,HSLCommunication库是一种常用的工具,用于实现与Modbus TCP通信。在本文中,我将为您提供详细的步骤和示例代码,以帮助您开始使用HSLCommunication库与Modbus TCP通信。 步骤1:安装HSLCommunication库 首先,您需要在您的C#项目中安装HSLCommunication库。您可以通过Nu

    2024年01月22日
    浏览(33)
  • Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)

    本篇将会以西门子PLC软件搭建ModbusTCP仿真环境,并通过仿真环境,介绍基础知识及模拟实际应用中写一个简单的通信读取PLC数据方法,并简介了编写上位机的方法。 由于具有TCP/IP栈协议,通常在Modbus TCP通讯的上位机开发中, 上位机是作为客户端,控制器作为服务器 。Modbu

    2024年02月08日
    浏览(34)
  • Modbus tcp转ETHERCAT网关modbus tcp/ip协议

    捷米JM-ECT-TCP网关能够连接到Modbus tcp总线和ETHERCAT总线中,实现两种不同协议设备之间的通讯。这个网关能够大大提高工业生产的效率和生产效益,让生产变得更加智能化。捷米JM-ECT-TCP 是自主研发的一款 ETHERCAT 从站功能的通讯网关。该产品主要功能是将 ETHERCAT 网络和 MODB

    2024年02月15日
    浏览(46)
  • Modbus通信协议+Modbus串口调试工具+Java版协议解析源码

    网络与串口二合一调试助手TCPCOM: https://download.csdn.net/download/liuyuan_java/87454762 Modbus调试工具,模拟串口调试工具 https://download.csdn.net/download/liuyuan_java/87427475 Configure Virtual Serial Port Driver (VSPD) 串口模拟工具 https://download.csdn.net/download/liuyuan_java/87426831 Java实现DL/T645-2007协议报文的

    2024年02月03日
    浏览(30)
  • Modbus TCP通信报文解析

    一、实现了读取线圈状态和写入多个线圈的功能。代码中包含了详细的注释说明,可以清晰地了解每个方法的功能和使用方式。 对于读取线圈状态的方法,使用时需要传入从站地址、起始地址和线圈数量,最后会返回一个 bool 数组,其中每个元素表示一个线圈的状态。 对于

    2024年02月15日
    浏览(25)
  • 串行通信 - Modbus协议

    Modbus协议采用的是主-从通信模式。 Modbus协议主要有Modbus RTU、Modbus ASCII和Modbus TCP三种。前两者均支持RS-485总线协议。其中RTU采用二进制数据表达形式、数据结构紧凑,通信效率高,应用广泛。 Modbus的三种传输模式 ASCII 模式:数据中每8bit的字节作为一个ASCII码发送。字符发送

    2024年02月09日
    浏览(30)
  • Codesys与Modbus TCP从站通信详细说明+实例代码+Modbus软件助手

    一、 说明 codesys 软件版本: 3.5.17 测试助手软件 : Modbus Poll 程序和软件下载 : 在底部 二、Codesys设置 1 新建项目 2 选择控制器类型和语言 3 右键点击【Device】选择【添加设备】添加网络驱动 4 再添加Modbus Tcp Slave Device 5 扫描网络并确定 6 扫描Ethernet网络接口 7 设置从站端口号

    2024年01月16日
    浏览(38)
  • C# Modbus通信从入门到精通(12)——Modbus ASCII协议原理

    Modbus ASCII是串行链路上的协议,也就是说ModbusASCII是通过串口通信来实现的,它可以通过RS232、RS485物理层的接口来实现,同时它也是一个主从协议,在同一时间总线上只能有一个主站和一个或多个(最多247)个从站。Modbus通信总是由主站发起,从站没有接收到主站的请求时不

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包