您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > Wincc的VBS脚本使用
变量读写:Write和Read方法的语法:读:1DimobjTagSetobjTag=HMIRunTime.Tags(变量名)objTag.Read2HMIRunTime.Tags(变量名).Read写:1DimobjTagSetobjTag=HMIRunTime.Tags(变量名)objTag.Write1'向变量写入数值12HMIRunTime.Tags(变量名).Write1中间变量的值写入:DimobjTag,valSetobjTag=HMIRunTime.Tags(变量名)objTag.Readval=objTag.Value'中间变量val存放了变量的值VBS语言使用方法概述:VBScript的全称是:MicrosoftVisualBasicScriptEditon.(微软公司可视化BASIC脚本版).正如其字面所透露的信息,VBS(VBScript的进一步简写)是基于VisualBasic的脚本语言.我进一步解释一下,MicrosoftVisualBasic是微软公司出品的一套可视化编程工具,语基于Basic.脚本语言,就是不编译成二进制文件,直接由宿主(host)解释源代码并执行,简单点说就是你写的程序不需要编译成.exe,而是直接给用户发送.vbs的源程序,用户就能执行了.一、入门:1)注释(以REM或'开头)行在程序中不起作用,但能让别人更容易读懂你的程序.2)变量好像一个盒子,或一个代号,可以代表你想代表的东西.变量赋值使用=3)以包裹起来的字符称之为字符串4)函数像一个黑箱,有参数和返回值,用=左边的变量可以接住返回值5)Inputbox函数弹出一个输入对话框,Msgbox则用于输出例:REM输入并回显你的名字'使用InputBox和Msgbox函数Dimname,msgmsg=请输入你的名字:name=Inputbox(msg,名称)Msgbox(name)上例中,Dim用来声明一个变量,在VBS中,变量类型并不是那么重要,就是说VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫浮点数),也不用考虑是不是字符串(一串字符,比如:HelloWorld),VBS会自动帮你搞定.所以第三行语句可以删除,效果不会变.常量:格式是:const常量名=常量值.例如:constPI=3.1415926constNAME=记忆碎片二、进阶数据类型转换:1)Dima,b,ca=inputbox(a是:,输入半径)b=Inputbox(b是:,输入半径)c=a*2+b*2Msgbox(c)这个输入1、2时是62)Dima,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=HelloWorldhaveyouunderstood?你还记得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....nextdimi,jfori=1to9fori=1to9str=str&i*j&'&是和并字符串的符号next'每个next对应一个fornext1)do..loop和exitdo的用法2)while当表达式true的时候执行循环体,until反之3)for...next是计数循环,每次执行计数器递加4)嵌套循环的作用和写法4.5)&用于连接字符串5)vbCrLf相当于键盘上的回车键五、数组定义:dim数组名(元素数量),这里大家要注意一点,这里定义的元素数量总是比你要的要少一个,因为一个数组的起点是0号数据而不是1,所以大家一定要小心:你需要10个数据,就定义9。六、函数结构:funciton函数名(参数1,参数2...参数n)'列表可以是空的,但括号不能省略,参数之间用,分割...exitfunciton'结束函数,不是必需的...endfunction有时候我们并不需要返回什么值,这个时候我们可以使用一种称之为子程序的结构.子程序或称之为过程与函数的差别就在于:1)没有返回值,2)使用sub关键字定义,3)通过Call调用.具个例子:dimynamename=inputbox(请输入你的名字:)callwho(yname)subwho(cname)msgbox(你好&cname)msgbox(感谢你阅读我的课程)msgbox(这是基础部分的最后一课)endsub按钮翻转程序SubOnClick(ByvalItem)Dimtag1Settag1=HMIRuntime.Tags(Q02)tag1.readIftag1.Value=1Thentag1.write0Elsetag1.Write1按按钮增数程序:Dimtag1Settag1=HMIRuntime.Tags(旋转1)tag1.Readtag1.Value=tag1.Value+1tag1.WriteEndIfEndSub按下按钮一个脉冲触发:Dimmytime,bsSetbs=HMIRuntime.Tags(b)bs.Write(1)mytime=Timer+2DoUntilTimer=mytimeLoopbs.Write(0)循环程序Whilet=1Dimmytime,bsSetbs=HMIRuntime.Tags(b旋转)bs.Write(1)mytimE=Timer+2DOuntilTimEr=mytimeloopbs.Write(0)Wend
本文标题:Wincc的VBS脚本使用
链接地址:https://www.777doc.com/doc-5409344 .html