组态王历史趋势曲线控件讲解
组态王历史趋势曲线控件使用
配置参考文档
北京亚控科技发展有限公司
技术部
目录
一、功能概述 (3)
一、功能概述 (3)
二、工程实例 (3)
三、操作步骤: (3)
1、历史趋势曲线控件的特点: (3)
2、创建新的工程: (4)
2.1) 定义设备: (4)
2.2) 定义变量: (4)
2.3) 创建趋势曲线: (5)
2.4) 添加曲线变量: (5)
3、切换到运行系统: (7)
4、控件的属性、方法: (8)
2.1) 控件的属性与方法: (8)
2.2) 属性方法的使用举例:........................................
14
四、注意事项.....................................................................
19
图表
图一定义变量压力 (4)
图二定义变量流量 (5)
图三记录和安全区属性 (6)
图四历史趋势曲线 (6)
图五历史趋势曲线 (7)
图六运行系统 (8)
图七画面属性 (15)
图八画面命令语言编辑框 (16)
图九控件属性 (16)
图十画面命令语言 (17)
图十一运行画面 (17)
图十一控件方法的使用 (18)
图十二运行画面 (19)
一、功能概述
常规需求:很多工业现场都会要求显示采集量的趋势曲线,包括实时曲线、历史曲线。
组态王中的趋势曲线的实现方法:
1、利用组态王的“工具箱”中的“实时曲线” 、“历史曲线”实现。
2、利用组态王的“插入通用控件”中的“历史趋势曲线”实现。
第一种实现方法的优点在于可以进行WEB 的发布,实现通过IE 浏览器进行浏览。缺点为支持的曲线笔比较少,许多功能的实现需要通过组态王的函数来实现,使用相对要麻烦。
第二种实现方法的优点在于支持同时绘制16 条曲线,功能比较完善,可以在系统运行时动态增加、删除、隐藏曲线,还可以修改曲线属性,实现无级缩放,曲线打印等等。许多功能都不需要通过编写脚本的方法实现,使用比较方便。缺点在于无法进行WEB 的发布。
二、工程实例
以一个简单的例程来说明“历史趋势曲线控件”的使用。
三、操作步骤:
1、历史趋势曲线控件的特点:
KVHTrend曲线控件是组态王以Active X 控件形式提供的绘制历史曲线和ODBC数据库曲线的功能性工具。该曲线具有以下特点:
1.即可以连接组态王的历史库,也可以通过ODBC数据源连接到其它数据库上,如Access 、SQLServer 等。
2.连接组态王历史库时,可以定义查询数据的时间间隔,如同在组态王中使用报表查询历史数据时使用查询间隔一样。
3.完全兼容了组态王原有历史曲线的功能。最多可同时绘制16 条曲线。
4.可以在系统运行时动态增加、删除、隐藏曲线。还可以修改曲线属性。
5.曲线图表实现无级缩放。
6.可实现某条曲线在某个时间段上的曲线比较。
7.数值轴可以使用工程百分比标识,也可用曲线实际范围标识,二者之间自由切换。
8.可直接打印图表曲线。
9.可以自由选择曲线列表框中的显示内容。
10.可以选择移动游标时是否显示曲线数值。
11.可以在曲线中显示报警区域的背景色
2、创建新的工程:
2.1)定义设备:
新建一个工程,在设备处新建设备,我们在本例中定义一个仿真PLC 的设备,设备列表为“ PLC-亚控-仿真PLC-串口” ,设备名称为“ PLC1”。此仿真PLC 可以做为虚拟设备与组态王进行通讯。仿真PLC 主要有如下的寄存器:自动加1 寄存器INCREA ,自动减1 寄存器DECREA ,随机寄存器RADOM ,常量寄存器STATIC ,常量字符串寄存器STRING ,CommErr 寄存器。具体的寄存器的使用请参考组态王IO 驱动帮助。
2.2)定义变量:
在数据词典中新建两个IO 变量,变量名称分别为压力、流量,变量类型为IO 实数,连接的设备为前面定义的仿真PLC 设备“ PLC1 ”,寄存器分别为INCREA100 ,DECREA100 ,数据类型为short,读写属性为“只读” 。这样压力变量就会从0 开始自动加1,其变化范围是0到100,流量变量从100开始自动减1,其变化范围是0到100。变量基本属性定义画面如下图一、图二所示:
图一定义变量压力
图二定义变量流量
在记录和安全区属性选项卡中我们定义压力和流量变量的数据记录属性,如图三所示,选
择“数据变化”记录,变化灵敏度设置为0。
2.3)创建趋势曲线:
在组态王开发系统中新建“趋势曲线”画面,在工具箱中单击“插入通用控件”或选择菜单“编辑”下的“插入通用控件”命令,弹出“插入控件”对话框,在列表中选择“历史趋势曲线”,单击“确定”按钮,对话框自动消失,鼠标箭头变为小“十”字型,在画面上选择控件的左上角,按下鼠标左键并拖动,画面上显示出一个虚线的矩形框,该矩形框为创建后的曲线的外框。当达到所需大小时,松开鼠标左键,则历史曲线控件创建成功,画面上显示出该曲线,如图四所示。双击趋势曲线,弹出“动画连接属性” ,控件名命名为“ HT”。点击确定完成对历史趋势曲线的命名。
2.4)添加曲线变量:
选中曲线控件点击右键,弹出菜单,选择“控件属性” ,弹出历史趋势曲线控件的属性对
话框,在“曲线”选项卡,点击“增加”按钮,选择变量“压力” ,选择“线类型” 、“线颜
色”,
点击“确定” 完成压力曲线的添加。再点击“增加” 按钮,选择变量“流量” ,选择“线类
型” 、
图三记录和安全区属性
图四历史趋势曲线
“线颜色”,点击“确定”完成流量曲线的添加。在趋势曲线控件属性的“坐标系”选项卡中对坐标系进行设置,我们设置Y 轴的起始值为0,最大值为100,不按照百分比绘制,而是按照实际
值显示。设置时间轴的显示格式为显示年、月、日、时、分、秒。
添加完成后开发画面如图五所示:
图五历史趋势曲线
3、切换到运行系统:
保存画面后,在工程浏览器的“系统配置”-“设置运行系统”中进行“主画面配置” ,将“历史曲线”画面设置为主画面。
然后切换到运行系统。运行如下图六所示:趋势曲线控件自带的工具栏中提供了很多方便实用的控制按钮功能供用户来使用,主要包括:调整跨度设置按钮,设置Y 轴标记,曲线图表无级缩放,打印曲线,定义新曲线,更新曲线图表终止时间为当前时间,设置图表数值轴和时间轴参数,隐藏/显示变量列表。
这些工具栏基本可以满足客户的使用了,如果还需要进一步的功能可以通过控件的属性、方法来实现。下面我们简单的举例说明控件的属性、方法的使用。
图六运行系统4、控件的属性、方法:
2.1) 控件的属性与方法:
属性及含义列表:
控件方法说明:
1. Void ChangeCurveVarName(long 1Index,BSTR 1pszNewValue); 功能:改变历史曲线所
连接的变量,该变量数据来自组态王历史库。参数:1Index :曲线索引号
1pszNewValue :变量名
2. Void ChangeCurveVarNameForODBC(LONG lIndex,STRING szNewName,STRING
szDSN,STRING szUser,STRING szPwd,STRING szTable,STRING
szDateTimeField,STRING szMilliSecondField,STRING szDataField,STRING
szInvalidValue) ;
功能:改变历史曲线所连接的变量,该变量数据来自ODBC数据源。
参数:lIndex :曲线索引号
szNewName :所连接变量
szDSN :使用的数据源名
szUser :用户名
szPwd :密码
szTable :数据库的表名
szDateTimeField :表中对应的时间字段
szMilliSecondField :表中对应的毫秒字段
szDataField :表中对应的数据字段
szInvalidValue :表中对应的无效值
3.String HTGetTimeStringAtScooter(short nScootNum,String szFormat); 功能:取
得指定指示器处的时间,该时间为字符串格式参数:nScootNum:指示器索引,1—左、2 —右
szFormat :指定所需要的时间字符串格式,可为下列之一:
“Date ”:以Windows控制面板相同格式显示日期
“ Time”:以Windows 控制面板相同格式显示时间“ DateTime ”:以Windows控制面板相同格式显示日期时间返回值:字符串型日期时间值
4.Float HTGetPenRealValue(short nPenNum,String szContent); 功能:取得指定曲线
Y 轴(数值轴)起点或终点的实际值参数:nPenNum:曲线索引,1~16
szContent :指定所需要类型,可为下列之一:“Start ”:将Y 轴下限值的工程百分比转换为实际值“End”:将Y 轴上限值的工程百分比转换为实际值“ Valid ”:判断取得的值是否有效,0—无效,1—有效返回值:工程百分比对应的实际值
5.Float HTGetValue(short nPenNum,String szValType); 功能:取得指定曲线整个图表
上(当前可见部分)的最大/ 最小/ 平均值
参数:nPenNum:曲线索引,1~16
szValType :指定所需要的计算类型,可为下列之一:
“ AverageValue ”:整个趋势的平均值
“ MaxValue ”:整个趋势的最大值
“ MinValue ”:整个趋势的最小值
“ Valid ”:判断取得的值是否有效,0—无效,1—有效返回值:曲线整
个图表上(当前可见部分)的最大/最小/ 平均值
6.Float HTGetValueAtScooter(short nPenNum,short nScootNum,String
szValType); 功能:取得指定曲线在指示器位置处所要求的值参数:nPenNum:曲线索引,1~16
nScootNum :指示器索引,1—左、2 —右
szValType :指定所需要类型,可为下列之一:
“Value ”:取得指示器处的值
“ Valid ”:判断取得的值是否有效,0—无效,1—有效返回值:指定曲线在指定指示器处的值
7.Float HTGetValueAtZone(short nPenNum,String szValType); 功能:取得指定曲线
在左右指示器之间的的最大/ 最小/ 平均值
参数:nPenNum:曲线索引,1~16
szValType :指定所需要的计算类型,可为下列之一:
“ AverageValue ”:平均值
“ MaxValue ”:最大值
“ MinValue ”:最小值
“ Valid ”:判断取得的值是否有效,0—无效,1—有效返回值:指定曲线在左右指示器之间的的最大/ 最小/ 平均值
8.Void HTScrollLeft();
功能:将曲线的起始时间左移一个调整跨度参数:无
返回值:无
9.Void HTScrollRight();
功能:将曲线的起始时间右移一个调整跨度
参数:无
返回值:无
10.Void HTUpdateToCurrentTime(); 功能:将曲线的终止时间设为当前时间参数:无返回
值:无
11.Void HTSetLeftScooterTime(Long lTime ,short sMilliSecond);
功能:设置曲线时间坐标起点参数:lTime :时间的年月日时分秒部分,将该时间用
HTConvertTime ()函数转换为自1970 年1 月1 日0 时到指定时间的秒数sMilliSecond :时间的毫秒部分
返回值:无
12.Void HTZoomIn(string szLookString); 功能:通过增大时间轴和数值轴长度,使曲
线图表缩小参数:szLookString :缩放类型,可为下列之一:“ StartTime ”:保持起始时间与缩放前相等“EndTime”:保持终止时间与缩放前相等
“ Center ”:保持中心时间与缩放前相等
返回值:无
13.Void HTZoomOut(string szLookString); 功能:通过缩短时间轴和数值轴长度,使
曲线图表放大参数:szLookString :缩放类型,可为下列之一:“ StartTime ”:保持起始时间与缩放前相等“EndTime”:保持终止时间与缩放前相等“ Center ”:保持中心时间与缩放前相等返回值:无
14.Void SetTimeParam(long lStartTime, short sStartms, long lXWidth,
short sXWidthUnit) 功能:设置历史曲线时间坐标起点、时间轴长度参数:
lStartTime 时间年月日时分秒部分
sStartms 时间的毫秒部分lXWidth 时间轴长度sXWithUnit 时间轴长度单位:0-秒1- 分2- 时3- 日4- 毫秒返回值:无
注:组态王6.5 第二版,sXWithUnit 必须为0,即秒,lXWidth 为转换为秒后的时间长度。
15.void SetTimeParamDivided(long sStartYear, long sStartMonth, long sStartDay, long sStartHour, long sStartMinute, long sStartSecond, long sStartms, long lXWidth, long sXWidthUnit) 功能:设置历史曲线时间坐标起点、时间轴长度, 可以直接输入时间参数, 与SetTimeParam 实现的功能相同.
参数:sStartYear 时间的年
sStartMonth 时间的月
sStartDay 时间的日
sStartHour 时间的时
sStartMinut e 时间的分
sStartSecon
d
时间的秒
sStartms 时间的毫秒
lXWidth 时间轴长度
sXWidthUnit 时间轴长度单位:0- 秒
返回值:无
16.void SetTimeParamString(STRING strStartTime, STRING strEndTime) 功能:设置历史曲线时间坐标起点、终点, 可以直接输入以字符串形式表示的时间参数参数:strStartTime 开始时间字符串strEndTime 结束时间字符串例:m 为历史曲线控件名称,定义按钮弹起时:
m. SetTimeParamString("2004 年9 月20 日13 时0 分0 秒1 毫秒
","2004 年9 月20日15 时20分2 秒999 毫秒") 设置时间轴范围
为:2004-9-20 13:00:00:001 ~2004-9-20 15:20:02:999; 17.ShowCurve(LONG lIndex,BOOL bShow) 功能:显示或隐藏指定的曲线参数:
lIndex 曲线索引,1~16 bShow 取1 显示曲线, 取0 隐藏曲线
18.void PrintCurve() 功能:打印,与控件打印按钮实现相同功能参数:无返回值:无
2.2) 属性方法的使用举例:
属性举例:我们举一个简单的例程来说明控件属性的使用:CtrlBtn ,是否显示控制按钮。
Bool 类型,1:显示控制按钮,0:隐藏控制按钮。CurveList :是否显示曲线列表。Bool 类型,
1:显示曲线列表,0:隐藏曲线列表。假设我们不想让客户利用趋势曲线控件自带的工具栏来
实现相应的操作,并且也不显示曲线列表。则可以隐含此工具栏并隐藏曲线列表,利用
CtrlBtn 属性、CurveList 属性来实现。
在“历史曲线”画面空白处点击右键,弹出菜单,选择“画面属性” ,弹出七所示:
图七画面属性
点击“命令语言”按钮,进入画面属性命令语言编辑画面,我们在画面“显示时”编写脚本程序,点击“控件” 按钮,如下图八所示,弹出控件选择对话框,在控件选择对话框的“控件名称”处选择我们前面定义的历史曲线控件名称“HT ”,然后在“查看类型”中选择“控件属性”,则此控件的所有的属性都会列出,我们可以选择需要的控件属性。如图九所示,选择
“ CtrlBtn ”属性。点击“确定” ,则画面命令语言编辑框中出现我们所选择的控件的属性。我们对此属性进行赋值如下:
HT.CtrlBtn=0;
同样的方法选择CurveList 属性,对此属性进行赋值如下:
HT.CurveList= 0;
编辑完成的画面命令语言如图十所示:编辑完成后点击“确定”完成画面属性命令语言的编辑。然后保存“历史曲线”画面进入运行系统,如图十一所示,可以发现工具栏与曲线列表都隐藏了。
北京亚控科技发展有限公司 18
图九
控件属性
图八 画面命令语言编辑框
图十画面命令语言
图十一运行画面
方法举例:因为此控件功能相对比较强大,因此有些客户希望此历史曲线控件能够作为实
时曲线来实现,下面我们就利用此控件的方法来实现。控件方法如下:
Void HTUpdateToCurrentTime();
功能:将曲线的终止时间设为当前时间
我们还是在画面命令语言中进行编辑,这次使用画面命令语言的存在时,点击“控件” 按钮,弹出控件选择对话框,在控件选择对话框的“控件名称” 处选择我们前面定义的历史曲线控件名称“ HT ”,然后在“查看类型”中选择“控件方法” ,则此控件的所有的方法都会列出,我们可以选择需要的控件方法HTUpdateToCurrentTime 。如图十一所示:编辑脚本如下:
HT.HTUpdateToCurrentTime();
图十一控件方法的使用
点击“确定”完成画面命令语言的脚本编辑。保存“历史曲线”画面。然后切换到运行