WinCC和EXCEL数据传递

合集下载

ecel表格和WINCC报表

ecel表格和WINCC报表

如何使用WinCC DataMonitor 基于Web 发布浏览Excel 报表文档How to use WinCC DataMonitor publish and view excel document base on Web文档类型(Getting-started)Edition (2008 年7 月)摘要本文介绍使用WinCC DataMonitor 的"Excel Workbooks",通过Excel 表格显示WinCC 项目的过程值、归档变量值和归档消息。

并可以通过 Web 发布浏览访问数据。

关键词WinCC,DataMonitor,ExcelKey Words WinCC,DataMonitor,ExcelA&D Service & Support Page 2-14目录1.WinCC DataMonitor 是什么 (4)简介 (4)WinCC DataMonitor 的主要功能 (4)2.使用WinCC DataMonitor 基于Web 发布浏览Excel 报表文档 (7)使用“Excel 工作簿向导”组态发布Excel 工作簿 (7)在线显示浏览Excel 工作簿 (12)A&D Service & Support Page 3-141.WinCC DataMonitor 是什么DataMonitor 是 SIMATIC WinCC 工厂智能中用于数据显示和分析的一个组件,它基于WinCC 的实时、历史数据进行车间管理级的数据汇总和分析,借助标准工具(例如微软的 IE 浏览器或者 MS Office Excel)可以显示并分析 WinCC 上的过程信息和历史数据。

简介SIMATIC WinCC/DataMonitor 提供用于显示交互数据及分析当前过程状态和历史数据的分析工具集合。

DataMonitor 客户端是纯粹用于显示和评估来自 WinCC 的过程值或来自WinCC 长期归档服务器的数据的系统。

用VBS实现WINCC的用户归档输出到EXCEL表格的方法和例

用VBS实现WINCC的用户归档输出到EXCEL表格的方法和例

用VBS实现WINCC的用户归档输出到EXCEL表格的方法和例(2009-12-30 16:47:45)用VBS实现WINCC的用户归档输出到EXCEL表格的方法和例子程序求用VBS实现WINCC的用户归档输出到固定格式的EXCEL表格的方法和例子程序!我主要问题在SQL数据库的查询语句不会。

看见论坛里有关用VBS实现EXCEL的数据查询和导出,我现在想要完成如下功能:每分钟将数据归档,用户可以输入任意的时刻时间查询从任意时刻开始的之后每隔1小时的数据(有点像日报里的24个小时)。

我现在对于VBS查询数据库的语句不懂,望大大赐教!谢谢''SQL查询语句Dim strc as stringstrc = "provider=WinCCOLEDBProvider.1;catalog=CC_RebdI_09_06_22_10_3 8_35R;data source=ComputerName\WinCC"''这个连接字符串可以在SQl2000中看到Dim cc1Set cc1=CreateObject("adodb.connection")cc1.ConnectionString=strccc1.CursorLocation=3cc1.openDim rst As ObjectSet rst = CreateObject("adodb.recordset")dim ssql as stringssql = "Tag:R,'Archive_3\DB1DBD0','2009-7-29 00:00:00.0000','200 9-7-29 23:59:59.999','timestep=3600,258'"''Archive_3\I_DB1DBD0归档和变量''2009-7-29 00:00:00.0000,2009-7-29 23:59:59.999时间段''timestep=3600,258每阁多少秒拿一个数据(3600=1小时),258表示每个时间段取最后一个数据rst.Open ssql, cc1''这样查出来的数据就是一天的每小时的数据''对rst记录集处理就可以得到你要的数据==========================Function actionDim objExcelAppDim i,TimeM,TimeNow,TimeSSet TimeM=HMIRuntime.Tags("TimeM")i=1+TimeM.ReadTimeNow=CStr(Year(Now))&"年"&CStr(Month(Now))&"月"&CStr(Day(Now))&"日"&CStr(Hour(Now))&"-"&CStr(Minute(Now))&":"&CStr(Second(Now))TimeS=Second(Now)Set objExcelApp = CreateObject("Excel.Application")objExcelApp.Visible = FalseobjExcelApp.Workbooks.Open"E:\ExcelTest.xls"objExcelApp.Cells(i, 2).Value =123.47objExcelApp.Cells(i, 1).Value = TimeNowobjExcelApp.DisplayAlerts = FalseobjExcelApp.ActiveWorkbook.SaveobjExcelApp.Workbooks.CloseobjExcelApp.quitSet objExcelApp =NothingEnd Function以上代码用于往指定的Excel表格中写数据。

如何在Excel中访问WinCC变量归档数据

如何在Excel中访问WinCC变量归档数据

1 功能说明在Microsoft office Excel中访问WinCC的历史数据,实现如下图所示的报表:图1: Excel中访问WinCC的历史数据生成报表选择日期后,可以生成当天的风机参数日报表(报表数据来自WinCC)。

2 软件环境本地计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003 远程计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20033 WinCC/Connectivity Pack 介绍WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC/Connectivity Pack提供的OLE-DB接口才能够解压并读取这些数据。

3.1 连接字符串“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;“其中:Catalog:WinCC运行数据库的名称注意:当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。

建议使用WinCC系统变量“@DatasourceNameRT” 获得当前的Catalog。

Data Source :服务器名称本地:“.\WinCC” 或者“<计算机名称>\WinCC”远程:“<计算机名称>\WinCC”3.2 查询语句“TAG:R,<ValueID or ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]”其中:ValueName:格式为“ArchiveName\Value_Name”,可以使用多个名称。

TimeBegin,TimeEnd:时间范围,格式“YYYY-MM-DD hh:mm:ss.msc”。

在Excel中访问WinCC变量归档数据

在Excel中访问WinCC变量归档数据

如何在Excel中访问WinCC变量归档数据————————————————————————————————作者:————————————————————————————————日期:1 功能说明在Microsoft office Excel中访问WinCC的历史数据,实现如下图所示的报表:图1: Excel中访问WinCC的历史数据生成报表选择日期后,可以生成当天的风机参数日报表(报表数据来自WinCC)。

2 软件环境本地计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003 远程计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20033 WinCC/Connectivity Pack 介绍WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC/Connectivity Pack提供的OLE-DB接口才能够解压并读取这些数据。

3.1 连接字符串“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;“其中:Catalog:WinCC运行数据库的名称注意:当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。

建议使用WinCC系统变量“@DatasourceNameRT” 获得当前的Catalog。

Data Source :服务器名称本地:“.\WinCC” 或者“<计算机名称>\WinCC”远程:“<计算机名称>\WinCC”3.2 查询语句“TAG:R,<ValueID or ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]”其中:ValueName:格式为“ArchiveName\V alue_Name”,可以使用多个名称。

如何使用Excel通过OPC访问WinCC的实时数据

如何使用Excel通过OPC访问WinCC的实时数据

OPC(OLE for process control)作为标准软件接口,可以使各个生产商的设备和应用程序就能以统一的方式连接起来。

WinCC 既可以用作OPC 服务器提供数据,又可以作为OPC 客户机访问其他OPC 服务器中的数据。

WinCC集成的OPC服务器使得过程数据可由其它应用程序(OPC 客户机)访问。

在Excel中可以通过VBA脚本建立OPC 客户端,并通过OPC接口读取WinCC 中的数据,并将修改的数据写入WinCC。

1 OPC规范及功能OPC是一种一致的独立于制造商的软件接口。

OPC 接口基于Microsoft Windows 的COM(组件对象模型)和DCOM(分布式组件对象模型)技术。

另一方面,OPC XML 则基于Internet 标准XML、SOAP 和HTTP。

> COMCOM 是位于同一计算机上且属于不同程序的对象之间进行通讯时采用的标准协议。

服务端是提供服务的对象,比如提供数据。

客户端是使用由服务端提供的服务的应用程序。

> DCOMDCOM 代表COM 功能的扩展,从而允许对远程计算机上的对象的访问。

该接口允许在企业、管理办公室和生产的应用程序之间进行标准化的数据交换。

以前,访问过程数据的应用程序受限于通讯网络的访问协议。

使用OPC 标准软件接口,各个生产商的设备和应用程序就能以一致的方式连接起来。

OPC 客户端是访问过程数据、消息和OPC 服务端归档历史数据的应用程序。

访问需要通过OPC 软件接口。

OPC 服务端是一个程序,它为不同制造商的应用程序提供一个标准的软件接口。

OPC 服务端是在处理过程数据的应用程序、各种网络协议和用于访问这些数据的接口之间的中间层。

只有当设备的操作系统是基于Windows COM 和DCOM 技术时,才能使用OPC 软件接口进行数据交换。

目前,Windows 2000、Windows XP、Windows 2003 Server 和Windows VISTA 具有这些软件接口。

Wincc与Excell数据交换实例一二

Wincc与Excell数据交换实例一二

Wincc与Excell数据交换实例一二Wincc与Excell数据交换实例一二Liking5200,sdyjdx关键字:Wincc,Excell,数据交换,动态数据交换(DDE)现实工程中,经常会遇到重要的参数存储子Excell表格中,在Wincc组态画面中,根据现场参数数值,查询调用对应Excell表格内的数据,同时根据经验在此将更新参数重新保存到Excell中去,这就要求我们实现Wincc与excell的通讯读写。

本文通过两个实例,介绍两种Wincc与excell的读写方法。

实例1Excell不做任何处理,通过Wincc按钮创建C动作,实现对Excell 的读写。

首先建立Excell文件,如d:\\Wincc_Excell_RW.xls。

内容如下:Wincc,建立四个内部变量:ReadExcell_X,Excell_Address_R,WriteExcell_X,Excell_Address_W,分别代表读取的数据,读取地址,写入的数据,输入地址,并在组态画面组态四个IO域与之相对应,组态两个按钮“按钮-读-Excell-X”,“按钮-写-Excell-X”,启动读写功能。

为了数据通用,变量类型定义为“文本变量16位字符集”,四个IO域数据格式选“字符串”,根据需要也可设为其他数据类型,但要确保Wincc与Excell相同,不然将发生读写错误或读取不正确。

按钮“按钮-读-Excell-X”,“按钮-写-Excell-X”,分别创建C动作如下按钮“按钮-读-Excell-X”,C动作:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char*lpszPropertyName){#pragma code("Shell32.dll") //调用动态链接库char tag1[20],tag2[20],add[20];__object* pExcel = NULL; //建立 pExcel 指针用来对 EXCEL 进行操作HWND handle=NULL;handle=FindWindow(NULL,"WinCC-运行系统 - ");if (MessageBox(handle,"Start Reading","Read From Excell", MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB _SYSTEMMODAL)==IDYES){ pExcel = __object_create("Excel.Application");pExcel->Visible = 0;pExcel->Workbooks ->Open ("d:\\Wincc_Excell_RW.xls");strcpy(add,GetTagChar("Excell_Address_R"));strcpy(tag1,pExcel->Worksheets("sheet1")->Range(add)->V alue);SetTagChar("ReadExcell_X",tag1);//将地址Excell_Address_R,excel文件里面的内容写到外部变量ReadExcell_XpExcel->Quit();//退出Excel}__object_delete(pExcel);}按钮“按钮-写-Excell-X”,C动作:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma code("Shell32.dll")//调用动态链接库char tag1[20],tag2[20],add[20];__object* pExcel = NULL; //建立 pExcel 指针用来对 EXCEL 进行操作HWND handle=NULL;handle=FindWindow(NULL,"WinCC-运行系统 - ");if (MessageBox(handle,"Start Writing","Write Into Excell",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB _SYSTEMMODAL)==IDYES) { pExcel = __object_create("Excel.Application");pExcel->Visible = 0;//控制excel文件是否可见,当1时,excel文件可见.pExcel->Workbooks ->Open ("d:\\Wincc_Excell_RW.xls");strcpy(add,GetTagChar("Excell_Address_W"));pExcel->Worksheets("sheet1")->Range(add)->Value =GetTagChar("WriteExcell_X");if (MessageBox(handle,"Save the Excell","Write Into Excell", MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB _SYSTEMMODAL)==IDYES) //{ } pExcel->ActiveWorkbook->Save();pExcel->DisplayAlerts = 0;pExcel->Workbooks->Close();//关闭文件pExcel->Quit();//退出Excel}__object_delete(pExcel);}运行情况如下:读B1数据:点击是读C5数据:点击是写B1数据:点击是然后再读取B1:点击是如此,我们可以对Excell文件d:\\Wincc_Excell_RW.xls ――Sheet 1的任意数据进行读写。

Excel中访问WinCC变量归档数据

Excel中访问WinCC变量归档数据

如何在Excel中访问WinCC变量归档数据 How to access WinCC Process Value Archive Database in Excel摘要本文通过制作一个日报表的过程,介绍了在本地或远程计算机上如何通过Excel访问WinCC的变量归档数据。

关键词WinCC、Excel、VBA、脚本、连通性软件包Key Words WinCC、Excel、VBA、Script、Connectivity PackIA&DT&BT Service & Support Page 2-17目录1 功能说明 (4)2 软件环境 (5)3 WinCC/Connectivity Pack 介绍 (5)3.1 连接字符串 (5)3.2 查询语句 (5)3.3 查询结果 (5)4 本地计算机访问 (6)4.1 WinCC组态 (6)4.1.1 WinCC中创建变量 (6)4.1.2 变量归档组态 (6)4.2 Excel组态 (7)4.2.1 创建Excel模板 (7)4.2.2 在Excel中编写脚本 (10)4.2.3 调用脚本 (12)4.2.4 运行Excel中的脚本 (12)5 远程计算机访问 (14)5.1 OLE-DB接口 (14)5.2 WinCC运行数据库名称的获得 (15)IA&DT&BT Service & Support Page 3-171 功能说明在Microsoft office Excel中访问WinCC的历史数据,实现如下图所示的报表:图1: Excel中访问WinCC的历史数据生成报表选择日期后,可以生成当天的风机参数日报表(报表数据来自WinCC)。

IA&DT&BT Service & Support Page 4-172 软件环境本地计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003 远程计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003 3 WinCC/Connectivity Pack 介绍WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过 WinCC/Connectivity Pack提供的OLE-DB接口才能够解压并读取这些数据。

如何在Excel中访问WinCC变量归档数据

如何在Excel中访问WinCC变量归档数据
图8:打开VBA编辑器
2)创建读取WinCC历史数据的VBA子程序get_wincc_data:
图9:get_wincc_data
脚本包括以下几部分:
(1)获得WinCC运行数据库名称
以上脚本只能读取本地WinCC的变量值,并且需要插入“WinCC HMIRuntime 1.0 Type Library”对象:
Data Source :服务器名称
本地:“。\WinCC” 或者 “〈计算机名称>\WinCC”
远程:“<计算机名称〉\WinCC”
3。2 查询语句
“TAG:R,〈ValueID or ValueName〉,〈TimeBegin〉,<TimeEnd>[,〈SQL_clause>][,〈TimeStep〉]"
图14:运行结果
DEMO程序请参考附件中的report_demo_local。xls( 31 KB ) 文件。
5 远程计算机访问
Excel访问远程计算机WinCC的历史数据,需要注意:
5。1 OLE—DB接口
如果客户端计算机没有安装WinCC或者DataMonitor软件,则需要安装Connectivity Pack软件来提供OLE—DB接口。
图10:插入“WinCC HMIRuntime 1。0 Type Library"对象
(2)创建连接字符串:
(3)转换查询时间为UTC时间:
(4)四个参数值的查询(以查询“进口温度"为例):
4。2。3调用脚本
在时间控件Change事件中调用子程序get_wincc_data :
4。2.4运行Excel中的脚本
首先要设置宏的安全性为“中"或“低”(不建议使用):

WinCC与Excel,VB的本地DDE通讯

WinCC与Excel,VB的本地DDE通讯

WinCC与Excel、VB的本地DDE通讯WinCC Communication with Excel,VB Via DDE摘要WinCC与Excel、VB的本地DDE通讯关键词WinCC ,Excel,VB,DDEKey Words WinCC ,Excel,VB,DDEA&D Service & Support Page 2-11目录1 WinCC 作为DDE的服务器, Excel 作为DDE客户端 (4)2 WinCC 作为DDE的服务器, VB 作为DDE客户端 (6)3 WinCC 作为DDE的客户端,Excel 作为DDE服务器(本地) (7)4 WinCC 作为DDE的客户端,VB作为DDE服务器(本地) (8)附录-推荐网址 (11)A&D Service & Support Page 3-111 WinCC 作为DDE的服务器, Excel 作为DDE客户端1) 打开WinCC项目,在WinCC Explorer 中“计算机属性->启动”中添加应用程序: DdeServ.exe,同时添加命令行参数: /v /n 。

2) 激活WinCC 后,会弹出 WinCC DDE-Server 对话框,点击 Tag List 按钮:A&D Service & Support Page 4-11在列表中选择想要访问的变量,点击“确定”,这样该变量的连接信息就被拷贝到Windows 剪贴板。

A&D Service & Support Page 5-113) 打开Excel,任意(双击)选中一个单元格,将Windows剪贴板的内容拷贝到该单元格中,然后在第一个字符前添加“=”,这样就完成对单元格的输入。

这时在Excel中就能够得到WinCC的内部和外部过程数据了。

4) 如果要访问多个变量,请重复步骤 2) 和 3)。

注意:1) DdeServ.exe 需要一直运行。

怎么才能把Excel里面的数据导入WINCC中

怎么才能把Excel里面的数据导入WINCC中

按照你的思路,在下就提供一些东西给你参考一下吧!1、你可以先做一个SetPointToPLC.xls文件,把你要设定的数据写到这个excel文件里面,保存到D盘的根目录里面。

如下图:2、在你WinCC画面上做个按钮,在这个按钮的鼠标事件里面写点C脚本:如下#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){#pragma code("Shell32.dll")//调用动态链接库__object* pExcel = NULL; //建立pExcel 指针用来对EXCEL 进行操作HWND handle=NULL;handle=FindWindow(NULL,"WinCC-运行系统- ");pExcel = __object_create("Excel.Application");//pExcel->Visible = 0;//控制excel文件是否可见,当1时,excel文件可见.pExcel->Workbooks ->Open ("d:\\SetPointToPLC.xls");SetTagFloat("NewTag1",pExcel->Worksheets("sheet1")->Range("B2")->V alue);//将excel文件B2里面的内容写到外部变量NewTag1SetTagFloat("NewTag2",pExcel->Worksheets("sheet1")->Range("B3")->V alue);//将excel文件B3里面的内容写到外部变量NewTag2//如果要增加写到PLC里面的变量,在这里添加上面类似的语句。

excle导入到WINCC

excle导入到WINCC

site: android+怎么才能把Excel里面的数据导入WINCC中组态说明WinCC 变量可以使用Smart Tools “V ariables Import/Export” (V arExim.exe) 软件工具和“Configuration Tool” 软件工具进行导出和导入。

这些软件工具作为标准随WinCC 一起提供。

必须通过WinCC 安装程序进行安装。

有关这些工具的安装、使用方法及处理等详细信息,可以从WinCC 信息系统(在线帮助)的“Smart Tools”路径中获得。

一变量导出/导入(varexim.exe)1.简要说明该工具软件程序从打开的项目中将所有的链接、数据结构和变量导出到相应的ASCII 文件里,然后,用户就可以将它们导入到另外一个项目中去。

ASCII 格式方便用户在再次导入之前用电子表格程序对这些链接、数据结构和变量进行处理。

“WinCC Data Manager (T ag Management)” 中的所有变量全部被导出。

不能导出某个变量。

在执行导入操作时,可以选择:? 导入(只向WinCC 导入其中没有的变量)? 导入覆盖(导入文件中的所有变量全都导入到WinCC 中。

)2.变量再分配不能进行变量在分配说明:不能将变量分配给另外的组或链接。

如果要将变量(包括结构变量)分配给另一个链接或组,那么在导入数据之前,必须在WinCC Explorer 里将该变量删除。

导入后又重新创建这些变量。

警告!在这种情况下,TagLogging,AlarmLogging 或TextLibrary 里任何当前引用均会丢失。

3.重命名变量不能进行重命名变量说明:如果变量需要重命名,要求用新变量名通过变量导入来重新创建。

使用旧名称的变量必须手动删除。

警告!TagLogging, AlarmLogging 或Text Library 中的当前引用必须手工改正。

4.似然性检查? 在数据编辑期间不进行似然性检查,只有在数据导入时才进行似然性检查。

WinCC和EXCEL数据传递

WinCC和EXCEL数据传递

------------------------------------------------------------------------------ 1、DDE 简介动态数据交换(DDE )是基于Windows 的消息机制,两个Windows 应用程序通过相互之间传递消息进行 对话", 这两个程序被分别称为 服务器”和客户”。

DDE 服务器是一个维护着其他 Windows 程序可能使用的数据程序,而 DDE 客户则是从服务器获得这些数据的程序。

DDE 对话是由客户程序发动的。

客户程序将一条称为WM_DDE 」NTITIATE 的消息发给当前运行的所有 Windows 程序,这条消息指明了客户程序所需要的数据类别,拥有这些数据的DDE 服务器可以响应这条消息,这样一个对话就开始了。

DDE 的对话方式有3种:①服务器数据变化时,直接把数据送给客户,由客户对这些数据进行处理,这类对话方 式称为热链;②服务器的数据变化时,服务器通知客户,再由客户取数据,这种方式称为温链;③由客户申请数据、服务器发送数据的方式称为冷链。

一、Wincc 作为DDE 的客户端,Excel 作为DDE 服务器(本地)1、在变量管理上按鼠标右键——添加新的驱动程序——选“ windows dde.chn\H ' ViioCCEsp lc?i «r = t 八Fi: Mr M . Fx图12、在DDE 上按鼠标右键――新驱动程序连接――点属性,在其连接属性中:"计算机名称"为空;“应用程序”为 excel ;"主题”为[]工作表名,比如[DDE.xls ]sheet14'啊片當 nffi-^l -LA ')>□ * ■** :::zp'.i>Jfrr*r 心 *irir.— M ■彳:匚二|IHr J _ WS-:勺丄二卫件⑨ mti« *勾g 工鼻⑴崎创卸D 皿 ・U 'M 盍I「33 cf ED-S,«ESLnW ■»■gasr ra;s 爼u+KtLSWC)点9斤7>忒吨呼JpZR ■计■現d) : ~jj b s&d ri cwXW&d.1 }viinito*t M <hl~«MK(D :■"啊!甲机 1-7)打河d I=B 薛 阪&~■蠹rt»E ■IvlAviUrt«Q?图23、在DDE'excel 下建变量,在变量属性中选择地址,条目名称填:r 行数c 列数,比如ricl (表示第一行第一列的单元格),重复步骤3可以加入更多的DDE 变量图34、Excel 程序n c i/ t..W I NCC —Ivxcc I 数抓代送测试2 OU ^16-1)44g iivcc 堡晦 LQ4 wince 窒畳工O讦ISM 配wince 3 ■■M L qo* &0 jp<1 wince 变畳彳出®0 辭0祚K 】几71T win<c^i|:5a 4*0打■泄打 $ WJ1K4■-哽 ftC.Q«w 警・須旨力 0讪itetf 陶量7 ・aru adOT□ 5M 疔■】出1T15 whtcc^E JR8Q字m 样■::«£ itHwinced A?W_«1Q9LOW 瞽・心匾I 二图4 Wincc 程序图55 完成用OPC做比较省事。

WINCC与EXCEL的联接

WINCC与EXCEL的联接

WINCC与EXCEL的联接1 WinCC 作为DDE 的服务器,Excel 作为DDE 客户端1) 打开WinCC 项目,在WinCC Explorer 中"计算机属性->启动"中添加应用程序:DdeServ.exe,同时添加命令行参数:/v /n 。

2) 激活WinCC 后,会弹出WinCC DDE-Server 对话框,点击Tag List 按钮:在列表中选择想要访问的变量,点击"确定",这样该变量的连接信息就被拷贝到Windows 剪贴板。

3) 打开Excel,任意(双击)选中一个单元格,将Windows 剪贴板的内容拷贝到该单元格中,然后在第一个字符前添加"=",这样就完成对单元格的输入。

这时在Excel 中就能够得到WinCC 的内部和外部过程数据了。

4) 如果要访问多个变量,请重复步骤2)和3)。

注意:1) DdeServ.exe 需要一直运行。

2) 这种连接是单向的。

2 WinCC 作为DDE 的服务器,VB 作为DDE 客户端1) 打开WinCC 项目,在WinCC Explorer 中"计算机属性->启动"中添加应用程序: DdeServ.exe,同时添加命令行参数:/v /n 。

2) 激活WinCC。

3) 打开VB,在窗体上放置TextBox 控件,设置该控件的下列属性:a) LinkTopic=WinCC|\\计算机名称\该WinCC 项目的文件夹的共享名\该WinCC 项目名.mcpb) LinkItem=WinCC 的变量名称c) LinkMode=Automatic。

只要该属性一生效,此TextBox 控件就能在编辑状态下取得WinCC变量的值。

3 WinCC 作为DDE 的客户端,Excel 作为DDE 服务器(本地)1) 打开WinCC Explorer,在"变量管理"中建立"WINDOWS DDE"通道和连接,其连接属性中:"计算机名称"为空;"应用程序"为Excel;"主题"为[Excel 文件名] 工作表名,比如[book1.xls] sheet1。

wincc和excel之间的数据读写

wincc和excel之间的数据读写

objExcelApp.Workbooks.Close
objExcelApp.Quit
Set ObjEXceLapp = Not过上面的语句关闭刚才打开的excel程序了
coldold.Write
'最后是把读到的excel值从临时变量coldold中写入它对应的"usercodeold1"变量中
Dim ObjExcelApp
Set objExcelApp = CreateObject("Excel.Application")
'objExcelApp.Visible = True
objExcelApp.Workbooks.Open MyFile
'上面的程序段是为了打开d盘下叫Excelcode.xls名字的excel文件
End Sub
objExcelApp.worksheets ("sheet1").Cells(1, 1).VAlue = HMIRuntime.Tags("usercodenew1").read
objExcelApp.ActiveWorkbook.Save
'上面两行的作用是将wincc变量"usercodenew1"的值写到Excel表中的A1格子里面,并且保持一下
Dim coldold
Set coldold=HMIRuntime.Tags("usercodeold1")
coldold.Value = objExcelApp.worksheets ("sheet1").Cells(1, 1).value
'上面这两句的作用是将刚才保持到Excel表格中的数据重新读回wincc,存到"usercodeold1"变量中,当然现在其实并没有存入"usercodeold1"变量,只是存在了叫coldold的临时变量里面

excel怎么读取wincc归档数据库

excel怎么读取wincc归档数据库

虽然这例子在西门子官方文档上已经有过例子,但作为刚刚接触这块的新手拿到官方的remote-xls还是有些摸不着头脑,不断报错自动化错误8000005,看了网上的例子可以通过WINCCOLEDB来完成,最后终于搞出来了,给大家分享一下,我使用的wincc 7.0 Sp3的软件第一步归档变量设置归档变量设为1分钟,可以按你需要的设,不影响请注意一点要在wincc启动当中选择变量记录否则会报错invalid object name dbo.Achive第二步在excel当中设置创建模板日历控件通过插入控件Microsoft Date and picker 来完成的,注意某些office 没有工具箱控件,需要在文件下的选项中插入开发工具来完成在开发工具下的Visual Basic编辑器中sheet1插入以下脚本Dim sPro, sDsn, sSer, sCon, sSqlDim conn, oRs, oComDim DSNNameDim i As IntegerDim sStart, sStop As String'---声明Sub get_wincc_data()Set DSNName = CreateObject("CCHMIRuntime.HMIRuntime")sDsn = DSNName.Tags("@DatasourceNameRT").Read'读取当前使用数据库,一定要加两句脚本,官方文档就没有'--Get Database DSN name-----------------------------------'--build connection string-----------------------------------sPro = "Provider=WinCCOLEDBProvider.1;" '安装connectivity pack后使用wincc OLE-DB进行连接数据sDsn = "Catalog=" & sDsn & ";" '从sdsn为前面获取的数据库sSer = "Data Source=.WinCC" '本地计算机为.Wincc 远程可参考官方文档sCon = sPro & sDsn & sSer '通讯内容为协议+数据库+计算机名Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.CursorLocation = 3conn.OpenSet oRs = CreateObject("ADODB.Recordset")Set oCom = CreateObject("mand")mandType = 1Set oCom.ActiveConnection = conn'查询启止时间 ,由于本地添加了Date time picker控件,所以下面调用控件函数,0和23不需要改sStart = Year(DTPicker1.Value) & "-" & Month(DTPicker1.Value) & "-" & Day(DTPicker1.Value) & " 00:00:00"sStop = Year(DTPicker1.Value) & "-" & Month(DTPicker1.Value) & "-" & Day(DTPicker1.Value) & " 23:00:00"'转为UTC时间sStart = DateAdd("h", -8, CDate(sStart)) ‘改为格林威治标准时间sStop = DateAdd("h", -8, CDate(sStop))'读取归档变量sSql = "Tag:R,('ProcessValueArchiveNewTag'),'" & sStart & "','" & sStop & "' order by datetime"mandText = sSql '把text值放入需要通信的包中Set oRs = oCom.Execute ’执行通信包If (oRs.EOF) Then '如果检测到空行,则oRs关闭oRs.CloseElseoRs.MoveFirsti = 0Do While Not oRs.EOFSheet1.Cells(i + 4, 2) = oRs.Fields("RealValue").Value '从第四行第二列开始赋值,行数不断递增oRs.MoveNexti = i + 1Loop ' do while ... loop循环oRs.CloseEnd IfSet oRs = Nothing '释放资源Set conn = Nothing '关闭通信End SubPrivate Sub DTPicker1_Change() '如果日历控件改变日期则开始运行函数clear_cell '清除已经填充的数据get_wincc_data '读取WinCC历史数据End SubSub clear_cell()For i = 4 To 27 '清空第4行到27行,因为1天24小时,后面28行到30行设为最大值最小值,平均值For j = 2 To 5 '清空第二列到第五列Cells(i, j) = ""Next jNext iEnd Sub在workbook页中添加脚本Private Sub workbook_Open()Sheet1.DTPicker1.Height = 16Sheet1.DTPicker1.Width = 120Sheet1.DTPicker1.Value = NowEnd Sub注意一点因为前面引用函数HMIRuntime“Set DSNName = CreateObject("CCHMIRuntime.HMIRuntime")sDsn = DSNName.Tags("@DatasourceNameRT").Read'”必须在VB编辑器中引用HMIRuntime库控件结果如下以上是步骤流程,希望大家能派上用场,有什么不明白的大家一起交流学习,wincc用上sql server东西太多了,需要在该领域不断探究学习。

wincc和excel之间的数据读写

wincc和excel之间的数据读写

wincc和excel之间的数据读写Sub X6309X94AE9X0000X6539_OnClick(Byval Item)Dim fso,myfileSet fso = CreateObject("scripting.FileSystemObject")Set MyFile = fso.GetFile("d:\Excelcode.xls")Dim ObjExcelAppSet objExcelApp = CreateObject("Excel.Application")'objExcelApp.Visible = TrueobjExcelApp.Workbooks.Open MyFile'上面的程序段是为了打开d盘下叫Excelcode.xls名字的excel文件objExcelApp.worksheets ("sheet1").Cells(1, 1).VAlue = HMIRuntime.Tags("usercodenew1").readobjExcelApp.ActiveWorkbook.Save'上面两行的作用是将wincc变量"usercodenew1"的值写到Excel 表中的A1格子里面,并且保持一下Dim coldoldSet coldold=HMIRuntime.Tags("usercodeold1")coldold.Value = objExcelApp.worksheets ("sheet1").Cells(1, 1).value'上面这两句的作用是将刚才保持到Excel表格中的数据重新读回wincc,存到"usercodeold1"变量中,当然现在其实并没有存入"usercodeold1"变量,只是存在了叫coldold的临时变量里面objExcelApp.Workbooks.CloseobjExcelApp.QuitSet ObjEXceLapp = Nothing'到这里为止,我们可以通过上面的语句关闭刚才打开的excel程序了coldold.Write'最后是把读到的excel值从临时变量coldold中写入它对应的"usercodeold1"变量中End Sub。

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

1、DDE简介动态数据交换(DDE)是基于Windows的消息机制,两个Windows应用程序通过相互之间传递消息进行“对话”,这两个程序被分别称为“服务器”和“客户”。

DDE服务器是一个维护着其他Windows程序可能使用的数据程序,而DDE客户则是从服务器获得这些数据的程序。

DDE对话是由客户程序发动的。

客户程序将一条称为WM_DDE_INTITIATE的消息发给当前运行的所有Windows 程序,这条消息指明了客户程序所需要的数据类别,拥有这些数据的DDE服务器可以响应这条消息,这样一个对话就开始了。

DDE的对话方式有3种: ①服务器数据变化时,直接把数据送给客户,由客户对这些数据进行处理,这类对话方式称为热链;②服务器的数据变化时,服务器通知客户,再由客户取数据,这种方式称为温链;③由客户申请数据、服务器发送数据的方式称为冷链。

一、Wincc作为DDE的客户端,Excel作为DDE服务器(本地)1、在变量管理上按鼠标右键--添加新的驱动程序--选“windows dde.chn”图12、在DDE上按鼠标右键--新驱动程序连接--点属性,在其连接属性中:“计算机名称”为空;“应用程序”为excel;“主题”为[]工作表名,比如[DDE.xls]sheet1。

图23、在DDE\excel下建变量,在变量属性中选择地址,条目名称填:r行数c列数,比如r1c1(表示第一行第一列的单元格),重复步骤3可以加入更多的DDE变量图34、Excel程序图4Wincc程序图55完成用OPC做比较省事。

WinCC做OPC Server,Excel做OPC Client。

这种情况下,WinCC端不需要做任何设置,只要在Excel 里用少量的代码就能实现双方的通讯。

对于WINCC与S7-300的通讯,首先要确定PLC的通讯口类型,PLC一般都集成了MPI/DP口,还可以安装通讯模块。

计算机(PC)上安装适当的通讯卡(不同的通讯卡支持的通讯协议不同)。

看你需要啦!其次是WINCC软件里的通讯协议要与PC机对应。

WINCC提供了SIMATIC S7 PROTOCOL SUITE 通讯驱动程序,包含了多种通讯协议!最终还有自己亲自实际操作了才有深刻的了解的!!Sub X6309X94AE9X0000X6539_OnClick(Byval Item)Dim fso,myfileSet fso = CreateObject("scripting.FileSystemObject")Set MyFile = fso.GetFile("d:\Excelcode.xls")Dim ObjExcelAppSet objExcelApp = CreateObject("Excel.Application")'objExcelApp.Visible = TrueobjExcelApp.Workbooks.Open MyFile'上面的程序段是为了打开d盘下叫Excelcode.xls名字的excel文件objExcelApp.worksheets ("sheet1").Cells(1, 1).VAlue = HMIRuntime.Tags("usercodenew1").readobjExcelApp.ActiveWorkbook.Save'上面两行的作用是将wincc变量"usercodenew1"的值写到Excel表中的A1格子里面,并且保持一下Dim coldoldSet coldold=HMIRuntime.Tags("usercodeold1")coldold.Value = objExcelApp.worksheets ("sheet1").Cells(1, 1).value'上面这两句的作用是将刚才保持到Excel表格中的数据重新读回wincc,存到"usercodeold1"变量中,当然现在其实并没有存入"usercodeold1"变量,只是存在了叫coldold的临时变量里面objExcelApp.Workbooks.CloseobjExcelApp.QuitSet ObjEXceLapp = Nothing'到这里为止,我们可以通过上面的语句关闭刚才打开的excel程序了coldold.Write'最后是把读到的excel值从临时变量coldold中写入它对应的"usercodeold1"变量中End Sub上面这个例子已经调试通过。

网上有很多wincc值写入excel中的例子,一直找不到从excel中读取数据到wincc中的例子,结合网上朋友的一些经验,这里给出个小例子,供大家参考。

估计考虑到后些天要用到EXCEL与WINCC的通讯,我看了些书,在西门子的论坛上看到了一个现场做好的通讯成功例子.通过自己来做,通讯成功.例子地址:/club/bbs/post.asp?b_id=5&a_id=53940&s_id=0&num=49#anch现总结一下:1 WINCC作为OPC服务器,勿需添加OPC通道.在例子中,只在内部变量中,建立6个内部变量,内部变量为有符号的16位数,名称分别为,a,b,c,d,e,f.(当然如果身边有PLC在,可以建立过程变量,为了方便运行,建立内部变量),分别在a,b,c,d,e,f中的限制/报表中,设置其开始值,为1,2,3,4,5,6.注意:计算机-->属性中的计算机名称要与本计算机名称一致在WINCC中建立一页面,用按钮来改变a,b,c,d,e,f的值,如果通讯成功,在EXCEL中也会随之改变.2 新建立一个EXCEL文件,打开文件,工具-->宏-->VB编辑器,打开EXCEL的VB 编辑器.3 在VB编辑器里,工具-->引用,在弹出窗口中,找Siemens OPC DAAutomation 2.0,勾上 :)4 双击sheet1,打开sheet1的代码窗口,然后将程序(程序代码在页面的最后)复制到代码窗口.5 在EXCEL的上分别对应C2-->计算机名 C3-->a C4-->b C5-->c C6-->d C7-->e C8-->f6 在EXCEL总,工具-->宏,选择sheet1.startclient,启动7 完了代码:Option ExplicitOption Base 1Const ServerName = "OPCServer.WinCC"Dim WithEvents MyOPCServer As OPCServerDim WithEvents MyOPCGroup As OPCGroupDim MyOPCGroupColl As OPCGroupsDim MyOPCItemColl As OPCItemsDim MyOPCItems As OPCItemsDim MyOPCItem As OPCItemDim ClientHandles(6) As LongDim ServerHandles() As LongDim Values(1) As VariantDim Errors() As LongDim ItemIDs(6) As StringDim GroupName As StringDim NodeName As StringDim itemv(6) As VariantDim ii As Integer'---------------------------------------------------------------------' Sub StartClient()' 目的:连接至OPC_server,创建组和添加条目'---------------------------------------------------------------------Sub StartClient()' On Error GoTo ErrorHandler'----------- 可以自由选择ClientHandle和GroupNameFor ii = 1 To 6ClientHandles(ii) = iiNext iiGroupName = "MyGroup"'----------- 从单元“A1”得到ItemIDNodeName = Range("c2").ValueItemIDs(1) = Range("c3").ValueItemIDs(2) = Range("c4").ValueItemIDs(3) = Range("c5").ValueItemIDs(4) = Range("c6").ValueItemIDs(5) = Range("c7").ValueItemIDs(6) = Range("c8").Value'----------- 得到一个OPC服务器的实例Set MyOPCServer = New OPCServerMyOPCServer.Connect ServerName, NodeNameSet MyOPCGroupColl = MyOPCServer.OPCGroups'----------- 为添加组设置缺省的激活状态MyOPCGroupColl.DefaultGroupIsActive = True'----------- 添加组至收集Set MyOPCGroup = MyOPCGroupColl.Add(GroupName)Set MyOPCItemColl = MyOPCGroup.OPCItems'----------- 添加一个条目、返回ServerHandlesMyOPCItemColl.AddItems 6, ItemIDs(), ClientHandles(), ServerHandles(), Errors'----------- 用于接受不同的信息组MyOPCGroup.IsSubscribed = TrueExit SubErrorHandler:MsgBox "Error: " & Err.Description, vbCritical, "ERROR"End Sub'---------------------------------------------------------------------' Sub StopClient()' 目的:从服务器释放对象并且断开连接'---------------------------------------------------------------------Sub StopClient()'----------- 释放组和服务器对象MyOPCGroupColl.RemoveAll'----------- 与服务器断开连接并且清除MyOPCServer.DisconnectSet MyOPCItemColl = NothingSet MyOPCGroup = NothingSet MyOPCGroupColl = NothingSet MyOPCServer = NothingEnd Sub'---------------------------------------------------------------------' Sub MyOPCGroup_DataChange()' 目的:组中的数值、质量或时间标志改变时,该事件激活'---------------------------------------------------------------------'----------- 如果OPC-DA Automation 2.1被安装,使用:Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, itemvalues() As Variant, Qualities() As Long, TimeStamps() As Date)'----------- 设置数据表单元值为数值读For ii = 1 To NumItemsitemv(ClientHandles(ii)) = itemvalues(ii)Next iiRange("d3").Value = /qz.q/CStr(itemv(1))Range("d4").Value = /qz.q/CStr(itemv(2))Range("d5").Value = /qz.q/CStr(itemv(3))Range("d6").Value = /qz.q/CStr(itemv(4))Range("d7").Value = /qz.q/CStr(itemv(5))注意:excel启动宏之前先启动WINCC运行。

相关文档
最新文档