设备驱动与变量定义
为了节省流量采用手动发送,因此不能使用官方驱动,需要使用用户自定义驱动,这里提供百度网盘下载地址(见评论区)。链接:https://pan.baidu.com/s/1ORy2UFOlHeRCXraYKC1xUA 提取码:tl3i
添加用户自定义设备,不能使用官方提供的Modbus RTU驱动,官方驱动不支持手动发送,此例程是基于整点自动发送指令实现的,可以将流量消耗降到最低,若对流量消耗无限制也可使用官方驱动实现,此处不做讲解。
无论是采用自定义驱动还是官方驱动,对于无线设备都需要适当增加超时时间,在后续实机调试时说明方法。
本例程使用变量表如下:
变量名 | 描述 | 类型 | 初值 | 注释 |
collection_run | 用于标记通讯执行中 | 开关型 | 0 | 0:空闲 1:忙 |
meter_IrAt_01 | 存储电流变比 | 数值型 | 1 | 1-9999 |
meter_UrAt_01 | 存储电压变比,使用时需要×0.1 | 数值型 | 10 | 1-9999 |
meter_state_01 | 设备状态 | 开关型 | 0 | 0:通讯正常 1:通讯异常 |
nReturn | Modbus异常码 | 开关型 | 0 | 返回码 |
meter_value_01 | 有功电能综合,原始值,不含变比 | 数值型 | 0 | —— |
resend_set_value | 重发次数配置值 | 开关型 | 3 | —— |
resend_value | 重发次数运行值 | 开关型 | 0 | —— |
采集执行策略(带重发机制)
MCGS嵌入式组态环境的“运行策略”下添加用户策略,具体配置如下:
定时发送
MCGS嵌入式组态环境的“运行策略”下添加循环策略,并添加两个策略行,一个用于总线繁忙时用于延时,一个用于触发采集,配置如下:
脚本程序与调用策略配置如下图所示:
人机交互界面制作
添加人机交互界面“HOME”,并在启动策略中添加手动获取变比与有功总功率的Modbus指令发送函数如下:
!SetDevice(设备0,6,"ReadP(4,7,WUB,2,meter_IrAt_01,meter_UrAt_01,nReturn)")
!SetDevice(设备0,6,"ReadP(4,4127,DF,1,meter_value_01,nReturn)")
添加13个“标签”控件,以下仅说明有关联函数“标签”,添加2个“按钮”控件。
采集状态,使用两个“标签”控制,分别在变量“meter_state_01”等于1或者0时隐藏。
通过DTSU666手册提供计算公式,显示当前真实有功总功率。
电流变比与电压变比仅关联对应变量显示,不再说明。
手动采集调用用户自定义策略“采集执行”,该按钮在自动采集过程中不生效。
更新变比“按钮”控件调用脚本函数实现:
!SetDevice(设备0,6,"ReadP(4,7,WUB,2,meter_IrAt_01,meter_UrAt_01,nReturn)")