• (一)Modbus通讯协议简介


    一、简介

       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.公共功能码定义如下表所示:

     

     

  • 相关阅读:
    Dockerfile使用案例
    Centos创建sudo用户免密使用
    yaml实例
    k8s学习过程中需要注意的地方
    docker部署redmine项目管理软件
    kubernetes陈述式常用命令
    mysql误删除数据后如何恢复
    kubeadm安装的k8s集群卸载方式
    虚拟机vmware centos7 扩展磁盘空间
    'React/RCTBundleURLProvider.h' file not found
  • 原文地址:https://www.cnblogs.com/wenhao-Web/p/12993151.html
Copyright © 2020-2023  润新知