网络上的Modbus指令都是读保持寄存器等难懂的词汇。这是一个注释,以简化解释。Modbus详细功能码和错误码参考链接[Others]部分PLC寄存器分类:开关通道,用x,y表示,寄存器号以八进制计数,x0-x7,x10-x15为输入,只读。输出y0-y7、y10-y15。内存变量记为m,寄存器号为十进制,如m19。单变长为1位模拟通道,sd的意思。存储器的模拟量记为d,寄存器的序号为十进制。单个变量长度为2字节常用功能码0x01:读取线圈寄存器------------批量读取y0x02:读取离散输入寄存器------------批量读取x0x03:读取保持register----------batchreadd0x04:readinputregister----------读输入模拟通道sd(未测试)0x05:writesinglecoilregister---------Singlewritey0x06:写单个保持寄存器----------单写d0x0f:写多个线圈寄存器----------批量写y0x10:写多个保持寄存器----------Batchwrited详细解释:0x01Batchreadysend:站号1字节-0x01,功能码1字节-0x01,起始地址2字节-0x000x00,数据长度2字段-0x000x10,crc2字节返回:站号1字节-0x01,功能码1字节-0x01,数据字节数1字节-0x02,数据2字节-0x200x00,crc2字节说明:请求读取从y0开始的16个开关状态,响应0x200x00,即y7-y0的状态为00100000,y17-y10的状态为00000000,只有y5为1(根据设备的字节顺序不同)0x02批量读取x与0x010x03批量读取相同并发送:站号1字节-0x01,功能码1字节-0x03,起始地址2字节-0x000x00,数据长度2字节-0x000x02,crc2字节返回:站号1字节-0x01,功能码1字节-0x03,databytecount1byte-0x04,data4bytes-0x060xa40x0a0x8c,crc2字节解释:请求读取从d0开始的2个模拟状态,响应0x060xa40x0a0x8c,即d1为0x060xa4=1700,d2为27000x05单写y发送:站号1字节-0x01,功能码1字节-0x05,起始地址2字节-0x000x00,数据2字节-0xff0x00,crc2字节返回:同发送说明:当y0设置为1、设置为0时,发送数据0x00000x06单写d发送:站号1字节-0x01,功能码1字节-0x06,起始地址2字节-0x000x07,数据2字节-0x0a0xa0,crc2bytesreturn:sameassending说明:请求写d7模拟状态,响应同一个报文,写0x0a0xa00x0f批量写ysend:stationnumber1byte-0x01,功能码1字节-0x0f,起始地址2字节-0x000x01,数据长度2字节-0x000x01,数据字节数1字节-0x01,数据1字节-0x02,crc2字节返回:站号1字节-0x01,功能码1字节-0x0f,起始地址2字节-0x000x01,数据长度2字节-0x000x01,crc2字节说明:从y1开始,写入一个字节,00000001对应变量y10-y1(八进制)和函数code0x10不同,长度单位为1字节,0x10为2字节,1个模拟量0x10批量写d发送:站号1字节-0x01,功能码1字节-0x10,起始地址2字节-0x000x07,数据长度2字节-0x000x02,数据字节号1字节-0x04,数据4字节-0xab0xcd0x980x76,crc2字节返回:站号1字节-0x01,功能码1字节-0x10,起始地址2字节-0x000x07,运行datalength2bytes-0x000x02,crc2byte说明:从d7开始,写入2条数据,d7为0xabcd,d8为0x9876,修改变量总数为2。其他:crc16check-nodejshttps://blog.csdn.net/yaojinj...功能代码和错误代码https://www.cnblogs.com/fishp...
