Modbus协议笔记

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

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

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

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

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

 

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

以上图为例:im

0x13即十进制19数据

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

2.0x02功能码用于读离散量,其原理与读线圈是同样的,此处很少言了,如下图为例时间

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

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

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

 

 

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

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

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

7.0x0F用于写多个线圈

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

相关文章
相关标签/搜索