zoukankan      html  css  js  c++  java
  • modbus简介

    参考资料:Modbus软件开发实战指南

    Modbus是一种串口通信协议,随着技术的发展modbus也有对应的TCP/IP版本(标准端口502)。本文只记录modbus串口协议相关内容。

    在串口modbus协议网络中多个串口设备连接到一根总线上,所以这个网络中的任何设备都可以接收到其他设备发出的报文。Modbus串口协议网络中只存在一个主设备(master),所有的主动请求命令都由这个master发出,其他设备称为slave,只能对master发出的命令做出响应。

    常见的Modbus调试软件有modbus poll和modbus slave,前者可以模拟master设备,后者模拟slave设备(下载地址)。在一台电脑上模拟串口需要虚拟串口软件VSPD

    Modbus有两种编码方式:RTU和ASCII,二者不能混用,即同一个系统中只能存在一种编码方式。RTU是二进制形式;ASCII将RTU中的一个字节拆成两个字节,每个字节对应一个ASCII码,并且ASCII格式的帧由冒号作为帧头。本文主要介绍RTU格式的帧。

    Modbus的报文格式(RTU)如下所示:

    地址(1byte)

    功能码(1byte)

    数据(0~n)

    校验位(2byte)

    地址:

           取值范围1~247,0为广播地址,slave对地址为0的报文做出动作之后不发出应答报文。

    功能码:

           三个类别:标准中定义的;自定义的(65~72和100~110);预留的。

           Slave收到指令后如果出现异常则将接收到的命令中的功能码最高位置1并将指令发出,所以功能码128~255为异常响应码。

           功能码分为两类,位操作与字操作。位操作的基本单元是bit,字操作最小单位是2byte。

    数据:

           数据的基本单位是字节(byte),数据位包含两种类型的数据:寄存器的起止和有效数据。对于包含有效数据的数据区间,第一个字节表示数据区间有效数据的字节数。如果数据位表示的是寄存器的起始和结束位置,则数据区间有4个字节,前两个字节表示寄存器的起始位置,后两个字节表示读取的字节数。

    校验位:

           RTU报文最后两个字节是校验位,一般使用的算法是CRC-16。

    Modbus寄存器地址分配

    寄存器种类

    PLC地址

    Modbus协议地址

    简称

    读写状态

    线圈状态

    00001~09999

    0000H~FFFFH

      0x

    WR

    离散输入状态

    10001~19999

    0000H~FFFFH

    1x

    R

    保持寄存器

    40001~49999

    0000H~FFFFH

    4x

    WR

    输入寄存器

    30001~39999

    0000H~FFFFH

    3x

    R

    Modbus协议地址和设备(PLC)地址有一个映射关系,设备地址均映射到modbus协议中的0000H~FFFFH,因为不同寄存器的命令不同所以不会出现冲突。

     

    Modbus报文示例(RTU,16进制):

    Master发出的报文:01 03 00 00 00 0A C5 CD

    01:设备地址为1

    功能码03:读保持寄存器

    00 00 :寄存器起始地址为0

    00 0A:读10个字(20个字节)

    C5 CD:校验码

    结合功能码03可知读PLC40001~40020,共20个字节。

    Slave返回的报文:

    01 03 14 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A 8F 16

    01:设备地址

    03:读保持寄存器

    0x14:数据区域有20字节的有效数据

    0x14后的20个字节都是有效数据

    8F 16:校验位

  • 相关阅读:
    ACM算法
    过度拟合的问题
    多类分类:一对多
    先进的优化
    简化成本函数和梯度下降
    对数回归的成本函数
    决策边界
    假设表示
    分类
    hdu1574 I Hate It (线段树,查询区间最大值)
  • 原文地址:https://www.cnblogs.com/jiahu-Blog/p/8652120.html
Copyright © 2011-2022 走看看