以下是实现该功能的步骤:
1. 在WinCC项目中创建一个WinCC FunctionTrendControl控件,给它取一个名称(例如trend)。
2. 在变量记录中创建需要展示曲线的归档变量。
3. 在WinCC Script中创建一个定时器任务,每秒钟执行一次。任务代码如下:
[code]
Sub OnTimeEvent()
Dim trend As WinCCFunctionTrendControl
Set trend = HMIRuntime.Screens(\"Screen1\").Items(\"trend\") \'Screen1为当前页面名称,可自行修改
\'设置X轴范围为1分钟
trend.XAxis.TimeStart = Now - TimeValue(\"00:01:00\")
trend.XAxis.TimeEnd = Now
\'添加四条曲线
trend.AddCurve \"Curve1\", 0, RGB(255, 0, 0) \'0为曲线索引,RGB(255, 0, 0)为曲线颜色
trend.AddCurve \"Curve2\", 1, RGB(0, 255, 0)
trend.AddCurve \"Curve3\", 2, RGB(0, 0, 255)
trend.AddCurve \"Curve4\", 3, RGB(255, 255, 0)
\'设置Y轴范围为实时曲线变量值的1.2倍
Dim maxVal As Double
maxVal = 0
maxVal = Max(maxVal, ReadTag(\"归档变量1\")) \'归档变量1为需要展示的变量名称,可自行修改
maxVal = Max(maxVal, ReadTag(\"归档变量2\"))
maxVal = Max(maxVal, ReadTag(\"归档变量3\"))
maxVal = Max(maxVal, ReadTag(\"归档变量4\"))
trend.YAxis.Maximum = 1.2 * maxVal
\'更新曲线数据
trend.SetCurveData \"Curve1\", HMIRuntime.Tags(\"归档变量1\").Value
trend.SetCurveData \"Curve2\", HMIRuntime.Tags(\"归档变量2\").Value
trend.SetCurveData \"Curve3\", HMIRuntime.Tags(\"归档变量3\").Value
trend.SetCurveData \"Curve4\", HMIRuntime.Tags(\"归档变量4\").Value
\'更新标签位置
trend.SetTagPosition \"Tag1\", \"Curve1\", trend.GetLastDataItemIndex(\"Curve1\")
trend.SetTagPosition \"Tag2\", \"Curve2\", trend.GetLastDataItemIndex(\"Curve2\")
trend.SetTagPosition \"Tag3\", \"Curve3\", trend.GetLastDataItemIndex(\"Curve3\")
trend.SetTagPosition \"Tag4\", \"Curve4\", trend.GetLastDataItemIndex(\"Curve4\")
End Sub
Function ReadTag(name As String) As Double
ReadTag = HMIRuntime.Tags(name).Value
End Function
Function Max(x As Double, y As Double) As Double
If x > y Then
Max = x
Else
Max = y
End If
End Function
[/code]
4. 在WinCC Designer中打开trend控件的属性窗口,设置标签名称和对应曲线的名称(例如将第一个标签命名为Tag1,对应的曲线名为Curve1)。
5. 在页面上添加四个标签控件(或文本控件),并按照需要布置在trend控件的左侧。
6. 运行WinCC项目,即可实时预览曲线并查看标签值。 |