• raybet下载新闻网 欢迎您!
  • 当前位置:首页 > 通讯

    Modbus通讯 功能码及实例

      Modbus通讯 功能码及实例_信息与通信_工程科技_专业资料。精心整理 功能码 名称 作用 01 读取线圈状态 取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态 取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器 在一个或多个保持寄存

      精心整理 功能码 名称 作用 01 读取线圈状态 取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态 取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈 强置一个逻辑线 预置单寄存器 把具体二进值装入一个保持寄存器 07 读取异常状态 取得8个内部线个线圈的地址由决定 08 回送诊断校验 把诊断校验报文送从机,以对通信处理进行评鉴 09 编程(只用于484) 使主机模拟编程器作用,修改PC从机逻辑 10 控询(只用于484) 可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其 操作任务,仅在含有功能码9的报文发送后,本功能码才发送 11 读取事件计数 可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生 通信错误时 12 读取通信事件记录 可是主机检索每台从机的ModBus事务处理通信事件记录。如果某项事务处 理完成,记录会给出有关错误 13 编程(184/384 484 584) 可使主机模拟编程器功能修改PC从机逻辑 14 探询(184/384 484 584) 可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其 程序操作,仅在含有功能13的报文发送后,本功能码才得发送 15 强置多线圈 强置一串连续逻辑线 预置多寄存器 把具体的二进制值装入一串连续的保持寄存器 17 报告从机标识 可使主机判断编址从机的类型及该从机运行指示灯的状态 18 (884和MICRO 84) 可使主机模拟编程功能,修改PC状态逻辑 19 重置通信链路 发生非可修改错误后,是从机复位于已知状态,可重置顺序字节 20 读取通用参数(584L) 显示扩展存储器文件中的数据信息 精心整理 精心整理 21 写入通用参数(584L) 把通用参数写入扩展存储文件,或修改之 22~64 保留作扩展功能备用 65~72 保留以备用户功能所用 留作用户功能的扩展编码 73~119 非能 120~127 保留 留作内部作用 128~255 保留 用于异常应答 实例 在这些功能码中较长使用的是1、2、3、4、5、6号功能码,使用它们即可实现对下位机的数字 量和模拟量的读写操作。 1、读可读写数字量寄存器(线圈状态): 计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][01][00][13][00][25][CRC低][CRC高] 意义如下: 1设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。 例子中为想和17号(十进制的17是十六进制的11)通讯。 2命令号01:读取数字量的命令号固定为01。 3起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。比如例子中的起始地 址为19。 4寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。例子中为37个开关量。 5CRC校验:是从开头一直校验到此之前。在此协议的最后再作介绍。此处需要注意,CRC校验 在命令中的高低字节的顺序和其他的相反。 设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位] 例:[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高] 意义如下: 1设备地址和命令号和上面的相同。 精心整理 精心整理 2返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。 3数据1...n:由于每一个数据是一个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位] 例:[11][05][00][AC][FF][00][CRC低][CRC高] 意义如下: 1设备地址和上面的相同。 2命令号:写数字量的命令号固定为05。 3需下置的寄存器地址高8位,低8位:表明了需要下置的开关的地址。 4下置的数据高8位,低8位:表明需要下置的开关量的状态。例子中为把该开关闭合。注意,此 处只可以是[FF][00]表示闭合[00][00]表示断开,其他数值非法。 5注意此命令一条只能下置一个开关量的状态。 设备响应:如果成功把计算机发送的命令原样返回,否则不响应。 4、读可读写模拟量寄存器(保持寄存器): 计算机发送命令:[设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][03][00][6B][00][03][CRC低][CRC高] 意义如下: 1 设备地址和上面的相同。 2命令号:读模拟量的命令号固定为03。 精心整理 精心整理 3起始地址高8位、低8位:表示想读取的模拟量的起始地址(起始地址为0)。比如例子中的起始地 址为107。 4寄存器数高8位、低8位:表示从起始地址开始读多少个模拟量。例子中为3个模拟量。注意, 在返回的信息中一个模拟量需要返回两个字节。 设备响应:[设备地址] [命令号03] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位] 例:[11][03][06][02][2B][00][00][00][64][CRC低][CRC高] 意义如下: 1设备地址和命令号和上面的相同。 2返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。例子中返回了3个模拟 量的数据,因为一个模拟量需要2个字节所以共6个字节。 3数据1...n:其中[数据1][数据2]分别是第1个模拟量的高8位和低8位,[数据3][数据4]是第2个模 拟量的高8位和低8位,以此类推。例子中返回的值分别是555,0,100。 4CRC校验同上。 5、读只可读模拟量寄存器(输入寄存器): 和读取保存寄存器类似,只是第二个字节的命令号不再是2而是4。 6、写单个模拟量寄存器(保持寄存器): 计算机发送命令:[设备地址] [命令号06] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][06][00][01][00][03][CRC低][CRC高] 意义如下: 1设备地址和上面的相同。 2命令号:写模拟量的命令号固定为06。 3需下置的寄存器地址高8位,低8位:表明了需要下置的模拟量寄存器的地址。 4下置的数据高8位,低8位:表明需要下置的模拟量数据。比如例子中就把1号寄存器的值设为3。 5注意此命令一条只能下置一个模拟量的状态。 设备响应:如果成功把计算机发送的命令原样返回,否则不响应。 精心整理

    (编辑:raybet下载新闻网)

    特别声明:本网所刊载的“来源:raybet下载新闻网”或“来源:raybet下载日报”字样的所有作品,其知识产权均为raybet下载日报社所有。未经许可,禁止进行转载、摘编复制及建立镜像等任何使用,否则视为恶意侵权,将追究相关法律责任。