wincc通过VBS读取控件
- 格式:doc
- 大小:23.00 KB
- 文档页数:2
V B操作w i n c c脚本心得集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#Vbs 操作wincc画面脚本总结一:不使用变量单纯的操作界面1.操作某个画面中控件的属性如(总窗体)下的画面窗口2(画面窗口)Sub OnClick(ByVal Item) Dim objCircleDim screennameDim pwnameSet objCircle= ScreenItems("圆1" )= 60Set screenname=("Home1") creenItems("画面窗口2")Set value=2.更改画面窗口的对象Sub OnClick(Byval Item)Dim opObjectSet opObject= ("Home1").ScreenItems("画面窗口2")=""End Sub3.设置文本Set titleTxt= ("Home1").ScreenItems("静态文本2")=+"EF" Dim objTagDim ATextSet objTag = ("a") vb 中Switch语句的变体Dim objTagDim ATextSet objTag = ("a") 你要求是有是和否两个按钮那么MyVar = MsgBox ("HelloWorld!", 65, "MsgBox Example")中的65改成4就可以了!vbs脚本中:if msgbox("确实要启动设备吗",4,"警告")=6 then("tag1").write 1end if。
wincc vbs模块方法WinCC VBScript模块方法是用于编程和自动化WinCC项目的一种功能强大的工具。
它可以帮助用户在WinCC界面中实现各种功能和任务,包括数据处理、图表生成、报警处理等等。
在本文中,我们将一步一步回答关于WinCC VBScript模块方法的主题。
1. 什么是WinCC VBScript模块方法?WinCC VBScript模块方法是一种用于编程和自动化WinCC项目的工具。
它基于Visual Basic Scripting语言(VBScript),可以让用户通过编写脚本来实现各种功能和任务。
这些功能包括数据处理、图表生成、报警处理等等。
2. 如何使用WinCC VBScript模块方法?使用WinCC VBScript模块方法需要以下几个步骤:- 打开WinCC开发环境:首先,您需要打开WinCC开发环境,启动WinCC Explorer和VBScript编辑器。
- 创建VBScript模块:在VBScript编辑器中,您可以创建一个新的VBScript模块。
这个模块将成为您编写脚本的地方。
- 编写脚本:在VBScript模块中,您可以使用VBScript语法编写脚本。
您可以利用WinCC提供的函数和方法来实现各种功能和任务。
- 脚本调用:一旦您编写完脚本,您可以在WinCC项目的各个部分中调用脚本。
您可以在按钮的点击事件或某个对象的属性变化事件中调用脚本。
3. WinCC VBScript模块方法的应用场景有哪些?WinCC VBScript模块方法可以应用于各种场景和任务,包括但不限于以下几个方面:- 数据处理:您可以使用VBScript模块方法来处理和计算在WinCC项目中采集到的数据。
例如,您可以编写一个脚本来实现数据的加工、过滤和处理等操作。
- 图表生成:使用VBScript模块方法,您可以生成各种类型的图表,例如曲线图、柱状图和饼图等。
这些图表可以帮助您更好地可视化和分析数据。
WinCC 通过VBS脚本进行串口通讯一、打开端口Sub OnClick(Byval Item)Dim objMSComm1, tagConnectionSet objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagConnection = HMIRuntime.Tags("Connection")If objMSComm1.PortOpen = False Then' Assign com port numbermport = 1' Values: 9600 Baud, N - No Parity, 8 - Databit, 1 - StopbitobjMSComm1.Settings = "9600,N,8,1"objMSComm1.RThreshold = 1objMSComm1.SThreshold = 1objMSComm1.InputLen = 0objMSComm1.PortOpen = TruetagConnection.Write(True)HMIRuntime.Trace("Port open." & vbCrLf)ElseHMIRuntime.Trace("Port is already opened." & vbCrLf)End IfEnd Sub二、读BufferOption ExplicitFunction actionDim strBuffer, strTempDim objMSComm1, tagBufferSet objMsComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagBuffer = HMIRuntime.Tags("Buffer")strTemp = ""If objMSComm1.PortOpen = True Then'read the bufferstrTemp = CStr(objMSComm1.Input)If strTemp <> "" Then'checking for the delimited characterIf InStr(strTemp, Chr(6)) ThenstrBuffer = Left(strTemp,Len(strTemp)-1)ElsestrBuffer = strTempEnd IftagBuffer.Value = strBuffertagBuffer.WriteEnd IfElseHMIRuntime.Trace("No port is opened!" & vbCrLf)End IfEnd Function三、发送数据Sub OnClick(ByVal Item)Dim tagOutput, objMSComm1Set tagOutput = HMIRuntime.Tags("Output")Set objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1")If objMSComm1.PortOpen = True ThentagOutput.ReadobjMSComm1.Output = tagOutput.ValuetagOutput.Write("")ElseHMIRuntime.Trace("No port is opened!" & vbCrLf)End IfEnd Sub四、关闭端口Sub OnClick(Byval Item)Dim objMSComm1, tagConnectionSet objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagConnection = HMIRuntime.Tags("Connection")If objMSComm1.PortOpen = True ThenobjMSComm1.PortOpen = FalsetagConnection.Write(False)HMIRuntime.Trace("Port close." & vbCrLf)End IfEnd Sub。
WINCCVBS脚本文件操作WinCC VBS脚本中的文件操作主要涉及文件的创建、读取、写入和删除等操作。
下面是一个超过1200字的文章,介绍了WinCC VBS脚本中常用的文件操作方法和示例。
在WinCC VBS脚本中,可以使用FileSystemObject对象来进行文件操作。
首先,需要创建一个FileSystemObject对象:```Dim fsoSet fso = CreateObject("Scripting.FileSystemObject")```接下来,可以使用FileSystemObject对象的属性和方法来操作文件。
下面是常用的文件操作方法示例:1.创建文件夹:```fso.CreateFolder "C:\TestFolder"```2.创建文件:```Dim fileSet file = fso.CreateTextFile("C:\TestFile.txt", True)file.WriteLine "This is a test file."file.Close```3.打开文件:```Dim fileSet file = fso.OpenTextFile("C:\TestFile.txt")MsgBox file.ReadAllfile.Close```4.写入文件:```Dim fileSet file = fso.OpenTextFile("C:\TestFile.txt", 8) file.WriteLine "This is a new line."file.Close```5.读取文件:```Dim fileSet file = fso.OpenTextFile("C:\TestFile.txt")MsgBox file.ReadLinefile.Close```6.复制文件:```fso.CopyFile "C:\SourceFile.txt", "C:\DestinationFile.txt"```7.移动文件:```fso.MoveFile "C:\SourceFile.txt","C:\NewLocation\SourceFile.txt"```8.删除文件:```fso.DeleteFile "C:\TestFile.txt"```9.删除文件夹:```fso.DeleteFolder "C:\TestFolder"```以上示例中的文件路径可以根据实际情况进行修改。
变量读写:Write战Read要领的语法:之阳早格格创做读:1 Dim objTag Set objTag=HMIRunTime.Tags("变量名")2 HMIRunTime.Tags("变量名").Read写:1 Dim objTag Set objTag=HMIRunTime.Tags("变量名")objTag.Write 1 '背变量写进数值12 HMIRunTime.Tags("变量名").Write 1中间变量的值写进:Dim objTag,valSet objTag=HMIRunTime.Tags("变量名")objTag.Readval=objTag.Value '中间变量val存搁了变量的值VBS谈话使用要领概括:VBScript的齐称是:Microsoft Visual Basic Script Editon.(微硬公司可视化BASIC足原版).正如其字里所透露的疑息, VBS(VBScript的进一步简写)是鉴于Visual Basic的足原谈话.尔进一步阐明一下, Microsoft Visual Basic是微硬公司出品的一套可视化编程工具, 语鉴于Basic. 足原谈话, 便是不编译成二进造文献, 曲交由宿主(host)阐明源代码并真止, 简朴面道便是您写的步调不需要编译成.exe, 而是曲交给用户收收.vbs的源步调, 用户便能真止了.一、初教: 1) 注释(以REM或者'启头)止正在步调中不起效率, 但是能让他人更简单读懂您的步调. 2) 变量佳像一个盒子, 或者一个代号, 不妨代表您念代表的物品. 变量赋值使用"="3)以""包裹起去的字符称之为"字符串"4)函数像一个"乌箱", 有参数战返回值, 用"="左边的变量不妨交住返回值5) Inputbox函数弹出一个输进对于话框,Msgbox则用于输出例:REM 输进并回隐您的名字'使用InputBox战Msgbox函数Dim name,msgmsg="请输进您的名字:"name=Inputbox(msg,"称呼")Msgbox(name)上例中,Dim用去声明一个变量, 正在VBS中, 变量典型本去不是那么要害, 便是道VBS中您不必思量name储藏的是一个整数仍旧一个小数(教名喊"浮面数"), 也不必思量是不是字符串(一串字符, 比圆:"Hello World"), VBS会自动助您搞定. 所以第三止语句不妨简略, 效验不会变.常量:要领是:const 常量名=常量值.比圆: const PI=3.1415926 const NAME="影象碎片"二、进阶数据典型变换:1)Dim a,b,ca=inputbox("a是:","输进半径")b=Inputbox("b是:","输进半径")c=a*2+b*2Msgbox(c)那个输进1、2时是62)Dim a,b,ca=inputbox("a是:","输进半径")b=Inputbox("b是:","输进半径")c=(a+b)*2Msgbox(c)那个输进1、2时是24为什么会纷歧样呢? 正在数教上c=(a+b)*2 战c=a*2+b*2是等价的, 正在VBS中也是如许. 问题出正在"+"上, 正在VBS 中, +不但是仅是加号的意义还表示把二个字符勾通交起去, 比圆"Hello"+"World"="HelloWorld" have you understood? 您还记得InoutBox函数的返回值吗? 是字符串! 那便瞅出问题了吧, 正在编程中"1"不等于(<>)1, "1"是一个字符, 而1是一个数, 所以a,b皆是字符串变量, "1"+"2"="12", 那便佳像咱们小时跟伙陪启玩笑问他们1+1=?一般, 咱们经常笑着道"错啦,该当是11".但是为什么, a不妨*2却不爆收过失呢? 那时VBS比较智能的一个表示, 如果那个字符串的真质是一个数且对于他举止数教运算, 则把字符串强造变换成数介进运算如果字符串代表一个数, 但是不介进数教运算, 而是介进字符串运算(合并)则当做字符串处理, 所以您瞅到a+b=12, 那时间a+b的截止是一个字符串, 当它要乘以2的时间便被强造变换成了数字12, 那样尔便得到了截止24怎么建改那个步调呢? 咱们需要用到另一个内建的函数:int, int函数的功能是将输进值转成整数值, 咱们那样建改: c=(int(a)+int(b))*2四、循环结构for....nextdim i,jfor i=1 to 9for i=1 to 9str=str & i * j & " " '&是战并字符串的标记next '每个next对于应一个for1)do..loop战exit do的用法2) while当表白式true的时间真止循环体,until反之3) for...next是计数循环, 屡屡真止计数器递加4) 嵌套循环的效率战写法 4.5) &用于连交字符串5) vbCrLf相称于键盘上的回车键五、数组定义:dim 数组名(元素数量), 那里大家要注意一面, 那里定义的元素数量经常比您要的要少一个, 果为一个数组的起面是0号数据而不是1, 所以大家一定要留神: 您需要10个数据, 便定义"9".六、函数结构:funciton 函数名(参数1, 参数2...参数n) '列表不妨是空的, 但是括号不克不迭简略, 参数之间用","分隔...exit funciton '中断函数, 不是必须的end function偶尔间咱们本去不需要返回什么值, 那个时间咱们不妨使用一种称之为"子步调"的结构. 子步调或者称之为历程取函数的不共便正在于:1) 不返回值, 2) 使用sub闭键字定义, 3) 通过Call 调用.具个例子:dim ynamename=inputbox("请输进您的名字:")call who(yname)subwho(cname)msgbox("您佳" & cname)msgbox("感动您阅读尔的课程")msgbox("那是前提部分的末尾一课")end sub按钮翻转步调Sub OnClick(Byval Item)Dim tag1Set tag1=HMIRuntime.Tags("Q02") tag1.readIf tag1.Value=1Then tag1.write 0Elsetag1.Write 1按按钮删数步调:Dim tag1Set tag1=HMIRuntime.Tags("转动1") tag1.Value=tag1.Value + 1tag1.WriteEnd IfEnd Sub按下按钮一个脉冲触收:Dim mytime,bsSet bs=HMIRuntime.Tags("b")bs.Write(1)mytime = Timer+2Do Until Timer=mytimeLoopbs.Write(0)循环步调While t = 1Dim mytime,bsSet bs=HMIRuntime.Tags("b转动") bs.Write(1)mytimE = Timer +2DO until TimEr=mytimeloopbs.Write(0)Wend。
WinccV7.3使用VBS脚本读取excel文件数值WinccV7.3 使用VBS脚本读取excel文件数值案例:wincc项目路径下有一个excel文件,数据表sheet1内容如下:现在我们需要把这个文件中的数据读取出来,显示在输入输出域当中,本例以读取R1C1和R2C2为例。
在wincc页面上放置两个输入输出域,名字分别为R1C1和R2C2,R1C1数据类型为字符串,R2C2数据类型为十进制数,页面上放置一个按钮,用于读取数据。
wincc新建一个内部变量path,用于存放excel文件的路径。
在wincc 页面打开事件中写入一下VBS脚本。
Sub OnOpen()Dim pathSet path=hmiruntime.Tags("path")path.write HMIRuntime.ActiveProject.Path & "\\myxls.xlsx"End Sub在按钮的点击事件中写入以下脚本:Sub OnClick(Byval Item)Dim xlApp,xlBook,pathDim r1c1,r2c2Set r1c1=ScreenItems("r1c1")Set r2c2=ScreenItems("r2c2")path=HMIRuntime.Tags("path").ReadSet xlApp=CreateObject("excel.application")xlApp.Visible=FalsexlApp.Workbooks.Open pathxlApp.Worksheets("Sheet1").Activater1c1.outputvalue=xlApp.Worksheets("Sheet1").cells(1,1).valuer2c2.outputvalue=xlApp.Worksheets("Sheet1").cells(2,2).value xlApp.Workbooks.ClosexlApp.QuitSet xlApp=NothingEnd Sub经测试可以实现需要的功能。
1:首先在计算机的管理工具-- ODBC数据源管理器中,添加一个SQL SERVER的数据源。
在此配置中:在服务器的连接上要选择WINCC的服务器。
2:然后在WINCC的图形编辑器中,在输入域的属性中,选择事件,再选择键盘的释放动作,在动作代码框中写下如下代码:Dim conn,rsDim strsqlDim aa=HMIRuntime.Tags("tt_change").ReadSet conn=CreateObject("adodb.connection")Set rs=CreateObject("adodb.recordset")conn.Provider = "sqloledb"conn.open"SERVER=MICROSOF-9176CF\WINCC;uid=sa;pwd=sa;database=TT_CHA NGE"If nChar = "13" Thenstrsql="insert into tt_ch(TagValue)VALUES('" & a &"')" Set rs=conn.execute(strsql)conn.closeSet rs=NothingSet conn=NothingEnd If如此,即可实现WINCC的实时数据向SQL SERVER的数据写入!WinCC读取Access数据库wincc 2009-07-30 09:52:22 阅读240 评论1 字号:大中小订阅'经测试该代码在WinCC和vbs文件中均可用可用Dim objConn,objRs,strSqlSet objConn = CreateObject("ADODB.Connection")objConn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=d:\student.mdb"objConn.openSet objRs = CreateObject("ADODB.RecordSet")strSql = "Select count(*) from 学生情况"objRs.open strSql,objConn,1,2msgbox "学生情况表中共有" & objRs(0) & "条记录",8,"记录统计:" objRs.closeSet objRs = nothingobjConn.closeSet objConn = nothingWincc读取远程非wincc数据库Option ExplicitFunction actionDim sConDim sSqlDim connDim oRsDim oComDim iDim temvalue,objtag'sCon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=CTMDBN;Data SouRCe=192.168.1.11"sCon="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=CTMDBN;Data Source=192.168.1.11"sSql = "SELECT Temperature FROM channelinfo"' 2.1 Make connectionSet conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.Open' 2.2 Use command text for querySet oRs = CreateObject("ADODB.Recordset")Set oCom = CreateObject("mand")Set oCom.ActiveConnection = connmandText = sSql' 2.3 Fill the recordsetSet oRs = oCom.Execute' 3.0 Fill standard iofields object with recordseti=0Do While oRs.eof=Falsetemvalue=oRS.Fields(0).Valuei=i+1HMIRuntime.Tags("t"&i).Write temvalue oRs.movenextLoopSet oRs = Nothingconn.CloseSet conn = NothingEnd Function。
Wincc V7.3vbs读取多个变量归档数据到excel前面的一篇博客记录了如何读取多个变量归档数据到mshgrid控件,根据的是西门子官网的教学。
有网友询问为什么他照着官网方法就是无法导出到excel。
我自己也做了一遍,没有问题。
本篇主要记录导出按钮的脚本。
前面的准备工作与上一篇一致,导出按钮的vbs脚本如下:Sub OnClick(ByVal Item)Dim myCatalog,myDS,PCName,cnstr,sqlstr1,sqlstr2Dim xlapp,BTime,ETime,utcbtime,utcetime,utcbtstr,utcetstrDim conobj,rsobj1,comobj1Dim rsobj2,comobj2Dim rscount,i,curRowDim filenamemyCatalog=HMIRuntime.Tags("@DatasourceNameRT").ReadPCName=HMIRuntime.Tags("@LocalMachineName").ReadmyDS=PCName & "\Wincc"Set BTime=HMIRuntime.Tags("btime")Set ETime=HMIRuntime.Tags("etime")'北京时间时区修正utcbtime=Dateadd("h",-8,BTime.Read) '起始时间utcetime=Dateadd("h",-8,ETime.Read) '结束时间'日期时间格式修正utcbtstr = Year(utcbtime) & "-" & Month(utcbtime) & "-" & Day(utcbtime) & " " & Hour(utcbtime) & ":" & Minute(utcbtime) & ":" & Second(utcbtime)utcetstr = Year(utcetime) & "-" & Month(utcetime) & "-" & Day(utcetime) & " " & Hour(utcetime) & ":" & Minute(utcetime) & ":" & Second(utcetime)'连接字符串cnstr="Provider=WinCCOLEDBProvider.1; Catalog=" & myCatalog & "; Data Source=" &myDS'创建连接对象Set conobj=CreateObject("ADODB.Connection")conobj.connectionstring=cnstrconobj.CursorLocation = 3conobj.Open'查询字符串'sqlstr = "Tag:R,('VA\flow1';'VA\flow2'),'" & utcbtstr & "','" & utcetstr & "'," & "'order by Timestamp ASC','TimeStep=1,1'" sqlstr1 = "Tag:R,('VA\flow1'),'" & utcbtstr & "','" & utcetstr & "'," & "'order by Timestamp ASC','TimeStep=1,1'"sqlstr2 = "Tag:R,('VA\flow2'),'" & utcbtstr & "','" & utcetstr & "'," & "'order by Timestamp ASC','TimeStep=1,1'"'进行查询Set rsobj1 = CreateObject("ADODB.Recordset")Set comobj1 = CreateObject("mand")mandType = 1Set comobj1.ActiveConnection = conobjmandText = sqlstr1Set rsobj1 = comobj1.ExecuteSet rsobj2 = CreateObject("ADODB.Recordset")Set comobj2 = CreateObject("mand")mandType = 1Set comobj2.ActiveConnection = conobjmandText = sqlstr2Set rsobj2 = comobj2.Executerscount=rsobj1.recordcountrsobj1.movefirstrsobj2.movefirstif rscount=0 thenmsgbox "没有记录"exit subend ifSet xlapp=CreateObject("Excel.Application")xlapp.visible=Falsexlapp.workbooks.add'初始化excelxlapp.worksheets(1).cells(1,1)="编号:"xlapp.worksheets(1).cells(1,2)="QB-2017.001"xlapp.worksheets(1).range("a2:c2").mergecells=True '合并单元格xlapp.worksheets(1).cells(2,1)="这是一个测试"xlapp.worksheets(1).cells(2,1).HorizontalAlignment = 3 '文字居中xlapp.worksheets(1).cells(3,1)="日期时间"xlapp.worksheets(1).cells(3,2)="flow1"xlapp.worksheets(1).cells(3,3)="flow2"'导出到excelFor i=1 To rscountxlapp.worksheets(1).cells(3+i,1)=Dateadd("h",+8,rsobj1.fields(1).value)xlapp.worksheets(1).cells(3+i,2)=rsobj1.fields(2).valuexlapp.worksheets(1).cells(3+i,3)=rsobj2.fields(2).valuersobj1.movenextrsobj2.movenextNext'释放资源Set rsobj1 = NothingSet rsobj2 = Nothingconobj.CloseSet conobj = Nothing'画边框xlapp.worksheets(1).range("a3:c" & CStr(3+rscount)).borders(1).linestyle=9xlapp.worksheets(1).range("a3:c" & CStr(2+rscount)).borders(1).weight=2xlapp.worksheets(1).range("a3:c" & CStr(2+rscount)).borders(2).linestyle=9xlapp.worksheets(1).range("a3:c" & CStr(2+rscount)).borders(2).weight=2xlapp.worksheets(1).range("a3:c" & CStr(2+rscount)).borders(3).linestyle=9xlapp.worksheets(1).range("a3:c" & CStr(2+rscount)).borders(3).weight=2xlapp.worksheets(1).range("a3:c" & CStr(2+rscount)).borders(4).linestyle=9xlapp.worksheets(1).range("a3:c" & CStr(2+rscount)).borders(4).weight=2'保存文件filename= "c:\" & Year(Now) & "年" & Month(Now) & "月" & Day(Now) & "日-" & Hour(Now) & "点" & Minute(Now) & "分" & Second(Now) & "秒生成生产报表.xlsx"xlapp.Activeworkbook.saveas (filename)xlapp.workbooks.closexlapp.quitMsgbox "成功导出到C:\"End Sub无法导出数据的朋友,检查一下官网提示的那个连接包是否安装了。
1:首先在计算机的管理工具-- ODBC数据源管理器中,添加一个SQL SERVER的数据源。
在此配置中:在服务器的连接上要选择WINCC的服务器。
2:然后在WINCC的图形编辑器中,在输入域的属性中,选择事件,再选择键盘的释放动作,在动作代码框中写下如下代码:Dim conn,rsDim strsqlDim aa=HMIRuntime.Tags("tt_change").ReadSet conn=CreateObject("adodb.connection")Set rs=CreateObject("adodb.recordset")conn.Provider = "sqloledb"conn.open"SERVER=MICROSOF-9176CF\WINCC;uid=sa;pwd=sa;database=TT_CHA NGE"If nChar = "13" Thenstrsql="insert into tt_ch(TagValue)VALUES('" & a &"')" Set rs=conn.execute(strsql)conn.closeSet rs=NothingSet conn=NothingEnd If如此,即可实现WINCC的实时数据向SQL SERVER的数据写入!WinCC读取Access数据库wincc 2009-07-30 09:52:22 阅读240 评论1 字号:大中小订阅'经测试该代码在WinCC和vbs文件中均可用可用Dim objConn,objRs,strSqlSet objConn = CreateObject("ADODB.Connection")objConn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=d:\student.mdb"objConn.openSet objRs = CreateObject("ADODB.RecordSet")strSql = "Select count(*) from 学生情况"objRs.open strSql,objConn,1,2msgbox "学生情况表中共有" & objRs(0) & "条记录",8,"记录统计:" objRs.closeSet objRs = nothingobjConn.closeSet objConn = nothingWincc读取远程非wincc数据库Option ExplicitFunction actionDim sConDim sSqlDim connDim oRsDim oComDim iDim temvalue,objtag'sCon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=CTMDBN;Data SouRCe=192.168.1.11"sCon="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=CTMDBN;Data Source=192.168.1.11"sSql = "SELECT Temperature FROM channelinfo"' 2.1 Make connectionSet conn = CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.Open' 2.2 Use command text for querySet oRs = CreateObject("ADODB.Recordset")Set oCom = CreateObject("mand")Set oCom.ActiveConnection = connmandText = sSql' 2.3 Fill the recordsetSet oRs = oCom.Execute' 3.0 Fill standard iofields object with recordseti=0Do While oRs.eof=Falsetemvalue=oRS.Fields(0).Valuei=i+1HMIRuntime.Tags("t"&i).Write temvalue oRs.movenextLoopSet oRs = Nothingconn.CloseSet conn = NothingEnd Function。
wincc通过VBS读取控件
在wincc7.0中做了个名称为main主画面,在main中添加一个名称为b画面窗口,再做一个名称为trend的模板画面,trend里面用了个名称为c的趋势控件,并在主画面中做了一个按钮,当我单击按钮的时候,在main中弹出trend画面并把相应的变量传递给trend里面的趋势控件c。
我想法是通过函数读取控件,然后改变控件的属性来达到变量传递的效果,这样就可以通过一个模板和多个按钮来实现单击不同按钮显示不同变量的趋势。
我通过函数SetobjCon2=HMIRuntime.Screens(
问题补充:
我想通过函数SetobjCon2=HMIRuntime.Screens(“Main.b:trend”).ScreenItem s(“c”)读取控件,但为什么编译不过去?
最佳答案
我觉得你这句没写错,
附我写的脚本如下:
dimnum
setnum=HMIRuntime.Screens(“start.画面窗口1:trend”).ScreenItems(“control”)
的确能获得此控件的属性,我怀疑你是不是忘记定义objCon2了?。