[西门子] 制作WinCC趋势画面模板

[复制链接]
查看74357 | 回复0 | 2024-3-19 13:31:35 | 显示全部楼层 |阅读模式
对于一个规模比较大的WinCC项目,如果有很多个归档变量,而这些变量又都需要通过曲线展示怎么办?虽然我们的HwBasicLib中的AI/PID等组件支持在Faceplate中显示曲线。但是对于一个SCADA项目来说,我们还是很有必要做个统一的曲线展示页面。



图1 Faceplate中的曲线
那这么多的变量,趋势曲线页面怎么做比较合理、效率更高、操作更人性化呢?我们的做法是在画面上放两个下拉列表框控件(ComboBox)。第一个下拉列表框中可以选择工艺单元。当我们通过下拉列表框选择工艺单元时,第二个下拉列表框中会自动添加该工艺单元对应的归档变量供我们选择。这种方式就是按照工艺单元或者区域对它们各种的归档变量进行分类,再通过下拉列表框选择。下图就是我们设计的趋势变量操作部分。两个按钮分别用于添加及清除曲线。



图2 变量操作

添加一个趋势控件到画面上,删除它里面自带的那个趋势。再拖拽一个标尺控件到画面上。一起组合起来如下图所示。



图3 趋势曲线页面效果

第一个下拉列表框控件里面的Item是固定的,我们可以按照现有的工艺单元添加进去。比如这个例子中我们添加了两个工艺单元,分别是1#站和2#站。第二个下拉列表框里面的Item就是动态的了。它需要根据我们选择的工艺单元自动分配,这个功能要用脚本来完成。VBS或者C都可以。因为比较简单,这里就不贴出具体脚本了。下图是展示效果。



图4 2#站及其对应的变量



图5 1#站及其对应的变量

点击按钮“加载”就可将我们选择的变量添加到趋势控件中。下面的脚本是往控件中添加曲线的脚本。因为是示例,脚本比较简单。实际项目中,我们还需要为曲线分配颜色、样式、量程以及标签等。这里我们就省略这部分工作了。
Set cmb=screenitems("Chart")tag=cmb.SelTextSet ctrl = ScreenItems("thread")Set objTrendWnd = ctrl.GetTrendWindow("ThreadWnd")Set objTimeAxis = ctrl.GetTimeAxisCollection.Item("T1")Set objValAxis = ctrl.GetValueAxisCollection.Item("V1")Set objTrend = ctrl.GetTrendCollection.AddItem(tag)objTrend.Provider = 1objTrend.TagName = tagobjTrend.TrendWindow = objTrendWnd.NameobjTrend.TimeAxis = objTimeAxis.NameobjTrend.ValueAxis = objValAxis.Name
运行WinCC,选择变量,再点击按钮“加载”我们就可以看到效果了。下图是动态添加两条曲线的效果。



控件里面可以添加很多条曲线,方便分析比对等。点击清除按钮即可将控件中已经加载的曲线移除。移除的脚本比较简单,调用Trend的Remove方法即可。

采用这种方法制作的趋势管理画面通用性很强。不同的项目中,我们只需要对两个下拉列表框中的Item进行调整即可。如果我们愿意进一步花功夫研究的话,该趋势画面模块的通用性还可以更强一点,比如我们可以自动从数据库中获取归档信息,这样我们只需要在对变量归档时,按照工艺单元分组即可。画面模板中我们甚至连脚本都不再需要修改了,工程效率大大提高。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则