时间: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屏的功能码?
采取试验的方式,在设备窗口->设备编辑窗口里增加一些通道,未连接变量的通道主机不会向从机发送请求信息,只有连接变量的通道才会向从机发送请求信息,而且有几个通道连接变量,主机读或写几个通道。
功能码列表: