时间:2021-07-01 10:21:17 帮助过:32人阅读
首先介绍下昆仑屏(TPC),项目中用到的触摸屏采用的RS232接口,modbus协议。
采用的驱动是:莫迪康ModbusRTU;本驱动支持 01、02、03、04、05、06、15、16 常用功能码。
本驱动构件支持的寄存器及功能码说明如下:
(10)分块采集方式:驱动采集数据分块的方式,对于Modicon
PLC及标准
PLC设备,使用默认设置可以提高采集效率。
0— 按最大长度分块:采集分块按最大块长处理,对地址不连续但地址相近的多个分块,分为一块一次性读取,以优化采集效率。
1— 按连续地址分块:采集分块按地址连续性处理,对地址不连续的多个分块,每次只采集连续地址,不做优化处理。
例如:有4
区寄存器地址分别为
1~5,7,9~12的数据需采集,如果选择“0-按最大长度分块”
,则两块可优化为地址1~12的数据打包
1次完成采集;如果选择“1-按连续地址分块”
,则需要采集 3
次。
(11)4区
16
位写功能码选择:写 4
区单字时功能码的选择,这个属性主要是针对自己制作设备的用户而设置的,这样的设备4
区单字写可能只支持
0x10 功能码,而不支持
0x06
功能码。
0—0x06:单字写功能码使用0x06。
1—0x10:单字写功能码使用0x10。
注意:
1.
“解码顺序”及“校验方式”设置:主要是针对非标准
ModbusRTU 协议的不同解码及校验顺序。当用户通过本驱动软件与设备通讯时,如果出现解析数据值不对,或者通讯校验错误(通讯状态为3),可与厂家咨询后对以上两项进行设置。而对于ModiconPLC及支持标准
ModbusRTU
的 PLC
及控制器等设备,一般需将“32位整数解码顺序”和“32位浮点数解码顺序”设置为“2-3412”
。 另外,在使用本驱动与“Modbus
串口数据转发设备”构件通讯时, “解码顺序”及“校验方式”均需按默认值设置,否则会导致通讯失败或解析数据错误。
2.
“分块采集方式”设置:主要是针对非标准 ModbusRTU协议设备。当用户通过本驱动软件与设备通讯时,如果按默认“0-按最大长度分块”时,出现读取连续地址正常,而不连续地址不正常时,可与厂家咨询,并设置为“1-按连续地址分块方式”尝试是否可正常通讯。
而对于 Modicon PLC
及支持标准 ModbusRTU
的 PLC
及控制器等设备,直接使用默认设置即可,这样可以提高采集效率。
2、采集通道
a、 通讯状态:
通讯状态值 代表意义
0 表示当前通讯正常
1 表示采集初始化错误
2
表示采集无数据返回错误
3 表示采集数据校验错误
4 表示设备命令读写操作失败错误
5 表示设备命令格式或参数错误
6 表示设备命令数据变量取值或赋值错误
3、 内部属性
用户可通过内部属性,添加通道,本驱动构件可支持
ModbusRTU 寄存器类型及对应功能码如下:
寄存器 数据类型 读取功能码 写入功能码 操作方式 通道举例
[1
区]输入继电器 BT
02 — 只读 只读10001表示
1区地址
1
[0区]输出继电器
BT 01 05、15
读写 读写
00001
表示 0区地址1
[3
区]输入寄存器 BT、WUB、WB、WDDUB、DB、DD、DF、STR
04 — 只读 只读30001
表示
3区地址1
[4
区]输出寄存器 BT、WUB、WB、WDDUB、DB、DD、DF、STR
03 06、16 读写 读写40001
表示
4区地址1
说明:
功能码:[1区]、[3区]不支持写操作;[4区]在双字(32位)数据写操作或批量写入多个
数据时,使用
16 功能码。
4、莫迪康ModbusRTU协议格式
读:
主机查询:
从机地址---功能码---起始地址----开关量或寄存器个数-----CRC校验码
1Byte------1Byte----2Byte-----------2Byte----------------------------2Byte
从机响应:
从机地址---功能码---数据长度----响应数据---CRC校验码
1Byte------1Byte----1Byte-----------nByte------------2Byte
写一路:
从机地址--功能码--起始地址----控制命令---CRC校验码
1Byte------1Byte----2Byte----------2Byte-------------2Byte
从机地址---功能码---起始地址------控制命令-------CRC校验码
1Byte------1Byte-------2Byte------------2Byte--------2Byte
写多路:
从机地址--功能码--起始地址--开关量或寄存器个数---数据长度-控制命令---CRC校验码
1Byte------1Byte----2Byte-----------1Byte----------------------1Byte-----------------2Byte
从机地址---功能码---起始地址--开关量或寄存器个数---CRC校验码
1Byte------1Byte-------1Byte------------1Byte---------------2Byte
起始地址的理解:起始地址是为了确定读哪几路信号,从第几路开始读。
起始地址是指每一路信号在主机里面的数据存储地址,与从机里的数据地址是有区别的。
要弄清楚从机里每一路信号的存储格式,使主机和从机每一路信号地址对应上。
以TPC为例:开关量信号在其内是连续存储的,递加1;而浮点数(32bit)不是连续的,是递加2的。
怎么获取TPC屏的功能码?
采取试验的方式,在设备窗口->设备编辑窗口里增加一些通道,未连接变量的通道主机不会向从机发送请求信息,只有连接变量的通道才会向从机发送请求信息,而且有几个通道连接变量,主机读或写几个通道。
功能码列表: