1、Wincc的VBS脚本使用知识讲解变量读写: Write和Read方法的语法:读 :1 Dim objTag Set objTag=HMIRunTime.Tags(变量名) objTag.Read 2 HMIRunTime.Tags(变量名).Read 写: 1 Dim objTag Set objTag=HMIRunTime.Tags(变量名) objTag.Write 1 向变量写入数值1 2 HMIRunTime.Tags(变量名).Write 1 中间变量的值写入 :Dim objTag,val Set objTag=HMIRunTime.Tags(变量名) objTag.Read v
2、al=objTag.Value 中间变量val存放了变量的值 VBS语言使用方法概述:VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. 我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.
3、vbs的源程序, 用户就能执行了. 一、入门: 1) 注释(以REM或开头)行在程序中不起作用, 但能让别人更容易读懂你的程序. 2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用=3) 以包裹起来的字符称之为字符串 4) 函数像一个黑箱, 有参数和返回值, 用=左边的变量可以接住返回值5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出例: REM 输入并回显你的名字 使用InputBox和Msgbox函数 Dim name,msg msg=请输入你的名字: name=Inputbox(msg,名称) Msgbox(name) 上例中,Dim用来声
4、明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫浮点数), 也不用考虑是不是字符串(一串字符, 比如:Hello World), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变.常量: 格式是:const 常量名=常量值. 例如: const PI=3.1415926 const NAME=记忆碎片 二、进阶 数据类型转换:1)Dim a,b,c a=inputbox(a是:,输入半径) b=Inputbox(b是:,输入半径) c=a*2+b*2Msgbox(c) 这个输入1、2时是6 2) Dim a,
5、b,c a=inputbox(a是:,输入半径) b=Inputbox(b是:,输入半径) c=(a+b)*2 Msgbox(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=
6、12, 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说错啦,应该是11.但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转成整数值, 我们这样修改: c=(int(a)+
7、int(b)*2 四、循环结构 for.next dim i,j for i=1 to 9 for i=1 to 9 str=str & i * j & &是和并字符串的符号 next 每个next对应一个for next 1)do.loop和exit do的用法 2) while当表达式true的时候执行循环体,until反之 3) for.next是计数循环, 每次执行计数器递加 4) 嵌套循环的作用和写法 4.5) &用于连接字符串 5) vbCrLf相当于键盘上的回车键五、数组定义: dim 数组名(元素数量), 这里大家要注意一点, 这里定义的元素数量总是比你要的要少一个, 因为一个
8、数组的起点是0号数据而不是1, 所以大家一定要小心: 你需要10个数据, 就定义9。六、函数 结构:funciton 函数名(参数1, 参数2.参数n) 列表可以是空的, 但括号不能省略, 参数之间用,分割 . exit funciton 结束函数, 不是必需的 . end function 有时候我们并不需要返回什么值, 这个时候我们可以使用一种称之为子程序的结构. 子程序或称之为过程与函数的差别 就在于:1) 没有返回值, 2) 使用sub关键字定义, 3) 通过Call调用.具个例子: dim yname name=inputbox(请输入你的名字:) call who(yname) s
9、ub who(cname) msgbox(你好 & cname) msgbox(感谢你阅读我的课程) msgbox(这是基础部分的最后一课) end sub 按钮翻转程序 Sub OnClick(Byval Item) Dim tag1 Set tag1=HMIRuntime.Tags(Q02) tag1.read If tag1.Value=1 Then tag1.write 0 Else tag1.Write 1 按按钮增数程序:Dim tag1 Set tag1=HMIRuntime.Tags(旋转1) tag1.Read tag1.Value=tag1.Value + 1 tag1.Write End If End Sub按下按钮一个脉冲触发: Dim mytime,bs Set bs=HMIRuntime.Tags(b) bs.Write(1) mytime = Timer+2 Do Until Timer=mytime Loop bs.Write(0) 循环程序 While t = 1 Dim mytime,bs Set bs=HMIRuntime.Tags(b旋转) bs.Write(1) mytimE = Timer +2 DO until TimEr=mytime loop bs.Write(0) Wend
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1