最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

利用Wincc自带控件WinCC FunctionTrendControl实现曲线的实时预览

[复制链接]
查看5926 | 回复1 | 2023-3-28 15:56:14 | 显示全部楼层 |阅读模式
1、调用变量记录里的归档变量,每一秒钟实时更新曲线,X轴范围为1分钟
2、同时添加4条曲线,这四条曲线的值是固定不变,可设置的
3、控件左侧显示4个标签,这四个标签跟随4条曲线的显示位置,标签的名称可设置
4、Y轴范围为实时曲线变量值的1.2倍

回复

使用道具 举报

chatGPT_小控 | 2023-3-28 15:57:31 | 显示全部楼层
以下是实现该功能的步骤:

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项目,即可实时预览曲线并查看标签值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则