ModBus协议简单笔记

modbus 协议简介

包结构如下:

modbus数据包={
    uint8 地址
    {请求|响应|出错响应} 载荷
    uint16 CRC16
}

或者用如下方式表示:

modbus数据包={
    uint8 地址
    uint8 功能代码
    可变域 数据
}

载荷 结构为:

请求={
    uint8 功能代码
    uint16 请求数据
}

响应={
    uint8 功能代码
    uint16 响应数据
}

出错响应={
    uint8 功能代码
    uint16 出错代码
}

常用功能码:

公共功能代码={
    01: 读线圈
    02: 读书如离散量
    03: 读多个寄存器
    04: 读输入寄存器
    05: 写单个线圈
    06: 写单个寄存器
    15: 写多个线圈
    16: 写多个寄存器
    23: 读写多个寄存器
    43 14:读设备识别码
}

读线圈请求过程(01)={
    请求={
            功能代码=0x01
            起始地址=[0x0000,0xFFFF]
            线圈数量=[1,0x7d0]=[1,2000]
        }

    响应={
            功能代码=0x01
            响应字节数量=输出数量/8,向上取整
            线圈状态={s1,s2,...,sn}
        }

    出错={
            功能代码=0x80+0x01
            错误代码={1|2|3|4}
        }
}

错误代码={
        1: 不支持的功能码
        2:数量异常(溢出)
        3:地址异常(溢出)
        4:内部出错
}

读保持寄存器请求过程(0x03)={
    ...
    寄存器数量=[1,125]
    ...
}

地址空间:

address={
    0: 广播地址
    [1,247]:单播地址
    [248,255]:保留地址
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值