当前位置:文档之家› 基于SQL数据库的wincc复杂报表的实现

基于SQL数据库的wincc复杂报表的实现

基于SQL数据库的wincc复杂报表的实现
基于SQL数据库的wincc复杂报表的实现

基于SQL2005的WINCC复杂报表实现方法

The Implementation method of complex Wincc report based on SQL2005

董洪垒王静波河北联合大学电气工程学院

摘要:本文介绍了在Wincc组态环境中,基于SQL数据库和VB-Scirpt编程语言实现自定义Wincc复杂报表的操作方法,结合数据库和VB语言详细阐述了如何对数据进行自定义归档、查询以及导出和编辑。基于模块化的思想,将报表的结构分为数据归档、数据查询、数据显示和数据打印四个模块。详细介绍了各个模块的设计思路以及编程方法,从而有效解决了在Wincc7.0环境中实现复杂数据报表的问题。

关键词:WINCC SQL数据库 复杂报表

Abstract:This paper introduces the wincc7.0configuration environment,and VB-Scirpt based on SQL database programming language to implement custom WinCC operating method of complex reports,combining database and VB language detailing how to customize the data archiving, query, export and edit. Based on modular thinking, to file reports, structured data, data query, data display and data printing up to four modules. Details on each module design ideas and programming methods, so as to effectively address the complex data reporting issues implemented in a wincc7.0 environment.

Keywords: wincc SQL database complex reports

0 引言

目前在工控领域比较流行的组态软件主要有Wincc、组态王等,以上软件在工业现场应用中对于数据的监控等方面功能强大,但是在报表生成以及处理方面却功能有限,主要表现为格

式较为固定单一,灵活性不高。对于一般对报表要求不高的用户,可以实现简单的数据表格处理,一旦用户提出更高更复杂的要求,以上软件都没有比较直接的方法,从而使报表设计由画面

组态转向对数据库和脚本语言的应用。

西门子公司的Wincc组态软件本身具有数据归档和报表的

处理功能,尤其在Wincc6.0以后的版本中,开始支持SQL数据

库以及VB-Script编程。但是无论何种版本在复杂数据处理中,比如:数据的查询、计算和统计等相对灵活的要求中就显得力不从心。主要表现在Wincc在报表中不能对历史数据进行任意查询和过滤以及相关的统计计算。本文基于毕业设计中的项目开发,实现了一种基于SQL数据库以及VB-Script编程语言实现复杂报表的方法,作为Wincc高级应用中的一种有效探索途径。

1 报表结构的构建

Wincc软件本身虽然提供了数据归档功能和报表编辑功能,但由于固定的格式和一定的功能限制,在项目开发过程中必然

感到报表的灵活性不够,实现复杂报表比较困难。但是Wincc7.0支持SQL2005数据库以及VB-Script,因此可以实现对数据库的

直接操作。基于此,作者结合数据库语言和VB语言的可操作性,将数据归档、查询、显示、打印等过程用编程的方式实现,就可以大大提高归档和报表的灵活性,解决编辑自定义复杂报表的问题。

本文设计的报表系统结构如图1所示,共分为四个部分:

数据归档、数据查询、数据显示和数据导出打印。在数据归档部分中利用Wincc组态软件自带的SQL2005数据库建立相应的数据表格,通过Wincc中的VB—Script全局脚本编辑器实现数据归档。数据查询部分则是在界面中利用按钮的VB动作脚本以及相应的SQL数据库语言进行数据的查询。在数据显示部分中利用Wincc 提供的强大控件(例如本例中使用的M s F lex G rid控件)进行显示。在数据打印部分同样利用按钮的VB动作脚本,将所查询到的数据输出到E xcel电子表格中进行编辑和打印。用户可以随意浏览在任意时间查询到的数据,因为在输出到E xcel表格的同时,已经将生成表格利用脚本保存到系统相应的文件夹中,以

遍日后进行查阅。以下详细介绍各部分的实现方法和主要的程序设计。

2 建立数据源

2.1 在数据库中创建数据库以及相应的数据库表

在系统的数据监控过程中,有大量的数据需要进行归档处理,本文涉及的归档方法与Wincc本身自带的数据归档功能类似,就是利用背景脚本将数据采集并写入数据表中进行保存。1)在数据库中创建名为“300调速称”的数据库

2)在新建立的数据库中建立名为

day,month_A、month_B、month_C的数据表

3)在表中定义相应的字段名称例如ID、日期时间、变量名称、班组名称等

2.2 建立O DBC链

图2:报表系统整体结构图

O DBC (O pen DataBase Connectivity 开放数据库互连)是一个用于访问数据库的统一标准接口,应用程序要访问一个数据库,首先必须用O DBC 管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及O DBC 驱动程序等信息建立数据库与O DBC 的联系。因此,应用程序只需将数据源名提供给O DBC,O DBC 就能建立起与相应数据库的连接。建立数据源的方法可以分为以下几个步骤:

1)打开控制面板,选择管理工具中的数据源,在O DBC 数据源管理器中添加“sql server ”类型的数据源

2)定义数据源的名称属性及提供数据源的服务器名称,选择访问方式等

3)连接服务器后,选择所要连接的数据库的名称“300调速称”4)测试连接,建立数据源。3 数据归档

数据归档模块利用Wincc 的全局脚本实现,在全局脚本中写入代码,选择相应的触发器在固定的时间(比如每一天的最后一秒或者每个月的最后一秒)执行全局脚本,将数据写入相应的数据表中。同时也可以在写入的数据中加入相应的条件,比如当前日期,当前时间,这样在查询数据的时候可以将这些作为查询条件进行筛选,是数据的归档和查询更加灵活。O DBC 数据源支持SQL 语言,因此数据的写入代码将利用VB 结合SQl 语言进行实现。图2是写入数据代码的流程图:关键程序代码:1)读取变量数据

Setacum1 = HM I R untime.Tags ("acum1")

acum1.R ead acum1=acum1.Value 2)链接数据库

sCon = "P rovider =M SDASQL ;DSN =300tsc ;U ID =sa ;P WD =;" Set conn = Create O b j ect ("AD O DB.Connection ") conn.ConnectionString = sCon conn.CursorLocation = 3

conn.O pen

Set o R s = Create O b j ect ("AD O DB.R ecordset ") Set oCom = Create O b j ect ("AD O https://www.doczj.com/doc/198275748.html,mand ") Set oCom.ActiveConnection =conn

https://www.doczj.com/doc/198275748.html,mandType = 13)编辑SQL 语言

sSql1="insert into day (日期时间,年,月,日,第一路,第二路

第三路,第四路,第五路,第六路,第七路,第八路,班次)" sSql1=sSql1&"values (getdate (),Y ear (getdate ()),M onth (get date ()),Day (getdate ()),"

sSql1=sSql1&"'"&acum1&"','"&acum 2&"','"&acum 3&"','"&acu m 4&"','"&acum 5&"','"&acum6&"','"&acum7&"','"&acum 8&"','"&banci &"');"4)执行SQL 语言写入https://www.doczj.com/doc/198275748.html,mandText = sSql1oCom.E xecute 5)释放资源Set o R s = Nothing Set oCom = Nothing conn.Close Set conn = Nothing 4 数据查询和显示

在数据查询和显示部分利用按钮的VB 动作脚本来实现,此方法可以充分发挥VB 编程语言的灵活性以及强大的数据处理能力,对查询到的数据可以进行相应的计算和统计。例如对查询到数据的求平均值和求和运算等。在显示部分同样利用操作VB 提供的M s F lex G rid 控件来进行显示查询到的数据,程序流程图如图3:关键程序代码:1)创建数据库连接sCon =

"P rovider =M SDASQL ;DSN =300tsc ;U ID =sa ;P WD =;" Setconn =Create O b j ect ("AD O DB.Connection ") conn.ConnectionString = sCon conn.CursorLocation = 3

conn.O pen 2)定义查询SQL 语句

sSql1="select * from day where 日期时间 between '"&riqi &"00:00:00' and '"&riqi &" 23:59:59'and 班次='"&banci &"';"3)执行查询语句

Set o R s = Create O b j ect ("AD O DB.R ecordset ")Set oCom = Create O b j ect ("AD O https://www.doczj.com/doc/198275748.html,mand ")

https://www.doczj.com/doc/198275748.html,mandType = 1Set oCom.ActiveConnection = conn

图2:写入数据代码流程

图3:查询显示数据代码流程图

https://www.doczj.com/doc/198275748.html,mandText = sSql

Set o R s1 = oCom.E xecute

m = o R s1.R ecordCount

4)将数据写入到M s F lex G rid控件中

Set oList = ScreenItems("view1")

oList.clear

olist.Text M atrix(rownum-1,3)=ors1.fields(6).value

5 数据的导出和打印

Wincc支持的VB-Script脚本提供了E xcel等办公软件相应的程序接口,因此可以利用VBS脚本将查询到的数据导出到已建立好的E xcel模板中利用E xcel电子表格强大的数据处理能力进行更高级的编辑和打印。程序流程与查询方法类似。

关键代码

1)打开E xcel模板

Setob jE xcelApp=Create O b j ect("E xcel.Application") ob jE xcelApp.Visible = True

ob jE xcelApp.Workbooks.O pen "模板保存路径"

ob jE xcelApp.Worksheets(sheetname).Activate

2)写入数据

ob jE xcelApp.WorkSheets(sheetname).cells(2,2).value=Left (shi j ian,9)

6 报表实现的综合介绍

以上介绍了基于SQL数据库的Wincc复杂报表的实现方法,该方法灵活多变,编程人员可以随意进行数据的读写,不拘泥于本文中的形式。例如可以在写入数据中加入查询条件,可以方便做出复杂的查询等等。对于查询界面中的查询条件需要用Wincc自带的控件进行输入,同时也可以在查询代码中加入更多的统计算法以满足客户的不同需求。E xcel电子表格具有强大的数据处理能力,将查询到的数据导出到电子表格,可以方便操作人员对报表进行美化编辑,做出更加具有专业性的报表。

以下是系统运行效果图

:7 结论

本文结合毕业设计中的实际项目要求,利用数据库语言和VBs语言将Wincc中的数据进行归档、查询、显示和打印,有效的解决了复杂报表的制作问题,同时利用VB的程序接口将数据导出到E xcel电子表格,通过电子表格的数据处理以满足客户的不同需求。

参考文献:

[1]深入浅出西门子WINCC V6(第2版)[M].北京航空航天大学出版社,2004

[2] 数据库应用教程(Visual Basic+SQL Sever)[M].清华大学大学出版社,2008

[3]郭建明,邢晨,刘清.Wincc组态软件中自定义复杂报表的实现[J].工业控制计算机,2007,20(2):1-2

[4]徐志杰.基于高级编程语言Wincc复杂报表管理的实现[J].华电技术,2011.1,33(11):54-56

[5]巩伟,宋勇江,陈庆文.R SVI E W32与VB、E xcel结合的复杂生产报表解决方案[J].自动化技术与应用,2003,22(9):53-55

WinCC的实时数据通过OPC DA记录到MS Access、MS SQL Server和Oracle数据库中的方法指南(中文)

? ???WinCC Industrial Data Bridge WinCC? ??OPC DA? MS Access?MS SQL Server Oracle Ё How to transfer process data of WinCC to MS Access,MS SQL Server and Oracle via WinCC Industrial Data Bridge and OPC DA

? Getting-Started???WinCC ? ?? ? ? ???? ??Oracle 9i????? ?? ?偸? ?? ? ??OPC DA? WinCC? MS Access? MS SQL Server? Oracle Key Words Industrial Data Bridge, OPC DA, WinCC, MS Access, MS SQL Server, Oracle A&D Service & Support Page 2-15

? ? ???:LQ&& ,QGXVWULDO 'DWD %ULGJH :LQ&&? ??23& '$? 06 $FFHVV?06 64/ 6HUYHU 2UDFOH Ё :LQ&& ,QGXVWULDO 'DWD %ULGJH?? ? ?? ??:LQ&& ,QGXVWULDO 'DWD %ULGJH :LQ&&? ??23& '$? 2UDFOH Ё ? ˉ ?? A&D Service & Support Page 3-15

? ???WinCC Industrial Data Bridge WinCC? ??OPC DA? MS Access?MS SQL Server Oracle Ё :LQ&& ,QGXVWULDO 'DWD %ULGJH?? ? WinCC/IndustrialDataBridge( ? ?) ? ? ( )? IT??? ?? ? ????? ?? ? 乚 ??OPC IT?? ?SQL ?? ?? ? ? ( Ё OPC?SQL? OLE-DB?Office? )? ? ? ?????? ???? ?? ??? ? ?? ??? (?????)?? ? OPC DA ? WinCC ⑤???? ? ?? ? ? ?? ?128? 512?2K 10K? ? ?? ? ? ? ???? ??П????“IndustrialDataBridge”?? ? (? ??OPC)???“ IndustrialDataBridge”? OPC ? ? ? ⑤ ?? П???? x??OPC ? ?? ?? ? ? ???SCADA ????? x ?? Excel Accesㄝ ?? ?г ? ?? ? ? ? x SQL ?? ?? ??? ?? ??? ??偅 ?????OPC? ?? ⑤?? ? ? ? ?/ ? ? ? ?? ?x ??? ?? ⑤?? ? ? ? ?? WinCC ?? ?? ? ?? ?? ?OPC DA ???WinAC ODK ?/ ? ?? ? ?? ? ? ?? x ? ? IT? A&D Service & Support Page 4-15

WINCC报表详解

在工业生产中报表一直占有非常重要的部分,它一般用来记录现场的工艺参数和统计信息。早期是由人工抄录然后统计出相关的报表。进入计算机控制阶段,这份工作就需要工控软件来实现。对于工控行业的工程师来说:如何开发适合用户需求的报表一直是个难题。论坛上很多人都在寻求灵活高效的解决方法。 经过这段时间的网上讨论。综合网友们的意见和建议,我们做了总结。并结合WinCC软件本身作了相关的说明。希望能对大家在以后的报表开发中有所帮助。 接下来就从报表的需求分析、WinCC报表系统的应用、复杂报表的WinCC报表系统实现这几个部分来分别介绍。最后总结出WinCC报表系统在应用的优缺点和常见的问题的解决方法。 一.报表的需求分析 从需求上来讲报表一般分为:内容上的需求、样式上和任务上的需求。 1.内容需求内容上一般涉及到数据的求和、平均、最大值、最小值等计算,同时也会涉及到关系的处理,比如班组相关对应信息的统计分析等。下面是一个很典型的报表需求,就很能说明这样的问题: 图1. 月报表分析 此报表是典型的工业现场应用,在数据采集没有难度。唯一的难度在于四班三倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法。此类报表在连续生产的行业需求很广泛。比如:钢铁冶金行业需要一天24小时不停运转的系统。 还有一种内容上是分总的关系,就是一部分是简单的数据记录,另一部分是对上一部分 数据的统计,比如汇总、求和、平均等。如下图也是很典型的应用。

图2. 总分报表 另外一种就是涉及到混合排列的问题,一张表上既有分项数据,中间也涉及到统计信息,同时也会添加一些实时的信息在上面。如下图。 图3. 复杂报表 这是一个复杂的报表,中间涉及到分项的记录,数据求平均,和一些操作信息的记录。既有历史数据也有实时信息。 当然更复杂的报表需求也是有的,比如说涉及到一张报表上既有实时信息又有历史信息同时还涉及趋势视图、报警信息等。用户自己可以灵活的定义报表的内容和样式。比如下图。

wincc中使用VBS脚本读写SQLServer数据库文件

Wincc读写SQLServer数据库 一、在数据库中建立数据库文件,文件名为“读写数据库”,在数据库中建立新的表,命名为“个人信息”分别建立编号、姓名、年龄。 二、数据库中建立表后,在wincc中建立与数据库中类型相同的变量,变量类型相同在读写数据时很重要。在图形编辑器中新建画面,并在画面中增加三个输入输出域,并连接变量。 三、添加两个按钮控件,分别命名为写数据、读数据 1、在写数据按钮中写入一下VBS脚本 wincc变量写入数据库 定义变量 Dim sCon Dim sSql Dim oRs Dim conn Dim oCom Dim Con Dim Data1, Data2, Data3 ‘读取wincc变量 Data1=HMIRuntime.tags("编号").read Data2=HMIRuntime.tags("姓名").read Data3=HMIRuntime.tags("年龄").read ‘连接数据库 Con="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=读写数据库;Data Source=.\WINCC" Set conn = CreateObject("ADODB.Connection") conn.ConnectionString = Con conn.CursorLocation = 3 conn.Open ‘写入数据库 sSql="insert into个人信息V ALUES('" & Data1 & "','" & Data2&"','"&Data3&"');" Set oRs = CreateObject("ADODB.Recordset") Set oCom = CreateObject("https://www.doczj.com/doc/198275748.html,mand") Set oCom.ActiveConnection = conn https://www.doczj.com/doc/198275748.html,mandType = 1 https://www.doczj.com/doc/198275748.html,mandText = sSql Set oRs = oCom.Execute Set oRs = Nothing conn.Close Set conn = Nothing 在实际项目中需要修改的只有定义变量时增加或减少数据data的个数,Data1=HMIRuntime.tags("编号").read中的变量名,数据库的名字,以及数据库的表名 2、在读数据按钮中写入一下VBS脚本

WinCC数据报表实现方法介绍

WinCC数据报表实现方法介绍 在工业生产中报表一直占有非常重要的部分,它一般用来记录现场的工艺参数和统计信息。早期是由人工抄录然后统计出相关的报表。进入计算机控制阶段,这份工作就需要工控软件来实现。对于工控行业的工程师来说:如何开发适合用户需求的报表一直是个难题。 接下来就从报表的需求分析、WinCC报表系统的应用、复杂报表的WinCC报表系统实现这几个部分来分别介绍。最后总结出WinCC报表系统在应用的优缺点和常见的问题的 解决方法。 1.报表的需求分析 从需求上来讲报表一般分为:内容上的需求、样式上和任务上的需求。 内容需求 内容上一般涉及到数据的求和、平均、最大值、最小值等计算,同时也会涉及到关系 的处理,比如班组相关对应信息的统计分析等。下面是一个很典型的报表需求,就很能说明这样的问题: 图1. 月报表分析 此报表是典型的工业现场应用,在数据采集没有难度。唯一的难度在于四班三倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法。此类报表在连续生产的行业需求很广泛。比如:钢铁冶金行业需要一天24小 时不停运转的系统。 还有一种内容上是分总的关系,就是一部分是简单的数据记录,另一部分是对上一部

分数据的统计,比如汇总、求和、平均等。如下图也是很典型的应用: 图2. 总分报表 另外一种就是涉及到混合排列的问题,一张表上既有分项数据,中间也涉及到统计信息,同时也会添加一些实时的信息在上面。如下图: 图3. 复杂报表 这是一个复杂的报表,中间涉及到分项的记录,数据求平均,和一些操作信息的记录。既有历史数据也有实时信息。 当然更复杂的报表需求也是有的,比如说涉及到一张报表上既有实时信息又有历史信息同时还涉及趋势视图、报警信息等。用户自己可以灵活的定义报表的内容和样式。比

最新wincc生成excel

1 给wincc中通过vbs写excel的方式做报表的初学者一点脚本我对该帖子不做任何限制,都可以自由拷贝使用。方便初学者学习! //log子程序,40个数据记录,总共记录一周时间,写入excel,放到wincc 全局脚本中一分钟运行一次 //如果是要整点报表也简单,判断一下当前的系统时间,t的初始值根据当前时间定义。 //本程序主要是演示数据记录的过程。 //在c:\建立一个excel文件,该文件可以是你的报表模版 Option Explicit Function action Dim objExcelApp,objExcelbook,objExcelSheet Dim tagshijian,sheetname,username,zhushi Dim tagday Dim a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a1 8,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a3 5,a36,a37,a38,a39,a40

Dim i,j,t,count Dim msg Dim patch,fn Dim d,m,y,oh,mm,ss d=" " m="-" y="-" oh=":" mm=":" ss="" msg="记录报表成功" fn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now)) patch="c:\"&fn&".xls" Set a1=HMIRuntime.Tags("a1") Set a2=HMIRuntime.Tags("a2") Set a3=HMIRuntime.Tags("a3") Set a4=HMIRuntime.Tags("a4") Set a5=HMIRuntime.Tags("a5")

WINCC数据库画面引用

来做了一个WinCC与数据库连接的程序,功能如下: 1、要求用户输入“实验目的”和“实验日期”,点击“建立表格”,则在数据库中创建了以“实验目的+时间”为名字的表 2、点击“连接数据库”连接上数据库,并开始写入数据 3、点击“断开数据库”则停止记录数据 做法: 通过一个数字量来判断数否记录数据,若该数字量是1则开始记录数据,否则停止。记录数据的时间间隔是1秒 在”建立表格“键入代码: Dim objConnection Dim strConnectionString Dim strSQL Dim objCommand Dim objscreen Dim obj_item Dim obj_item1 Dim biaoming Dim shjian Set shjian = HMIRuntime.Tags("shjian") Set biaoming = HMIRuntime.Tags("biaoming") Set objscreen=HMIRuntime.Screens("database") Set obj_item=objscreen.ScreenItems("IOField1") Set obj_item1=objscreen.ScreenItems("IOField") 注:不同界面的不同对象的引用方法 If shjian.Read= "" Or biaoming.Read= "" Then MsgBox "Please enter the table name and date!" Else strConnectionString = "Provider=MSDASQL;DSN=t;UID=;PWD=;" strSQL="create table " & Trim( obj_item.OutputValue ) & Trim( obj_item1.OutputValue ) & " (name varchar(64),age varchar(20))" 注:这是两个输入控件的连接方法(建立的表格) Set objConnection = CreateObject("ADODB.Connection") objConnection.ConnectionString = strConnectionString objConnection.Open Set objCommand = CreateObject("https://www.doczj.com/doc/198275748.html,mand") With objCommand .ActiveConnection = objConnection .CommandText = strSQL End With

WINCC中使用ADO对象连接数据库 例子 常用属性 方法

在WINCC中连接数据库可以使用ADO控件进行连接数据库,但是通常都不是用的ADO控件进行连接数据库,以下讲讲winccZ中使用ADO对象连接查询数据库。以下以报警记录为例。 一、了解ADO对象 1.1ADO对象操作数据库是微软提供的一种接口。 1.2对ADO对象的访问使用CreateObject函数(详情请参看CreateObject函数资料) ADO组件的前缀是ADODB,所以访问的时候必须为ADODB.XX(X代表对象) eg: dim conn,oRs,oCom Set conn = CreateObject("ADODB.Connection") 'Connection对象 Set oRs = CreateObject("ADODB.Recordset") 'ADODB.Recordset对象 Set oCom = CreateObject("https://www.doczj.com/doc/198275748.html,mand") 'https://www.doczj.com/doc/198275748.html,mand命令对象 二、对象 2.1 Connection 对象 2.1.1 open 方法 语法 connection.Open ConnectionString,UserID,Password,OpengOptions 说明 ConnectionString:可选参数,字符串,包含连接信息 UserID:可选参数,字符串,包含建立连接时候用的用户名 Password:可选参数,字符串,包含建立连接时候用密码 OpenOptions:可选参数,连接打开方式 eg1:(连接数据库代码方法1,仅连接部分代码) Dim conn Dim tagDSNName Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT") Set conn = CreateObject("ADODB.Connection") conn.ConnectionString = "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC" conn.CursorLocation = 3 conn.Open

用户归档实现wincc报表

使用用户归档实现报表简介Use User Archive Create Report

摘要 简单介绍了用户归档,介绍如何通过用户归档和WinCC报表编辑器实现复杂报表。 关键词 用户归档,报表 Key Words User Archive ,Report IA&DT Service & Support Page 2-17

目录 使用用户归档实现报表简介 (1) 一.用户归档介绍 (4) 二.用户归档的使用 (6) 三.结合用户归档实现报表 (8) 1.数据的存储 (9) 2.报表布局的设计 (12) 3.报表输出 (14) 附录-推荐网址 (17) IA&DT Service & Support Page 3-17

一.用户归档介绍 用户归档编辑器是一个WinCC的附加选件,需要安装相应的授权才能使用,否则只能使用DEMO模式。 它可以用来在服务器 PC 上连续的保存来自技术过程的数据。 在图形编辑器中,可以组态 WinCC 用户归档表格元素来以表格显示运行系统中用户归档的在线数据。用户归档还可用于准备自动化系统(例如 S5、S7)的数据。如果必要,数据可以配方或设定值的形式从控制器读出。 用户归档编辑器提供两种数据库表格: 用户归档: 用户归档是用户可在其中创建自己的数据域的数据库表格。 用户归档用于存储数据,并根据 SQL 数据库规则提供对这些数据的标准化访问。 视图: 视图接收来自用户归档的数据并用于数据的相加,例如,为获得有关产品组的概述。 其在WinCC默认情况下是不会被安装的。可以通过以下步骤安装。插入WinCC安装光盘,选择安装SIMATIC WinCC,弹出界面(图1),选择安装或者卸载的组件,在弹出的选择组件界面中左侧选择选项,右侧选中用户归档,点击下一步开始安装。 图1 安装卸载 IA&DT Service & Support Page 4-17

wincc生成excel

给wincc中通过vbs写excel的方式做报表的初学者一点脚本 我对该帖子不做任何限制,都可以自由拷贝使用。方便初学者学习! //log子程序,40个数据记录,总共记录一周时间,写入excel,放到wincc 全局脚本中一分钟运行一次 //如果是要整点报表也简单,判断一下当前的系统时间,t的初始值根据当前时间定义。//本程序主要是演示数据记录的过程。 //在c:\建立一个excel文件,该文件可以是你的报表模版 Option Explicit Function action Dim objExcelApp,objExcelbook,objExcelSheet Dim tagshijian,sheetname,username,zhushi Dim tagday Dim a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21, a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40 Dim i,j,t,count Dim msg Dim patch,fn Dim d,m,y,oh,mm,ss d=" " m="-" y="-" oh=":" mm=":" ss="" msg="记录报表成功" fn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now)) patch="c:\"&fn&".xls" Set a1=HMIRuntime.Tags("a1") Set a2=HMIRuntime.Tags("a2") Set a3=HMIRuntime.Tags("a3") Set a4=HMIRuntime.Tags("a4") Set a5=HMIRuntime.Tags("a5") Set a6=HMIRuntime.Tags("a6") Set a7=HMIRuntime.Tags("a7") Set a8=HMIRuntime.Tags("a8") Set a9=HMIRuntime.Tags("a9") Set a10=HMIRuntime.Tags("a10") Set a11=HMIRuntime.Tags("a11") Set a12=HMIRuntime.Tags("a12") Set a13=HMIRuntime.Tags("a13") Set a14=HMIRuntime.Tags("a14") Set a15=HMIRuntime.Tags("a15")

wincc与SQL数据库交换数据

wincc与SQL数据库交换数据 2007-5-14 21:52 提问者:43494538|悬赏分:10 |浏览次数:1948次 查了一下午资料这是我写的VBS程序用来写数据到SQL数据库程序还是不能正常运行到cn.open语句时停止请各位高手指点一下万分感谢Dim strcn,cn,a,b,c Dim is_SQL,rscom Set cn=CreateObject("ADODB.Connection") Set rscom=CreateObject("ADODB.Recordset") a=HMIRuntime.Tags("text").Read b=HMIRuntime.Tags("text1").Read c=HMIRuntime.Tags("text2").Read strcn="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=banpi;Data Source=123\wincc" 'banpi是在SQL数据库建立的database,123是wincc中建立的项目 cn.ConnectionString=strcn is_SQL ="insert into panpi(yuanliao,chang,kuan) Values('"&a&"','"&b&"','"&c&"')" 'panpi是banpi数据库下的一个table cn.open '测试时程序到这里不往下走应该是连接SQL数据库出错了吧cn.Execute is_SQL

在wincc 中怎么做才能把报表生成按日期的excel 文件

在wincc 中怎么做才能把报表生成按日期的excel 文件在wincc 中怎么做才能把报表生成按日期的Excel 文件 VBS脚本实现,就是把文件名称以变量的形式表示。参考 '关闭保存 Dim patch,filename filename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(N ow))+CStr(Minute(Now))&CStr(Second(Now)) patch= "d:\"&filename&"demo.xls" objExcelApp.ActiveWorkbook.SaveAs patch objExcelApp.Workbooks.Close objExcelApp.Quit Set objExcelApp= Nothing 对于Excel报表,用VBS最灵活,Excel 定义好格式后wincc来填空,平均累计值就用Excel 的功能。 Dim excelapp Dim aa,bb,cc Set excelapp = CreateObject("Excel.Application") Set aa = HMIRuntime.tags("tag1") excelapp.visible = False'True excelapp.workbooks.open "D:\excel.xls" bb = Now 'getcurrent_datetime() aa.Read MsgBox CStr(bb) excelapp.cells(1,1).value = "rrrrrr"'111111 excelapp.cells(1,2).value = CStr(bb)

WinCC和EXCEL数据传递

1、DDE简介 动态数据交换(DDE)是基于Windows的消息机制,两个Windows应用程序通过相互之间传递消息进行“对话”,这两个程序被分别称为“服务器”和“客户”。DDE服务器是一个维护着其他Windows程序可能使用的数据程序,而DDE 客户则是从服务器获得这些数据的程序。 DDE对话是由客户程序发动的。客户程序将一条称为WM_DDE_INTITIATE的消息发给当前运行的所有Windows 程序,这条消息指明了客户程序所需要的数据类别,拥有这些数据的DDE服务器可以响应这条消息,这样一个对话就 开始了。 DDE的对话方式有3种: ①服务器数据变化时,直接把数据送给客户,由客户对这些数据进行处理,这类对话方式称为热链;②服务器的数据变化时,服务器通知客户,再由客户取数据,这种方式称为温链;③由客户申请数据、 服务器发送数据的方式称为冷链。 一、Wincc作为DDE的客户端,Excel作为DDE服务器(本地) 1、在变量管理上按鼠标右键--添加新的驱动程序--选“windows dde.chn” 图1 2、在DDE上按鼠标右键--新驱动程序连接--点属性,在其连接属性中: “计算机名称”为空;“应用程序”为excel;“主题”为[]工作表名,比如[DDE.xls]sheet1。

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

用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,myfile Set fso = CreateObject("scripting.FileSystemObject") Set MyFile = fso.GetFile("d:\Excelcode.xls") Dim ObjExcelApp Set objExcelApp = CreateObject("Excel.Application") 'objExcelApp.Visible = True objExcelApp.Workbooks.Open MyFile '上面的程序段是为了打开d盘下叫Excelcode.xls名字的excel文件 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的临时变量里面 objExcelApp.Workbooks.Close objExcelApp.Quit Set ObjEXceLapp = Nothing '到这里为止,我们可以通过上面的语句关闭刚才打开的excel程序了 coldold.Write '最后是把读到的excel值从临时变量coldold中写入它对应的"usercodeold1"变量中 End Sub 上面这个例子已经调试通过。网上有很多wincc值写入excel中的例子,一直找不到从excel中读取数据到wincc中的例子,结合网上朋友的一些经验,这里给出个小例子,供大家参考。

WinCC V6.2 数据库访问

WinCC V6.2 数据库访问 我们现在的WinCC教材是以WinCC V6.0 SP3为软件平台而开发的,而之后,Siemens 又推出了V6.2、V7.0版本的WinCC。目前,BU大力推的是V7.0的WinCC,我们的WinCC 教材也准备升级为V7.0版本。但从用户的角度来说,对V7.0版本的WinCC还有一个逐步接受的过程,以后,我们碰到的客户,可能很多还是使用V6.2版本的软件。所以,我们还是有必要熟悉一下WinCC V6.2。本文主要介绍WinCC V6.2的数据库访问,由于WinCC V7.0和WinCC V6.2采用的都是SQL Server 2005数据库,故本文对了解WinCC V7.0的数据库访问也是有帮助的。 (一)若采用WinCC V6.2,原来的教材中有关操作和界面的变化 1. 打开SQL Server管理工具 SQL Server 2005和SQL Server 2000在界面上还是有很大不同的,原来的企业管理器变成了SQL Server Management Studio (SSMS)。 图1. 启动SSMS 2. 选择身份认证方式: WinCC 系统在SQL Server中注册了自己的账户,如WinCCAdmin、WinCCConnect等,所以,WinCC使用到了SQL Server的认证方式。外部程序访问数据库时,可以采用Windows 集成的认证方式。

图2. 选择身份认证方式 图3. WinCC在SQL Server中注册的用户3. 查看ValueID和ValueName的对应关系

4. 查看组态的消息 5. 查看归档片段的消息

wincc的ODBC连接

对WinCC的远程ODBC连接 显示订货号 问题: WinCC V5.1版本的标准设置中,不可以设置ODBC连接。它被用来通过MS Access, MS Query 等访问WinCC数据库。需要注意哪些设置? 解答: WinCC 站方面的准备(如果要访问运行系统的数据库,必须启动WinCC 运行系统)。打开“Sybase Central”,确定WinCC的数据库名。 图1:启动“Sybase Central” 选择菜单选项“工具> 连接”。在打开的掩码中按以下输入 用户ID:dba 口令:sql

图2:登录到数据库 在Sybase窗口中,可看到WinCC站名在窗口左边。点击+ 图标放大画面。现在可看到2个数据库。记住想要进行远程访问的数据库名。以RT 结尾的数据库为运行系统数据库,其它的为CS数据库。 图3a: 确定数据库名 鼠标右键点击所要数据库的属性,也可以选择数据库名并将它复制到剪贴板。如果这样做并将

名字储存在文本文件中,可以避免符号使用中的错误。(图3b)。 图3b:复制数据库名到剪贴板 远程站上的必要设置(另一台计算机)。 从控制面板中启动“数据源(ODBC)” (Windows NT)或通过“启动> 程序> ODBC数据管理器”(Windows 2000)启动。

图4:ODBC窗口中的设置 切换到“系统DSN”标签并选择“添加”(在此需注意“用户DSN”与“系统DSN”间的不同。有关于它们的解释在同窗口中的蓝色文本框中) 图5:选择驱动程序“Adaptive Server Anywhere 7.0”

在“ODBC”标签中,输入一个独有的名,例如在数据库中的名(但它也可以是所选择的其他名字)。必须在“延迟AutoCommit直到语句关闭”下打勾,以便在关闭一个链接着的表格时传送所做的改变。 图6:ODBC标签中的设置 请注册如下:(图7): 用户ID:dba 口令:sql

Wincc报表Excel

Sub OnClick(Byval Item) Dim MyVar1 Dim MyVar2 Dim objExcel Dim wb Dim xlsheet Dim rangee Dim Years,mounth,Days,hours,min,sec,daysweek Dim jj,kk,year1,mounth1,Days1,hours1,min1,sec1 Dim yi,er,san,si,wu,i,i1,lei,lei1,lei2,lei3,lei4,lei5 Dim zhou,yue,nian Dim shi,feng,miao,mytime Dim MyHour,MyMinute,myday,mymonth,myyear,a,b,c,d,e,f Set MyVar1=HMIRuntime.Tags("MyVar1") MyVar1.Write Date Set MyVar2=HMIRuntime.Tags("MyVar2") MyVar2.Write Time year1 = CStr(MyVar1.value) mounth1 = CStr(MyVar2.value) kk="d:\report2\" jj=".xls" Set yi = HMIRuntime.Tags("hunhe_1") yi.Read Set er = HMIRuntime.Tags("hunhe_2")

er.Read Set san = HMIRuntime.Tags("hunhe_3") san.Read Set si = HMIRuntime.Tags("hunhe_4") si.Read Set wu = HMIRuntime.Tags("hunhe_5") wu.Read Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set wb=objExcel.Workbooks.Open ("c:\ExcelExample2.xls") Set xlsheet = wb.sheets("Sheet1") xlsheet.range("B4").Value=yi.Value xlsheet.range("C4").Value=er.Value xlsheet.range("D4").Value=san.Value xlsheet.range("E4").Value=si.Value xlsheet.range("F4").Value=wu.Value wb.SaveAs kk & year1 & jj wb.CLOSE objExcel.quit wb=Nothing

WINCC连接远程SQL

WINCC连接远程SQL 前端时间帮朋友用WINCC实现一个功能,需要用到连接远程SQL数据库的地方,本来以为会很简单的,把连接SQL数据库的脚本改成远程计算机的名称或者IP地址就好了,在家里用虚拟机测试的时候,发现没那么简单,最后折腾了大半天,才终于给搞好了。把折腾的步骤总结测试一下,这里给以后需要用到的朋友参考一下吧。其实主要还是SQL服务器需要开启远程访问功能,一边搜索一边测试,才弄好的。 1、远程服务器用虚拟机+WIN7+SQL2008,系统和软件全新安装,安装后,创建一个名位:SQLTEST的数据库,然后创建一个TALBETEST的表格,表格两列分别为int类型的ID和real类型的REALT,并插入两行数据用作测试。 2、添加一个用户用作远程登录,用户名:rem,密码:123456,并在用户映射属性里面勾选对应的数据库和属性,这里只设置允许读写的选项。

3、开始菜单-SQL Server文件夹-配置工具下打开SQL Server配置管理 器,开启TCP/IP远程访问,并设置远程访问端口。 里面的服务配置里面启用TCPIP协议:

IPALL就可以了。

4、防火墙设置。如果在远程电脑使用ssms测试连接不上,那就需要设置一下WIN7的防火墙了,在防火墙的高级设置里面,入站规则和出站规则,分别加入1433的端口允许,下图以出站规则为例。你也可以直接关闭防火墙, 这样就不用设置了

访问类型选择端口,点下一步 端口根据上面设置的,这里是1433,然后点下一步

操作里面选择允许连接,然后点下一步 配置文件全选,点下一步

wincc的excel报表实例

因为ms word和excel的文档都支持html文本格式,因此可以先用word或excel做好模版,另存为Web 页,然后将该html改成jsp,将数据部分动态填入即可,不用很辛苦的调整格式 word页面只要在jsp头设置如下指令: <%@page contentType="application/msword;charset=GBK" %> excel如下: <%@page contentType="application/vnd.ms-excel;charset=GBK" %> 使用这种方式客户端必须安装有office软件,用户访问时将在ie中直接用word或excel打开该页面。 此方法优势是模板设计、调整方便,无需在服务器端使用复杂的POI或jxl技术,也无需在客户端使用ActiveX控件技术,更安全、方便,轻松实现较好的打印效果。 microsoft关于服务器端动态创建office文档的资料(asp示例): https://www.doczj.com/doc/198275748.html,/default.aspx?scid=KB;en-us;301044& 简单示例: 使用word建立一文档,画表格如下: ---------------------------- | 用户名 | 真实姓名 | 性别 | ---------------------------- | guest | 路人甲 | 男 | ---------------------------- 保存为Web页test.htm,将test.htm改名为test.jsp,修改其中guest、路人甲、男为从数据库动态查询,如下: <%@ page contentType="application/msword;charset=GBK" %> <%@ page import="java.sql.*" %> 用户信息