陈在平 杨雅静
(天津理工大学自动化学院,天津 300384)
组态王是一种工业监控软件,目前已被广泛应用于工业自动化控制系统中。用户通过实时分析在线数据,将企业内部的各种生产信息交流汇集在一起,对控制过程进行优化。但实际对采集到的数据进行分析时,存在报表输出方式不够灵活和实时性差的问题,因此笔者利用组态王SQL 数据库技术,通过编程语言将组态王所采集到的数据写入SQL Server数据库中,这样用户可在脱离控制系统的情况下随时利用数据库来处理实时数据[1]。笔者采用组态王6.55版实现对SQL Server2005数据库中数据的各种操作,并运用组态王提供的动态链接库,使用Visual C++编程语言自行开发客户端界面,实现对组态王采集入库的数据进行查看和处理功能[2]。
为实现组态王和外部数据库之间的数据传输,组态王提供了SQL访问功能,它包括SQL访问管理器和SQL函数两部分。组态王SQL访问管理器主要有创建表格模板和创建记录体两部分功能:利用表格模板在数据库中创建表格;利用记录体建立SQL Server数据库中字段与组态王之间的联系。SQL函数是组态王标准函数的扩充,其使组态王可与数据库进行信息交换,利用SQL函数可进行创建表格、编辑已有表格、插入记录、查询已有记录及删除记录等操作。
首先利用SQL Server2005创建一个数据库,命名为DataBase;然后利用ODBC数据源管理器中的系统DSN新建一个SQL Sever驱动的数据源,命名为SQL Conn;最后对SQL Conn数据源进行配置,使其指向DataBase数据库。
在创建表格模板之前,应先定义数据词典,数据词典中存放的是工程中定义的变量和一些系统变量。数据词典中定义的变量如下:
DeviceID 内存整型
氧含量2 内存实型
氧含量3 内存实型
一氧化碳2 内存实型
一氧化碳3 内存实型
排烟温度2 内存实型
排烟温度3 内存实型
热效率2 内存实型
热效率3 内存实型
酸露点2 内存实型
这些变量可用来实现组态王与SQL Server数据库的联系。
然后在组态王的工程目录显示区中选择SQL访问管理器的表格模板新建表格模板table(图 1)。后面在创建数据库表格中会用到SQLCreatTable()函数,此函数可以在DataBase数据库中自动建立表格。
图1 新建表格模板table
在组态王的工程目录显示区中选择SQL 访问管理器的记录体选项以新建记录体 Test(图 2)。在新建的Test记录体中,表格模板中字段对应的数据类型和名称必须与此字段对应的变量数据类型保持一致,但字段的排列顺序可以不一致。
图2 新建记录体Test
连接数据库的命令语言为:
SQLConnect(DeviceID,"dsn=SQL_Conn;uid=sa;pwd=")
上述命令语言实现了组态王与SQL Conn数据源的连接,即与DataBase数据库建立了连接。将此命令写入组态王工程浏览器中应用程序命令语言的启动中,以实现系统开始运行时就可以连接到数据库上。
创建数据库表格的命令语言为:
SQLCreateTable(DeviceID,"KingTable","table")
上述命令语言实现了以表格模板table的格式在数据库中建立名为KingTable的表格。也将此命令写入组态王应用程序命令语言的启动中,以实现系统开始运行时就可以自动创建数据库表格。
插入记录的命令语言为:
SQLInsert(DeviceID,"KingTable","Test")
组态王将记录体中相关联的变量当前值插入到DataBase数据库表格中,从而生成一条新的记录,达到将组态王中的数据写到外部数据库的目的。
查询记录的命令语言为:
SQLSelect(DeviceID," KingTable ","Test","","")
当需要将数据库中的数据调入组态王来显示时,需将此命令写入组态王应用程序命令语言中的运行,并且添加查询下一条记录的命令:
SQLNext(DeviceID)
断开连接的命令语言为:
SQLDisconnect(DeviceID)
将此命令写入组态王应用程序命令语言中的退出,系统在退出后将自动断开与DataBase数据库的连接。至此,通过组态王SQL数据库技术已经成功连接上SQL Server数据库,并通过上述SQL命令语言实现了写入及查询数据等操作。
对动态链接库的访问分为隐式链接加载和动态加载两种方式,笔者采用动态加载方式访问组态王提供的链接库KingvewCliend.dll。动态库提供的接口函数主要有7个,在整个调用过程中有相应的次序和功能,主程序流程如图3所示,根据主程序流程,利用Visual C++基于对话框模式设计客户端界面,编写应用程序。
图3 主程序流程
系统测试主要完成对数据传输的测试。图4为应用Visual C++基于对话框模式开发的加热炉数据监测界面,将组态王采集到的实时数据显示到客户端。
图4 加热炉数据监测界面
进入系统测试时,首先系统自动连接组态王,进入图4所示的监测界面后,可选取需要查看的加热炉运行参数,图中显示了排烟温度、热效率、氧含量和一氧化碳的当前值。图5为组态王的信息窗口,系统自动连接组态王时就会弹出此信息窗口,从图5也可以看出,系统显示的是最后记录,即显示的是运行参数的当前值,实现了数据的实时传输。
图5 组态王信息窗口
系统测试表明:该系统基本实现了将加热炉现场运行的实时数据传输到客户端界面,工作人员无需到控制现场,在客户端就可以实时查看加热炉运行的状态参数。
阐述了组态王 SQL 数据库技术在加热炉状态参数监测方面的应用,实现了组态王与SQL Sever数据库的连接,并结合组态王提供的动态链接库,完成了加热炉状态参数客户端界面的开发,使操作人员可以实时掌握加热炉的运行状态信息,方便了对设备的管理和控制。
[1] 孟秀玉,曹巨江,田海滨. 组态王SQL数据库技术在滴丸罐装控制系统中的应用[J]. 机械设计与制造,2009,14(8):84~86.
[2] 张永,李其申,李镍岚. 基于VC++的动态链接库的创建与调用方法[J].南昌航空工业学院学报(自然科学版),2005,19(3):81~84.