《MODBUS通讯步骤》由会员分享,可在线阅读,更多相关《MODBUS通讯步骤(15页珍藏版)》请在金锄头文库上搜索。
1、一、协议概述本驱动支持标准 Modbus串行口 RTU,ASCII 和 TCP协议。协议:B/T 195822008 基于 Modbus协议的工业自动化网络规范协议 第 1部分:Mdobus应用协议 2008-02-27 发布参考资料:基于 Modbus协议的工业自动化网络规范 第 2部分:Modbus 协议在串行链路上的实现指南第 3部分:Modbus 协议在 TCP/IP上的实现指南2008-09-27发布二、硬件配置与连接参见设备说明书。三、力控配置1、在 MODBUS中选择标准 MODBUS组建设备以 RTU为例以上参数请结合现场实际情况填写,设备地址要和连接设备的地址一致。2、通讯端
2、口配置1)串口配置请根据连接设备的串参数保持一致。2)以太网配置IP和端口要与连接设备配置一致3)采集配置(1)写单个寄存器:HR 保持寄存器单寄存的写入操作,一般设备支持这个命令。一条命令只能写一个寄存器。简单的数据类型可以用这条命令支持,如 8位、16 位的数据类型可以用此命令写入。(2)写多个寄存器:HR 保持寄存器多寄存器的写入操作,一条命令可以写多个寄存的值。复杂的数据类型用这条命令支持,如 32位,64 位的数据类型。(3)屏蔽写寄存器:HR 保持寄存器的模拟量按位操作命令(设备要支持屏蔽写命令 22功能码)。(4)最大长度:是指 MODBUS中一条数据所读取的字(两个字节)数,包
3、的长度越长,一次读取的数据就越多,通讯效率就越快。MODBUS 协议中规定数据包最大长度不能超过 255个字节。另外有些 PLC对包长还有限制,请根据具体设备进行填写。(5)组包间隔:两个相邻采集点的字偏移地址如果大于等于“组包间隔”就重新打一个包。他可以控制包中数据点的密度,如上图配置包中相邻数据的地址间距不会大于 10。(6)05 功能码:选中后线圈下置命令用 05功能码执行。(7)15 功能码:选中后线圈下置命令用 15功能码执行。(8)高级:见注意事项四、数据连接1.手动建点打开组态软件,选择“数据库组态”“数据库”新建点如下图:选择相应的点类型,点击继续填写点名,其他可以默认(详细信
4、息可参见“力控联机帮助”-“数据库与网络开发”-“实时数据库系统”-“点组态”),点击数据连接点参数:常用的是 PV(现场实时值)和 DESC,当要读取字符串时要用 DESC连接 IO设备:选择要连接的的设备名称连接项:点击“增加”增加链接项如下图1)内存区:命令类型(寄存器类型)。内存区 RTU TCP ASCIIStatus Coil HR保持寄存器 AR保持寄存器 EX扩展寄存器 FIFO队列 诊断 读异常状态 通讯事件计数器 通讯事件记录 注:表示支持2)偏置:填入数据点的起始寄存器地址,数据的进制格式和后面的标签一致。(填入数据的进制格式在设备组态界面中配置的数据格式是一致默认是 1
5、0进制的)设备的寄存器的起始点一般是 00,与本驱动的地址 01是对应的。所以填写地址时请注意以下驱动与设备的地址对应关系)3)数据格式数据类型 寄存器个数字节数 可选项 起始地址 相邻地址Char 1 1 高低字节可选 01 02Byte 1 1 高低字节可选 01 02Short 1 2 按位读取(015) 01 02Word 1 2 按位读取(015) 01 02AscII2 1 2 01 02DWord 2 4 01 03Float 2 4 01 03String 32 64 字节长度可选,最大不要超过64个字节01 33Double 4 8 01 05BCD 3 6 字节长度可选,最
6、大不要超过6个字节01 042.批量建点批量建点不能在设备组态中使用,要退出力控单独运行“增强数据库组态工具”。点 windows“开始”“程序”“力控 Forcecontrol6.1”“工具”“增强数据库组态工具”。 首先要在数据库里建好点,建议先手动连接几个点,批量连接时可以做为参考如下图进入设备组态的第三步点击批量建点,弹出批量连接界面点名:必须是 DB中创建的数据库点。寄存器类型:线圈、离散输入寄存器、HR 保持寄存器、AR 输入寄存器和 EX扩展寄存器等。偏移/记录号:寄存器地址或者是扩展寄存器的记录号 数据类型:CHAR、BYTE、SHORT、WORD、BCD、LONG、DWORD
7、、FLOAT、LBCD、DOUBLE 和 STRING。读写属性:设置读写属性单字节高地位:单字节高低位的设置位偏移:位的偏移地址设置字节长度:设置字符串,BCD 等数据类型的字节长度文件:填写扩展寄存器的文件号按照相应的格式进行批量组点如下图选中某一列可以进行递增递减相同值的操作完成后,点击确定批量建点完成五、注意事项1、硬件厂商一般都有自己的数据采集软件,在驱动通讯之前最好是用设备采集软件先测试一下。这样可以线路接的是否正确。请在能正常通讯情况下测试驱动。 2、设备第三部高级配置 1)32 位浮点数字节顺序:主要是解决如何解析 32位整数、浮点数。请根据你所使用的 PLC或智能模块中 32
8、位数据类型上传的格式来选择相应的格式。2)32 位整型字节顺序:主要是解决如何解析 32位整数、浮点数。请根据你所使用的 PLC或智能模块中 32位数据类型上传的格式来选择相应的格式。3)寄存器地址:请求的数据的起始地址,标准 modbus地址高字节在前,低字节在后。4)寄存器数据:采集或下置的数据,标准 modbus数据高字节在前,低字节在后。5)校验:标准 modbus高字节在前,低字节在后。6)Double:主要是解决如何解析双精度浮点数。请根据你所使用的 PLC或智能模块中双进度浮点数上传的格式来选择相应的格式。7)寄存器地址格式:在点组态界面的寄存器地址填入格式,默认为 10进制。3
9、、支持功能码1)功能码功能码 名称 描述01(0x01) 读线圈 使用该功能码从一个远程设备中读 12000个连续的线圈状态。02(0x02) 读离散输入 使用该功能码从一个远程设备中读 12000个连续的离散量输入状态。03(0x03) 读保持寄存器 使用该功能码从远程设备中读保持寄存器连续块的内容。04(0x04) 读输入寄存器 使用该功能码从一个远程设备中读 1125个连续输入寄存器。05(0x05) 写单个线圈 使用该功能码将一个远程设备中的单个输出写为 ON或 OFF。06(0x06) 写单个寄存器 使用该功能码在一个远程设备中写单个保持寄存器。07(0x07) 读异常状态 使用这个
10、功能码从一个远程设备中读 8个异常状态输出的内容。08(0x08) 诊断Modbus功能码 08提供了一系列测试,用于检查客户机(主站)设备与服务器(从站)之间的通信系统,或检查服务器中的各种内部差错状态。11(0x0B) 获得通讯事件 使用该功能码从远程设备中获得状态字、事件计数、报文计数。12(0x0C) 获得通讯事件记录 使用该功能码从远程设备中获得状态字、事件计数、报文计数以及一个时间字节字段。15(0x0F) 写多个线圈 使用该功能码将一个远程设备中的一个线圈序列的每个线圈强制为 ON或 OFF。16(0x10) 写多个寄存器 使用该功能码在一个远程设备中写连续寄存器存储块(1123
11、 个寄存器)。20(0x14) 读文件记录 使用该功能码读取文件记录。21(0x15) 写文件记录 使用该功能码进行文件记录的写入。22(0x16) 屏蔽写寄存器该功能码用于通过利用“AND_Mask”、“OR_Mask”以及当前寄存器内容的组合来修改指定的保持寄存器的内容。这个功能可用来设置或清除寄存器中不同的位。2)08 功能码的子功能码00(0x00) 返回询问数据 在响应中返回(回送)请求数据字段中的传递数据。02(0x02) 返回诊断寄存器 在响应中返回远程设备的 16位诊断寄存器内容。10(0x0A) 清除计数器和诊断寄存器目的是清除所有计数器和诊断寄存器。11(0x0B) 返回总
12、线报文计数响应数据字段返回上一次重启、清除计数器操作或加电之后远程设备在通信系统中检测到的报文数量。12(0x0C) 返回总线通讯差错计数响应数据字段返回上一次重启动、清除计数器操作或加电之后远程设备遇到的 CRC出错数量。13(0x0D) 返回总线异常差错计数响应数据字段返回上一次重启动、清除计数器操作或加电之后远程设备返回的Modbus异常响应的数量。14(0x0E) 返回从站报文计数响应数据字段返回上一次重启动、清除计数器操作或加电之后远程设备寻址的报文数量或远程设备处理的广播报文数量。15(0x0F) 返回从站无响应计数响应数据字段返回上一次重启动、清除计数器操作或加电之后对没有返回的
13、响应的远程设备的报文数量。16(0x10) 返回从站 NAK计数响应数据字段返回上一次重启动、清除计数器操作或加电之后对返回 NAK异常响应的远程设备寻址的报文数量。17(0x11) 返回从站忙计数器响应数据字段返回上一次重启动、清除计数器操作或加电之后对返回从站设备忙异常响应的远程设备的寻址的报文数量。18(0x12) 返回总线字符超限计数响应数据字段返回上一次重启动、清除计数器操作或加电之后,对由于字符超限状况而无法处理的远程设备寻址的报文数量20(0x14) 清除超限差错计数器和标志清除超限差错计数器,并复位出错标志。3)异常码 01非法功能对于从站来说,询问中接收到的功能码是不允许的操
14、作。这也许是因为功能码仅适用于新设备而在被选单元中没有实现;还可能表示从站在错误状态下处理的这种请求,例如:因为它是未配置的,并且正被要求返回寄存器值。02非法数据地址对于从站来说,询问中接收到的数据地址是不允许的地址。特别是,寄存器编号和传输长度的组合是无效的。对于带有 100个寄存器的控制器来说,PDU 赋值第一个寄存器为0,最后一个为 99。如果起始寄存器编号为96和寄存器的数据量为 4的请求被处理。那么这个请求会成功操作于寄存器 96、97、98和 99;而如果起始寄存器编号为 99和寄存器的数量为 5的请求被处理。那么将产生异常码 02“非法数据地址”,因为它试图作用于寄存器 96、
15、97、98、99 和 100,而寄存器100是不存在的。03非法数据值对于从站来说,询问数据字段中包含的是不允许的值。它表示组合请求中剩余部分结构方面的错误,例如:隐含长度不正确。它决不表示寄存器中被提交的数据项有一个应用程序期望之外的值,因为 Modbus协议并不知道任何特殊寄存器的任何特殊值的含义。04 从站设备故障 当从站正在试图执行请求的操作时,产生不可恢复的差错。05 确认 与编程命令一起使用。从站已经接受请求,并且正在进行处理,但是需要较长的处理时间。返回这个响应以防止在主站中发生超时错误。主站可以继续发送轮训程序完成报文来确定是否处理完成。06 从站设备忙 与编程命令一起使用。正在处理较长时间的程序命令。当从站空闲时,主站应该稍后重新传送报文。08 存储奇偶性差错 与功能码 20、21 个引用类型 6一起使用,以指示扩展文件去不能通过一致性校验;从站试图记录文件,但是在存储器中发现了一个奇偶校验错误。主站可以重新发送请求,但可能需要从站设备上提供这种服务。