组态软件WinCC及其应用1第10章WinCC的开放性10.1OLE应用10.2DDE连接10.3API应用10.4使用ActiveX控件10.5利用脚本实现开放性数据交换10.6OPC应用10.7WinCC数据库直接访问方法组态软件WinCC及其应用2WinCC以Microsoft技术作为后盾,几乎集成了Microsoft所有的开放性技术,包括ActiveX,DDE,OPC,OLE,API以及Microsoft强大而高效的数据库MicrosoftSQLServer2000,通过它们可以把自己的应用程序集成到WinCC中。组态软件WinCC及其应用310.1OLE应用OLE是通过其它程序函数访问WinCC,本例介绍MicrosoftOfficeWord和WinCC通过OLE进行连接。组态软件WinCC及其应用4新建一个画面,拖动对象选项板“标准”选项卡“智能对象OLE元素”到编辑区,图示对话框自动打开,选择“新建”项,对象类型为“MirosoftWord图片”,单击确定在画面中插入一个OLE元素组态软件WinCC及其应用5双击画面中的OLE元素,启动由MicrosoftWord打开的文件,输入希望的内容,如艺术字“OLE元素”测试,关闭MicrosoftWord,则画面如图所示,可以调整该对象的尺寸,双击打开MicrosoftWord编辑软件。组态软件WinCC及其应用610.2DDE连接此处以WinCC与Excel的本地DDE通信为例wincc7.0版本之后不再支持DDE通讯组态软件WinCC及其应用710.3API应用每个WinCC组件如变量管理器,图形编辑器,全局脚本,报警记录,变量记录,报表编辑器,用户管理,文本库等都有一个API接口用以开放WinCC供其它应用程序使用,当然,也可以通过WinCC使用WindowsAPI。组态软件WinCC及其应用8例2:通过脚本函数在WinCC中创建一个新目录。#pragmacode(kernel32.dll);BOOLCreateDirectoryA(LPCTSTR,LPSECURITY_ATTRIBUTES);#pragmacode();CreateDirectoryA(c:\\test,NULL);组态软件WinCC及其应用910.4使用ActiveX控件OCX和ActiveX对象提供了未被WinCC的对象默认包含的某些功能。WinCC使OCX和ActiveX对象可以嵌入到画面中,从而实现更多复杂的功能。ActiveX是基于COM(ComponentObjectModel)的可视化控件结构的名称,是一种封装技术,提供封装COM组件并将其置入应用程序的一种方法。在操作系统中注册的所有ActiveX控件均可用于WinCC。组态软件WinCC及其应用1010.4.1在WinCC中直接插入ActiveX控件组态软件WinCC及其应用1110.4.2用VBScript访问ActiveX控件画面中已经插入了外部的ActiveX控件,可以用VBScript中的ScreenItems对象来访问修改ActiveX控件对象的属性。组态软件WinCC及其应用1210.4.3用VBA组态ActiveX控件本例用VBA在画面中插入一个ActiveX控件的WinCCGauge控件,并调整控件的属性。组态软件WinCC及其应用1310.5利用脚本实现开放性数据交换10.5.1VBScript实现开放性数据交换例:VBScript实现WinCC与Excel之间的数据交换。组态软件WinCC及其应用1410.5.2C-Script实现开放性数据交换CScript是功能最全的脚本系统,它可以操纵WinCC所有对象的组态和运行属性。通过CScript,也可以进行一些开放性的操作。例1:用C-Script进行文件操作。组态软件WinCC及其应用15•第一段代码是一个按钮触发的动作,其主要功能是从文件中读出字符串值,并把值送回WinCC变量。•#include”apdefap.h”•void0nClick(char*ipszPictureName,char*ipszObjectName,char*ipszPropertyName)•{•FILE*datei;•chart[20];•charx[20];•char*z;•datei=fopen(”c:\\Temp\\variablen.txt”,”w’);//openfiletoread•if(datei!=NULL)•{•z=fgets(t,20,datei);//read1.stringfromfile•strncpy(&x[0],&t[0],strlen(&t[0])-1);//copystringin2.Arrayexceptof\n•SetTagChar(”Text_1”,x);•z=fgets(t,20,datei);•SetTagChar(”Text_2”,t);•)•fclose(datei);//closefile•}组态软件WinCC及其应用16•第二段代码是把WinCC中的变量字符串值写到文件中。•#include”apdefap.h”•voidOnClick(char*ipszPictureName,char*ipszObjectName,char*ipszPropertyName)•{•FILE*datei;•char*a;•char*b;•datei.fopen(”C:\\Temp\\variablen.txt”,”W”);//openfiletowrite•if(datei!=NULL)•a=GetTagChar(”Text_l”);•b=GetTagChar(”Text_2”);•fprintf(datei,”%s\n%s”,a,b);•}•fclose(datei);//closefile•)组态软件WinCC及其应用17例2:用C-Script调用系统时间。#include“apdefap.h”char*_main(char*ipszPictureName,char*ipszObjectName,char*ipszProperty){#pragmacode(“kernel32.dll”)VOIDGetLocalTime(LPSYSTEMTIMEipSystemTime);#pragmacode()SYSTEMTIMEsysTime;CharszTime[6]=’’”;GetLocalTime(&sysTime);Sprintf(szTime,’’%02d:%02d”,sysTime.wHour,sysTime.wMinute):ReturnszTime;)组态软件WinCC及其应用1810.6OPC应用OPC是OLEforProcessControl的缩写,即把OLE技术应用于工业控制领域。OLE原意是“对象链接与嵌入”,随着OLE2.0的发布,其范围已远远超出了这个概念。现在的OLE包容了许多新的特征,如统一数据传输、结构化存储和自动化,已经成为独立于计算机语言、操作系统甚至硬件平台的一种规范,是面向对象程序设计概念的进一步延伸。OPC建立在OLE规范之上,它为工业控制领域提供了一种标准的数据访问机制。现在多家自动化领域的著名厂商都支持OPC接口,从而使集成各个厂家的设备和应用程序就非常容易。组态软件WinCC及其应用1910.6.1WinCC中的OPCWinCC全面支持OPC,可以作为OPC服务器和OPC客户机。集成在基本系统中的OPCDAServer,可以让其它兼容OPC的应用程序访问WinCC的过程数据,进行进一步的数据处理。另外,可以通过OPCHAD(HistoryDataAccess)来访问WinCC的归档数据。作为HDA服务器,其它应用程序可以访问WinCC所有的历史数据。在一台计算机上安装WinCC时,自动添加下列OPC组件:OPC服务器,OPC通讯驱动程序和OPC条目管理器。组态软件WinCC及其应用20当使用WinCC作为OPC客户机时,“OPC”通道必须添加到WinCC项目中。由WinCC变量实现OPC服务器和OPC客户机之间的数据交换。通过OPC软件界面,WinCCOPC服务器允许访问WinCC变量值。为此,在WinCCOPC客户机的WinCC项目中创建了一个连接,它访问WinCCOPC服务器的WinCC变量。为使组态更容易,提供了OPC条目管理器。组态软件WinCC及其应用2110.6.2OPC规范WinCC支持的OPC支持的OPC服务器遵循以下规范:OPCDA:OPCDataAccess1.0a和2.0;OPCHDA:OPCHistoricalDataAccess1.1;OPCA&E:OPCAlarm&Events1.0;OPCXDA:OPCXMLDataAccess1.0。组态软件WinCC及其应用221.WinCCOPCDAWinCC既可以用做OPCDAServer,也可以用做OPCDAClient。(1)WinCC作为OPCDAServer组态软件WinCC及其应用23(2)WinCC作为OPCDAClient组态软件WinCC及其应用24(3)使用多个OPCServers组态软件WinCC及其应用252.WinCCOPCHDAServerWinCCOPCHDAServer是一个DCOM应用程序。OPCHDAClient可以访问Server上的所有归档数据。使用ItemHandles来访问数据,数据可以被读和分析。WinCCOPCHDAServer只能在WinCCServer上来完成。为了使用WinCCOPCHDAServer,每个需要作为WinCCOPCHDAServer的WinCCServer上必须安装ConnectivityPack授权和WinCC基本系统的授权。组态软件WinCC及其应用263.WinCCOPCA&EServerWinCCOPCA&EServer同样也是一个DCOM应用程序。OPCA&EClient通过订阅的方式跟踪WinCC信息的状态变化。OPCA&EClient在订阅时可以设置过滤条件,过滤条件决定了哪个消息的哪个属性需要显示。WinCCOPCA&EServer同样只能由WinCCServer来完成。为了具有OPCA&EServer的功能,WinCCServer除了安装基本系统的授权之外,还需安装ConnectivityPack授权。OPCA&E客户机可以用来分析以及归档来自于不同OPCA&EServer的消息。组态软件WinCC及其应用2710.6.4OPC应用举例例1:WinCC连接到WinCC,此两台计算机位于相同网络中。组态软件WinCC及其应用28例2:WinCC连接到Excel。组态软件WinCC及其应用29例3:以S7-200与WinCC通过OPC进行通讯为例。组态软件WinCC及其应用3010.7WinCC数据库直接访问方法不同的供应商提供了可用于访问数据库的接口,这些接口也允许直接访问WinCC归档数据库。例如使用直接访问可以读出过程值,以便在电子表格程序中进行处理。可以通过ADO/OLE-DB,OPCHDA和ODKAPI等多种方式访问数据库。组态软件WinCC及其应用3110.7.1使用ADO/OLE-DB访问归档数据库1.OLE-DBOLE-DB是一种快速访问不同数据的开放性标准,与ODBC标准不同。ODBC是建立在WindowsAPI函数基础之上的,只能通过它访问关系型数据库。而OLE-DB是建立在COM和DCOM基础之上的,可以访问关系型数据库或非关系型数据库。OLE-DB层和数据库的连接是通过一个数据库提供者(provider)而建立的。OLE-DB接口和提供者是由不同的制造商提供的。除了WinCCOLE-DB接口之外,还可以通过MicrOsoftOLE-DB和ODBC来访问WinCC的归档数据。组态软件WinCC及其应用322.WinCCOLE-DBProvider通过WinCCOLE-DBProvider,可以直接访问存储在