WinCC中的脚本

1、WinCC中的脚本

从作用域来分:局部脚本、全局脚本。

局部脚本,也叫对象脚本,针对某个画面对象的属性和事件所定制的脚本。

全局脚本,也叫背景脚本,可以不依赖画面对象,独立运行。

从编程语言来分:C、VBS。

WinCC是通过“脚本队列”来实现的。就像办事窗口排队一样。

为了优化整体性能,WinCC开设了多个窗口来执行脚本。根据脚本出现的位置及脚本的类型,一共有7个窗口。

其中全局动作有3个窗口,分别是VBS全局动作窗口,C脚本周期触发全局动作窗口,C脚本变量触发全局动作窗口。

画面运行系统中有4个窗口,分别是VBS处理属性动态化的窗口,VBS处理事件的窗口,C脚本处理属性动态化的窗口,C脚本处理事件的窗口。

VBS

项目模块只能在当前的项目中重新获取。由于过程存储在项目目录中,所以在复制项目时会自动复制这些过程。项目模块存储在WinCC 文件系统的下列路径:<项目路径>\ScriptLib\<Moduname>.bmo。由于项目模块存储在项目目录中,所以在复制WinCC项目时会复制这些模块。

标准模块可通过所有与项目链接的计算机调入。在复制项目到另一个计算机上时,必须手动将标准过程复制到目标计算机上的相应目录中。标准模块存储在WinCC 文件系统的下列路径:<WinCC-安装路径>\ApLib\ScriptLibStd\<Moduiname>.bmo

动作:可以独立运行的过程,拥有触发器可以自主运行。存储在WinCC文件系统的下列路径:<项目路径>\ScriptAct\<Moduiname>.bmo

代码模板:常用指令的代码模板,使用时双击或拖拽引用

2、WinCC中的VBS

WinCC中的vbs脚本与系统自带的VBS脚本区别:

1.Wincc中的VBS增加了wincc中特有的对象。如:wincc画面对象、变量对象等。(HMIRuntime、ScreenItems)

2.去除了在wincc中不适用的函数。如:sleep函数。

特别注意,WinCC的变量与vbs变量操作方式的区别

Sub OnLButtonDown(Byval Item, Byval Flags, Byval x, Byval y)        

Dim test



'画面中获取对象数目

Set test=ScreenItems

Msgbox test.Count



'获取按钮1对象父级(所在画面)的名称

Set test=ScreenItems("按钮1")

Msgbox test.Parent.ObjectName



'修改按钮1对象字体为红色

test.ForeColor =vbRed  



'修改按钮1对象背景色为蓝色([V6.2] Windows 样式=否)

test.BackColor=vbBlue 



'获取服务器的名称

Dim ServerName

Set ServerName = HMIRuntime.Tags("@ServerName")

Msgbox ServerName.Read 



'退出运行1

Dim stt

Set stt=HMIRuntime

stt.Stop 



'退出运行2

hmiruntime.Stop 

End Sub

3、使用APDiag的“输出窗口”显示脚本信息

Wincc中在调试脚本时,在画面中使用GSC诊断窗口可以输出脚本中的打印信息,来跟踪脚本的执行。当脚本运行错误时还会显示错误信息。

使用APDiag的“输出窗口”同样可用于脚本调试。(应用程序Apdiag.exe 位于C:\Program Files (x86)\Siemens\WinCC\uTools目录下。)

Sub OnOpen()                                 
'添加全局变量 
  
Dim PRJItem
Dim PRJDataSet
Set PRJDataSet=HMIRuntime.DataSet

'检查ButtonPressedCounter是否已经存在
For Each PRJItem In PRJDataSet
  If PRJItem.name = "ButtonPressedCounter" Then
    Exit Sub
  End If
Next

HMIRuntime.DataSet.Add "ButtonPressedCounter",0     



End Sub

Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)           
'画面按钮事件

'1、启动画面打开事件添加智能对象,创建全局变量。
'HMIRuntime.DataSet.Add "ButtonPressedCounter",0

'2、在画面按钮事件中读出值+1
HMIRuntime.DataSet("ButtonPressedCounter").Value=HMIRuntime.DataSet("ButtonPressedCounter").Value+1

'3、打印显示,输出到诊断窗口
Msgbox HMIRuntime.DataSet("ButtonPressedCounter").Value
HMIRuntime.Trace "DataSet运算结果:"& HMIRuntime.DataSet("ButtonPressedCounter").Value & vbCrlf

'4、DataSet是真正意义上的全局变量
End Sub

<配合HMIRuntime.Trace语句>

而且相比画面中的GSC诊断窗口,APDiag的“输出窗口”有以下优点:

  • 不用组态,不用在画面添加暂时的GSC诊断窗口

  • 由于全局脚本运行系统先于图形运行系统激活,所以在图形运行系统激活前,显然画面中的GSC诊断窗口无法输出脚本中的信息。而使用APDiag的“输出窗口”,可以在激活运行系统之前打开它,在激活过程中显示错误信息。

  • APDiag的“输出窗口”独立于画面,可以用于任何画面。

4、WinCC变量声明的几个地方

  • 项目模块(可以看成是子程序,必须被调用)
  • 标准模块(可以看成是子程序,必须被调用)
  • 全局动作事件
  • 画面的打开/关闭事件
  • 画面中的元素属性/事件
  • 全局DataSet
'项目模块"ModuleA.bmo"

'声明变量
'规则:调用此模块就可以使用此变量
Dim ButtonPressedCounter

Sub PRJSubA
'1、新建项目模块"ModuleA.bmo"
'2、新建/修改过程名:"PRJSubA"
'3、在画面事件中调用模块
'4、在画面中直接使用变量"ButtonPressedCounter+1"

End Sub

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值