Wincc如何做水流效果
使用折线实现水流的的启停、方向和流速的控制。
新建项目。
新建3个内部变量:水流启停(二进制变量)、水流方向(二进制变量)、水流速度(无符号8位)。
新建画面,并设置为启动画面。
打开画面开始编辑,调整网格尺寸为5,方便对齐对象。
绘制管道,修改索引为1,调整X轴和Y轴到合适位置,设置管道宽为20。
使用折线来绘制水流。将折线命名为水流1,设置索引为1,调整X轴和Y轴,设置颜色为蓝色,线宽设置为10,设置线型种的三个选项,将全局方案改为否。
将水流当前X轴设置为VBS动作。
水流代码:
Function ActualPointLeft_Trigger(ByVal Item)
Dim poly,lft,speed
Set poly=ScreenItems("水流1")
poly.Index =1
lft=poly.ActualPointLeft '取当前x坐标值
If HMIRuntime.Tags("水流方向").Read Then
If HMIRuntime.Tags("水流速度").Read =2 Then
poly.ActualPointLeft=lft+5
'ActualPointLeft_Trigger=lft+5 ‘使用ActualPointLeft_Trigger也是可以的
Else If HMIRuntime.Tags("水流速度").Read =1 Then
poly.ActualPointLeft=lft+3
'ActualPointLeft_Trigger=lft+3 ‘使用ActualPointLeft_Trigger也是可以的
Else If HMIRuntime.Tags("水流速度").Read =0 Then
poly.ActualPointLeft=lft+1
'ActualPointLeft_Trigger=lft+1 ‘使用ActualPointLeft_Trigger也是可以的
End If
End If
End If
If lft>=118 Then
poly.ActualPointLeft=100
'ActualPointLeft_Trigger=40
End If
Else
If HMIRuntime.Tags("水流速度").Read =2 Then
poly.ActualPointLeft=lft-5
'ActualPointLeft_Trigger=lft-5 ‘使用ActualPointLeft_Trigger也是可以的
Else If HMIRuntime.Tags("水流速度").Read =1 Then
poly.ActualPointLeft=lft-3
'ActualPointLeft_Trigger=lft-3 ‘使用ActualPointLeft_Trigger也是可以的
Else If HMIRuntime.Tags("水流速度").Read =0 Then
'ActualPointLeft_Trigger=lft-1 ‘使用ActualPointLeft_Trigger也是可以的
poly.ActualPointLeft=lft-1
End If
End If
End If
If lft<=100 Then
poly.ActualPointLeft=118
'ActualPointLeft_Trigger=58 ‘使用ActualPointLeft_Trigger也是可以的
End If
End If
End Function
代码说明:不断改变水流折线“水流1”的X轴坐标值,导致折线虚线点位置不断发生改变,从而产生流动的效果,X增加,对应水流向右,X减少,对应水流向左,步长影响水流速度。
修改触发器为“动画周期”。
绘制一个阀门到管道上,可以调用库里的现成图形。
绘制控制水流启停、流动方向和速度的按钮。
为开始按钮添加VBS动作。
开始按钮代码:
Sub OnClick(ByVal Item)
Dim poly
Set poly=ScreenItems("水流1")
poly.Visible=True
Select Case HMIRuntime.Tags("水流速度").Read
Case 0
poly.ActivateDynamic "ActualPointLeft","CycleTime500ms"
Case 1
poly.ActivateDynamic "ActualPointLeft","CycleTime250ms"
Case 2
poly.ActivateDynamic "ActualPointLeft","CycleTime125ms"
End Select
HMIRuntime.Tags("水流启停").Write True
End Sub
代码说明:首先让两个折线水流可见。然后根据速度设定值,以不同的触发周期激活动画触发器,最后设置启动变量“水流启停”为真。
为停止按钮添加VBS动作。
停止按钮代码:
Sub OnClick(ByVal Item)
Dim poly
Set poly=ScreenItems("水流1")
poly.Visible=False
poly.DeactivateDynamic "ActualPointLeft"
HMIRuntime.Tags("水流启停").Write False
End Sub
代码说明:将两个折线水流动画触发器取消激活,然后隐藏,并设置“水流启停”变量为假。
为水流正向按钮添加VBS动作。
正向按钮代码:
Sub OnClick(ByVal Item)
hmiruntime.Tags("水流方向").Write True
End Sub
代码说明:设置变量“水流方向”为假即可。
为水流逆向按钮添加VBS动作。
逆向按钮代码:
Sub OnClick(ByVal Item)
hmiruntime.Tags("水流方向").Write False
End Sub
代码说明:设置变量“水流方向”为真即可。
为慢速按钮添加VBS动作
Sub OnClick(ByVal Item)
Dim poly
Set poly=ScreenItems("水流1")
poly.ActivateDynamic "ActualPointLeft","CycleTime500ms"
hmiruntime.Tags("水流速度").Write 0
End Sub
代码说明:将动画触发器周期改为500ms,同时设置变量“水流速度”为0,这样可以使X轴和Y轴每500ms才变化一次,所以感觉是慢的。
为中速按钮添加VBS动作
中速代码:
Sub OnClick(ByVal Item)
Dim poly
Set poly=ScreenItems("水流1")
poly.ActivateDynamic "ActualPointLeft","CycleTime250ms"
hmiruntime.Tags("水流速度").Write 1
End Sub
代码说明:将动画触发器周期改为250ms,将变量“水流速度”设置为1。
为快速按钮添加VBS动作
高速代码:
Sub OnClick(ByVal Item)
Dim poly
Set poly=ScreenItems("水流1")
poly.ActivateDynamic "ActualPointLeft","CycleTime125ms"
hmiruntime.Tags("水流速度").Write 2
End Sub
代码说明:将动画触发器周期改为125ms,将变量“水流速度”设置为2。
保存画面并激活,测试动画。