(一)Modbus通讯协议简介

别来无恙 提交于 2020-07-28 10:09:33

一、简介

   Modbus是一种串行通信协议,是Modicon公司于1979年为使用可编程逻辑控制器PLC通信而发表。Modbus是工业领域通信协议的业界标准,是工业电子设备之间常用的连接方式。Modbus在工业控制领域通信协议中被广泛使用基于以下几个特点:

  1. 公开发表并且无版权要求;
  2. 易于部署和维护;
  3. 对供应商来说,修改移动本地的比特或字节没有很多限制。

二、Modbus通讯方式

  1. 以太网上的 TCP/IP ;
  2. 各种媒体(有线:EIA/TIA-232-EEIA-422EIA/TIA-485-A ;光纤、无线等)上的异步串行传输;Modbus RTU和Modbus ASCII通讯既是采用该方式;
  3. Modbus Plus,一种高速令牌传递网络。

 

三、协议描述

  Modbus协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。   

  通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232、RS485和RS422),也可以选择以太网口。其通信遵循以下的过程:

  1. 主设备(客户机)向从设备(服务器)发送请求;
  2. 从设备(服务器)分析并处理主设备(客户机)的请求,然后向主设备(客户机)发送结果;
  3. 如果出现任何差错,从设备(服务器)将返回一个异常功能码 。

  当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

  Modbus的工作方式是请求/应答,每次通讯都是主站先发送指令,可以是广播,或是向特定从站单播,从站响应指令,并按要求应答,或者报告异常;当主站不发送请求时,从站不会自己发出数据,从站和从站之间不能直接通讯。

  Modbus协议能够应用在不同类型的总线或者网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU = 附加域 + PDU。例如:

  • RS232 / RS485 ADU = 253 字节+服务器地址(1 byte) + CRC (2 字节) = 256 字节 ;
  • TCP MODBUS ADU = 249 字节+ MBAP (7 字节) = 256 字节 。

四、数据编码

  MODBUS 使用一个‘big-Endian’ 表示地址和数据项。这意味着当发射多个字节时,首先发送最高有效位。 例如:

Register size :
16 - bits
value:
0x1234

the first byte sent is :

0x12

then:

0x34

五、数据模型

  MODBUS 以一系列具有不同特征表格上的数据模型为基础。四个基本表格为:

六、功能码

  有三类Modbus功能码。分别是:

  1.公共功能码:

  • 是较好地被定义的功能码 ;
  • 保证是唯一的;
  • MODBUS 组织可改变的 ;
  • 公开证明的 ;
  • 具有可用的一致性测试 ;
  • MB IETF RFC 中证明的 ;
  • 包含已被定义的公共指配功能码和未来使用的未指配保留供功能码 。

  2.用户定义功能码:

  • 有两个用户定义功能码的定义范围,即 65 72 和十进制 100 110 ;
  • 用户没有 MODBUS 组织的任何批准就可以选择和实现一个功能码 ;
  • 不能保证被选功能码的使用是唯一的 ;
  • 如果用户要重新设置功能作为一个公共功能码,那么用户必须启动 RFC,以便将改变引入公共分类中,并且指配一个新的公共功能码 。

  3.保留功能码:

  • 一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能码 。

  4.公共功能码定义如下表所示:

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!