1 引言
ifix组态软件是由美国intellution公司开发的基于windows 2000&nt的大型组态软件,它提供了灵活的组态、严密的安全措施,以及优美的画面和强大的控制及组网能力,为使用者提供了丰富的选择。其中,趋势曲线的构建几乎是每个用户都关心的,通过历史趋势曲线用户可以观察到任意时间段的介质使用情况,并根据历史趋势分析后期历史数据,合理安排生产,提高 生产效率。
安装ifix的同时,也安装了演示例程ifix sample system,其中的趋势曲线画面功能丰富,可以说能满足大多数用户的需求。用户可以在下拉列表框选择实时和历史数据块,可以自定义历史数据的显示时间段,放大趋势曲线,改变趋势曲线的显示方向等等。它还可以随意删除和增加数据块。其实,实现这些功能并不困难,只需移植演示例程中的趋势曲线画面 ifix1_trend.grf,并做适当的改动。
2 实现过程
(1) 历史定义
定义几组历史数据,全部为24小时文件。同时,还需要把htc.exe增加到scu后台启动列表。
(2) 拷贝画面
假设ifix安装在d盘。拷贝d:dynamicssamplesystem picture目录中的ifix1_trend.grf到d:dynamicspic目录下,这样,ifix1_trend.grf出现在工作台的系统树中,在其它画面设置切换按钮可以切换到此趋势画面。同时将d:dynamicssamplesystempicture中的user.fxg和plugandsolve.fxg拷贝到d:dynamicspic。
(3) 导出文件
运行演示例程,查看趋势曲线画面ifix1_trend.grf的脚本。导出project_plugandsolve 和project_user中的模块和窗体到某个文件夹。记录project_plugandsolve和project_user的“引用”项(vba 中“工具”菜单下的“引用”)。
(4) 调整画面
打开ifix工作台,修改ifix1_trend.grf的画面属性为“运行时画面可视”。去掉画面中的“采集值”,“平均值”,“高限值”,“低限 值”,“从msaccess读取lab数据”,帮助按钮,”显示网格“按钮。调整趋势曲线显示区域和画面整体的布局。
(5) 配置visionx控件
vxcombo 控件和vxdata控件相结合以显示数据块和连接数据库。和实时数据有关的控件为vxcmbrtpens(vxcombo 控件)和vxdatartpens(vxdata控件),和历史数据有关的控件为vxcmbhistpens(vxcombo 控件)和vxdatahistpens(vxdata控件)。两个vxcombo 控件属性不变,2个vxdata控件的属性如附表所示。

(6) 修改vba代码
在vba编辑状态下,将3中导出的文件导入到相应的工程中,并对照"引用"项是否相符。
修改工程画面project_ifix1_trend的vba代码。
private sub cfixpicture_iNItialize() 中注释掉call setpaths,vxdatahistpens.dbconnect,sethelpfilelocation me,changefontsifbelow1024x768 me。相应的可以去掉和这四个函数相关的定义。同时,第五行修改双引号中的字符串为fix,即strchartstartdt = findhistoricalfiles("fix")(0)。
事件private sub cmdaddhistpen_mousedown中修改snodename的值,即snodename="hist.fix."。
事件private sub cmdaddrtpen_click()的代码改动以后如下:
dim objpen as object, stagname as string, snexttag as string, snexttagtype as string
dim snodename as string, spotname as string, ipen as integer, n as integer
dim boolfound as boolean
on error goto handleerror
snodename = "fix32.fix."
if vxcmbrtpens.text <> "" then
`delete the place holder pen
stagname = trim(vxcmbrtpens.text)
n = instr(stagname, ",") - 1
spotname = left(stagname, n)
`there add CODe
snexttag = readvalue(snodename + spotname + ".a_next", 1)
if err.number=0 and snexttag<>"" then
snexttagtype = readvalue("fix32.fix." + snexttag + ".a_name")
if snexttagtype = "etr" then spotname = snexttag + ".t_data"
else
spotname = spotname + ".f_cv"
end if
deletedefaultpen
set objpen = objmainchart.addpen(snodename + spotname, false)
objpen.duration = chartpenduration
end if
exit sub
handleerror:
`exit here on error
在例程中,vxcmbrtpens列出的是数据块的名称,通常不便于操作员识别和操作,尤其是数据量比较大的时候,比较理想的做法是同时显示数据块名称和描述。由于vxdatartpens"数据源"不支持直接连接两个字符串,所以笔者将数据块的描述做统一的定义,以满足这种要求。例如名为f101的数据 块,它的描述定义为"f101,二号炼钢氧气用量"。这样列表框仅显示一个描述域就可以了。上面的代码就是针对这一目的做的改动。
3 操作方法
在"实时数据"的下拉列表框中,根据数据块名称和对应的描述选出要查看的变量,点击旁边的“增加笔”按扭即可。默认的显示时间段为“1小时”,查看实时数 据时,最好选择“5分钟”,也可以根据需要选择“15分钟”,“30分钟”等等,这些选择都集中在“时间范围”组合框里。
在“历史数据”的下拉列表框中,参考“实时数据”列表框的变量及描述,选中要查看的变量,点击旁边的“增加笔”按扭即可。“时间范围”一般选择“6小 时”,“12小时”,此时,历史趋势曲线仍是空白的。点击“起始日期及时间”按钮,出现对话框,设置历史数据的显示时间。
历史和实时数据块的趋势曲线可以按上述方法,同时显示多个。而且各个数据块的名称及描述以不同的颜色显示在图表的底端,用鼠标点击相应的数据块,则图表的横坐标和纵坐标以和此数据块相同的颜色“高亮显示”,纵坐标显示此数据块的量程。点击“删除笔”按钮,“高亮显示”的数据块从图表中删除。
默认的趋势曲线显示方式为从右至左,可以点击“从左至右显示数据”按钮,改变显示方向。此外,还可以进行多数据值显示、多时间段显示、局部放大显示。
4 应用实例
如图1所示,江苏某钢厂有炼铁、轧钢、炼钢、发电厂、制氧等生产区,ifix通过工业以太网从下位机采入的实时数据有各车间的气(氧气、氮气、液化气、蒸汽、压缩空气等)、水(化学水、净化水、软化水等)、油、电四大项内容。主要完成厂级各生产部门的数据计量,并完成运行工况的自动监视、自动计量、经济核 算、自动报表等任务,从而达到有效的生产调度、合理配置资源、提高生产效率的目的。由于测点多、介质使用量大,经常出现供大于求或供不应求的现象,一方面造成了严重的浪费,另一方面又影响了生产。以氧气为例,假如某车间某日需用氧气量10000l,而实际供给该车间的氧气量为15000l,那么多余的 5000l就会以过剩量的形式放散掉,这样就造成了很大的浪费,有时会出现实际的氧气供给量达不到10000l的现象。用户通过查看各介质的历史显示趋势曲线,可以一目了然的观察到各介质的使用情况,根据趋势显示来确定各介质的供给量,这样就可以避免上述两种现象的发生,节约了大量的资源。据统计,自投入 使用以来,本系统运行稳定,能够达到指导生产、提高生产效率的目的,每年为该厂节约上百万的资金。

5 结束语
江苏某钢厂动力计量系统采用本文介绍的方法,取得了良好的效果。使用该方法一张图表能同时显示多个历史和实时数据块,而不必为每一个数据块单独设计图表,所以比较灵活,实用性强。这种方法几乎不需编程,操作简便,用户很容易掌握,以其灵活、可靠、方便而深受用户好评。本技术也同样适用于其他运用工控组态软 件ifix的电力、化工、冶金、石油等国民经济各领域。




