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

      读线圈:就是说读开关量输出的状态,看看开关量输出的到底是开着的还是关着的,这样说有点不专业,但是好明白。比如要在上位机显示开关量输出的当状态,就得用这个功能码。

      写线圈:就是说读开关量输入的状态,开关量的输入大多是为了查看执行元件的动作情况,看看是否执行到位。

      读保持寄存器:就是说对被控制的从器件设置一些状态值,如设置时间,设置一些定值,设置互感器的变比什么的。

      读输入寄存器:意思说读取一些寄存器的输入值,如模拟量的采集,AD结果寄存器的值什么的。如果要在上位机实时显示电压,电流,温度什么,就要用到这个命令。

      强制线圈:意思就是说发出投切控制命令,如机器的启动,停止等。

    1.0x01功能码用于读线圈,一个线圈代表一个比特位,每一个线圈有一个索引,从1开始,但是地址编号从0开始

    以上图为例:

    0x13即十进制19

    即从地址为19(线圈索引为20)的线圈开始读,读取19个线圈,也就是响应中的线圈索引为20-38这19个线圈,响应中的0xCD/0x6B/0x05的每一个比特位代表了对应该位的线圈的状态;19个线圈2个字节存不下,所以需要3个字节返回。

    2.0x02功能码用于读离散量,其原理与读线圈是一样的,此处不多言了,以下图为例

    3.0x03功能码用于读保持寄存器

    每个寄存器含有两个字节,请求命令中请求的是寄存器的个数,因此,响应数据中返回“2*寄存器个数”个字节

    4.0x04功能码用于读输入寄存器,其原理与读保持寄存器一样

    5.0x05功能码用于写单个线圈

    注意,是写“单个”线圈,也就是一个比特位(地址为0x00AC)

    6.0x06功能码用于写单个寄存器

    7.0x0F用于写多个线圈

    8.0x10(即16)用于写多个寄存器

  • 相关阅读:
    【某集训记录】
    【bzoj 4407】于神之怒加强版
    【bzoj 3529】【sdoi 2014】数表
    PHP消息队列实现及应用
    (转)PHP DB 数据库连接类
    站点http升级到https
    虚拟主机发送邮件出现getmypid禁用的解决方案
    企业微信API集成登录以及其他操作开发
    微信小程序发送模版消息常见错误解决方案
    (转) Laravel自带SMTP邮件组件实现发送邮件(QQ、163、企业邮箱都可)
  • 原文地址:https://www.cnblogs.com/any91/p/3530540.html
Copyright © 2011-2022 走看看