几种常用组态软件与关系型数据库的通讯实践

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

几种常用组态软件与关系型数据库的通讯

实践

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.GetTag("dl_v1")

Set sv2 = gTagDb.GetTag("dl_v2")

Set cn = CreateObject("ADODB.Connection")

Set rscom = CreateObject("ADODB.Recordset")

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

相关文档
最新文档