【ModBus】modbus之协议的相关知识(1)

前言: 文章主要分三个部分讲述。分别为:modbus协议基本内容仿真软件模拟使用实际运用中代码编写。适合新手小白。从事开发以来一直是做互联 软件开发相关工作。对于硬件相关的一窍不通。身为一个小仙女。理解硬件知识也费劲。所以文章中可能很多个人的理解,若有错误欢迎指出。

业务需求:需要用java做一个数据采集的服务。提供的功能就是,对若干不同的硬件设备进行数据采集。自己想的就是,我得先和设备连接上,可以收发送消息。只要通讯了后面就好说了。

有些概念又臭又长,请耐心看。一般都会用自己白话解释一波。相信看完,收获绝不少。没学到的话,我走!!

ModBus协议基本内容

1.概述:ModBus官 是Modicon(Modicon被施耐德收购)公司为其PLC通讯而开发的一种通讯协议。
说实话这句概述就把我凉了一下。针对这句话拆开解析下。

A1- 在工业生产过程中,大量的开关量顺序控制,它按照逻辑条件进行顺序动作,并按照逻辑关系进行连锁保护动作的控制,及大量离散量的数据采集。传统上,这些功能是通过气动或电气控制系统来实现的。 1968年美国GM(通用汽车)公司提出取代继电气控制装置的要求,第二年,美国数字公司研制出了基于集成电路和电子技术的控制装置,首次采用程序化的手段应用于电气控制,这就是第一代可编程序控制器,称Programmable Controller(PC)
个人计算机(简称PC)发展起来后,为了方便,也为了反映可编程控制器的功能特点,可编程序控制器定名为Programmable Logic Controller(PLC)
上面的话,摘自 络。
谈谈我个人理解,我觉得PLC是个可编程序的控制器。是一个设备产品是一个实物。那为PLC这种类型设备通讯。那不就是硬件产品的通讯唠嗑。就似乎好理解了,画个它的结构图。

这里出现了一个 也就是设置合适的通讯参数,涉及到几个概念。串口参数详细请看
这里我选择了几个代表性参数学习看看(自己也没搞明白)

  • 波特率:串口通讯时候得速率
  • 数据位:衡量通信中实际数据位的参数
  • 停止位:用于表示单个包的最后一位
  • 校验位:串口通信中一种简单的验错方式。4种:偶奇高低

4.说说某些概念

  • C,C++规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数
  • 字word 字节byte 位bit
  • 1word = 2byte 1word = 2byte 1byte = 8bit
  • 计算机都是2进制计算的,那我们为啥用16进制,因为4bit换算成16进制简单。
  • 帧:数据链路层的协议数据单元,请看看帧、 文、数据包差别
  • 主从模式和对等模式
    别看字多,这一段好好理解下 ,不难
    控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。
      主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
      从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
     
      在其它 络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。提供的多个内部通道可允许同时发生的传输进程。
      在消息位,Modbus协议仍提供了主—从原则,尽管 络通信方法是“对等”。如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。

5.回归正题重要
上面我们说到,我们要和控制器通讯,首先要求协议一样,串口参数一样。传输模式一样。那么这里说说这三种传输模式。

先看看modbus数据传输的协议模型

串行通信中规定ADU的最大长度为256个字节,通信地址占用1个字节。校验2个字节,所以PDU的字节253 ,256-1-2=253字节。

以太 通信的TCP,因为要增加一个7个字节的MBAP(MODBUS Application Protocol)的 文头,所以他的ADU的长度=253+7=260 字节。tcp不需要校验。因为底层做了这份工作。底层的数据链路层已经做了冲突检测的工作,自然就可以同时传输不担心数据撞车。

tcp的 文帧 = MBAP+PDU
MBAP为 文头,长度为7字节,组成如下

【ModBus】modbus之协议的相关知识(1)
tcp的 文参考tcp

8.仿真软件使用
主要是poll和slave的使用,请移步我的另外一文。
9.JAVA代码实现
主要是modbus4j使用,请移步我的另外一文

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93609 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月16日
下一篇 2021年11月16日

相关推荐