设定定时的,随着时间的减少棒图会增加,时间设定是变化的,
棒图从0显示到100%正好等于设定的时间。
回答:
这个问题可以归结为棒图的设置与使用。
这也也编写一个实例,来介绍具体实现的过程。
例程界面如下:
在界面左上角可以设置棒图的最小,最大值。
也可以设置棒图的上下报警值。
问题的功能可以认为是将棒图的最大值表示成时间范围。
所以在棒图的上端也添加一个可以设置最大值的数值元件,
这样通过这个元件就可以设置时间范围。
由于例程有考虑使用上限报警功能,所以在设置时间范围时,触发了LB0来调用宏指令,
宏指令根据设置的时间范围,动态设置了上限报警值。
代码如下:
- macro_command main()
- short n=0
- //获取最大值
- GetData(n, "Local HMI", RW, 3, 1)
- //最小值默认为0不处理
- //设置上限报警,下限报警默认为0不处理。
- n=n*0.9
- SetData(n, "Local HMI", RW, 1, 1)
- //复位由最小值设置数值元件设置的LB0.
- bool b=false
- SetData(b, "Local HMI", LB, 0, 1)
- end macro_command
复制代码 点击按钮就可以根据设置了时间范围让棒图动起来。
这里是通过宏指令来模拟运行,所以棒图会上下来回动作。
效果如下:
宏代码如下:
macro_command main()
bool bDir =false
short nCur=0,nMax=0
//获取方向,最大值,当前值
GetData(bDir, "Local HMI", LB, 100, 1)
GetData(nMax, "Local HMI", RW, 3, 1)
GetData(nCur, "Local HMI", LW, 0, 1)
//<>根据方向,更改当前值
if bDir==false then
nCur = nCur+10
if nCur>=nMax then
bDir = true
end if
else
nCur = nCur-10
if nCur<=0 then
bDir = false
end if
end if
//设置方向与当前值
SetData(bDir, "Local HMI", LB, 100, 1)
SetData(nCur, "Local HMI", LW, 0, 1)
//显示随着时间减少而减少的数值
nCur = nMax-nCur
SetData(nCur, "Local HMI", LW, 1, 1)
end macro_command
注意宏设置了执行周期100ms,执行条件LB1为ON。
可以下载下边的例程来查看。
以上全部的调用与宏代码的编写都是基于棒图属性的设置。
所以第一步要设置下棒图所使用的寄存器。
例程棒图读取地址为LW0,
上下限范围,最小最大值分别设置为RW0,RW1,RW2,RW3,如下图。
很简单的功能,主要还是要对元件的熟练使用。
如果是初始使用威纶通触摸屏,可以参看我录制的两套视频教程。
例程下载地址;
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|