MODBUS通讯协议,是1979年由美国Modicon 公司提出的,就是被称为PLC 之父的迪克·莫利先生创造的品牌。MODBUS是世界上第一个用于工业现场的总线协议,可以说,它的出现标志着工业现场从模拟量时代向通讯时代迈进。




modbus十进制解析软件配置mysql 解析modbus协议_变频器


PLC之父 迪克·莫利

虽然已经过去了四十多年,但是MODBUS 协议依然焕发着生命力,免费,是一个重要原因,但是它简单可靠的机制更适合工业应用,这才是它长久不衰的原因所在。MODBUS 是一种主----从通讯机构,因为它只定义了协议层,支持多种电气接口包括 RS-232 RS-485 甚至是以太网,特别是RS-485上的广泛应用,它已经成为事实上的RS-485 通讯标准。各种智能仪表,PLC,DCS 都有它的身影,你尽管放心大胆的用,是不会有人或者组织,找你麻烦问你要专利费的,因为它是完全免费的。



modbus十进制解析软件配置mysql 解析modbus协议_数据_02


MODBUS 帧结构

(*本文由譬如朝露2017-12-9发表于头条,其他平台复制粘贴请去掉此段*)

如图所示,这是一个MODBUS 的帧结构, 它有四部分组成,如果你看不懂,没关系,看下面这段代码



modbus十进制解析软件配置mysql 解析modbus协议_从站_03


01 16 1000 1234 ABCD

这段代码的意思 是 向 地址 01 的 控制器 写入 1000 1234 。 就是这么简单。下面,我们来详细说明

地址域 就是指 从站的地址,比如一个变频器,或者是一个仪表,这个地址就是它的通讯地址

功能码 就是你要做的事情,通讯的目的 就是读写数据,所以 MODBUS 功能码虽然很多,但是只有两个是我们常用的,就是读和写。读的功能码是03 写的功能码是16,注意,这里的读写都是一次性写16个位,也就是一个WORD.下图是所有的功能码。



modbus十进制解析软件配置mysql 解析modbus协议_变频器_04


MODBUS 功能码

数据 就是我们传递的消息,这个对于我们来说才是最终目的。 1000 1234 就是我们传递的消息,是我们要告诉从站的内容,它又分两部分 地址 和内容。如果把从站比喻成一个大楼 地址域就是大楼的门牌号,而数据里的地址就是大楼的房间号,换成变频器 也就是 变频器的参数地址。所以这段帧 就是这样理解

告诉 01大楼的1000房间 1234 往01变频器的1000参数写1234

差错校验 是为了防止出错而做的保护,就是双方约定的各种计算方法,也就是我们在实际应用中的 偶校验 奇校验 停止位等等。 这里的ABCD 是随便写的 ,没任何意义。

怎么样 MODBUS是不是很简单