Modbus通讯协议下表是Modbus的功能格式:1、读可读写数字量寄存器(线圈状态):计算机发送命令:设备地址命令号01起始寄存器地址高8位低8位读取的寄存器数高8位低8位CRC校验的低8位CRC校验的高8位例:110100130025CRC低CRC高意义如下:1设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。例子中为想和17号十进制的17是十六进制的11通讯。2命令号01:读取数字量的命令号固定为01。3起始地址高8位、低8位:表示想读取的开关量的起始地址起始地址为0。比如例子中的起始地址为19。4寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。例子中为37个开关量。5CRC校验:是从开头一直校验到此之前。在此协议的最后再作介绍。此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。设备响应:设备地址命令号01返回的字节个数数据1数据2数据
CRC校验的低8位CRC校验的高8位例:110105CD6BB20E1BCRC低CRC高意义如下:1设备地址和命令号和上面的相同。2返回的字节个数:表示数据的字节个数,也就是数据1,2
中的
的值。3数据1
:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。比如例子中,表示20号索引号为19开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。4CRC校验同上。2、读只可读数字量寄存器(输入状态):和读取线圈状态类似,只是第二个字节的命令号不再是1而是2。3、写数字量(线圈状态):计算机发送命令:设备地址命令号05需下置的寄存器地址高8位低8位下置的数据高8位低8位CRC校验的低8位CRC校验的高8位例:110500ACFF00CRC低CRC高意义如下:1设备地址和上面的相同。2命令号写数字量的命令号固定为05。3需下置的寄存器地址高8位,低8位:表明了需要下置的开关的地址。4下置的数据高8位,低8位:表明需要下置的开关量的状态。例子中为把该开关闭合。注意,此处只可以是FF00表示闭合0000表示断开,其他数值非法。5注意此命令一条只能下置一个开关量的状态。设备响应:如果成功把计算机发送的命令原样返回,否则不响应。4、读可读写模拟量寄存器(保持寄存器):计算机发送命令r