wincc报表例子vb

wincc报表例子vb
wincc报表例子vb

用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)

excelapp.cells(2,2).value = CStr(aa.value)

excelapp.cells(3,2).value = CInt(aa.value)

excelapp.cells(4,2).value = CSng(aa.value)

excelapp.cells(5,2).value = CDbl(aa.value)

excelapp.cells(6,2).value = CLng(aa.value)

excelapp.cells(3,3).value = ScreenItems("33").outputvalue

excelapp.cells(4,4).value = ScreenItems("35").outputvalue

cc = "D:\excel" + Mid(CStr(bb), 1, 4)+ Mid(CStr(bb), 6, 2)+ Mid(CStr(bb), 9, 2) + Mid(CStr(bb), 12, 2)+ Mid(CStr(bb), 15, 2)+ Mid(CStr(bb), 18, 2) + ".xls" MsgBox cc

excelapp.DisplayAlerts = False '对打开的文件,直接保存时,避免弹出对话框窗口,而是直接覆盖

excelapp.activeworkbook.saveas cc '根据当前日期时间,另存为新的文件

'excelapp.activeworkbook.save ’对打开的文件,直接保存

'excelapp.activeworkbook.saveAs "D:\excelcopy.xls" ’直接另存为新的文件excelapp.workbooks.close

excelapp.quit

Set excelapp = Nothing

第一段:

Option Explicit

Function action

Dim fso,myfile,daystr,dstr,fname

dstr = FormatDateTime(Date)

fname="d:\" + dstr + ".xls"

Set fso = CreateObject("s cripting.FileSystemObject")

Set MyFile = fso.GetFile("d:\ExcelExample.xls")

MyFile.Copy (fname)

End Function

第二段:

Option Explicit

Function action

Dim fso,myfilep,daystr,dstr,fname

Set fso = CreateObject("s cripting.FileSystemObject")

dstr = FormatDateTime(Date)

HMIRuntime.Tags("i").write fso.GetAbsolutePathName("")

fname=HMIRuntime.ActiveProject.Path++dstr+.xls

Dim ObjExcelApp

Set objExcelApp = CreateObject("Excel.Application")

objExCelApp.Visible = True

objExcelApp.Workbooks.Open fname

Dim i

i=1

Do While objExcelApp.worksheets ("sheet1").Cells(i, 1).VAlue<>""

i=i+1

Loop

objExcelApp.worksheets ("sheet1").Cells(i, 2).VAlue = HMIRuntime.Tags("I-COD").read objExcelApp.worksheets ("sheet1").Cells(i, 3).VAlue = HMIRuntime.Tags("I-SS").read

objExcelApp.worksheets ("sheet1").Cells(i, 4).VAlue = HMIRuntime.Tags("I-PH").read

objExcelApp.worksheets ("sheet1").Cells(i, 5).VAlue = HMIRuntime.Tags("I-F").read

objExcelApp.worksheets ("sheet1").Cells(i, 6).VAlue = HMIRuntime.Tags("I-FI").read

objExcelApp.worksheets ("sheet1").Cells(i, 7).VAlue = HMIRuntime.Tags("O-COD").read objExcelApp.worksheets ("sheet1").Cells(i, 8).VAlue = HMIRuntime.Tags("O-SS").read

objExcelApp.worksheets ("sheet1").Cells(i, 9).VAlue = HMIRuntime.Tags("O-NH4N").read objExcelApp.worksheets ("sheet1").Cells(i, 10).VAlue = HMIRuntime.Tags("0-P").read

objExcelApp.worksheets ("sheet1").Cells(i, 11).VAlue = HMIRuntime.Tags("O-F").read objExcelApp.worksheets ("sheet1").Cells(i, 12).VAlue = HMIRuntime.Tags("O-FI").read objExcelApp.worksheets ("sheet1").Cells(i, 1).VAlue =Now

objExcelApp.ActiveWorkbook.Save

objExcelApp.Workbooks.ClosE

objExcelApp.QuiT

Set ObjEXceLapp = Nothing

End Functionc

WINCC报表详解

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

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

wincc 常用脚本

DeactivateRTProject ();//退出系统 #pragma code("useadmin.dll") #include"PWRT_api.h" #pragma code() char* CUser=NULL; CUser=GetTagChar("@CurrentUser"); if (strlen(CUser)==0) { PWRTSilentLogin("operator","123456");//用户“operator",密码"123456”登录} OpenPicture("@MAIN.pdl"); } 在画面中结合不同按钮来组态下面 C 操作 Login Action for login (for example, "mouse click" event): #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() PWRTLogin('c'); Logout Action for logout (for example, "mouse click" event): #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() PWRTLogout(); PWRTLogin 参数必须是CHAR 字符。它指定了显示对话框的监视器。如果只使用一个监视器,那么保留默认参数“c”或者指定“1”。 注意 可以使用PASSLoginDialog 函数来代替PWRTLogin 或者PWRTLogout 函数。这个函数需要和函数PWRTLogin 相同的参数。PWRTLogin 和PASSLoginDialog 函数可以调用登录界面,在上面可以登录或者注销。函数PWRTLogout 被正确执行并且不调用登录界面。 正确执行后这两个函数都返回“1”。然而,登录不会等到显示对话框之后。 注意 如果使用多个显示器,为了能使登录对话框显示在合适的显示器上,需要WinCC Basic Process Control (OS项目编辑器)。 不使用WinCC Basic Process Control 时,可以指定显示器编号,但登录对话框始终显示在第一个显示器上。 #include"apdefap.h"//调用函数代码 void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

WinCC数据报表实现方法介绍

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

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

用户归档实现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报表说明

WINCC报表制作说明 本次报表制作以WINCC7.0为基础,利用自带的“变量记录”功能,进行变量归档操作。然后利用WINCC自带的控件“Wincc Online Table Control”关连变量归档,可实现简单的报表的查询功能。 另一种方法为利用EXCEL的宏访问WINCC数据库(变量归档)。本方法中需安装Microsoft Office 2003版本。此种方法优点在于利用WINCC的数据库的开放性,将EXCEL与数据库进行关联,可方便的读取所要查询的数据。另外EXCEL文件可以按照要求编辑修改表格样式、数据格式等,方便用户存档及打印。具体实现方法如下: 1、在WINCC中新建变量归档 2、新建EXCEL文件,用于读取变量归档数据 3、打开EXCEL文件,按照要求编辑报表表格样式,在表格中添加“Microsoft Date and Time Picker Control6.0”控件,此控件用于设定要查询报表的日期 4、在EXCEL表格中新建查询按钮,作为报表的查询触发器 5、编辑代码,进入Visual Basic编辑器进行代码编写,代码中涵盖WINCC归档时间与本地时间的转换及变量与表格的关联性操作。 6、代码编辑完成后,需运行WINCC组态软件,打开新建的EXCEL文件,提示是否启用“宏”操作,此时要选择启用,进入报表表格界面,在日期控件中选择要查询的数据日期,点击查询按钮,归档变量数据就可以显示在对应的表格中,可保存,可打印,可修改。 以上两种报表均在1608009风机在线监测项目上应用。对于VB代码编辑部分,只需要根据EXCEL表格的样式及变量归档数据名称做出相应的修改即可。 设计部:付友维 2017年6月20日

在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功能使用总结

1、Wincc online trend控件实现多条曲线查询 项目要求,查询任意时段内的两条曲线的历史数据 1、首先在变量记录中设置需要记录的变量,如果需要在一个控件内显示两条曲线,做数据 归档时,归档属性最好是一致的,归档属性不一样是否会出现问题,这个没测试,有兴趣的可以测试一下。 2、数据记录设置OK后,新建画面插入online trend控件,我的项目需要把趋势打印出来, 所以把控件的工具栏全部隐藏。 3、双击online trend控件,添加需要显示的归档变量。选择公共X,Y轴等参数。坐标显示 根据自己使用选择,基本上不用设置太多参数。 4、添加需要显示的历史归档变量后,就需要写脚本了,西门子工控网论坛有实例,实例提 示针对于一条曲线时使用,咨询西门子技术支持,如果需要同时显示两条曲线时,需要对两条曲线分别进行设置属性“控件.index=0,1”,但是测试其实只设置index=0的起始及结束时间就OK,就是论坛给的实例不是只针对于一条曲线,两条曲线时同样适用,再多的曲线就没测试了。 5、西门子默认的时间格式为“MM-DD-YYYY HH-MM-SS”格式,所以在设置趋势起始及 结束时间时需要注意。 6、注:导入归档数据需要一定的时间,建议按钮触发。尝试在画面打开时触发脚本,有的 时候会出现历史数据加载不上来。 7、脚本如下,仅供参考 Dim objConnection Dim strConnectionString Dim strSQL Dim objrs Dim chaxun '定义曲线控件 Dim TREND Dim strval_1

Dim strval_2 Dim strval_t1 Dim strval_t2 '初始化程序,省略N行。。。。。。。。。。。。。。。。。。。。。。。。。。。。 '初始化程序,省略N行。。。。。。。。。。。。。。。。。。。。。。。。。。。。 chaxun=HMIRuntime.Tags("管号查询输入").Read strConnectionString = "Provider=MSDASQL;DSN=REPORT;UID=;PWD=;" strSQL = "select * from report where guanhao='"&chaxun&"';" Set objConnection = CreateObject("ADODB.Connection") objConnection.ConnectionString = strConnectionString objConnection.Open Set objrs = CreateObject("ADODB.RecordSet") objrs.open strSQL,objConnection /赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,/ /赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,/ objrs.close Set objrs = Nothing objConnection.Close Set objConnection = Nothing '趋势时间设定 Set trend = ScreenItems("控件1") strval_r=HMIRuntime.Tags("测试日期_read").Read strval_t1=HMIRuntime.Tags("开始时间_read").Read strval_t2=HMIRuntime.Tags("测试时间_read").Read

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脚本个人经验总结

语音报警的组态 在工业现场安全是极其重要的,无论从那个角度讲我们应该利用一切手段减少故障的发生。在故障已经发生的时候,应该在第一时间以多种方式通知操作人员有故障发生。现代微处理计算机的处理速度可以完全胜任对于图形,语音地同时处理。所以我们可以利用计算机的声卡和音箱在有故障发生的时候产生语言报警,但是问题是WinCC本身并不能产生语音的功能,而且其内部的上千个函数也没有提供处理声音的函数。解决这个问题的方法归功于微软开发的WinCC与操作系统地完美结合,因为在WinCC中可以直接调用Windows的API函数。实现的具体C脚本代码如下: long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma code(\"Winmm.dll\") void WINAPI PlaySoundA(char *pszSound,char *hmode,DWORD dwflay); #pragma code() if(GetTagBit(\"112排泥备泵故障\")) PlaySoundA(\"d:\\\\\\\\winnt\\\\\\\\media\\\\\\\\Mircosoft sound.wav\",NULL,8); return 1020; }重新启动后,不使用登录窗口如何以一个缺省用户的身份自动登录?怎样确保运行期间有个缺省用户始终处于登入状态?即使另外一个用户已经预先退出。 解答: 重新启动以及在运行期间,您希望HMI系统达到最小的实用性而不使用登录窗口。然而,对于高级操作,登录功能应当保留。此外,如果没有用户登录,则有一个缺省的用户自动登录。缺省用户的权限可以在用户管理器中根据需要设定。 可使用下面的C脚本执行此项功能,请按照下列步骤进行: 将附件中的函数“Silentlogin.pas”复制到项目中的“PAS”子文件夹中。 在项目中选择Global Script > C Editor > Actions > Global Actions并打开全局动作(Global Action)“Silentlogin.pas”。 在“PWRTSilentLogin (“Login”,“Password”);”一行中,用缺省的用户名替换用户“Login”,用缺省用户的口令代替“Password”。 无限循环命令 static int a=0, b=0; if(GetTagBit("BINi_pictu_dyn_09")) { if(b==0) a++; else a--; if(a==7) b=1; if(a==0) b=0; }

WinCC脚本案例保留

WinCC脚本案例保留 2010-09-16 16:44 最近做一个WinCC跟ERP通讯的一个小项目,将脚本语言保留下来,以备不时之需! 仅仅是保留,各位看官如发现不妥之处请加以指教. 1.通过扫描枪扫描到ID号传给PLC,WinCC读取到ID号从ERP数据库中查找相关数据,写回到PLC,并给PLC一个写完成确认信号.(数据库是SqlServer2000) Dim DB240trigger,db241trigger db240trigger=HMIRuntime.Tags("db240itrigger").Read db241trigger=HMIRuntime.Tags("DB241itrigger").Read Dim ss,str str=HMIRuntime.Tags("DB240szcoil_ID").Read ss=CStr(str) If (db240trigger=1 And db241trigger=0 ) Then Dim sPro,sDsn,sSer,sCon,sSql Dim oRsMaterial,conn,oCom,oItem,oRsSCHEMA Dim database,server,uid,pwd sCon ="driver=sql server;server=10.51.103.96;DATABASE=brgs_release;uid=sa;pwd=pasword" Set conn = CreateObject("ADODB.Connection") conn.ConnectionString = sCon conn.Open Set oRsMaterial = CreateObject("ADODB.Recordset") sSql= "SELECT * FROM dbo.BRGS_GP_Material where MkNo='" & CStr(ss) & "'" oRsMaterial.open ssql,conn,1,1 Dim m,n m=oRsMaterial.recordcount If m<>1 Then MsgBox "这个ID号找不到唯一的一条参数信息,请手动输入信息!" Exit Function End If Dim sCon2,sSql2

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中的例子,结合网上朋友的一些经验,这里给出个小例子,供大家参考。

VB操作wincc脚本心得

Vbs 操作wincc画面脚本总结 一:不使用变量单纯的操作界面 1.操作某个画面中控件的属性如Home1.Pdl(总窗体)下的画面窗口2(画面窗口) Sub OnClick(ByVal Item) Dim objCircle Dim screenname Dim pwname Set objCircle= ScreenItems("圆1" ) objCircle.Radius = 60 Set screenname=HMIRuntime.Screens("Home1") //获取要操作的窗体 Set pwname=screenname.ScreenItems("画面窗口2") //获取要操作的控件,这里填入你要操作的控件名 MsgBox(objCircle.Radius) //输出圆的半径 MsgBox (pwname.Picturename) //输出当前画面窗口2的名字 End Sub 注意当调用某窗体下的某控件的某个属性时,需要声明两个对象,一个接纳这个控件,一个接纳值例如 Dim object Dim value Set object =HMIRuntime.Screens("Home1").ScreenItems("画面窗口2") Set value=object.picturename 2.更改画面窗口的对象 Sub OnClick(Byval Item) Dim opObject Set opObject=HMIRuntime.Screens ("Home1").ScreenItems("画面窗口2") opObject.PictureName="Page1.Pdl" End Sub 3.设置文本 Set titleTxt=HMIRuntime.Screens ("Home1").ScreenItems("静态文本2") titleTxt.Text =titleTxt.Text+"EF" //获取文本的值并追加字符 4.vb 字符串函数 VB的字符串截取函数有Left(字符串,n),返回字符串前N个字符;Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right(字符串,n),返回字符串的最后n个字符。 获取下标

WINCC+VBS报表

WINCC+VBS报表 1概述 介绍如何在WinCC项目中使用VBS脚本读取变量归档值,并把获取的数据保存成新的Excel文件。文中示例代码仅适用于以绝对时间间隔方式访问。 2软件环境 Windows XP SP3中文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2007 3访问原理 WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。关于WinCC连通性软件包的详细信息请参考连接:37436159 当使用 OLE-DB方式访问数据库时关键需要注意连接字符串的写法 和查询语句的格式。连接字符串格式为 “Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;”,其中Catalog为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。建议使 用WinCC内部变量“@DatasourceNameRT”获得当前项目的Catalog。Data Source 为服务器名称,格式为“<计算机名 称>\WinCC”。

3.1 查询语句格式 数据的查询语句的格式要求如下: 8 字节长 ValueID 的请求: TAG_LLVID:R,,,[,][, ] 4 字节长 ValueID 的请求: TAG:R,,,[,][, ] 其中: ValueID:过程值归档变量的唯一标识符。 ValueName:过程值归档变量的名称,格式为 “ArchiveName\Value_Name”,可以使用多个名称。 TimeBegin,TimeEnd:时间范围,格式“YYYY-MM-DD hh:mm:ss.msc”。 SQL_Clause:SQL 语法中的过滤标准。 TimeStep:时间间隔。使用 时,必须将 指定为绝对时间。禁止使用相对语句“0000-00-00 00:00:00.000”。 其中ValueID和ValueName的对应关系如下图所示:

WINCC嵌入式EXCEL报表系统使用手册

WINCC 嵌入式EXCEL 报表系统使用手册 1、打开报表画面 点击主画面中“报表”按钮,打开报表画面: 2、界面介绍 报表画面功能介绍 时间设置

3、选择报表文件 在“报表选择”栏中选择需要生成报表的名称: 4、选择报表类型 在“类型选择”栏选择报表类型:日报表、月报表、年报表、自由报表,具体介绍如下: ●日报表——为一天的报表数据,每小时产生一个记录,共24条记录, 时间为“00:00:00”至“23:59:59”。 ●月报表——为一月的报表数据,每天产生一个记录,根据月份的不同分 别产生28-31条记录,时间为“01 00:00:00”至“30 23:59:59”(或“28 23:59:59”/“29 23:59:59”/“31 23:59:59”)。 ●年报表——为一年的报表数据,每月产生一个记录,共12条记录,时 间为“01-01 00:00:00”至“12-31 23:59:59”。 ●自由报表——为指定时间段的报表数据,时间段由“开始时间”和“结 束时间”共同决定,每一个“时间间隔”产生一个记录,记录条数由时 间段和时间间隔决定。 5、设置报表时间 根据报表类型,选择报表时间。点击“日历”可以打开日历控件,控 件中可以快速选择日月年,也可以通过下拉窗口进行选择。 当为日报表时,需要设置“年”、“月”、“日”;当为月报表时,需要设置“年”、“月”;当为年报表时,需要设置“年”;当为自由报表时,需要设置开始和结束时间的“年”、“月”,“日”、“时”、“分”等全部项,间隔时间也需要设置。

6、生成报表 当“报表选择”、“类型选择”和时间选择均设置完成后,点击“生成报表”按钮,系统将开始在右边表格中生成出报表,在生成报表的过程中能看见表格中数据逐渐显示,也能通过下方进度条看见完成情况。生成报表时,空数据区用“#”填充,错误数据区用“##”填充,报表生成完毕后将有“成功生成数据文件!”提示。同时,报表生成后将自动保存到项目中“report”文件夹下。 在生成报表前如果该报表已经生成将提示“报表文件XXX_X-X-XXX.xml 已经存在,是否重新生成?”,如果选择“是”将重新生成报表,并替换掉原有报表,如果选择“否”将不重新生成,自动将原有报表装载到表格中。 7、查看已生成的报表 当设置好报表名、类型和时间后,点击“查询报表”将在表格中装载选择的报表数据,如果报表没有生成将提示“报表文件不存在!”,需要先生成报表。

WinCC实例教程

WinCC 视频教程知识点总结 第一讲组态软件基础 一、WinCC简介 1、WinCC 西门子视窗控制中心SIMATIC WinCC(Windows Control Center)是在计算机上对PLC 控制的运行设备进行状态监控的软件,是PC上的监控软件。 运行该软件,可以动画监视现场设备的运行状况,监视相应的运行参数,以及更改、设置系统的运行数据。 2、WinCC的特点 (1)开放性 WinCC对用户所添加的任何形式的扩充是绝对开放,该绝对开放性是通过WinCC的模块结构及其强大的编程接口来获取的。 (2)将应用软件集成到WinCC中 WinCC提供了一些方法将其他应用程序和应用程序块统一地集成到用于过程控制的用户界面中。OLE应用程序窗口和OLE自定义控制或Active控制可以集成到WinCC应用软件中。 (3)WinCC中的数据管理 WinCC的数据库为Windows SQL,从属于WinCC,该数据库用于存储所有面向列表的组态数据(如变量列表和消息文本),以及当前过程数据(如消息,测量值和用户数据记录等)该数据库具有服务器功能。

(4)在项目开始之前规定组态分类 a、文件夹名称 除一些特殊字符(例如\)之外,文件夹名称允许使用所有的字符。还允许使用数字0~9. b、变量名称 变量名称可以多于8个字符。但应尽量避免太长的名称。WinCC项目的变量名称必须是唯一的。如果变量名称还包含了其他信息,这对用户将非常有用。 c、画面名称 确定画面名称时应注意其长度的影响,太长的名称(文件名)不容易识别(列表框中的选择,脚本中的调用等)。根据经验表明,长度最好不超过28个字符,画面名称应遵守以下限制条件:①最大长度为255个字符;②不使用某些特殊字符(例如\);③画面名称中的字母不区分大小写。 二、WinCC软件的安装 1、安装S7-300/400PLC编程软件STEP7及PLCSIM; 2、安装数据库软件SQL Server 2000; 3、安装消息列队(软件操作); 4、安装WinCC(建议不选典型安装,选择全部安装)。 三、WinCC管理器 1、WinCC项目管理器的结构 WinCC项目管理器的用户界面由以下元素组成:标题栏、菜单栏、工具栏、状态栏、浏览窗口和数据窗口:

西门子wincc数据报表的实现方式

西门子wincc数据报表的实现方式 【摘要】随着工业领域的不断发展,用户需求一种以人机界面为控制主体的视窗控制体系的过程监控系统,以此来取代原来的以现场操作按钮和仪表为主的操作体系。通过开放性、灵活性的可视化界面,迅速并直接的处理生产过程中的事件信息。凭借这种战略思想,WINCC,运行于Windows系统下的控制中心,已发展成为工业市场领域的领导者,乃至业界遵循的标准。Wincc集生产自动化和过程自动化于一体,应用于各种工业自动化领域,是提高工厂生产效率的上乘之选,并支持多种语言。 工业生产中,报表系统通常是控制系统中非常重要的一部分,是企业管理的基本措施和途径,它通常用来记录重要的现场工艺参数和统计信息。早期,都是由人工记录的方式进行统计汇总,数据也只能有一种几乎只有记录员才能理解的表现形式,且这种形式难于更改。当进入计算机时代后,报表这部分工作完全可以由计算机软件来实现,数据动态化,格式多样化,用户可以自己修改数据或格式。针对自动化工程师而言,如何利用wincc软件来开发适合用户需求的报表,并且高效灵活的解决统计数据是自动化工程师必须掌握的一门技术,也是企业日常生产维护和管理中不可或缺的管理手段之一。 报表的变现形式分为许多种,大体上可分为两种形式:曲线格式和表格格式。 曲线形式主要是利用WINCC自带控件来实现,在控件属性中,可对趋势、常规、字体、趋势窗口、时间轴、数值轴、工具栏、状态栏、在线组态、导出中具体参数进行设置,以符合用户的生产需求和审美要求。例如,时间轴可设成1分钟,1小时或者1天的形式,数值轴可以设置成根据实际测量值实时改变数值轴的范围。应用在线趋势曲线的前提条件是,用户需要在变量记录里设置需要归档的变量内容和归档周期等一系列参数。 针对于一些特殊归档要求,曲线形式的归档可能满足不了用户的需求,往往用户需要生成一种支持打印功能并以表格形式查询的数据归档报表。针对于这类复杂的报表,可以通过用户归档和Wincc报表编辑器来实现此类功能。用户归档可以用来在工控机上连续的保存来自技术过程中的数据信息,在图形编辑器中,可以组态用户归档表格元素来显示控制系统中用户归档的在线数据。根据用户需要,数据支持读取和写入的功能,并可在线更改数据。它是一种用户自己创建的数据库的数据库表格,用于用户存储数据,并根据SQL数据库规则提供这些数据的标准化访问。 在项目编辑器里的树状结构图中找到用户归档视图,双击打开。在归档视图界面插入一个新归档,在新建的归档界面中按照提示步骤依次输入归档名称和控制变量。在常规选项卡里的归档名输入框内填入需要建立的归档名称,归档类型选择无限制,点击下一步,进入控制变量的选项卡。在这里,可以使用软件默认的命名方式,左键单击创建按钮,会直接分配新的控制变量到ID、指令、域和值这四个接口中,并在变量记录中生成这四个指令的相关信息。接下来,在归档

VB操作wincc脚本心得精选文档

V B操作w i n c c脚本心 得精选文档 TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-

Vbs 操作wincc画面脚本总结 一:不使用变量单纯的操作界面 1.操作某个画面中控件的属性如 Home1.Pdl(总窗体)下的画面窗口2(画面窗口) Sub OnClick(ByVal Item) Dim objCircle Dim screenname Dim pwname Set objCircle= ScreenItems("圆1" ) objCircle.Radius = 60 Set screenname=HMIRuntime.Screens("Home1") //获取要操作的窗体 Set pwname=screenname.ScreenItems("画面窗口2") //获取要操作的控件,这里填入你要操作的控件名 MsgBox(objCircle.Radius) //输出圆的半径 MsgBox (pwname.Picturename) //输出当前画面窗口2的名字 End Sub 注意当调用某窗体下的某控件的某个属性时,需要声明两个对象,一个接纳这个控件,一个接纳值例如 Dim object Dim value Set object =HMIRuntime.Screens("Home1").ScreenItems("画面窗口2") Set value=object.picturename

2.更改画面窗口的对象 Sub OnClick(Byval Item) Dim opObject Set opObject=HMIRuntime.Screens ("Home1").ScreenItems("画面窗口2") opObject.PictureName="Page1.Pdl" End Sub 3.设置文本 Set titleTxt=HMIRuntime.Screens ("Home1").ScreenItems("静态文本2") titleTxt.Text =titleTxt.Text+"EF" //获取文本的值并追加字符 4.vb 字符串函数 VB的字符串截取函数有Left(字符串,n),返回字符串前N个字符; Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right(字符串,n),返回字符串的最后n个字符。 获取下标 VB中的InStr()函数与InStrRev()函数: 都是在主字符串当中搜寻寻找子字符串,返回找到的子字符串在主字符串中出现的位置; 不同在于; InStr()函数,从左开始向右寻找,InStrRev()函数,从右开始向左寻找。 截取 right 和left 获取长度 Len

相关文档
最新文档