首页 > 数据库技术 > 详细

Modbus协议笔记

时间:2014-01-23 08:57:51      阅读:628      评论:0      收藏:0      [点我收藏+]

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

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

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

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

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

 

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

以上图为例:

0x13即十进制19

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

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

bubuko.com,布布扣

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

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

bubuko.com,布布扣

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

bubuko.com,布布扣

 

 

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

bubuko.com,布布扣

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

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

bubuko.com,布布扣

7.0x0F用于写多个线圈

bubuko.com,布布扣

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

bubuko.com,布布扣

Modbus协议笔记

原文:http://www.cnblogs.com/any91/p/3530540.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!