zoukankan      html  css  js  c++  java
  • Modbus协议

     

    一、Modbus协议简介

      {来自百度百科} 

      Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
      ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。
      ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
     
    二、Modbus协议特点
      {来自百度百科} 
      (1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。
      (2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。
      (3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。
     
    三、Modbus数据包结构描述  
     
     

      每个Modbus 数据包都由以下几个部分组成:

      (1) 地址域

      (2) 功能码域

      (3) 数据域

      (4) 校验域

      

      地址域:0~247,0一般作为广播地址,1~247作为装置(下位机)使用的地址号。

      功能码:用来确认该包报文的具体功能。(常见03码、10码)

    0x03   读寄存器
    0x10 写寄存器
    0x05 遥控操作
      数据域:Modbus 数据域长度不定,依据其具体功能而定。
      校验域:CRC16校验方法,2个字节长度。
     
    四、串口、以太口Modbus报文
      串口下:ModbusRTU
      以太网:ModbusRTU,报文格式为:[事务元标识符(2字节)]+[协议标识(2字节)]+[长度(2字节)]+ModbusRTU-CRC校验(2字节)
      
      总而言之,ModbusTCP比ModbusRTU报文,多了6个字节的报文头,少了末尾的2个字节的CRC校验
     
      以下主要以ModbusRTU说明:
      0x03码

    读寄存器数据包格式

    响应格式

    从站地址

    1 字节

    从站地址

    1 字节

    功能码

    1 字节

    功能码

    1 字节

    寄存器起始地址高位

    1 字节

    字节数n

    1 字节

    寄存器起始地址低位

    1 字节

    Data1 高位

    1 字节

    寄存器数量高位

    1 字节

    Data1 低位

    1字节

    寄存器数量低位

    1 字节

    ……

     

     

     

    Datan/2 高位

    1 字节

     

     

    Datan/2 低位

    1 字节

    CRC校验码低位

    1 字节

    CRC低位

    1 字节

    CRC校验码高位

    1 字节

    CRC高位

    1 字节

      0x10码
      

    写寄存器数据包格式

    响应格式

    从站地址

    1 字节

    从站地址

    1 字节

    功能码

    1 字节

    功能码

    1 字节

    寄存器起始地址高位

    1 字节

    寄存器起始地址高位

    1 字节

    寄存器起始地址低位

    1 字节

    寄存器起始地址低位

    1 字节

    寄存器数量高位

    1 字节

    寄存器数量高位

    1 字节

    寄存器数量低位

    1 字节

    寄存器数量低位

    1 字节

    字节数(n)

    1 字节

    CRC校验码低位

    1 字节

    Data1 高位

    1 字节

    CRC校验码高位

    1 字节

    Data1 低位

    1 字节

     

     

    ……

     

     

     

    Data(n/2) 高位

    1 字节

     

     

    Data(n/2) 低位

    1 字节

     

     

    CRC校验码低位

    1 字节

     

     

    CRC校验码高位

    1 字节

     

     

      0x05码

    请求格式

    响应格式

    从站地址

    0x11

    从站地址

    0x11

    功能码

    0x05

    功能码

    0x05

    预置地址高

    0 x 23

    预置地址高

    0 x 23

    预置地址低

    0 x 8C

    预置地址低

    0 x 8C

    设置数据高

    0 x FF

    设置数据高

    0 x FF

    设置数据低

    0x00

    设置数据低

    0x00

    CRC 校验码低

    44

    CRC 校验码低

    44

    CRC 校验码高

    C5

    CRC 校验码高

    C5

    文章同时发布在个人博客
  • 相关阅读:
    dp的冗余(选数类)
    noip2016自测报告
    dalao高精
    二叉苹果树
    最长上升子序列加强版
    Above the Median
    树状数组学习笔记
    Java委托机制
    Java集合
    Java异常
  • 原文地址:https://www.cnblogs.com/tilv37/p/4209228.html
Copyright © 2011-2022 走看看