CITECT与数据库通讯

更新时间:2023-05-15 01:01:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

用于组态软件与数据库通讯

Citect、WINCC、RSView32、iFix与关系型数据库的通讯实例

摘要:在自动化项目的实施中,组态软件越来越多地要求与数据库特别是关系型数据库交换数据,但是不同的组态软件实现的方式不同,大多要使用其自己的脚本语言或使用VBA进行编程,而大多数控制系统开发人员对计算机编程语言并不熟悉,这就给项目开发造成一定困难。本文详细介绍了几种常用的组态软件,包括Citect、WINCC、RSView32以及iFix如何通过ODBC接口来实现与数据库的通讯连接,并提供详细的编程代码。

关键词:组态软件;ODBC;数据库;Citect;WINCC;RSView32;iFix

1、前言:

组态软件是一种面向工业自动化的通用数据采集和监控软件,即SCADA(Supervisory Control And Data Acquisition)软件,亦称人机界面或HMI/MMI(Human Machine Interface/Man Machine Interface)软件,在国内俗称“组态软件”。 它们是在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具,是工业应用软件的重要组成部分。

随着现代计算机软硬件技术的发展和企业信息化建设的需要,控制层与管理层信息系统的结合越来越密切。在自动化项目的实施中,组态软件越来越多地要求与数据库特别是关系型数据库交换数据,实现诸如生成生产报表、与其它控制系统数据库通讯、与管理层数据库通讯等功能。但是不同的组态软件实现的方式不同,大多要使用其自己的脚本语言或使用VBA进行编程,同样是与数据库通讯,不同的组态软件具有不同的实现方法。而大多数控制系统开发人员对计算机编程语言并不熟悉,这就给项目开发造成一定困难。笔者多年从事自动化项目开发工作,在多个工程项目中使用过多种组态软件实现了与数据库的通讯及操作。本文总结了几种常用的组态软件,包括Citect、WINCC、RSView32以及iFix如何通过ODBC来实现与数据库的通讯连接。

2、ODBC的设置:

ODBC(开放数据库互连)应用程序可通过ODBC API访问不同数据源中的数据,每个不同的数据源类型由一个ODBC驱动程序支持,这个驱动程序完成了ODBC API程序的核心,并与具体的数据库通信。ODBC现在作为一个工业标准,绝大多数数据库厂商都为自己的产品提供了ODBC接口或提供了ODBC支持,这其中就包括常用的Access 、SQL SERVER、ORACLE等。为方便测试,本文以存放在C盘的文件名为“aa”的Access数据库文件为例,其ODBC

用于组态软件与数据库通讯

设置如下:

2.1添加数据源:

在控制面板中双击“管理工具”图标,在打开的窗口中选中“数据源(ODBC)”图标,双击该图标,进入“ODBC数据源管理器”窗口,如图1所示。按“添加”按钮,进入“创建新数据源”窗口画面。

图1

2.2 选择数据库ODBC驱动:

进入“创建新数据源”窗口画面后,在驱动列表中选择数据源的驱动程序,本例选择“Microsoft Access Driver(*.mdb)”项,然后按“完成”键。出现“ODBC Microsoft Access 安装”窗口。

2.3 完成数据源设置:

在 “ODBC Microsoft Access 安装”窗口画面中完成数据源的设置。如图2所示:

用于组态软件与数据库通讯

图2

“数据源名”项,填入数据源名,可以任意命名,按“选择”按钮,找到C盘下aa.mdb文件,然后按“确定”,完成了数据源的设定。

3、与关系型数据库的通讯

现将几种常用的组态软件与数据库的连接方法介绍如下。为便于理解,本文的编程代码都是实现同样的功能:通过ODBC接口与本机C盘下名为aa.mdb的Access 数据库建立连接,打开表tab1并插入一条记录。将组态软件中的标签变量dl_v1和dl_v2写入该记录对应的v1和v2两字段。

3.1 Citect与数据库的连接:

悉雅特集团(Citect)是世界领先的提供工业自动化系统、设施自动化系统、实时智能信息和新一代 MES 的独立供应商,同时Citect组态软件也是较早进入中国市场的产品。Citect提供了类似C语言的脚本语言Cicode,6.0版本以后又添加了CitectVBA 脚本。现以Cicode脚本为例,介绍citect与数据库的连接。程序代码如下:

FUNCTION databasetest ()

INT hSQL, iResult;

STRING ssql;

REAL sv1,sv2;

sv1 = TagRead("dl_v1");将实数型标签变量赋值给程序变量

sv2 = TagRead("dl_v2");

hSQL = SQLConnect("DSN=aa");

用于组态软件与数据库通讯

IF hSQL <> -1 THEN

sSQL = "INSERT INTO tab1(v1,v2) VALUES ('"+ RealToStr(sv1,8,2)+"','"+

RealToStr(sv2,8,2)+"')";插入表tab1一条记录,将标签变量值添加到字段v1和v2 中,不管Access数据库字段的类型是否为字符型,都要转换为字符型操作。

iResult = SQLExec(hSQL, sSQL);

SQLDisconnect(hSQL);

END

END

3.2 WINCC与数据库的连接:

西门子的WinCC也是一套功能完善的组态开发软件。随着西门子PLC的广泛应用, WINCC组态软件的用户也逐年增多。WINCC提供类C语言的脚本和VBS脚本,,现以VBS脚本为例,介绍WINCC与数据库的连接。程序代码如下:

Function action

Dim strcn,cn

Dim sv1,sv2

Dim is_SQL,rscom

Set cn=CreateObject("ADODB.Connection")

Set rscom=CreateObject("ADODB.Recordset")

Sv1=HMIRuntime.Tags("dl_v1").Read 读取标签变量值

Sv1=HMIRuntime.Tags("dl_v1").Read

is_SQL="insert into tab1(v1,v2) ValueS("&sv1&","&sv2&")"

strcn="Provider=MSDASQL;DSN=aa;UID=;PWD=;"

cn.ConnectionString=strcn

cn.Open

cn.Execute is_SQL

cn.close

End Function

3.3 RSView32与数据库的连接:

RSView32是RockWell SoftWare公司的组态软件,提供VBA脚本,同样的与数据库连接功能,其编程代码如下:

用于组态软件与数据库通讯

(添加一命名为aaa的VBA子程序,可作为命令调用,操作代码为VbaExec aaa)

Sub aaa()

Dim strcn, cn

Dim is_SQL, rscom

Dim sv1,sv2

Set sv1 = gTagDb("dl_v1")

Set sv2 = gTagDb("dl_v2")

Set cn = CreateObject("ADODB.Connection")

Set rscom = CreateObject("ADODB.Recordset")

is_SQL = "insert into tab1(v1,v2) ValueS('" + Str(sv1) + "','" + Str(sv2) + "')" strcn = "Provider=MSDASQL;DSN=aa;UID=;PWD=;"

cn.ConnectionString = strcn

cn.Open

cn.Execute is_SQL

cn.Close

End Sub

3.4 iFix与数据库的连接:

GE Fanuc的iFIX是全球最领先的HMI/SCADA自动化监控组态软件之一,与关系型数据库通讯,它具有iFIX SQL接口选项(即iFIX ODBC)和VBA编程两种方法来访问SQL数据源,用VBA写脚本可以更快和更容易地访问和处理SQL数据源。作为可供选择项,iFIX ODBC不需要具备VBA脚本知识,就能执行所有的SQL任务。例如,如果想确定数据库收到确定性的数据,应当使用通过iFIX ODBC可获得的数据库块。当使用数据库块时,数据在每个扫描时间内被及时送到数据库。对编程不熟悉的开发人员采用iFIX ODBC配置相对简单。iFIX ODBC由SQL触发块(SQT)、SQL数据块(SQD)、SQL任务三部分组成,其中SQL触发块用于指定SQL命令的名称,并确定数据传输触发的时间或事件,SQL数据块用于指定采集和传送的数据以及数据传送的方向。SQL任务除处理和ODBC驱动的通讯外,还和SQT块、SQD块通讯。因这两种方式的实现在软件帮助文件和应用文章中有很多实例,在此就不再详细描述。

用于组态软件与数据库通讯

值得注意的是,采用SQL块来插入一条记录,字段数不能过多,每条SQL语句的字符数也有限制,如果一条记录字段太多,可用INSERT和UPDATE这两种SQL语句结合的方式完成数据库一条记录的添加任务。

4、结束语:

以上论述是笔者结合多年来不同项目、不同组态软件的应用经验,针对组态软件与数据库连接这一常见问题做的一些实践的总结。本文为测试方便起见,选取一个较为简单的数据库和SQL操作,更复杂的应用可以以此为参照,对代码略作修改就可使用。

目前,越来越多的组态软件都支持VBA脚本编程,这样就使编程开发的功能增加了可复制性。但根据笔者的经验,每一种组态软件的VBA用法都不尽相同,实现同一种功能,程序代码会有一些不同。希望本文可以给使用组态软件的人员在项目开发上提供帮助,节省开发调试时间,同时充分挖掘组态软件的功能,更好地实现系统功能和客户的要求。

本文来源:https://www.bwwdw.com/article/jt3e.html

Top