设备驱动与变量定义
为了节省流量采用手动发送,因此不能使用官方驱动,需要使用用户自定义驱动,这里提供百度网盘下载地址(见评论区)。链接: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)")
相关文章:MCGS用户程序云端授权系统设计
虚拟串口工具MCGS开发调试的灵活应用教程
|