趋势曲线应用例程
说明文档
此文档由北京亚控公司提供,仅作为KingSCADA3.0趋势曲线应用的使用参考,其中涉及
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
的详细说明请参考KingSCADA3.0的使用说明或咨询技术支持工程师。
目 录
11. 概述
12. 例程
12.1 定义变量
32.2 创建趋势曲线
42.3 趋势曲线设置
132.4 趋势曲线的功能实现
263. 注意事项
1. 概述
趋势曲线实现了以曲线的形式显示模拟量的数值变化趋势的功能,KingSCADA3.0的趋势曲线不仅具有多绘图区、多数据轴、多时间轴,并且能够进行实时趋势曲线和历史趋势曲线在线转换,可以方便用户进行个性化趋势曲线的查询、对比以及
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
。再加上丰富的控制函数和控制脚本,使趋势曲线的查询显得更加灵活、方便。下面将通过一个例程来介绍趋势曲线的简单应用。
2. 例程
趋势曲线是用来反应变量随时间的变化情况,趋势曲线有两种:实时趋势曲线和历史趋势曲线。KingSCADA3.0提供的趋势曲线控件既可以显示实时趋势曲线又可以显示某一时间段的历史趋势曲线,并且提供了丰富的控件方法和控件事件,使趋势曲线的查询显得更加灵活、方便。
2.1 定义变量
本工程中我们要在趋势曲线内绘制4个变量的曲线,因此先在数据词典里定义这四个变量。
· 变量名:temp
· 变量类型:基本变量
· 数据类型:Mem Float
· 变量描述:温度
· 初始值:0
· 灵敏度:0
· 最小值:-40
· 最大值:100
· 保存数值:选中
· 变量名:liquid_level
· 变量类型:基本变量
· 数据类型:Mem Float
· 变量描述:液位
· 初始值:0
· 灵敏度:0
· 最小值:-20
· 最大值:100
· 保存数值:选中
· 变量名:pressure
· 变量类型:基本变量
· 数据类型:Mem Float
· 变量描述:压力
· 初始值:0
· 灵敏度:0
· 最小值:0
· 最大值:5
· 保存数值:选中
· 变量名:flow
· 变量类型:基本变量
· 数据类型:Mem Float
· 变量描述:流量
· 初始值:0
· 灵敏度:0
· 最小值:0
· 最大值:150
· 保存数值:选中
我们在“脚本”-“自定义脚本”-“数据变换脚本”里新建一个脚本,用来模拟上述变量的数值变化。
以系统变量\\local\$Second为条件。
\\local\temp=\\local\temp+0.25;
if (\\local\temp>=100)
\\local\temp=-40;
\\local\pressure=\\local\pressure+0.1;
if (\\local\pressure>=5)
\\local\pressure=0;
\\local\liquid_level=\\local\liquid_level+0.5;
if (\\local\liquid_level>=100)
\\local\liquid_level=-20;
\\local\flow=\\local\flow+0.78;
if (\\local\flow>=150)
\\local\flow=0;
2.2 创建趋势曲线
在KingSCADA3.0图形开发系统中打开任一画面,单击“对象”菜单 →“扩展”→“趋势曲线”命令或直接单击工具箱中的图标→ 鼠标移到画面中,光标呈‘+’状,按住鼠标左键并拖动即可生成趋势曲线窗口,如图1所示。
图1 趋势曲线
2.3 趋势曲线设置
2.3.1 趋势曲线属性
趋势曲线具有多绘图区、多数据轴、多时间轴的功能,下面我们用两个绘图区分别显示两条曲线。
在画面中选择趋势曲线,右侧会弹出控件属性对话框,如图2所示:
图1 趋势曲线属性
趋势曲线的名称默认为“TrendChart1”,把“ChartAreaCount”“和TimeAxisCount”属性的值设置为2(如图3所示),即把趋势曲线划分为2个绘图区,时间轴增加到2个。
图3 趋势曲线属性
2.3.2 趋势曲线标
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
区
选中趋势曲线窗口 → 单击鼠标右键 → 在弹出的右键菜单中执行“编辑”命令 → 单击标题区,弹出标题区属性对话框,如图4、5所示:
图4 趋势曲线右键菜单
图5 标题区及属性
通过“Text”属性我们可以设置标题区对象的名称,如把默认的 “趋势曲线”改为“Multi-Area Trend”。
2.3.3 绘图区属性
选中趋势曲线控件 → 单击鼠标右键 → 在弹出的右键菜单中执行“编辑”命令 → 单击上面第一绘图区“ChartArea1”,如图6所示:
图6 绘图区及属性
在绘图区属性对话框中,我们可以在添加一个Y轴,即把“YaxisCount”设置为2,如图7所示:
图7 绘图区属性
2.3.4 曲线属性
选中趋势曲线窗口 → 单击鼠标右键 → 在弹出的右键菜单中执行“编辑”命令 → 在上面第一个绘图区内单击曲线,修改曲线属性,如图8所示:
图8 Curve1曲线属性
XAxis:选择TimeAxis1。
YAxis:选择DataAxis1。
DataSource:选择变量temp。
在下面第二个绘图区内单击曲线,修改曲线属性,如图9所示:
图9 Curve2曲线属性
XAxis:选择TimeAxis2。
YAxis:选择DataAxis2。
DataSource:选择变量pressure。
2.3.5 网格区属性
选中趋势曲线控件 → 单击鼠标右键 → 在弹出的右键菜单中执行“编辑”命令 → 在绘图区内单击网格区,如图10所示:
图10 网格区
修改连个绘图区的网格区属性,如图11所示:
图11 网格区属性
Background:设置绘图区的背景颜色。
MajorGridColumns:设置主网格线显示的列数为0,ShowMajorGrid属性为True时有效
MajorGridRows:设置主网格线显示的行数为0,ShowMajorGrid主网格属性为True时有效
2.3.6 数据轴属性
选中趋势曲线窗口 → 单击鼠标右键 → 在弹出的右键菜单中执行“编辑”命令 → 单击数据轴(如图12所示),数据轴选中后可以通过鼠标拖放,例如上面第一绘图区“ChartArea1”我们设置了两个Y轴,分别是“DataAxis1”和“DataAxis4”,在2.2.4的部分,我们把变量“temp”关联到“DataAxis1”,那么Y轴“DataAxis1”的属性设置如图13所示。
图12 数据轴
图13 数据轴属性
ShowType:设置数据轴显示数据的方式为实际值显示。
LableText Color:设置标记文本显示的颜色为红色,“ShowLabel”属性为True时有效。
MinValue:设置数据轴的显示最小值为-40,变量“tepm”的最小值。
MaxValue:设置数据轴的显示最大值为100,变量“tepm”的最大值
其他Y轴设置与此类似。
2.3.7 时间轴
2.3.8 时间轴属性
选中趋势曲线窗口 → 单击鼠标右键 → 在弹出的右键菜单中执行“编辑”命令 → 单击时间轴,如图所示:
图14 时间轴
时间轴TimeAxis1属性对话框,如图15所示:
图15 时间轴属性
2.3.9 游标属性
选中趋势曲线窗口 → 单击鼠标右键 → 在弹出的右键菜单中执行“编辑”命令 → 选中游标对象,即可通过拖曳游标查看趋势曲线某一具体时刻的数值及其它信息。
游标属性对话框,如图16所示:
图16 游标属性
ShowVarName:运行环境中拖曳游标时,在游标和曲线焦点的信息中是否显示曲线对象的名称,设置为True。
ShowValue:运行环境中拖曳游标时,在游标和曲线焦点的信息中是否显示曲线的数值,设置为True。
ShowTime:运行环境中拖曳游标时,在游标和曲线焦点的信息中是否显示曲线的时间,设置为True。
ShowCursorName:运行环境中拖曳游标时,在游标和曲线焦点的信息中是否显示游标对象的名称,设置为True。
MultiLine:运行环境中拖曳游标时,在游标和曲线焦点的信息是否以多行的形式显示,,设置为True。
LabelPosition:设置游标和曲线焦点信息显示的位置:跟随曲线。
LabelShowType:设置游标和曲线焦点信息显示的方式:总显示。
LineColor:设置游标杆的颜色,四个游标分别设置为不同的颜色。
至此,趋势曲线的基本设置就完成了。
2.4 趋势曲线的功能实现
以上是开发环境下的趋势曲线设置,在运行环境下要想查询、打印曲线必须通过KingSCADA3.0提供的控件方法来实现,下面具体介绍方法的使用。
2.4.1 曲线实时模式、历史模式的切换
打开精灵图,选择“Button”-“Buttons-Diamond”-“RedRound”按钮(如图17所示),确定后添加到画面上,用复制的方法再添加一个这样的按钮。
图17 选择精灵图按钮
选择 “工具箱”-“基本”-“文本”,添加两个文本,文本的属性如下:
图18 文本属性
Name:分别设置为“Text9”和“Text10”。
Text:分别设置为“RealTimeMode”和“HistoryMode”。
TextBrush:设置为白色。
为了使画面更美观,我们在数据词典里新建一个内存离散变量“RealorHist”,双击文本,定义文本的动画连接,如下图19、20所示。
当变量“RealorHist”的值为true时,文本“Text9”进行闪烁。
当变量“RealorHist”的值为false时,文本“Text10”进行闪烁。
图19 文本动画连接
图20 文本动画连接
将文本“Text9”和按钮“PictureWrap7”组合成一个组“Group35”,文本“Text10”和按钮“PictureWrap8” 组合成一个组“Group36”,选择“Group35”添加连接“鼠标”-“左键按下”,脚本如下:
TrendChart1.HistToReal(1000);
RealorHist=true;
选择“Group36”添加连接“鼠标”-“左键按下”,脚本如下:
TrendChart1.RealToHist();
RealorHist=false;
即,当按下“Group35”按钮后,趋势曲线是实时趋势曲线,当按下“Group36”按钮后,趋势曲线是历史趋势曲线,同时按钮上的文本进行闪烁。
2.4.2 曲线添加、修改、删除
首先,我们用一个组合框控件显示趋势曲线里的曲线名称。
在画面上添加“组合框”UI控件,单击“Items” 属性后面的
,在弹出的“组合项集合”对话框中添加趋势曲线的曲线名称“Curve1” 和“Curve2”,如图21所示。
图21 组合框添加曲线名称
添加组合框的下拉列表选项改变时触发事件:
OnSelectedIndexChange(int oldItemIndex, int newItemIndex);
选中画面上“组合框”控件 → 单击“连接”窗口中的 图标 →在弹出的菜单中执行“ComboBox”→“OnSelectedIndexChange”命令,弹出对话框,写如下本。
\\local\TrendCurve=UIComboBox1.GetCurrentText();
上面的脚本的作用是把组合框控件选中的曲线名称读出来赋值给变量\\local\TrendCurve,\\local\TrendCurve是内存字符串变量。
(1) 添加、删除曲线
我们通过树形控件来完成添加曲线的功能。
执行“对象”菜单 →“UI 控件”→“树视图控件”命令或单击Windows UI工具箱中的图标,可在当前画面中添加“树视图”控件,选择其属性对话框,如下图所示:
图21 树视图属性对话框
单击“Nodes”树形后面的
,在弹出的对话框中添加我们要显示的另外两个变量“liquid_level”和“flow”,如下图22所示。
图22 树视图节点编辑对话框
选中画面上“树视图”控件 → 单击“连接”窗口中的 图标 →在弹出的菜单中 “TreeView”→“OnCheckChange”事件,弹出对话框,写如下本。
if(curChecked==true)
{
ss1=nodeName;
ss1=TrendChart1.AddCurve("ChartArea1","TimeAxis1","DataAxis4",nodeName);
ss=/*int*/ StrLen(ss1);
if(ss==6)
{
ss1=/*string*/ StrRight(ss1, 1);
ss2=/*int*/ StrToInt(ss1);
UITreeView1.SetTreeNodeData(nodeName,ss2);
}
if(ss==7)
{
ss1=/*string*/ StrRight(ss1, 2);
ss2=/*int*/ StrToInt(ss1);
UITreeView1.SetTreeNodeData(nodeName,ss2);
}
}
if(curChecked==false)
{
ss2=UITreeView1.GetTreeNodeData(nodeName);
ss1=StrFromInt(ss2,10);
ss1="Curve"+ss1;
TrendChart1.DeleteCurve(ss1);
}
当控件属性CheckBox设置为True时,并对树节点进行选定操作时可以触发该事件;
nodeName与curChecked是树视图OnCheckChange方法的两个参数。
curChecked:将其复选框被Check后置为True,取消选择则为False。
ss、ss2:内存整形变量。
ss1:内存字符串变量。
当选中树视图节点“flow”时,在曲线的上面的绘图区“ChartArea1”将添加一个新的曲线变量“flow”,取消选择树视图节点“flow”,则该曲线被删除。
(2) 变换曲线
选中画面上“树视图”控件 → 单击“连接”窗口中的 图标 →在弹出的菜单中 “TreeView”→“OnSelectChange”事件,弹出对话框,写如下本。
\\local\TrendCurveName=UITreeView1.GetCurrentNodeName();
TrendChart1.ChangeCurveDataSource(TrendCurve,TrendCurveName);
TrendCurveName:内存字符串变量。
动态更改曲线关联的变量。例如我们先选择“组合框”里面的“Curve1”,默认情况下,“Curve1”绘制的是变量“temp”的趋势曲线,如果这时我们再选择树视图里面的“flow”项,那么“Curve1”绘制的就是变量“flow”的趋势曲线,
2.4.3 建立趋势曲线运行时的操作按钮
因为画面运行时不自动更新趋势曲线画面,所以需要为趋势曲线建立操作按钮,通过命令语言或使用函数改变趋势曲线变量的域,完成查看、打印等功能。
为了使画面美观,我们添加两个圆角矩形,更改相应的属性,使圆角矩形漂亮一些,再打开精灵图(如图23所示),选择“Button”,添加按钮“Buttonleft001”、“Buttonleft002”、“Buttonleft003”、“Buttonleft00”4、“Buttonleft005”,同时再添加“Button”-“Buttons-Diamond”下的按钮“BlueRound” 、“Reduce”、“Magnify”、“Preview”。
接下来再选择“工具箱”-“基本”-“文本”,添加一个文本和矩形,完成后如下图24所示,把图24的内容再复制,去掉后面两个按钮,如图25所示。
图23 精灵图
图24 操作按钮
图25 操作按钮
下面我们对这些按钮进行动画连接。
选择图25所示的第一个按钮,在“连接”-“鼠标”-“左键按下”里面写如下脚本:
TrendChart1.ScrollLeft("TimeAxis1",\\local\TrendZoomScale1*120);
\\local\TrendZoomScale1是内存整形变量。
同样在第二个按钮里写脚本:
TrendChart1.ScrollLeft("TimeAxis1",\\local\TrendZoomScale1*60);
第三个按钮的文本模拟值输出关联变量:\\local\TrendZoomScale1。
第四个按钮写脚本:
TrendChart1.ScrollRight("TimeAxis1",\\local\TrendZoomScale1*60);
第五个按钮写脚本:
TrendChart1.ScrollRight("TimeAxis1",\\local\TrendZoomScale1*120);
第六个按钮写脚本:
TrendChart1.SetEndTimeAsCurrent("TimeAxis1",true);
第七个按钮写脚本:
TrendChart1.ZoomInTimeAxis("TimeAxis1","Center",\\local\TrendZoomScale1*60);
第八个按钮写脚本:
TrendChart1.ZoomOutTimeAxis("TimeAxis1","Center",\\local\TrendZoomScale1*60);
以上按钮是实现趋势曲线绘图区ChartArea1的曲线查看功能的,控件方法的具体功能请参考用户手册。
图24的操作按钮的动画连接与图25相似,是实现趋势曲线绘图区ChartArea1的曲线查看功能的,增加了曲线的打印及打印预览的功能。
第九个按钮写脚本:
TrendChart1.PrintPreview();
第十个按钮写脚本:
TrendChart1.PrintChart();
最后,我们将图24、图25分别合成一个组,再做隐含和显示的功能,在“连接”-“基本”-“可见行”里面分别关联变量\\local\TrendTimeAxis1Visiable和\\local\TrendTimeAxis2Visiable,这个功能需要添加两个按钮来实现变量值的切换。
添加一个圆角矩形,更改相应的属性,使圆角矩形漂亮一些,再添加一个文本,文本的“Text”属性设置为“TimeAxis1”,将他们组成一个组,在“连接”-“值输入”-“按钮输入”里面关联变量“\\local\TrendTimeAxis1Visiable”,如下图26所示。
图26 按钮输入动画连接对话框
再复制这个按钮,在“按钮输入”里面关联变量\\local\TrendTimeAxis2Visiable即可。
2.4.4 获取曲线的数值
我们可以利用趋势曲线提供的方法获取曲线的最大值、最小值、平均值、显示部分最左端值、显示部分最右端值、游标处曲线值等。
我们在画面命令语言-存在时写如下脚本:
\\local\PenAverageValue1=TrendChart1.GetCurveValue("Curve1","AverageValue");
\\local\PenMaxValue1=TrendChart1.GetCurveValue("Curve1","MaxValue");
\\local\PenMinValue1=TrendChart1.GetCurveValue("Curve1","MinValue");
\\local\PenLeftValue1=TrendChart1.GetCurveLeftValue("Curve1");
\\local\PenRightValue1=TrendChart1.GetCurveRightValue("Curve1");
\\local\PenValue1AtCursor1=TrendChart1.GetCurveValueAtCursor("Curve1","Cursor1");
\\local\PenValue1AtCursor2=TrendChart1.GetCurveValueAtCursor("Curve1","Cursor2");
\\local\PenValue1AtCursor3=TrendChart1.GetCurveValueAtCursor("Curve1","Cursor3");
\\local\PenValue1AtCursor4=TrendChart1.GetCurveValueAtCursor("Curve1","Cursor4");
\\local\PenAverageValue2=TrendChart1.GetCurveValue("Curve2","AverageValue");
\\local\PenMaxValue2=TrendChart1.GetCurveValue("Curve2","MaxValue");
\\local\PenMinValue2=TrendChart1.GetCurveValue("Curve2","MinValue");
\\local\PenLeftValue2=TrendChart1.GetCurveLeftValue("Curve2");
\\local\PenRightValue2=TrendChart1.GetCurveRightValue("Curve2");
\\local\PenValue2AtCursor1=TrendChart1.GetCurveValueAtCursor("Curve2","Cursor1");
\\local\PenValue2AtCursor2=TrendChart1.GetCurveValueAtCursor("Curve2","Cursor2");
\\local\PenValue2AtCursor3=TrendChart1.GetCurveValueAtCursor("Curve2","Cursor3");
\\local\PenValue2AtCursor4=TrendChart1.GetCurveValueAtCursor("Curve2","Cursor4");
同时在画面上添加文本把各个数值显示出来,如图27所示。
图27 曲线数值显示
2.4.5 添加关系数据库的数据曲线
这里我们把“数据.mdb”里面保存的数据
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
绘制成曲线。
首先建立ODBC数据源,关联access数据库“数据.mdb”。
然后再新建两个按钮“设置查询时间”和“添加曲线”。
按钮“设置查询时间”添加连接“鼠标”-“左键按下”,脚本如下:
TrendChart1.SetTimeAxis("TimeAxis1");
按钮“添加曲线”添加连接“鼠标”-“左键按下”,脚本如下:
KDBGetDataset("MyDataset","DSN=test","select ice,riqishijian,good from water"); //执行函数得到一个名为“MyDataset”的数据集。
TrendChart1.AddCurve2("ChartArea1", "TimeAxis1", "DataAxis1", "MyDataset");
进入运行系统,先点“设置查询时间”按钮,设置查询时间,如图28所示:
图28 设置查询时间
设置完时间后,点击“添加曲线”按钮,在趋势曲线里就绘制出数据集的趋势了,如图29所示。
图29 数据集趋势曲线
这样我们的基本功能就完成了,进入运行系统,如图30所示。
图30 运行画面
3. 注意事项
1)附件里面的Button.kgn和Buttons-Diamond文件是本例程的精灵图文件,需要将此文件拷贝到KingSCADA安装目录下的“Glib”文件夹下,例如C:\Program Files\KingSCADA\bin\Glib,然后在图形开发系统下,打开精灵图,如果找不到,点击“新建”,在弹出的对话框中添加本例程制作的精灵图,例如“Button”。
2)本演示工程只是简单的趋势曲线的应用例程,更深一步的学习使用请参考KingSCADA3.0的使用手册以及函数手册,或者参加北京亚控的
培训
焊锡培训资料ppt免费下载焊接培训教程 ppt 下载特设培训下载班长管理培训下载培训时间表下载
班。如有问题请致电亚控公司技术部。
PAGE