视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
wincc趋势控件优化
2025-10-02 18:41:07 责编:小OO
文档
wincc趋势控件优化

下面是详细的实现方式,主要是针对趋势组的快速选择,常规操作

趋势控件的设置:

趋势控件名称:TrendControl

添加趋势:Trend1-Trend10(可达32条)

时间轴:TimeAxis1

数值轴:ValueAxis1(可以设置多个)

右上角趋势组的选择用的是列表框:Listbox

选定框-更改vbs脚本:

仅列举选择1和2的脚本

其中变量"ni"为中间变量,定义当前组趋势的个数

  

Dim objtc,Listbox

Dim tr1,tr2,tr3,tr4,tr5,tr6,tr7,tr8,tr9,tr10,tr11,tr12

Dim ValueAxis,ValueAxis2

Dim Value1

Set objtc = ScreenItems("TrendControl")

Set Listbox = ScreenItems("Listbox")

Value1=ListBox.SelIndex

'Msgbox Value1

Set tr1 = objtc.GetTrend("Trend1")

Set tr2 = objtc.GetTrend("Trend2")

Set tr3 = objtc.GetTrend("Trend3")

Set tr4 = objtc.GetTrend("Trend4")

Set tr5 = objtc.GetTrend("Trend5")

Set tr6 = objtc.GetTrend("Trend6")

Set tr7 = objtc.GetTrend("Trend7")

Set tr8 = objtc.GetTrend("Trend8")

Set tr9 = objtc.GetTrend("Trend9")

Set tr10 = objtc.GetTrend("Trend10")

Set ValueAxis = objtc.GetValueAxis("ValueAxis1")

Set ValueAxis2 = objtc.GetValueAxis("ValueAxis2")

'数值轴默认都ValueAxis,ValueAxis2默认隐藏

ValueAxis2.Visible = 0

tr1.YAxis = ValueAxis

If Value1=1 Then 

 HMIRuntime.Tags("ni").Write 10

ValueAxis.BeginValue ="0"

ValueAxis.EndValue ="0.6"

tr1.TagName ="ProcessValueArchiveDDR12"

tr2.TagName ="ProcessValueArchiveDDR17"

tr3.TagName ="ProcessValueArchiveDDR14"

tr4.TagName ="ProcessValueArchiveDDR16"

tr5.TagName ="ProcessValueArchiveDDR15"

tr6.TagName ="ProcessValueArchiveP_TEL8_data3"

tr7.TagName ="ProcessValueArchiveP_TEL9_data3"

tr8.TagName ="ProcessValueArchiveP_TEL10_data3"

tr9.TagName ="ProcessValueArchiveP4_AnalogNO11"

tr10.TagName ="ProcessValueArchiveP4_AnalogNO12"

'添加每个趋势的标签注释,页面的Ruler控件,也添加“标签列”,方便查看注释

tr1.Label ="万丽"

tr2.Label ="消防局"

tr3.Label ="青田"

tr4.Label ="蜈支洲"

tr5.Label ="污水厂"

tr6.Label ="*****压力"

tr7.Label ="滨海路压力"

tr8.Label ="土福湾压力"

tr9.Label ="出水压力1"

tr10.Label ="出水压力2"

Elseif Value1=2 Then 

 HMIRuntime.Tags("ni").Write 4

ValueAxis.BeginValue ="0"

ValueAxis.EndValue ="5000"

'该组有2个数值轴,默认都ValueAxis,tr1的数值轴设置为ValueAxis2

ValueAxis2.Visible = 1

ValueAxis2.BeginValue ="0"

ValueAxis2.EndValue ="100"

tr1.YAxis = ValueAxis2

tr1.TagName ="ProcessValueArchiveP1_AnalogNO25"

tr2.TagName ="ProcessValueArchiveP1_AnalogNO1"

tr3.TagName ="ProcessValueArchiveP4_AnalogNO13"

tr4.TagName ="ProcessValueArchiveP4_AnalogNO14"

tr5.TagName =" "

tr6.TagName =" "

tr7.TagName =" "

tr8.TagName =" "

tr9.TagName =" "

tr10.TagName =" "

tr1.Label ="原水流量1"

tr2.Label ="原水流量2"

tr3.Label ="出水流量1"

tr4.Label ="出水流量2"

tr5.Label =" "

tr6.Label =" "

tr7.Label =" "

tr8.Label =" "

tr9.Label =" "

tr10.Label =" "

End IF

列表框鼠标释放添加c脚本,用于定义当前组趋势的个数

其中变量"ni"为中间变量,无符号的 32 位,定义当前组趋势的个数

“ctrlcheckbox”为页面的趋势选择复选框的名称

double pows;

int i;

i = GetTagWord("ni");

pows=pow(2,i)-1;

SetPropDouble(lpszPictureName,"ctrlcheckbox

趋势选择复选框-选择框更改c脚本:

其中变量"pows"为中间变量,无符号的 32 位

其中变量"result"为中间变量,无符号的 32 位

复选框的作用:根据复选框的勾选状态,对应趋势控件的趋势是显示还是隐藏

对应关系是二进制的匹配

double process,pows;

DWORD process1,pows1,result;

int i;

for (i=0;i<=9;i++)   

{

pows=pow(2,i);

process=GetPropDouble(lpszPictureName,"ctrlcheckbox

process1=(DWORD)process;

pows1=(DWORD)pows;

SetTagDWord("pows",pows1);

result=process1&GetTagDWord("pows");

SetTagDWord("result",result); 

SetPropDouble(lpszPictureName,"TrendControl

if (GetTagDWord("result")!=0)

SetPropBOOL(lpszPictureName,"TrendControl

else

SetPropBOOL(lpszPictureName,"TrendControl

}

趋势选择旁边的“全选”和“清空”其实就是一个快速选择,c脚本分别为:

SetPropDouble(lpszPictureName,"ctrlcheckbox

SetPropDouble(lpszPictureName,"ctrlcheckbox

下面说说时间快速的选择:vbs

Dim objtc

Dim TimeAxis

Set objtc = ScreenItems("TrendControl")

Set TimeAxis = objtc.GetTimeAxis("TimeAxis1")

'过去1天就是Now - 1

'过去12小时就是Now - 0.5

'过去8小时就是Now - 0.333

TimeAxis.BeginTime =Now - 1

TimeAxis.EndTime =Now

'改变时间以后,要激活控件自动刷新

Dim pause

Set pause=objtc.GetToolbarButton("StartStopUpdate")

If pause.locked Then

objtc.StartStopUpdate   

End If

总结:

主要3个部分,都是wincc自带的功能

趋势控件:TrendControl

列表框:Listbox

复选框:ctrlCheckbox

3个中间变量:无符号的 32 位

ni

pows

result下载本文

显示全文
专题