0. 引言
表格与趋势图主要是显示变量的变化,这个功能与输入输出相类似,但是可以显示变量变化的值,比如温度的变化趋势,压力的变化趋势等等。实现固定时长检测一次变量的值。比如20分钟采集一次温度的值,最终采集所有的数值进行过程值归档,最后用图表的形式表现出来。采集的周期,采集的方式,归档的周期都可以进行改变。也可以设置采集触发/停止的条件,归档触发/停止的条件(也称开始事件与结束事件)。
1. 表格控件
双击变量记录———定时器(决定采集和归档的周期时间,可以是周期时间也可以是时序时间,比如设置每个月的1号记录和归档)。
以温度为例建立一个变量记录。
step1:在计算机——启动——打开变量记录运行系统
step2:确保此时的wincc和PLC已经链接,可以获取变量的信息,建立风扇和温度两个变量。
step3:打开变量记录——定时器——选择时间
step4:在此界面中选择过程值归档——右键——新增过程值归档。如果记录一个变量就新增一个就好了。设置好变量的类型。
比如温度的归档就这样设置,改名字“温度”———选择这个变量,后面的信息,比如采集周期时间和归档周期时间都可以更改。
step5:我们的目的是为了让这些数据显示出来,因此回到图形编辑器——控件——wincc onlinetablecontrol——建立表格画面——常规——给该表格改名字。
设置表格的时间列信息,如果表格中两个变量,时间不一致的话也可添加新的时间列。
设置数值列的信息,主要是选择表格中显示数值的变量
2. 趋势控件
与表格相似,控件——onlinetrendcontrol——分别设置风扇和温度的数值轴
因风扇与温度公用一个时间轴所以时间轴可以不改变,然后到趋势中添加变量。、
然后与PLC建立连接。
3. 单击实现窗口调用趋势控件并显示单一趋势
一般建立趋势窗口时都会在下方设置一个”wincc rulercontrol“控件实时显示趋势的值。该控件无需设置,只要拖拽过来即可使用。
- 首先建立一个画面文件trend1.pdl,里面放置online trend control趋势控件和wincc rulercontrol控件。只需要改变一下颜色粗细等属性设置即可,不要添加变量。
然后修改这两个控件的名称分别为Control1和Control2,下面的控件Control2需要修改数据来源。然后在属性中取消勾选边框和标题。
2. 在显示画面中创建PIC_WINDOWS5窗口,然后单击要弹出的模拟量设置事件–鼠标–按左键,编辑C脚本:
#include "apdefap.h"
void OnRButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#pragma option(mbcs)
SetPropChar ( lpszPictureName,"PIC_WINDOW5", "PictureName","trend1.PDL");//给弹出窗口设置内容
SetPropChar ( lpszPictureName,"PIC_WINDOW5", "CaptionText","5#电机后轴振动1 VET_17E");//弹出趋势窗口的标题
SetPropBOOL (lpszPictureName,"PIC_WINDOW5","Visible",1);
SetPropChar ( "trend1.PDL","Control1", "TrendTagName","过程值归档\\VET_17E.OUT");//弹出趋势窗口的变量
}
设置完后运行,画面窗口小电视图标提示未连接则是因为该变量没有归档,需要在变量,过程值归档中将变量加入。
4.单击按钮实现画面调用趋势控件并显示不同趋势
就是在上述C脚本中增加一行代码,然后再控件中多添加一个趋势
#pragma option(mbcs)
SetPropChar ( lpszPictureName,"画面窗口3", "PictureName","trend1.PDL");//给弹出窗口设置内容
SetPropChar ( lpszPictureName,"画面窗口3", "CaptionText","1号系统");//弹出趋势窗口的标题
SetPropBOOL (lpszPictureName,"画面窗口3","Visible",1);
SetPropWord("trend1.PDL","Control1","TrendIndex",0); //趋势1
SetPropChar ( "trend1.PDL","Control1", "TrendTagName","过程值归档\\1_Motor_te");//给趋势1分配变量
SetPropWord("trend1.PDL","Control1","TrendIndex",1); //趋势2
SetPropChar ( "trend1.PDL","Control1", "TrendTagName","过程值归档\\1_ventilator_te");//给趋势2分配变量
}