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