精华内容
下载资源
问答
  • 1.Modbus简介——来自维基百科Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。MODBUS是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus...

    1.Modbus简介——来自维基百科

    Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。MODBUS是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:
    1.公开发表并且无版税要求
    2.相对容易的工业网络部署
    3.对供应商来说,修改移动原生的位元或字节没有很多限制
     

    2.MODBUS指令说明

    2.1 读线圈寄存器01H

    1) 描述:

    读MODBUS从机线圈寄存器当前状态。

    2) 查询:

    例如从机地址为11H,线圈寄存器的起始地址为0013H,结束地址为0037H。该次查询总共访问37个线圈寄存器。

                           

    展开全文
  • Modbus标准协议

    2018-07-11 10:16:49
    比较全面的modbus协议,看完就能基本懂这个协议了,有原理介绍,串行链路实现指南,和TCP实现指南
  • Modbus通讯协议详细解释

    万次阅读 多人点赞 2013-12-12 14:14:20
    Modbus一个工业上常用的通讯协议、一种通讯约定。Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现。 先来简单分析一条MODBUS-RTU报文,例如:01 06 00 01 00 17 98 04 01 ...

    Modbus一个工业上常用的通讯协议、一种通讯约定。Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现。

    先来简单分析一条MODBUS-RTU报文,例如:01  06  00 01  00 17  98 04 
        01             06            00 01           00 17          98 04 
      从机地址        功能号          数据地址          数据         CRC校验

    这一串数据的意思是:把数据 0x0017(十进制23) 写入 1号从机地址 0x0001数据地址。

    1、报文
       一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。

    2、CRC校验
    意义:例如上面的  98 04  是它前面的数据(01 06 00 01 00 17)通过一算法(见附录2,很简单的)计算出来的结果,其实就像是计算累加和那样。(累加和:就是010600010017加起来的值,然后它的算法就是加法)。
    作用:在数据传输过程中可能数据会发生错误,CRC检验检测接收的数据是否正确。比如主机发出01 06 00 01 00 17 98 04,那么从机接收到后要根据01 06 00 01 00 17 再计算CRC校验值,从机判断自己计算出来的CRC校验是否与接收的CRC校验(98 04主机计算的)相等,如果不相等那么说明数据传输有错误这些数据不能要。

    3、功能号
      意义:modbus 定义。见附录1。
      作用:指示具体的操作。

    MODBUS-RTU
    一、一个报文分析
    先声明下我们的目的,我们是要两个设备通讯,用的是MODBUS协议。上面简单介绍了:“报文”“CRC校验”“功能号”。
    在单片机中拿出一部分内存(RAM)进行两个设备通讯,例如:

     

    数组后面的注释,说明
    OX[20]   代表是输出线圈,用功能码 0x01,0x05,0x0F 访问, 开头地址是 0 (这个后续说明)
    IX[20]    代表是输入线圈,用功能码 0x02 访问,             开头地址是 1 (这个后续说明)
    另外两个一样的道理。
    注意:所谓的“线圈”“寄存器”就是“位变量”“16位变量”,不要被迷惑。之所以称“线圈”我觉得应该是对于应用的设备,MODBUS协议是专门针对485总线设备(例PLC)开发的。

    1、主机对从机写数据操作
    如果单片机接收到一个报文那么就对报文进行解析执行相应的处理,如上面报文:
        01             06            00 01           00 17          98 04 
      从机地址        功能号          数据地址          数据         CRC校验

    假如本机地址是 1 ,那么单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:
                HoldDataReg[1]  =  0x0017;
    MODBUS主机就完成了一次对从机数据的写操作,实现了通讯。

    2、主机对从机读数据操作
    主机进行读HoldDataReg[1] 操作,则报文是:
        01             03            00 01           00 01          D5 CA 
     从机地址        功能号          数据地址      读取数据个数       CRC校验
    那么单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:返回信息给主机,返回的信息也是有格式的:
    返回内容:  
        01         03            02             0017          F8 4A
      从机地址   功能号     数据字节个数    两个字节数据    CRC校验
    MODBUS主机就完成了一次对从机数据的读操作,实现了通讯。


    二、MODBUS报文模型

    以上了解到了MODBUS的一帧报文是如何通讯的,其实每个报文的格式都基本一样的。

                                 
    这里两个缩略词以前不知道,但是现在要明白指的是什么,“ADU”“PDU”
    ADU: 应用数据单元
    PDU: 协议数据单元

    三、MODBUS数据模型

     

     

     

      


    四、MODBUS事务处理
      下列状态图描述了在服务器侧MODBUS事务处理的一般处理过程。


    五、MODBUS请求与响应
      看MODBUS协议手册,中文第 10 页开始,英文第 24 页开始。手册非常详细举例说明了MODBUS协议各个功能号的请求与响应。 
    modbus协议在单片机上实现过程

    MODBUS 任务处理函数


    函数中,RcvBuf 为串口接收缓冲区,如果接收了一个报文则,RcvBuf[0] 为从机地址,RcvBuf[0] 为MODBUS功能号。根据功能号做出响应,而具体的操作根据功能号在各自的函数中执行,相当于解析接收到的数据。

    附录1:MODBUS-RTU功能码
     最常用功能码:
     下面“线圈”“寄存器”其实分别直的就是“位变量”“16位变量”
            01 (0x01)        读线圈 
            02 (0x02)        读离散量输入
            03 (0x03)        读保持寄存器
            04(0x04)         读输入寄存器
            05 (0x05)        写单个线圈 
            06 (0x06)        写单个寄存器
            15 (0x0F)        写多个线圈 
            16 (0x10)        写多个寄存器


    附录2:CRC Generation

     

     

     

     

     

     

     

    展开全文
  • Modbus TCP协议解析

    千次阅读 2019-07-07 17:13:54
    在之前的文章中,我们介绍了Modbus RTU协议的内容和...文章目录一、Modbus TCP协议解析Modbus TCP和Modbus RTU的区别Modbus TCP协议的构成Modbus TCP的报文头Modbus TCP的功能码Modbus TCP的数据码二、持续更新:Mo...

    在之前的文章中,我们介绍了Modbus RTU协议的内容和实现方法。最近在进行网络通讯的时候又用到了Modbus TCP协议,因此这里把自己对Modbus TCP的了解总结一下。

    一、Modbus TCP协议解析

    Modbus TCP和Modbus RTU的区别

    这两个都是Modbus协议,但是两者之间有有何区别呢?在我看来,Modbus TCP协议是一个运行在TCP/IP网络连接中的一种协议,而Modbus RTU则是运行在工业控制领域的一种协议,就传递数据的功能来说,两者都能实现。就传递数据的路径来说,Modbus TCP可能更多的是在网络环境下的数据传输。就传递的数据的格式来说,二者存在着一定的区别,但是又有相同的地方。下面我们通过具体的例子,来说明。

    Modbus TCP协议的构成

    Modbus TCP的协议构成可以分为 报文头 功能码 数据码 (校验码)这几个部分,这里校验码在一般的Modbus TCP中是没有的。对比Modbus RTU,我们可以看到这两个协议的组成基本上是一样的。

    Modbus TCP的报文头

    Modbus TCP的报文头一般来说又分为以下几个码:

    名称长度示例备注
    事务处理标识符2个字节97 79客户机发起,服务器复制,用于事务处理配对,可以自行设定
    协议标识符2个字节00 00客户机发起,服务器复制,表示该协议是TCP协议,是固定值,不可以更改
    长度标识符2个字节00 06表示该数据帧中,从本子节到最后一个字节的字节个数,根据当前数据帧的情况设定
    单元标识符1个字节03客户机发起,服务器复制,这是一个站点号,在多设备通讯时,用来表示该数据的来源于哪个设备或者该数据要去往哪个设备

    Modbus TCP的功能码

    除了Modbus的构成基本相似,其中的功能码、数据码两部分也是采用通用的格式,例如3为读寄存器功能码,16为写寄存器功能码等等。这里对功能码和数据码不做深入的展开。

    名称长度示例备注
    功能码1个字节05功能码根据Modbus通用功能码的定义进行设定,这里05表示对线圈进行写操作

    Modbus TCP的数据码

    这里数据码也是同Modbus RTU协议一样,不同的功能码后面的数据码是不同的。这里具体什么样的功能码对应什么样的数据码,请自行查阅资料。这里只是简单的举几个例子。

    名称长度示例备注
    线圈地址2个字节00 10表示对地址为17的线圈进行操作
    操作命令2个字节FF 00FF 00 表示将该线圈置1,00 00 表示将该线圈置0

    二、持续更新:Modbus TCP实现各种功能码的示例

    1.功能码 05 (0x05)

    功能码0x05表示写指令线圈,也就是控制某线圈通断。代码的构成如下:

    结构名称长度示例备注
    报文头
    事务处理标识符2个字节97 79 客户机发起,服务器复制,用于事务处理配对,可以自行设定
    协议标识符2个字节 00 00 客户机发起,服务器复制,表示该协议是TCP协议,是固定值,不可以更改
    长度标识符2个字节 00 06 表示该数据帧中,从本子节到最后一个字节的字节个数,根据当前数据帧的情况设定
    单元标识符1个字节 03 客户机发起,服务器复制,这是一个站点号,在多设备通讯时,用来表示该数据的来源于哪个设备或者该数据要去往哪个设备
    功能码功能码1个字节0505表示对线圈进行写操作
    数据码
    线圈地址2个字节00 10 表示对地址为17的线圈进行操作
    操作命令2个字节 FF 00 FF 00 表示将该线圈置1,00 00 表示将该线圈置0

    发送:97 79 00 00 00 06 03 05 00 10 FF 00
    收到:97 79 00 00 00 06 03 05 00 10 FF 00

    因为这里不需要主机返回数据,因此主机将收到的指令复制一下直接发送回来表示接受正常。

    展开全文
  • 导语:ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路...Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管

    导语:ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。
    ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
    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 RTU协议

    千次阅读 2019-01-15 09:50:12
    Modbus 一个工业上常用的通讯协议、一种通讯约定。Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现。虽然RTU比较简单,但是看协议资料、手册说得太专业了,起初很多内容都很...
  • Modbus 通讯协议 (RTU传输模式)

    万次阅读 多人点赞 2018-02-04 10:30:10
    第一章Modbus协议简介 Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制...
  • Modbus 通讯协议

    2019-11-07 15:00:54
    Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现。虽然RTU比较简单,但是看协议资料、手册说得太专业了,起初很多内容都很难理解。 所谓的协议是什么?就是互相之间的约定嘛...
  • Modbus通讯协议

    2009-03-21 21:35:37
    Modbus通讯协议简化版,学习通信的基本资料
  • Modbus协议基本知识

    2019-10-18 15:57:22
     Modbus中定义的两种数据类型。Coil是位(bit)变量;Register是整型(Word,即16-bit)变量。 ②Slave和Master与Server和Client  同一种设备在不同领域的不同叫法。  Slave: 工业自动化用语;响应请求;  ...
  • Modbus应用协议详解

    万次阅读 多人点赞 2019-03-18 16:54:49
    Modbus应用协议缩略语协议描述服务器正常响应服务器异常响应三种PDUmb_req_pdumb_rsp_pdumb_excep_rsp_pdu数据编码Modbus数据模型Modbus模型实现的实例 缩略语 协议描述 Modbus是一个请求/应答协议,并且提供功能码...
  • modbus通讯协议

    万次阅读 多人点赞 2019-07-03 16:17:50
    MODBUS协议最简单又是最直白的解释 2018年01月11日 10:00:36 JiaoCL 阅读数 16468 Modbus是一种单主站的主/从通信模式。Modbus网络上只能有一个主站存在,主站在 Modbus网络上没有地址,从站的地址范围为 0 - 247...
  • modbus通讯协议详解

    千次阅读 2020-04-16 14:21:01
    Modbus 协议简介   Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,...
  • 串口屏Modbus协议,串口屏的modbus协议资料,串口屏modbus通讯协议开发,串口屏之modbus协议使用技巧 本例程中用51单片机作为Modbus从机,从机的设备地址为2,从机有4个寄存器,寄存器地址分别为3,4,5,6,协议...
  • Modbus通讯协议详解及与Modbus TCP通讯协议之间的区别

    万次阅读 多人点赞 2018-05-09 09:37:52
    Modbus通信协议由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约。由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,Modbus通信协议采用的是...
  • MODBUS主机协议移植

    千次阅读 热门讨论 2018-07-27 10:58:00
    最近由于项目需求需要移植的modbus主机协议,由于MODBUS主机的源码不开源,网上的例程也不多,在百度苦苦找寻一番没有什么结果。最后参考了安富莱的例程,将其修改并移植到自己的工程中。我通过USB转串口连接到电脑...
  • Modbus通信协议详解

    2019-02-14 20:30:08
    Modbus通信协议详解
  • Modbus协议

    2020-12-25 21:58:00
    Modbus协议基本知识Modbus协议的官方介绍通讯格式波特率校验方式数据位停止位两种通讯方式ASCII方式RTU格式 Modbus协议的官方介绍 Modbus是一种单主站的主/从通信模式。Modbus网络上只能有一个主站存在,主站在 ...
  • ModBus通讯协议软件包

    千次阅读 2019-04-11 10:41:50
    ModBus通讯协议简介  Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即...
  • 目录前言MODBUS协议简介MODBUS通信格式信息帧格式 前言 近期需要制作一个MODBUS/RTU转MODBUS/TCP 的网关。首先需要了解一下MODBUS通信协议。 这篇文章在学习过程中作为总结,如有错误,请多指教。 MODBUS协议简介 ...
  • Modbus通信协议 RTU传输模式 本分资料详细介绍了本协议,从基本原理到应用。
  • 串口MODBUS协议

    2015-08-03 13:40:04
    在工业控制领域,经常会用到串口通讯,对于需要跟多个串口设备通讯,就需要用到MODBUS协议, 本文对协议的使用场景、协议类型、协议格式做了非常详尽的讲述,看了这个文档,MODBUS基本上就没啥问题了。
  • ModbusModbus 协议

    2021-08-04 07:48:08
    Modbus 协议简介 Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。 标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。 在Modbus网络上转输 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,501
精华内容 1,000
关键字:

modbus基本协议